今天继续给大家介绍Linux运维相关知识,本文主要内容是ELK搭配Redis做消息队列。
一、架构概述
在ELK详解(一)——ELK基本原理一文中,我们曾经介绍过ELK的如下架构:
在之前的配置中,我们的Logstash与Elasticsearch设备之间相连,数据直接传送。但是,如果Elasticsearch设备链接的Logstash终端数量过多,则给Elasticsearch造成的压力就会很大,基于这种现状,我们使用一台设备,安装Redis,作为ELK架构的消息队列。收集各Logstash终端的日志信息,然后将日志信息传输给Elasticsearch,以减轻ELasticsearch设备的压力。
在本次实战中,我们的设备及安装服务说明如下:
设备一:192.168.136.101 Elasticsearch(包含Head插件)+Redis+Logstash
设备二:192.168.136.13 Elasticsearch+Redis
下面,我们就来实现ELK+Redis的配置实战。在设备二上收集日志信息,然后将其传送到设备一的Redis中,然后再由设备一实现将Redis中的数据取出,然后将其输出到Elasticsearch集群中。
注意,在此实战中,理论上应该有三台设备,Redis应该作为单独的设备,但是由于个人电脑硬件配置有限,因此暂时只能上述架构代替,但是其基本原理是一致的。
二、将日志信息写入Redis
首先,我们来实现将日志信息写入Redis。
在设备二上,写Logstash配置文件内容如下所示:
input{
file{
path=>"/var/log/messages"
type=>"to-redis"
start_position=>"beginning"
stat_interval=>"5"
}
}
output{
redis{
data_type=>"list"
host=>"192.168.136.101"
port=>"6379"
db=>"0"
key=>"log-through-redis"
}
}
在上述配置中,我们在输出中使用了Redis模块,
配置完成后,执行命令:
logstash -f /etc/elasticsearch/conf.d/to-redis.conf
上述命令执行结果如下:
这时,我们登录设备一的Redis,查看内容如下:
可以看出,Redis中已经写入了日志信息,我们成功的将日志信息写入了Redis中。
三、将Redis信息写入Elasticsearch
接下来,我们实现将Redis信息写入Elasticsearch。
在设备一上,写Logstash配置文件内容如下所示:
input{
redis{
data_type=>"list"
host=>"192.168.136.101"
port=>"6379"
db=>"0"
key=>"log-through-redis"
}
}
output{
elasticsearch{
hosts=>["192.168.136.101:9200"]
index=>"redis-log"
}
}
上述配置与本文第二章的配置文件非常相似,只不过在第二章中的输出部分使用了redis模块,而在本章中输入部分使用了redis模块,其作用就不过多赘述了。
上述配置完成后,执行命令:
logstash -f /etc/elasticsearch/conf.d/redis-to.conf
上述命令执行结果如下:
接下来,我们来查看Elasticsearch集群,结果如下:
可以看出,Logstash已经将Redis中的数据输出到了Elasticsearch中。
此时,我们再查看Redis中的键值情况,结果如下:
可以看出,Logstash在取出Redis的日志信息后,会自动将该信息删除。
至此,我们的ELK+Reids配置实战成功!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200