redis只是提供一个高性能的、原子操作内存键值对,具有高速访问能力,可用做消息队列的存储,但是不具备消息队列的任何功能和逻辑,要作为消息队列来实现的话,功能和逻辑要通过上层应用自己实现。
一、ELK架构引入Redis配置步骤
1、首先将Filebeat的输出给到redis中,修改OUTPUT部分:
3 |
hosts:["192.168.1.100"] |
5 |
password: 'redis_password' |
6 |
key: 'log' #这个key就是将写入redis的key名,list类型 |
2、登录Redis后通过keys *命令可以看到有了一个key叫做log,这个就是配置文件里设置的key名,使用LLEN demo可以看到该key的长度,input如果输入了100行,那么这个key就应该有100行
3、配置Logstash从Redis中读取数据,修改input部分:
03 |
host => "192.168.1.100" |
08 |
password => 'redis_password' |
4、所有组件都运行成功后再去redis看看,队列会因为被output到了ES中而消失掉或者是迅速减少长度
二、ELK架构引入Kafka配置步骤
1、部署JDK与Zookeeper环境,详细安装部署可以参考本站文章《ZooKeeper集群配置教程》
2、安装Kafka,详细安装部署可以参考本站文章《Kafka集群部署使用与扩容教程》
3、修改Filebeat配置文件,将output输出目标指定为kafka
05 |
- /var/log/nginx/access.log |
06 |
tags: ["access"] #添加tags标记 |
10 |
- /var/log/nginx/error.log |
11 |
tags: ["error"] #添加tags标记 |
14 |
hosts:["192.168.1.100:9092"] |
15 |
topic: log #写到kafka中的队列标签,可自定义 |
17 |
- topic: "nginx-access" #topic名称 |
19 |
tags: "access" #当tags是access时则写入nginx-access这个topic中 |
20 |
- topic: "nginx-error" |
4、修改Logstash配置文件,将input修改为从Kafka中读取数据
03 |
bootstrap_servers => "192.168.1.100:9092,192.168.1.101:9092,192.168.1.102:9092," |
04 |
topics => ["nginx-access"] #需要和filebeat输出到kafka的topic保持一致 |
06 |
codec => "plain" #如果日志是json格式的这里就需要改为json |
10 |
bootstrap_servers => "192.168.1.100:9092,192.168.1.101:9092,192.168.1.102:9092," |
13 |
codec => "plain" #如果日志是json格式的这里就需要改为json |
5、查看kafka队列信息
1 |
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.100:9092 --list #查看Group,应该能看到log这个队列存在 |
2 |
/usr/local/kafka/bin/kafka-consumer-groups.sh --bootstrap-server 192.168.1.100:9092 --group log --describe #查看具体的队列和消费信息
|