引言
在传统项目中,如果在生产环境中,有多台不同的服务器集群,如果生产环境需要通过日志定位项目的Bug的话,需要在每台节点上使用传统的命令方式查询,这样效率非常底下。
通常,日志被分散在储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。当务之急我们使用集中化的日志管理,例如:开源的syslog
,将所有服务器上的日志收集汇总。
集中化管理日志后,日志的统计和检索又成为一件比较麻烦的事情,一般我们使用grep、awk和wc等Linux命令能实现检索和统计,但是对于要求更高的查询、排序和统计等要求和庞大的机器数量依然使用这样的方法难免有点力不从心。
处理分布式情况下日志采集的问题,最流行的莫过于使用ELK了,下面来讲解下。
1.ELK分布式日志采集系统
何为ELK?其实是ElasticSearch、Logstash、Kibana的缩写,具体如下:
-
「ElasticSearch」 是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
-
「Logstash」 是 一个完全开源的工具,它可以对日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。说到搜索,logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
-
「Kibana」 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
2.Logstash介绍
Logstash是一个完全开源的工具,它可以对日志进行收集、过滤、分析,支持大量的数据获取方法,并将其存储供以后使用(如搜索)。
Logstash带有一个web界面,搜索和展示所有日志。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Logstash事件处理有三个核心流程:inputs → filters → outputs
(接收,处理,转发日志)。支持系统日志,webserver日志,错误日志,应用日志,总之包括所有可以抛出来的日志类型。
3.ELK分布式日志采集系统原理
日志采集原理:
- 每台服务器集群节点安装Logstash日志收集系统插件。
- 每台服务器节点将日志输入到Logstash中。
- Logstash将该日志格式化为json格式,根据每天创建不同的索引,输出到ElasticSearch中。
- 浏览器使用安装Kibana查询日志信息。
环境安装:
- 安装ElasticSearch(参考:《Linux环境下安装Elasticsearch》)
- 安装Logstash(下文讲)
- 安装Kibana(参考:《Linux环境安装Kibana》)