filebeat采集日志时如何附加额外字段

222次阅读
没有评论

共计 746 个字符,预计需要花费 2 分钟才能阅读完成。

背景

我们都知道 filebeat 在采集的时候可以在主配置里面进行设置后就会采集上主机上的 hostname 作为一个字段,可是实际生产环境经常会遇到一个集群中的节点的 hostname 都是一样的,如果恰巧不方便修改 hostname 或者就想知道具体是哪个 ip 的机器采集上来的日志该怎么办呢,其实很好办我们只需要在每个应用的 filebeat 配置中写死一个额外的变量如 hostip 即可。

添加额外的变量有两种方式,其中一种方式经常会导致 elasticsearch 采集上来的每个 hit 里面的字段缺少你要额外加的这个变量,但是又不是每条日志都会这样,很随机,我就不介绍这种方式了。

解决方法

其实很简单,把如下添加到你的应用的 yml 配置中即可,下面我们以 hostip 字段为例哦,

processors:
  - add_fields:
      target: ''
      fields:
        hostip: '192.168.1.1'

其中 target 字段为空字符串表示把这个额外的 hostip 字段独立为和默认的 message 字段同一级在 es rest api 返回的 json 串中,你可以根据你们公司的实际业务需求改动这个 target 的值。

由于 yaml 这种配置文件的格式极易出错引起不适对我而言,下面把完整的配置贴出来,以免大家弄到生产上出现啥奇怪问题。

- type: log
  enabled: true

  paths:
    - /var/log/nginx/*.log
  fields:
    type: nginx-access

  fields_under_root: true
  encoding: utf-8
  exclude_files: [".gz"]
  ignore_older: 3h

  processors:
  - add_fields:
      target: ''
      fields:
        hostip: '192.168.1.1'

 

正文完
 
sharp097
版权声明:本站原创文章,由 sharp097 2021-02-27发表,共计746字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)