ELK中日志添加自定义字段和修改标签字段的方法

之前的笔记有讲到filebeat可以通过一些方式过滤数据的方式,具体可以查看我之前的笔记https://sulao.cn/post/733.html

今天这里主要讲下如何在ES中添加添加自定义字段,标签和在logstash中修改filebeat传入的数据

这个主要还是在filebeat中实现

filebeat.inputs:

- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/access.log
  fields:
    tag: nginx-access

- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/error.log
  fields:
    tag: nginx-error

上述例子是我们添加自定义字段tag代表日志来源,然后我们可以看到多了field.tag

{FF2E5AC9-64D8-4CB7-B79B-369471080512}_20191027195224.jpg

其实我只是想添加一个tag标签来区分来源,其实es中已经自带tags,我们直接在filebeat里面写好即可,像这样

filebeat.inputs:

- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/access.log
  tags: ["nginx-access"]

- type: log
  enabled: true
  paths:
    - /usr/local/nginx/logs/error.log
  tags: ["nginx-error"]

当我们这样改好filebeat以后去kibana上去查看最新日志,发现tags中有两个值

"tags": [
      "nginx-access",
      "beats_input_codec_plain_applied"
    ]

查阅了一些资料,发现beats_input_codec_plain_applied这个是ELK系统自己加上的,所以我们来看看有没有什么方法可以把它去掉

方法是有的,可以在logstash中使用filter过滤器中修改下

filter {
  if "beats_input_codec_plain_applied" in [tags] {
    mutate {
      remove_tag => ["beats_input_codec_plain_applied"]
    }
  }
}

我们改后以后重启下logstash,再去kibana上去查看发现这个自带标签已经被删除了

{BF7BCA43-6B40-483B-9053-506D296503A4}_20191027231239.jpg

然后filter过滤器支持以下这些方法

选项类型是否为必须描述
add_field哈希型如果此过滤选项匹配成功,则会向匹配的事件中添加指定的字段,字段名和内容可以调用相关的变量进行定义命名
add_tag
数组用于当过滤成功时,向匹配的事件中添加tag
enable_metric
布尔型默认值为true,默认情况下,启用或禁用此功能,能记录特定插件的相关度量值
id字符串添加一个唯一ID到指定的插件配置中,当有多个同一类型的插件时,可更好地去区别监控logstash
periodic_flush布尔型默认值为false,可选项,用于在规定的间隔时间调用过滤器的刷新功能
remove_field
数组当此插件匹配成功时,从事件中移除指定的字段
remove_tag
数组当此插件匹配成功时,从事件中移除指定的tags

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/735.html