Elasticsearch,Fluentd和Kibana(EFK)组合允许收集,索引,搜索和可视化日志数据(visualize log data)。是目前比较主流的日志中心化,可视化并提供索引,搜索,分析的开软软件组合。免费使用,只有当data volumes增加时可能需要一个收费license。
Elasticsearch是一个数据搜索引擎和分布式NoSQL数据库的组合,提过日志的存储和搜索功能。Fluentd是一个消息采集,转化,转发工具,目的是提供中心化的日志服务。Kibana是一个带有强大数据整理,分析的web前端,将数据以可视化的方式呈现给用户。
另一个流行的组合为Elasticsearch,Logstash和Kibana(ELK)。两种组合架构完全相同,Logstash和Fluentd的功能也大同小异,目标都是解决日志中心化的问题。但是两者的设计出发点稍有不同,造成在解决问题的优先级,重心上可能稍有不同。Logstash强调灵活性和互操作性,而Fluentd更倾向于简单和鲁棒性(Logstash emphasizes flexibility and interoperability whereas Fluentd prioritizes simplicity and robustness.)。两者的具体差异,以及Elasticsearch和Kibana改天另写一篇具体分析。本文主要介绍如何在CentOS7上搭建EFK。
数据流入下图所示:
1. 安装和配置Elasticsearch
1.1 安装java
Elasticsearch需要java支持,所以需要首先安装java。
sudo yum update
sudo yum install java
验证是否成功安装
[xingwangc@docker-reg ~]$ java -version
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)
1.2 安装Elasticsearch
wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.1.1/elasticsearch-2.1.1.rpm
rpm -ivh elasticsearch-2.1.1.rpm
1.3 Securing Elasticsearch
从版本1.2开始,Elasticsearch默认使能了动态脚本能力,由于我们使用Kibana Dashboard供外网访问,所以在/etc/elasticsearch/elasticsearch.yml中增加如下行禁能动态脚本。
script.disable_dynamic: true
1.4 启动Elasticsearch
sudo service elasticsearch start
1.5 设置iptables规则
Elasticsearch默认监听9200端口,如果想要外部ip也可以访问到Elasticsearch,则需要设置iptables规则开发9200端口。
sudo iptables -A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 9200:9400 -j ACCEPT
1.6 设置开机自动启动Elasticsearch
sudo systemctl enable elasticsearch
2. 安装和配置Kibana
2.1 安装Kibana
curl -L https://download.elastic.co/kibana/kibana/kabana-4.3.1-linux-x64.tar.gz | tar xzf -
sudo cp -r kibana-4.3.