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

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

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

这个主要还是在filebeat中实现

01.
filebeat.inputs:
02.
03.
- type: log
04.
  enabled: true
05.
  paths:
06.
    - /usr/local/nginx/logs/access.log
07.
  fields:
08.
    tag: nginx-access
09.
10.
- type: log
11.
  enabled: true
12.
  paths:
13.
    - /usr/local/nginx/logs/error.log
14.
  fields:
15.
    tag: nginx-error

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

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

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

01.
filebeat.inputs:
02.
03.
- type: log
04.
  enabled: true
05.
  paths:
06.
    - /usr/local/nginx/logs/access.log
07.
  tags: ["nginx-access"]
08.
09.
- type: log
10.
  enabled: true
11.
  paths:
12.
    - /usr/local/nginx/logs/error.log
13.
  tags: ["nginx-error"]

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

01.
"tags": [
02.
      "nginx-access",
03.
      "beats_input_codec_plain_applied"
04.
    ]

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

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

01.
filter {
02.
  if "beats_input_codec_plain_applied" in [tags] {
03.
    mutate {
04.
      remove_tag => ["beats_input_codec_plain_applied"]
05.
    }
06.
  }
07.
}

我们改后以后重启下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/732

评论列表