filebeat学习&理解

注:本篇基于filebeat7.5.2

 

filebeat是什么?

       Filebeat是用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视您指定的日志文件或位置,收集日志事件,并将它们转发到Elasticsearch或 Logstash等进行索引。

 

filebeat工作方式

      Filebeat的工作方式如下:启动Filebeat时,它将启动一个或多个输入,这些输入将在为日志数据指定的位置中查找。对于Filebeat所找到的每个日志,Filebeat都会启动harvester。每个harvester都读取单个日志以获取新内容,并将新日志数据发送到libbeatlibbeat将聚集事件,并将聚集的数据发送到为Filebeat配置的输出。

      input:负责管理harvester并查找所有可读取的资源。Input包括多种类型。Log,syslog,kafka,redis,tcp,s3 等等、

      Tips: Filebeat保留每个文件的状态,并经常将状态刷新到注册表文件中的磁盘。该状态用于记住harvester正在读取的最后一个偏移量。

 

filebeat常见命令&参数

export 将配置或索引模板导出到stdout。

help 显示任何命令的帮助。

keystore 管理秘密密钥库。

modules 管理配置的模块。

run 运行Filebeat。如果在未指定命令的情况下启动Filebeat,则默认使用此命令。

setup 设置初始环境,包括索引模板,Kibana仪表板和机器学习作业

test 测试配置。

version 显示有关当前版本的信息

-E  覆盖配置文件中的配置。   

filebeat -E  "output.elasticsearch.hosts=["http://myhost:9200"]"

-M 覆盖filebeat模块的配置

filebeat -modules=nginx -M "nginx.access.var.paths=[/var/log/nginx/access.log*]"

-c  c 指定配置文件的路径。

-e 记录到stderr并禁用syslog /文件输出。

filebeat test config -c filebeat.yml  测试配置文件正确与否

 

filebeat输入

filebeat输入最主要的就是区分什么样的数据作为一行数据进行接下来的操作。

filebeat  modules list 查看启停的模块。  

filebeat  modules disable/enable  mysql  关闭或启动模块。对应 modules.d/xxx.yml会被启用

inputs配置输入,指定要输入的文件类型以及文件的路径,harvest会去收集

在处理文件行时,可能多行文件是一个日志,这时需要配置multiline特殊处理

multiline.pattern: '^\['

multiline.negate: true

multiline.match: after

Negatematch 设置的是行组合方式

Tips: 自定义设置,需要配置相关日志文件的解析方式,如何识别数据成为一个doc

 

filebeat输出

如下的配置可以收集paths 下的文件,并以message为字段传给es

filebeat.inputs:

- type: log

  enabled: true

#指定一个要读取数据的文件路径

  paths:

    - /var/log/nginx/*.log      

setup.kibana:

  host: “127.0.0.1:5601"

output.elasticsearch:

  hosts: [“127.0.0.1:9200"]

processors:  #处理器、用来过滤要导出的数据

  - add_host_metadata: ~

 

nohup filebeat &    后台执行

一会去检查es的索引存在, curl  -XGET  localhost:9200/filbeat*’ 有输出

 

filebeat输出通过ingest进行拆分字段

将下面的管道在es中建立。

PUT  _ingest/pipeline/pipeline-nginx-access
{
  "description" : "nginx access log",
  "processors": [
    {
      "grok": {
        "field": "message",
        "patterns": ["%{IP:clientip} - %{DATA:userid} %{DATA:username} - %{DATA:location} %{DATA:sex} at %{DATA:timestamp} \"%{DATA:useragent}\" end"]
      }
    },{
      "geoip":{
        "field": "clientip",
        "target_field": "geoip"
      }
    },{
      "user_agent": {
        "field": "useragent",
        "target_field": "useragent"
      }
    },{
      "date": {
        "field": "timestamp",
        "formats": ["yyyy-MM-dd HH:mm:ss"],
        "target_field": "timestamp"
      }
    }
  ]
}

在/var/log/nginx/access.log中替换成如下内容

10.95.110.123 - 82304918473 zhangsan - beijing male at 2020-03-14 14:41:58 "TimeHut/5.3.3 (iPhone8,2; iOS 9.3.5; Scale/3.00) (SOURCE/App Store, VERSION_CODE/533)" end
10.95.110.123 - 82304918474 zhangsan - beijing male at 2020-03-14 14:41:58 "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36" end

修改filebeat.yml配置文件为

filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  fields:
    type: "access-log"
setup.template.name: "ignore-this"
setup.template.pattern: "ignore-this"
output.elasticsearch:
  hosts: ["localhost:9200"]
  indices:
    - index: "filebeat-nginx-access-%{+yyy.MM.dd}"
      when.equals:
        fields.type: "access-log"
  pipelines:
    - pipeline: "pipeline-nginx-access"
      when.equals:
        fields.type: "access-log"

然后   nohup  filebeat  &    后台运行

去logs 下面查 filebeat的日志。

 

参考:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章