将rabbitmq事件发送到logstash和弹性

时间:2016-09-21 15:17:33

标签: elasticsearch rabbitmq logstash kibana logstash-configuration

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

然后我会配置一个logstash实例来监听这些兔子队列,然后它将转发到弹性和 我可以使用Kibana仪表板查看这些内容。

我已经遵循了各种教程,并在我的Windows机器上运行了ELK堆栈。 我甚至为logstash安装了winbeats插件,并且能够在Kibana仪表板中看到事件日志。

现在,我想用winbeats替换rabbitmq部分,现在我的logstash配置中有以下配置。

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发送到队列的消息 发布消息的代码工作正常,我可以从我的其他样本兔队列消费者中读取消息 当我导航到http://localhost:9200/logstash-*

时,我只得到一个空的json文件

0 个答案:

没有答案