需要读取我的环境中所有应用程序日志中的严重、错误和警告。如果在 1000 个警告后发生严重问题,我希望 Logstash 立即发送它,为严重问题提供最高优先级,然后是错误,最后是生成的警告。
这里有哪些可用选项以及如何完成?
偏好轻量级且快速的解决方案。
我尝试优化 Logstash。听说过 RabbitMQ(想尝试一下)
Logstash 本身没有内置的优先级来发送日志。基本上,它的工作方式就像先进先出。
RabbitMQ 可以用作消息代理,以将日志生产者与日志消费者解耦。您可以将日志发送到 RabbitMQ,然后根据日志的严重程度进行消费和处理。
Kafka 充当分布式消息代理。它可以处理大量日志并提供容错能力。您可以为每个严重级别创建 Kafka 主题以保持分离。
Kafka 与 RabbitMQ: Kafka 和 RabbitMQ 都是消息代理,但通常选择 Kafka 是因为其耐用性、容错性以及对高吞吐量场景的支持。 另一方面,RabbitMQ 最初设置可能更简单,并且在保证消息传递至关重要的场景中可能是首选。
用于 rabbitmq 输入和elasticsearch 输出的示例 Logstash 配置:
input {
rabbitmq {
id => "input_rabbitmq"
exchange => "logstash-exchange"
threads => 2
}
}
filter {}
output {
elasticsearch {
hosts => "localhost:9200"
data_stream => "true"
}
}