我使用ELK堆栈,这个依赖关系和配置,以记录我的API。
<dependency>
<groupId>com.github.piomin</groupId>
<artifactId>logstash-logging-spring-boot-starter</artifactId>
<version>1.3.0.RELEASE</version>
</dependency>
在属性中:
logging.logstash.enabled: true
logging.logstash.url: 127.0.0.1:5000
logging.logstash.ignorePatterns: /(actuator|swagger|webjars).*
logging.logstash.logHeaders: true
我有几个应用程序使用不同的端口,如==〉应用程序A:本地主机:9000,应用程序B:localhost:9001,...所有日志都使用以下配置发送到Logstash:
input {
tcp {
port => 5000
codec => json
type => "AppA"
}
tcp {
port => 5000
codec => json
type => "AppB"
}
}
filter {
if [type] == "AppA" {
mutate { add_field => { "[@metadata][target_index]" => "AppA" } }
} else if [type] == "AppB" {
mutate { add_field => { "[@metadata][target_index]" => "AppB" } }
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
index => "%{[@metadata][target_index]}"
}
}
但是它不起作用。我想根据端口或应用程序的名称对它们进行索引。有什么解决办法吗?
1条答案
按热度按时间plupiseo1#
由于您希望过滤事件,并根据输入将其发送到不同的索引,因此只需在输出块中使用条件,就像在过滤器块中所做的那样。
您需要类似以下管道的东西。