ELK介绍及其架构
由于在生产环境中服务器比较多,要管理的日志数量也多(业务日志、异常日志、中间件的日志..),每次查看日志都是要ssh登录上去,找到具体的文件在用文本处理工具(sed、awk、grep)查找分析,麻烦且不说,日志文件大了效率也慢。。所以,考虑使用ELK。
一、简单介绍ELK
ELK是三个开源软件的缩写,分别为:Elasticsearch 、 Logstash以及Kibana , 它们都是开源软件。不过现在还新增了一个Beats,它是一个轻量级的日志收集处理工具(Agent),Beats占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具,目前由于原本的ELK Stack成员中加入了 Beats 工具所以已改名为Elastic Stack
Elastic Stack包括:
- Elasticsearch
- Logstash,主要是用作日志的搜集、分析、过滤,支持大量数据的获取。一般工作方式为C/S架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作发送到elasticsearch上去。
- Kibana, 是一个提供可视化的功能的工具。
- Beats是一个轻量级的日志采集器,早起ELK架构中使用 Logstash作为收集、处理、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高,相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。
二、ELK架构
ELK架构分为两种,一种是经典的ELK,另外一种是加上消息队列(Redis或Kafka或RabbitMQ)和Nginx结构。
经典的ELK
经典的ELK主要是由Filebeat + Logstash + Elasticsearch + Kibana组成,如下图:(早期的ELK只有Logstash + Elasticsearch + Kibana)

此架构主要适用于数据量小的开发环境,存在数据丢失的危险。
消息队列+Nginx架构
这种架构,主要加上了Redis或Kafka或RabbitMQ做消息队列,保证了消息的不丢失。而加上Nginx,则是可以增加一层访问限制(因为Kibana本身没有限制,所以放在Nginx做),如下图:

此种架构,主要用在生产环境,可以处理大数据量,并且不会丢失数据。

浙公网安备 33010602011771号