ELK(Elasticsearch + Logstash + Kibana)。
- Elasticsearch:分布式实时搜索和分析引擎,存储、分析、搜索数据。
- Logstash:收集、分析和过滤日志,形成结构化数据,并推送给 Elasticsearch。
- Kibana:基于Web的图形界面,展示数据。
经典的 ELK 架构是 C/S 模式,由部署在客户端的 Logstash 收集日志,形成结构化数据,推送给服务端的 Elasticsearch,然后用 Kibana 展示出来。
但是 Logstash 运行时比较占用内存等资源,生产环境上的日志收集工具采用轻量级的 Filebeat。对于日志数据流特别大的情况,LogStash 会造成拥堵和数据丢失,可以使用消息队列来进行缓冲,如 kafka,redis。服务端的 Logstash 从 redis 队列获取数据。
大致流程:Logs -> Filebeat -> redis -> LogStash -> Elasticsearch -> Kibana -> Nginx
ELK 没有任何安全机制,可以使用 Nginx 作反向代理,避免用户直接访问 Kibana 服务器。另外,Nginx 本身具有负载均衡的作用,能够提高系统访问性能。