居然是你

来自不同输入源的日志(有不同的index名称),出现在一个index里,请教怎么处理

Logstash | 作者 sailershen | 发布于2019年07月09日 | 阅读数:2792

我在logstash里开了两个syslog端口,接收不同应用的日志。
 /etc/logstash/conf.d/ouyu-sip_log.conf 
input {
tcp {
port => 10514
type => syslog
}
udp {
port => 10514
type => syslog
}
}

output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
action => "index"
codec => line
index => "sip_logs"
}
}

/etc/logstash/conf.d/ouyu-conf_log.conf
input {
tcp {
port => 10515
type => syslog
}
udp {
port => 10515
type => syslog
}
}

output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
action => "index"
codec => line
index => "ouyu-conf_logs"
}
}

只打开ouyu-conf_log.conf的时候,应用日志是正常的。但是同时打开ouyu-conf_log.conf 和 ouyu-sip_log.conf的时候,来自index名称为sip_logs的日志会出现在ouyu-conf_logs这个index下,不知道是什么原因导致两个index下的日志出现在同一个index下,请教如何解决,谢谢。
 
在kibana里建立的index分别是ouyu-conf_logs* 和 sip_logs*,是不是这两个index设置的有问题?
已邀请:

medcl - 今晚打老虎。

赞同来自: sailershen

你的 Pipeline.yml 是如何配置的?

sailershen

赞同来自: medcl

我这样写piplines.yml:
- pipeline.id: sip_logs
path.config: "/etc/logstash/conf.d/ouyu-sip_logs.conf"

- pipeline.id: conf_logs
path.config: "/etc/logstash/conf.d/ouyu-conf_logs.conf"

观察了一下日志,两个index的日志不再重复了,各自只显示来自相应syslog的数据,达到我的目的了,非常感谢 @medcl。

ziyou - 一个学习ELK的Java程序员

赞同来自: sailershen

你配置两个配置文件同事使用的时候,这两个配置文件是合并使用的,也就说接收的是两个,输出的也是两个。接收的是两个没问题,但是输出的是两个就有问题了,日志自身识别不出自己是那个,所以他会输出到第一个(推断,未验证,至于谁是第一个,这个你要查询他们的排序标准)输出里面去,所以会出现这种问题。关于这个问题我有两种解决方案,并且都验证使用的:
1、在input里面添加一个indexName 字段,然后把两个输出合并成一个,输出才索引使用根据字段配置,示例如下:
output {
elasticsearch {
hosts => ["127.0.0.1:9200"]
index => "%{[indexName]}-%{+YYYY.MM.dd}"

}
}
2、第二个是和第一个异曲同工的做法,就是在日志lim里面直接加这个indexindexName字段,然后输出同上。
 
我们项目是使用的filebeat作为采集器的,我们在采集器中添了indexName字段,所有的日志收集到logstash里面的时候就带有这个字段,然后我们根据这个字段输出到不同的索引中。
PS:如果这个对你有帮助,请感谢、给赞啊,我的积分不多了。

要回复问题请先登录注册