redis做缓存收集日志
在之前架构的基础上添加redis存储介质与logstash中间件,来缓解es的压力
因为es集群处理日志会达到一个峰值,当无法处理时,日志被就会被丢弃,造成分析日志就不精确
filebeat收集的日志会先存到redis中去,redis不会主动将日志发给logstash
logstash会向redis要日志,然后logstash会把日志给到es集群
部署redis
安装redis
yum install redis -y
修改redis配置文件
vim /etc/redis.conf
redis部署在哪台机器上就写哪台机器的IP
重启redis服务
systemctl start redis
redis启动后会起来6379端口
ss -lnt
然后尝试连接redis
redis-cli -h 192.168.51.189
-h参数是制定要连接的redis服务的IP地址
清空nginx之前的老日志
>/var/log/nginx/access.log
生成新的访问日志
修改filebeat配置文件,将日志输出到redis
vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/nginx/access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["access"] #添加tag标签
- type: log
enabled: true
paths:
- /var/log/nginx/error.log
tags: ["error"] #添加tag标签
output.redis: #这里的输出不再是elasticsearch,改为redis
hosts: ["192.168.51.189"] #这里是redis服务的IP filebeat不支持redis集群,如果我们在设置redis集群的时候,IP写成集群的主节点即可
keys:
- key: "nginx_access"
when.contains:
tags: "access" #通过标签判断,当输入的tags为access时,将日志输出到键为nginx_access的键中
- key: "nginx_error"
when.contains:
tags: "error" #与上面同理
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
重启filebeat服务
systemctl restart filebeat
查看filebeat日志,显示已经与redis建立连接
然后再尝试连接redis客户端
redis-cli -h 192.168.51.189
查看所有键,就会看到之前配置好的键
查看这个键的长度
llen nginx_access
查看这个键对就有那些值
lrang nginx_access 0 -1
0代表开头
-1代表结尾