我有一个logstash实例,其配置如下(简化):
input {
redis { }
}
output {
elasticsearch_http { }
if [level] == "WARNING" or [level] == "ERROR" or [level] == "CRITICAL" or [level] == "ALERT" or [level] == "EMERGENCY" {
if [type] == "specific type 1" {
sentry { }
} else if [type] == "specific type 2" {
sentry { }
} else if [type] == "specific type 3" {
sentry { }
}
}
}
正如您所看到的,每条消息都会转到elasticsearch并根据它发送到哨兵输出的类型(我编写的自定义插件将消息写入哨兵)。对于每种特定类型,我在哨兵中有一个单独的项目,并且哨兵插件被配置为知道它需要发送消息的项目。
除了消息被发送到senty中的错误项目之外,一切正常。有时,似乎if正在完成他们的工作,并且消息最终会出现在哨兵的正确项目中。但大多数情况下,消息会被发送到第一个项目。
是否有人知道此配置是否有问题或我如何调试?因为我真的迷路了,看不出有什么不妥。