Kafka/Redis + ELFK分布式日志收集
Filebeat —> Kafka —> Logstash —> ES Cluster —> Kibana/Grafana
Filebeat —> Redis —> Logstash —> ES Cluster —> Kibana/Grafana
使用背景
由于ELFK
的局限性,随着 Beats
收集的每秒数据量越来越大,Logstash
可能无法承载这么大量日志的处理。虽然说,可以增加 Logstash 节点数量,提高每秒数据的处理速度,但是仍需考虑可能Elasticsearch
无法承载这么大量的日志的写入。此时,我们可以考虑 引入消息队列 (Kafka
),进行缓存。
Filebeat —> Kafka/Redis
输出到redis
:
启动 Kafka/Redis
这里为了方便起见,我使用docker-compose
脚本来进行快速部署,脚本内容参见[使用 docker-compose 部署 Kafka](../Kafka/使用 docker-compose 部署 Kafka.md)
如果你已经安装好了kafka-manager
, 可以在面板上看到相关topic
已经创建, 并且写入数据之后, 已经有了分区偏移量, 如下图所示:
检测filebeat
是否将日志传递给kafka
:
启动redis
:
进入redis
交互式客户端进行查看(由于信息太长, 在此进行缩略显示):
Kafka/Redis —> Logstash —> ElasticSearch
从kafka
输入:
从redis
输入:
启动es
和logstash
之后, 打开浏览器, 使用插件访问elasticsearch
的web管理页面, 查看是否已经收集到tomcat
日志信息.
打开Kibana
管理界面, 添加索引, 并在Dashboard
中查看来自Logstash
的日志.
参考链接