Filebeat

Beats系列产品:

  Filebeat

 Filebeat:

  Filebeat

  架构:
    用于监控、收集服务器日志文件

  部署与运行:

    下载地址:https://www.elastic.co/downloads/beats

    mkdir /usr/local/beats

    tar -zxvf filebeat-6.5.4-linux-x86_64.tar.gz

    cd filebeat-6.5.4-linux-x86_64

    创建如下配置文件 fan.yml

      filebeat.inputs:
      - type: stdin #输入的方式
        enabled: true #启用输入
      output.console: # 输出到控制台
        pretty: true
        enable: true

    启动filebeat
      ./filebeat -e -c fan.yml  # -e 输出到标准输出,默认输出到syslog和logs下,-c 指定配置文件,-d 输出debug信息(-d "publish")

    输入hello运行结果如下:hello

{
  "@timestamp": "2020-03-27T03:32:57.130Z",
  "@metadata": {    #元数据信息
    "beat": "filebeat",
    "type": "doc",
    "version": "6.5.4"
  },
  "input": {    #控制台标准输入
    "type": "stdin"
  },
  "beat": {    #beat版本以及主机信息
    "name": "fan",
    "hostname": "fan",
    "version": "6.5.4"
  },
  "host": {
    "name": "fan"
  },
  "source": "",
  "offset": 0,
  "message": "hello",    #输入的内容
  "prospector": {    #标准输入勘探器
    "type": "stdin"
  }
}

  读取文件:

    复制一份配置并修改

      cp fan.yml fan-log.yml

      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /fan/beats/logs/*.log
      setup.template.settings:
        index.number_of_shards: 3
      output.console:
        pretty: true
        enable: true

    在 /fan/beats/logs 目录下准备一下日志文件进行测试

      启动 filebeat
        ./filebeat -e -c fan-log.yml

      可以看出,开始会读取已有的日志文件,后面检测到日志文件有更新,立刻就会读取到更新的内容,并且输出到控制台。

  自定义字段:

    修改配置文件
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /fan/beats/logs/*.log

        tags: ["web"]  #添加自定义tag,便于后续的处理

        fields:  #添加自定义字段

          from: test-web

        fields_under_root: true #true为添加到根节点,false为添加到子节点中
      output.console:
        pretty: true
        enable: true

    启动测试:

      Filebeat

   输出到Elasticsearch:

    修改配置文件
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /fan/beats/logs/*.log

        tags: ["web"]  #添加自定义tag,便于后续的处理

        fields:  #添加自定义字段

          from: test-web

        fields_under_root: true #true为添加到根节点,false为添加到子节点中
      setup.template.settings:
        index.number_of_shards: 3 #指定es索引的分区数

      output.elasticsearch: #指定ES的配置
        hosts: ["192.168.43.182:9200","192.168.43.182:9201","192.168.43.182:9202"]

  Filebeat工作原理:

    Filebeat由两个主要组件组成:prospector 和 harvester。
    harvester:
      负责读取单个文件的内容。
      如果文件在读取时被删除或重命名,Filebeat将继续读取文件。
    prospector
      prospector 负责管理harvester并找到所有要读取的文件来源。
      如果输入类型为日志,则查找器将查找路径匹配的所有文件,并为每个文件启动一个harvester。
      Filebeat目前支持两种prospector类型:log和stdin。
    Filebeat如何保持文件的状态
      Filebeat 保存每个文件的状态并经常将状态刷新到磁盘上的注册文件中。
      该状态用于记住harvester正在读取的最后偏移量,并确保发送所有日志行。
      如果输出(例如Elasticsearch或Logstash)无法访问,Filebeat会跟踪最后发送的行,并在输出再次可用时继续读取文件。

      在Filebeat运行时,每个prospector内存中也会保存的文件状态信息,当重新启动Filebeat时,将使用注册文件的数据来重建文件状态,Filebeat将每个harvester在从保存的最后偏移量继续读取。
      文件状态记录在data/registry文件中。

  读取Nginx日志文件:

    创建配置文件 fan-nginx.yml

    filebeat.inputs:

    - type: log

      enabled: true

      paths:

        - /usr/local/nginx/logs/*.log

      tags: ["nginx"]

    setup.template.settings:

      index.number_of_shards: 3

    output.elasticsearch:

        hosts: ["192.168.43.182:9200","192.168.43.182:9201","192.168.43.182:9202"]

    启动后,可以在Elasticsearch中看到索引以及查看数据:

 

上一篇:Google 软件测试的未来


下一篇:octave基本操作