即使是不成熟的尝试,也胜于胎死腹中的策略。

Logstash收集多台设备的beats日志信息,如何添加多台源设备的源ip字段并输出到Elasticsearch?

Logstash | 作者 qhlhelo | 发布于2016年11月23日 | 阅读数:9491

最初使用Metricbeast --> Elasticsearch,原始文档内容可以看到host名称,比如windows的主机名"admin-PC"或者其他,但是我有需求是区分源ip地址的数据,基于Beats的配置好像不行,所以我又将环境改为了Metricbeat --> Logstash --> Elasticsearch,想通过Logstash的geoip或者add_field增加ip地址信息。后来发现geoip无法识别内网(局域网)地址,如127.0.0.1和192.168.1.1等等,而add_field增加%{host}也不行,依然是主机名。。
如何区分源(内网地址)ip信息,如何输出到Elasticsearch中呢?
已邀请:

Dalen_fly

赞同来自: novia

基于beats目前还不能获取ip, 预计6.0 版本的logstash 会加入此功能。
这个问题是因为 logstash-input-beats 没有实现获取ip功能导致的.
 
详见github bug论 :https://github.com/logstash-pl ... s/180
 
logstash-input-beats 是个独立的插件,有自己的版本,目前4.0.3已修复该问题,在logstash大版本未发布前,可以单独升级 该插件 到4.0.3 及以上版本。
新插件中,通过以下方式获取ip
filter {
mutate {
add_field => { "remote_ip" => "%{[@metadata][ip_address]}" }
 }
}
 
参见https://github.com/logstash-pl ... 59a0a
 
如何升级插件 请参考 https://github.com/logstash-pl ... ME.md

Jea - 一只猿

赞同来自:

我的做法是记录下来当前主机的ip, 写到log里面
 
在logstash收集之前

Dalen_fly

赞同来自:

如果按官网说明升级失败,gem无法安装,可以这样做:
从logstash6.0中(安装后)拷贝出 logstash-input-beats-5.0.0-java  的gems  和 specifications
文件在
/usr/share/logstash/vendor/bundle/jruby/1.9/gems
/usr/share/logstash/vendor/bundle/jruby/1.9/specifications
将其中的所有版本号5.0.0修改成3.1.23(3.1.23是你的logstash里比较老的那个 logstash-input-beats的版本号)


改完后 

logstash-input-beats-3.1.23-java
替换到 logstash5.5.2
/usr/share/logstash/vendor/bundle/jruby/1.9/gems

logstash-input-beats-3.1.23-java.gemspec
替换到 logstash5.5.2
/usr/share/logstash/vendor/bundle/jruby/1.9/specifications
 
然后重启logstash,即可

要回复问题请先登录注册