我正在尝试从各种流程/服务构建日志聚合器。 为此,我计划将日志写入磁盘以及每个服务的专用兔子队列。
然后我会配置一个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-*