之前的笔记有讲到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
其实我只是想添加一个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上去查看发现这个自带标签已经被删除了
然后filter过滤器支持以下这些方法
选项 | 类型 | 是否为必须 | 描述 |
add_field | 哈希型 | 否 | 如果此过滤选项匹配成功,则会向匹配的事件中添加指定的字段,字段名和内容可以调用相关的变量进行定义命名 |
add_tag | 数组 | 否 | 用于当过滤成功时,向匹配的事件中添加tag |
enable_metric | 布尔型 | 否 | 默认值为true,默认情况下,启用或禁用此功能,能记录特定插件的相关度量值 |
id | 字符串 | 否 | 添加一个唯一ID到指定的插件配置中,当有多个同一类型的插件时,可更好地去区别监控logstash |
periodic_flush | 布尔型 | 否 | 默认值为false,可选项,用于在规定的间隔时间调用过滤器的刷新功能 |
remove_field | 数组 | 否 | 当此插件匹配成功时,从事件中移除指定的字段 |
remove_tag | 数组 | 否 | 当此插件匹配成功时,从事件中移除指定的tags |