作者: 赵怡
1. ELK概述
我们在大规模服务器节点上部署某分布式软件后(如OpenStack), 需要对其进行持续运维和监测状态。一般情况下, 通过实时查看和过滤该软件的log日志是必须的通用手段。手动在每个节点上挨个查看log文件效率低下, 并不现实, 而自己写脚本去每个节点上抓取log文件的性能并不高。
ELK这套实时日志分析系统能够有效解决上述问题, 并能和其他运维管理系统集成, 达到自动抓取log, 过滤分析的目的。
ELK实际上由3个软件组成: Elastic Search, Logstash和Kibana, 来自一家公司, 代码都是Java写的。
* Elastic Search是一款基于Lucene开源的分布式搜索引擎, 它的特点是: 分布式, 开源的实时全文查询和分析引擎。
* Logstash是一款开源的数据收集器和管道, 可以收集多种数据源 (如文件, tcp, syslog), 编码转换格式/过滤, 并输出到elastic search或其他软件中。目前有很多插件可以来支持各种各样的数据源以及输出格式。
* Kibana是一款开源的数据可视化平台, 能够通过输入的数据在网页上展示出不同的图表。
另外通过该公司的Beats项目中的Packetbeat插件, 可以收集主机上的网络报文, 作为输入源给elastic search分析。
Elastic-search, Logstash,Kibana之间的关系
2. OpenStack中如何安装和配置ELK
在OpenStack中, 我们会实时监控各节点上各组件的log日志, 以获取告警信息, 并能及时发现系统运行时发生的错误。
以nova, neutron组件为例, 我们看看在OpenStack下如何集成ELK工具。
我们会把elastic search和kibana安装在控制节点上, logstash安装在控制节点、网络节点和计算节点上。
首先需要保证所有节点上安装了JRE 7.0以上版本, 以提供JAVA环境, 推荐安装Java 8 update 20or later, or Java 7 update 55 or later, Java 7早期的版本有严重bug, 会导致数据丢失。笔者安装的是: java-1.8.0-openjdk
a) 安装、配置Elastic Search
安装:
# sudo yum install https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticse |