Filebeat 输出日志时添加客户端 IP 地址(引用变量)

推荐阅读

Helm3(K8S 资源对象管理工具)视频教程:https://edu.csdn.net/course/detail/32506
Helm3(K8S 资源对象管理工具)博客专栏:https://blog.csdn.net/xzk9381/category_10895812.html

本文原文链接:https://blog.csdn.net/xzk9381/article/details/114630076,转载请注明出处。如有发现文章中的任何问题,欢迎评论区留言。

使用 filebeat 收集日志时,默认会添加一个 host.name 字段来标识主机,但是在主机名不是 IP 地址的情况下,这个字段不能很方便的针对 IP 地址进行筛选,所以需要在收集日志时,添加一个显示 IP 地址的字段。

添加字段可以使用 fields 模块,在这个模块下可以自定义字段,支持array ,数组等格式,也可以调用系统的环境变量:

filebeat.inputs:
- type: log
  paths:
  - /opt/test.log
  scan_frequency: 10s
  tail_lines: true
  fields:                     # 使用 fields 模块添加字段
    host_ip: ${SERVER_IP}     # host_ip 为字段名称,后面的值为 SERVER_IP 变量值,该变量为系统变量
  fields_under_root: true     # 将新增的字段放在顶级,收集后字段名称显示 host_ip。如果设置为 false,则放在子集,收集后显示为 fields.host_ip

设置完成后,在 /etc/profile 中设置对应的环境变量,并在系统中生效。重启 filebeat 即可(需要在 kibana 中刷新索引模式)。

需要注意的是,如果重启 filebeat 是在本地执行的,那么 filebeat 可以正常获取到系统变量名称。但是如果是在其他机器 ssh 远程执行命令来重启 filebeat,则有可能会导致 filebeat 启动失败。

例如我当前的 filebeat 测试环境中,是通过跳板机中远程执行重启 filebeat 的命令:

bash /opt/filebeat-7.3.0/filebeat.sh ES-135cd3ec-d7ca-11ea-b08e-b496912687c4_15528.yml restart

filebeat.sh 脚本用于根据配置文件启动 filebeat,可以自行编写

但是在使用系统变量的情况下,filebeat 远程重启失败,查看 filebeat 日志发现如下报错:

Exiting: Error while initializing input: missing field accessing 'filebeat.inputs.0.fields.host_ip' (source:'/opt/filebeat-7.3.0/conf/ES-135cd3ec-d7ca-11ea-b08e-b496912687c4_15520.yml')

出现这个问题是由于 filebeat 无法加载环境变量,而导致无法加载环境变量的原因是远程执行 shell 命令时,是属于非交互非登陆的shell。对于这种模式而言,它会去寻找环境变量 BASH_ENV,将变量的值作为文件名进行查找,如果找到便加载它,但是系统中一般都没有设置这个变量值,所以就无法加载环境变量。

解决这个问题最简单的方式是在执行脚本时,添加 -l 选项,就会打开一个login shell,这样可以加载全局的环境变量配置文件 /etc/profile。之前设置的变量也就会生效了。所以将原来的命令修改为如下:

bash -l /opt/filebeat-7.3.0/filebeat.sh ES-135cd3ec-d7ca-11ea-b08e-b496912687c4_15528.yml restart

本文原文链接:https://blog.csdn.net/xzk9381/article/details/114630076,转载请注明出处。如有发现文章中的任何问题,欢迎评论区留言。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

店伙计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值