大家先看一下ELK通过rabbitmq消息队列保存日志的结构图:
此种架构引入了消息队列机制,位于各个节点上的Logstash Agent先将数据/日志传递给RabbitMQ(或者Redis),并将队列中消息或数据间接传递给Logstash,Logstash过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了RabbitMQ(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。
那我们来看一下如何配置:
logstash的配置文件logstash.conf(自定义名称)
input{
rabbitmq {
host => "192.168.20.42" #RabbitMQ-IP地址
vhost => "/" #虚拟主机
port => 5672 #端口号
user => "test" #用户名
password => "test" #密码
queue => "LogQueue" #队列
durable => false #持久化跟队列配置一致
codec => "plain" #格式
}
tcp {
ho