ELK使用ingest node 解析日志字段使用例子
1.作用:在文档建立实际索引前对文件进行预处理,默认情况下所有节点都开启ingest ,如果要建立某专用的ingest 可以在其他节点禁止使用ingest,只要在es的配置文件elasticsearch.yml中加上ingest node: false即可
2.日志文件(路径为/app/applogs/info.log)格式如下:

[INFO] 2020-07-23 18:29:43 [/app/totoro/tcl/api/app/subnet/handle.py:fetch_sf_subnet:62] - 获取可用网络列表

3.需求:提取日志文件的日志等级和日志产生的时间戳以及该日子来自那个app(该日志来自的app是tcl)
4.实现字段提取的过程
(1)先启动es
(2)启动es的界面kibnan,并使用浏览器访问“http:ip:port”
(3)在kibana的界面里的dev tools中的console中使用PUT添加pipeline,该例子的pipeline如下:

PUT _ingest/pipeline/pipeline-test 
{
    "description" : "pipeline-test",
    "processors": [
      {
        "grok": {
          "field": "message",
          "patterns": ["%{WORD:log_level}] %{TIMESTAMP_ISO8601:timastamp} ./app/totoro/%{NOTSPACE:app}/api/"]
        }
      }
    ]
  }

图片说明
字段说明:
PUT _ingest/pipeline/pipeline-test中的pipeline-test是这次使用的pipeline的名称
"description" : "pipeline-test",只是对pipeline的描述,没有别的作用
“field”指定处理的内容字段,日志中的字段会被记录在message中
“processors”处理器中使用了patterns匹配所需要提取的字段
Grok Dedugger:
在创建pipeline前可以使用dev tools中的Grok Dedugger对pattern的内容进行调试
图片说明
(4)在filebeat的配置文件的output.elasticsearch:下添加字段pipeline:“pipeline-test”,然后再启动filebeat采集日志文件,由于没在filebeat的配置文件中指定文件存储在es中的索引,因此采集到的日志文件依旧存储在默认索引filebeat-中(一定要创建pipeline和在filebeat配置文件中指定使用的pipeline后再启动filebeat采集字段,否则只会采集到没有经过ingest node进行过预处理的日志文件)
5.在kibana界面创建index pattern,使用其显示处理后的日志文件信息
在kibana中的management中kibana下的index patterns中点击create index pattern创建一个index pattern来匹配es中默认生成的filebeat-
的默认索引,创建好index后再discover下选择创建的index pattern,如果没有错误的情况下就会显示出处理后的日志字段
6.kibana显示结果
图片说明