elasticsearch 将rabbitmq事件发送到logstash和elastic,elasticsearch,rabbitmq,logstash,kibana,logstash-configuration,elasticsearch,Rabbitmq,Logstash,Kibana,Logstash Configuration" /> elasticsearch 将rabbitmq事件发送到logstash和elastic,elasticsearch,rabbitmq,logstash,kibana,logstash-configuration,elasticsearch,Rabbitmq,Logstash,Kibana,Logstash Configuration" />

elasticsearch 将rabbitmq事件发送到logstash和elastic

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

我正在尝试从各种进程/服务构建日志聚合器。 为此,我计划将日志写入磁盘和每个服务的专用兔子队列

然后,我将配置一个logstash实例来侦听这些兔子队列,然后它将转发给elastic和elastic 我可以使用Kibana仪表板查看这些。

为此,我已经学习了各种教程,并在我的Windows机器上使用了ELK stack。 我甚至为logstash安装了winbeats插件,并且能够在Kibana仪表板中查看事件日志。

现在,我想用
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中的日志,并在你的问题中添加似乎相关的部分。我在日志中也没有看到任何明显的内容。