我是 Logstash 的新手,我想将 nginx 消息存储在 RabbitMQ 队列中,如下所示:
Nginx 日志 -(输入)-> Logstash -(输出)-> RabbitMQ
logstash 配置:
filter {
grok {
match => { "message" => "%{IPORHOST:remote_ip} - %{DATA:user_name} \[%{HTTPDATE:access_time}\] \"%{WORD:http_method} %{DATA:url} HTTP/%{NUMBER:http_version}\" %{NUMBER:response_code} %{NUMBER:body_sent_bytes} \"%{DATA:referrer}\" \"%{DATA:agent}\"" }
}
}
output {
rabbitmq {
exchange => "nginx_app"
host => "localhost"
exchange_type => "topic"
persistent => true
passive => true
heartbeat => 10
arguments => {"x-ha-policy" => "all" }
codec => "plain"
port => 5672
}
}
在 RabbitMQ Web 控制台中进行调试时,我看到以下情况:消息对 RabbitMQ 可见,但当我使用简单的 Python 脚本将消息添加到队列时,它不会同时将它们保存在队列中(所有内容都已保存), 在此处输入图片描述
我的配置有什么问题?为什么 RabbitMQ 不保存消息?
先感谢您!
答案1
我找到了问题的根本原因,我需要向队列添加绑定,添加绑定后,每条消息都会被正确记录。 在此处输入图片描述