美文网首页
Beats入门

Beats入门

作者: 尛白兔 | 来源:发表于2021-06-20 21:40 被阅读0次

    Beats

    简介

    Beats集合了多种单一用途的数据采集器,主要有以下几种类型

    • filebeat:采集日志文件
    • metricbeat:采集系统和软件指标
    • packetbeat:采集网络数据

    如果数据不需要经过处理,可以直接传给Elasticsearch中

    如果数据需要经过处理,可以传给logstash处理,然后再发送给Elasticsearch

    Filebeat:轻量级的日志采集器

    为什么要用Filebeat

    当服务器很多时,ssh登录查看会比较麻烦。启动 Filebeat 后,打开 Logs UI,直接在 Kibana 中观看对您的文件进行 tail 操作的过程

    Filebeat工作流程

    • 指定数据源
    • 匹配到日志后,使用Harvester组件读取日志
    • 日志传递到spooler,然后再传到elasticsearch或logstash中

    下载安装

    选择对应系统的安装包,下载地址:https://www.elastic.co/cn/downloads/beats/filebeat

    image.png

    下载后,传到服务器上

    # 解压
    tar xf filebeat-7.13.0-linux-x86_64.tar.gz
    # 移动并重命名
    mv filebeat-7.13.0-linux-x86_64 /usr/local/filebeat
    

    创建从控制台读取数据的配置文件

    cd /usr/local/filebeat
    
    vim mybeat.yml
    # 添加以如下内容
    filebeat.inputs:
    - type: stdin
      enabled: true
    output.console:
      pretty: true
      enable: true
    

    启动

    ./filebeat -e -c mybeat.yml
    
    image.png

    输出hello,可以控制台看到json输出

    image.png

    创建从日志中读取数据的配置文件

    vim mybeat1.yml
    # 输出以下内容
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/logs/message
    output.console:
      pretty: true
      enable: true
    # 再次启动
     ./filebeat -e -c mybeat1.yml
    
    # 往messages里追加一点内容
    echo "hello" >> /var/log/messages
    

    可以看到刚刚追加的内容


    image.png

    自定义字段

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/logs/message
      fields_under_root: true  # 自定义字段作为根节点显示 
        # 自定义字段 
      fields:
        myfields: test
    
    output.console:
      pretty: true
      enable: true
    

    输出到Elasticsearch中

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/*.log
      fields:
        myfields: test
      fields_under_root: true 
    output.elasticsearch:
      hosts: ["192.168.0.14:9200"]
    
    image.png
    自定义索引名称
    output.elasticsearch:
      hosts: ["192.168.0.14"]
      index: "message-%{+yyyy-MM}"
    
    setup.ilm.enabled: false
    setup.template.enabled: false
    setup.template.name: "index"
    setup.template.pattern: "index-*"
    

    安装chrome插件Elasticsearch Head查看结果


    image.png

    还可以按日志类型定义索引名称

    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      # 自定义标签
      tags: "access"
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/error.log
    
      tags: "error"
    output.elasticsearch:
      hosts: ["192.168.0.14:9200"]
      indices:
        - index: "nginx-access-%{+yyyy.MM}"
          when.contains:
            tags: "access"
        - index: "nginx-error-%{+yyyy.MM}"
          when.contains:
            tags: "error"
    
    setup.ilm.enabled: false
    setup.template.name: "index"
    setup.template.pattern: "index-*"
    setup.template.enabled: false
    
    
    image.png

    filebeat的组件

    harvester
    • 读取单个文件内容
    • 每个文件启动一个harvester,并且harvester负责打开和关闭这些文件
    • 每个文件启动一个harvester
    • 在harvester正在读取文件内容的时候,文件被删除或者重命名了,那么Filebeat就会续读这个文件,这就会造成一个问题,就是只要负责这个文件的harvester没用关闭,那么磁盘空间就不会被释放,默认情况下,Filebeat保存问价你打开直到close_inactive到达
    prospector
    • 管理harvester,找到所有读取的文件来源
    • 如果输入类型为日志,则为每个文件启动一个harvester
    • filebeat支持的prospector:stdin和log

    module

    前面的日志采集都是手动配置,在Filebeat中,有大量的Module,可以简化配置,并且做了简单的处理

    # 查看module列表
    ./filebeat modules list
    # 启用module
    ./filebeat modules enable nginx
    # 禁用module
    ./filebeat modules disable nginx
    

    修改module配置

    vim modules.d/nginx.yml
    
    
    - module: nginx
      # Access logs
      access:
        enabled: true
        # 添加日志文件
        var.paths: ["/var/log/nginx/access.log*"]
    
        # Set custom paths for the log files. If left empty,
        # Filebeat will choose the paths depending on your OS.
        #var.paths:
    
      # Error logs
      error:
        enabled: true
        var.paths: ["/var/log/nginx/error.log*"]
    

    配置filebeat,添加module

    filebeat.inputs:
    output.elasticsearch:
      hosts: ["192.168.0.20:9200"]
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    

    测试

    image.png

    可以看到刚写入的数据己经采集到了


    image.png

    更多玩法,可参考官方文档:https://www.elastic.co/guide/en/beats/filebeat/current/index.html

    Metricbeat

    Metricbeat的组成
    • module:收集的对象,如mysql,redis,操作系统等
    • metricset:收集指标的集合:如CPU,memory,network等

    使用Metricbeat的module收集Nginx数据

    # 启用nginx module
    ./metricbeat modules enable nginx
    
    # 配置nginx的status
    location /status {
        stub_status on;
        access_log off;
    }
    # reload
    systemctl reload nginx
    
    vim modules.d/nginx.yml
    
    html
      - module: nginx
    #metricsets:
    # - stubstatus
      period: 10s
    # Nginx hosts
      hosts: ["http://127.0.0.1"]
    # status的uri
      server_status_path: "status"
    
    ./metricbeat -e
    

    测试


    image.png

    相关文章

      网友评论

          本文标题:Beats入门

          本文链接:https://www.haomeiwen.com/subject/mqaoeltx.html