一.ELK Stack 概述
ELK是一组开源软件的简称,其包括Elasticsearch、Logstash 和 Kibana。ELK最近几年发展迅速,已经成为目前最流行的集中式日志解决方案。
Elasticsearch: 能对大容量的数据进行接近实时的存储,搜索和分析操作。 本项目中主要通过Elasticsearch存储所有获取的日志。
Logstash: 数据收集引擎,它支持动态的的从各种数据源获取数据,并对数据进行过滤,分析,丰富,统一格式等操作,然后存储到用户指定的位置。
Kibana: 数据分析与可视化平台,对Elasticsearch存储的数据进行可视化分析,通过表格的形式展现出来。
Filebeat: 轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装Filebeat,并指定目录与日志格式,Filebeat就能快速收集数据,并发送给logstash进行解析,或是直接发给Elasticsearch存储。
二.ELK常用的架构
1. 基础结构
单一的架构,logstash作为日志搜集器,从数据源采集数据,并对数据进行过滤,格式化处理,然后交由Elasticsearch存储,kibana对日志进行可视化处理。
2.多节点部署Logstash架构
这种架构模式适合需要采集日志的客户端不多,且各服务端cpu,内存等资源充足的情况下。因为每个节点都安装Logstash, 非常消耗节点资源。其中,logstash作为日志搜集器,将每一台节点的数据发送到Elasticsearch上进行存储,再由kibana进行可视化分析。
3.多节点部署Filebeats架构
Filebeats是一种轻量级的日志搜集器,其不占用系统资源,自出现之后,迅速更新了原有的elk架构。Filebeats将收集到的数据发送给Logstash解析过滤,在Filebeats与Logstash传输数据的过程中,为了安全性,可以通过ssl认证来加强安全性。之后将其发送到Elasticsearch存储,并由kibana可视化分析。
三.多节点部署Filebeats架构详解
1. centos系统上安装java8
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ##下载java8rpm包上传到服务器
yum -y localinstall jdk-8u73-linux-x64.rpm
2.安装 Elasticsearch
rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch ##从官网导入gpgkey
vim /etc/yum.repos.d/elasticsearch.repo
echo '[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
yum -y install elasticsearch ##YUM安装Elasticsearch
vi /etc/elasticsearch/elasticsearch.yml
network.host: localhost #修改为仅本地接触到9200端口
注:为了安全起见,只允许本地访问9200端口。防止外部通过http api恶意操作9200端口。
systemctl start elasticsearch
systemctl enable elasticsearch
3. 安装Kibana
Kibana的rpm包与Elasticsearch共用一个GPG Key,因此不用再重新下载 gpg key.
vi /etc/yum.repos.d/kibana.repo
[kibana-4.4]
name=Kibana repository for 4.4