美文网首页
Filebeat 核心配置详解

Filebeat 核心配置详解

作者: 深入浅出 | 来源:发表于2021-12-07 16:51 被阅读0次

    Filebeat原理

    官方说明:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-overview.html

    Filebeat.png

    Filebeat 有两大部分,inputsharvestersinputs 负责找文件(类似 find 命令)和管理 harvesters,一个 harvester 则和一个文件一一对应,一行行读然后发送给 output(类似tail -f)。

    Log input配置详解

    官方说明:https://www.elastic.co/guide/en/beats/filebeat/current/filebeat-input-log.html

    基本例子

    filebeat.inputs:
    - type: log
      paths:
        - /var/log/system.log
        - /var/log/wifi.log
    - type: log
      paths:
        - "/var/log/apache2/*"
      fields:
        apache: true
      fields_under_root: true
    

    inputs 可以配置多块(block)
    paths 可以配置多个文件,文件路径和文件名都支持通配。

    ignore_older 和 scan_frequency

    场景问题

    场景1:路径下的历史文件可能很多,比如配置了按天分割,显然旧文件我们一般是不需要的。
    场景2:扫描频率如何控制,通配设置复杂的话频繁扫文件也是很大的开销。

    解决方案

    场景1是通过 ignore_older 参数解决,意思是多久前的旧文件不扫描。
    比如设置为 1h,表示文件时间在 1h 之前的日志都不会被 input 模块搜集,直到有新日志产生。

    场景2是通过 scan_frequency 参数控制,表示多久扫描一次是否有新文件产生。
    比如设置 10s(默认),一个新文件产生 10s 后会被发现,或者一个旧文件(上面 ignore_older)新产生了一行日志 10s 才发现这个文件。

    close_* 和 clean_*

    harvester 获取的文件就一直拿着不放吗?文件重命名或者被删除后怎么办呢?

    close_* 配置簇

    The close_* configuration options are used to close the harvester after a certain criteria or time. Closing the harvester means closing the file handler.

    close_inactive
    多久关闭文件,比如一个日志文件,10 分钟都没有读到新的内容就把文件句柄关闭。

    这里的时间不是取决于文件的最后更新时间,而是 Filebeat 内部记录的时间,上次读到文件和这次尝试读文件的时间差。

    官方建议设置的时间是比文件产生数据频率高一个数量级(默认5m),比如每秒都有日志产生,这个值就可以设置为 1m。

    close_renamed
    是否关闭 rename 的文件。

    close_removed
    默认开启。
    文件被删除后,就关闭文件句柄。

    这个符合正常场景,一般日志清理程序都是清理很多天前的日志,这个时间远远大于 ignore_olderclose_inactive

    clean_* 配置簇

    The clean_* options are used to clean up the state entries in the registry file.

    Filebeat 内部记录了很多文件状态,保存在 data/registry/filebeat/data.json。如果不清理的话这个文件会越来越大,影响效率。

    {
        "source": "/xxx/logs/logFile.2021-09-20.log",
        "offset": 661620031,
        "timestamp": "2021-09-21T00:04:23.050179808+08:00",
        "ttl": 10800000000000,
        "type": "log",
        "meta": null,
        "FileStateOS": {
            "inode": 184559118,
            "device": 2056
        }
    }
    

    clean_inactive
    多久清理一次注册信息。默认值是0(不开启clean_*相关功能)

    清理的文件信息需要保证这个文件已经不活跃了,所以这个值需要大于 ignore_older + scan_frequency
    不然的话清理后这个文件又被发现,则会重头开始读取,这样就重了。

    clean_removed
    文件被删除后是否清理注册信息,默认开启。
    需要和 close_removed 值保持一致

    简单总结几个时间配置:
    clean_inactive > ignore_older + scan_frequency > close_inactive

    推荐配置:

    tail_files: false
    scan_frequency: 10s
    ignore_older: 60m
    close_inactive: 10m
    close_renamed: true
    close_removed: true
    clean_inactive: 70m
    clean_removed: true
    

    资源限制

    在日志非常多机器负载高的时候加重机器负担,建议生产环境上需要对 Filebeat 资源进行限制:
    max_procs 最多使用多少核,默认会全部使用,按机器情况限制为1-4核,不太会影响推送效率。

    配置自动加载

    官方说明:https://www.elastic.co/guide/en/beats/filebeat/current/_live_reloading.html

    filebeat.config.inputs:
      enabled: true
      path: configs/*.yml
      reload.enabled: true
      reload.period: 10s
    

    具体的 input 配置文件放在 configs 文件夹下,例如:

    - type: log
      paths:
        - /var/log/messages
        - /var/log/*.log
    

    相关文章

      网友评论

          本文标题:Filebeat 核心配置详解

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