es filebeat 日志采集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了es filebeat 日志采集相关的知识,希望对你有一定的参考价值。

参考技术A 安装准备:

filebeat-6.6.0-linux-x86_64.tar.gz

elasticsearch-6.2.4.tar.gz

强烈建议filebeat和es采用一个大版本,否则可能造成意向不到的问题!

elasticsearch-7.XX需要更高版本的java(11),而提高es的版本也需要提高filebeat的版本!

安装步骤:

[if !supportLists]1、 [endif]上传elasticsearch-6.2.4.tar.gz安装包,tar -zxvf elasticsearch-6.2.4.tar.gz 解压。

[if !supportLists]2、 [endif]创建es用户和用户组,并将es的目录权限赋予es用户和用户组(ES不能用root启动)

[if !supportLists]3、 [endif]配置好集群参数,启动es

[if !supportLists]4、 [endif]使用命令(如url http://localhost:9200)返回结果意味集群启动没有问题

[if !supportLists]5、 [endif]上传filebeat-6.6.0-linux-x86_64.tar.gz安装包至采集机,tar -zxvf filebeat-6.6.0-linux-x86_64.tar.gz解压。

[if !supportLists]6、 [endif]切至安装目录,vim filebeat.yml修改对应内容,如图:(注意配置文件缩进)

调度平台的日志默认存放在/logs/logs.log中,es集群配置多个可以用“,”隔开。如:

hosts:["10.10.31.5:9200","10.10.31.6:9200"]

配置文件设置

#filebeat.yml

filebeat.inputs:

- type: log

  enabled: true

  paths:

  - /logs/logs.log

  #请给出日志文件名

  json.keys_under_root: true

  json.overwrite_keys: true

  exclude_files: ['.gz$']

  #     fields:

  #     component: nginx        #添加标签,字段名不可与日志中重复

  fields_under_root: true

  tail_files: true

processors:

- drop_fields:

    fields: ["ecs","agent","host","input"]

logging:

  files:

    rotateeverybytes: 10485760

output.elasticsearch:

  hosts: ["10.2.15.54:9200"]

7、命令nohup ./filebeat -e -c filebeat.yml > filebeat.log & 启动

8、验证命令./filebeat test output,输出结果如图则正常:

9、查看es是否正常接收到日志

日志增大,则代表正常,可尝试使用

curl -H "Content-Type: application/json" http://10.2.15.54:9200/filebeat-6.6.0-2021.11.02/_search -d '"query":"term":"ruleCode":"value":"test02","boost":1.0'

命令进行验证

Es数据采集工具之filebeat安装和使用

  • 在看filebeat之前我们先来看下Beats
    • Beats是一组轻量级采集程序的统称,这些采集程序包括并不限于:
    • filebeat: 进行文件和目录采集,主要用于收集日志数据。
    • metricbeat: 进行指标采集,指标可以是系统的,也可以是众多中间件产品的,主要用于监控系统和软件的性能。
    • packetbeat: 通过网络抓包、协议分析,对一些请求响应式的系统通信进行监控和数据收集,可以收集到很多常规方式无法收集到的信息。
    • Winlogbeat: 专门针对windows的event log进行的数据采集。
    • Heartbeat: 系统间连通性检测,比如icmp, tcp, http等系统的连通性监控。
  1. 下载安装包

  2. 解压修改配置文件filebeat.yml

    • inputs支持的type有
    • log
    • stdin
    • redis
    • udp
    • tcp
    • syslog

    • outputs支持的type有
    • logstash
    • elasticsearch
    • kafka
    • file
    • redis
    • console
  3. 启动命令./filebeat -c filebeat.yml

  4. 场景讲解

    • inputs为log类型,多个日志文件,格式化输出到控制台
      
      #=========================== Filebeat inputs =============================
      ##配置多个input
      filebeat.inputs:
    • type: log
      enabled: true
      paths:

      配置多个log

      • /home/logstash/echo.log
      • /home/logstash/echo2.log
    • type: log
      paths:

      通配符

      • /home/logstash/*_input_msg

    #-------------------------------- Console output
    output.console:
    pretty: true

    
    - **fields配置**
    ```SHELL
    ## 添加固定字段
    logcate: "dev"
    ## 添加字段获取系统变量  ,echo $HOSTNAME ===> s156
    nodename: $HOSTNAME
    ## 输出到根节点,否则会输出 fields.logcate, fields.nodename;
    ## 如果与filebeat中字段冲突,自定义字段会覆盖其他字段
    ##  fields_under_root: true
    ## 设置标签
    tags: ["normal"]
    ## 当包含 DEBUG或者INFO 时,才采集
    include_lines: [DEBUG,INFO]
    # exclude_lines:
    - type: log
    paths:
      - /home/logstash/*_input_msg
    tags: ["unnormal"]
    ## 以WARN开头,或以ERROR开头。
    include_lines: ["^WARN","^ERROR"]
    • 多行合并
      #指定用于匹配多行的正则表达式
      multiline.pattern: ^\\[
      #是否“否定”定义的模式:multiline.pattern定义的模式
      #negate:否定
      multiline.negate: true
      #指定Filebeat如何把多行合并成一个事件。可选的值是 after 或者 before
      multiline.match: after
  5. 还有很多其他的配置,比如正则,定义json格式等等。使用时可以具体查找

以上是关于es filebeat 日志采集的主要内容,如果未能解决你的问题,请参考以下文章

linux centos7创建filebeat进行日志采集-配合es

Filebeat7 Kafka Gunicorn Flask Web应用程序日志采集

结合springboot搭建日志采集系统EFK

ELK采集MySQL慢日志实现

ELK采集MySQL慢日志实现

使用Filebeat采集日志结合logstash过滤出你想要的日志