elasticsearch 将rabbitmq事件发送到logstash和elastic
我正在尝试从各种进程/服务构建日志聚合器。 为此,我计划将日志写入磁盘和每个服务的专用兔子队列 然后,我将配置一个logstash实例来侦听这些兔子队列,然后它将转发给elastic和elastic 我可以使用Kibana仪表板查看这些。 为此,我已经学习了各种教程,并在我的Windows机器上使用了ELK stack。 我甚至为logstash安装了winbeats插件,并且能够在Kibana仪表板中查看事件日志。 现在,我想用elasticsearch 将rabbitmq事件发送到logstash和elastic,elasticsearch,rabbitmq,logstash,kibana,logstash-configuration,elasticsearch,Rabbitmq,Logstash,Kibana,Logstash Configuration,我正在尝试从各种进程/服务构建日志聚合器。 为此,我计划将日志写入磁盘和每个服务的专用兔子队列 然后,我将配置一个logstash实例来侦听这些兔子队列,然后它将转发给elastic和elastic 我可以使用Kibana仪表板查看这些。 为此,我已经学习了各种教程,并在我的Windows机器上使用了ELK stack。 我甚至为logstash安装了winbeats插件,并且能够在Kibana仪表板中查看事件日志。 现在,我想用rabbitmq替换winbeats部分,现在在我的log
rabbitmq
替换winbeats
部分,现在在我的logstash
config中有下面的配置
input {
rabbitmq {
host => "localhost"
queue => "MyLogQueue"
exchange => "MyLogExchange"
durable => true
subscription_retry_interval_seconds => 5
}
}
output {
elasticsearch {
hosts => [ "localhost:9200" ]
}
}
这是我用来将消息发布到队列的代码
var factory = new ConnectionFactory { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "MyLogQueue", durable: true, exclusive: false, autoDelete: false, arguments: null);
var timer = new Timer(TimeSpan.FromSeconds(2).TotalMilliseconds);
string[] logBag = {"Info", "Trace", "Warn", "Error" };
var randomIndex = new Random(0) ;
timer.Elapsed += (sender, args) =>
{
var message = logBag[randomIndex.Next(0, logBag.Length -1)] + " " + DateTime.Now.ToString("R");
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "MyLogExchange", routingKey: "MyLogQueue", basicProperties: null, body: body);
Console.WriteLine("Sent {0}", message);
};
timer.Start();
Console.ReadLine();
timer.Stop();
}
我可以看到logstash实例正在正确启动,但无法查看
我在Kibana
中发送到队列的消息发布消息的代码工作正常,我可以从另一个示例rabbit队列消费者处读取消息。
当我导航到
http://localhost:9200/logstash-*
尝试使用--verbose
甚至--debug
运行logstash,查看logstash是否显示有关rabbitmq队列的任何信息,你在你的ES日志中看到了什么吗?也看看Logstash中的日志,并在你的问题中添加似乎相关的部分。我在日志中也没有看到任何明显的内容。