一、ELK日志分析系统简介
1.1、日志服务器
1.1.1、提高安全性
1.1.2、集中存放日志
1.1.3、缺陷
对日志的分析困难
1.2、ELK日志分析系统
1.2.1、Elasticsearch
1.2.2、Logstash
1.2.3、Kibana
1.3、日志处理步骤
1.3.1、将日志进行集中化管理
1.3.2、将日志格式化(Logstash)并输出到(Elasticsearch)
1.3.3、对格式化后的数据进行索引和存储(Elasticsearch)
1.3.4、前端数据的展示(Kibana)
二、ELK组件介绍
2.1、ELasticsearch的概述
- 提供了一个分布式多用户能力的全文搜索引擎
2.2、Elasticsearch核心概念
2.2.1、接近实时
- elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)
2.2.2、集群
- 一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。其中一个节点为主节点,这个主节点是可以通过选举产生的,并提供跨节点的联合索引和搜索的功能。集群有一个唯一性标示的名字,默认是elasticsearch,集群名字很重要,每个节点是基于集群名字加入到其集群中的。因此,确保在不同环境中使用不同的集群名字。一个集群可以只有一个节点。强烈建议在配置elasticsearch时,配置成集群模式。
2.2.3、节点
- 节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。节点可以通过指定集群名字来加入到集群中。默认情况,每个节点被设置成加入到elasticsearch集群。如果启动了多个节点,假设能自动发现对方,他们将会自动组建一个名为elasticsearch的集群。
2.2.4、索引
- 索引(库)→类型(表)→文档(记录)
2.2.5、分片和副本
- 在实际情况下,索引存储的数据可能超过单个节点的硬件限制。如一个10亿文档需1TB空间可能不适合存储在单个节点的磁盘上,或者从单个节点搜索请求太慢了。为了解决这个问题,elasticsearch提供将索引分成多个分片的功能。当在创建索引时,可以定义想要分片的数量。每一个分片就是一个全功能的独立的索引,可以位于集群中任何节点上。
- 每个索引可以被分成多个分片。一个索引也可以被复制0次(意思是没有复制)或多次。一旦复制了,每个索引就有了主分片(作为复制源的原来的分片)和复制分片(主分片的拷贝)之别。分片和副本的数量可以在索引创建的时候指定。
- 在索引创建之后,你可以在任何时候动态地改变副本的数量,但是你事后不能改变分片的数量。
默认情况下,Elasticsearch中的每个索引被分片5个主分片和1个副本,这意味着,如果你的集群中至少有两个节点,你的索引将会有5个主分片和另外5个副本分片(1个完全拷贝),这样的话每个索引总共就有10个分片。
2.3、Logstash介绍
2.3.1、Logstash介绍
- 一款强大的数据处理工具
- 可实现数据传输、格式处理、格式化输出
- 数据输入、数据加工(如过滤,改写等)以及数据输出
2.3.2、Logstash主要组件
- Shipper:日志收集者,负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可
- Indexer:日志存储者,负责接收日志并写入到本地文件
- Broker:日志hub,负责连接多个shipper和多个indexer
- Search and Storage:允许对事件进行搜索和存储
- Web Interface:基于Web的展示界面
2.4、Kibana介绍
2.4.1、Kibana介绍
- 一个针对Elasticsearch的开源分析及可视化平台
- 搜索、查看存储在Elasticsearch索引中的数据
- 通过各种图表进行高级数据分析及展示
2.4.2、Kibana主要功能
- Elasticsearch无缝之集成
- 整合数据,复杂数据分析
- 让更多团队成员受益
- 接口灵活,分享更容易
- 配置简单,可视化多数据源
- 简单数据导出
三、ELK日志问及那系部署
3.1、环境说明
部署两台Elasticsearch做集群,node1做ELK日志分析系统
apache |
20.0.0.30 |
httpd |
Logstash |
||
node1 |
20.0.0.10 |
Elasticsearch |
Kinaba |
||
node2 |
20.0.0.20 |
Elasticsearch |
3.2、Elasticsearch配置(下面的操作都需要在node1、node2上配置)
3.2.1、安装密钥及elasticsearch源
1 [root@node1 ~]# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch 2 [root@node1 ~]# cd /etc/yum.repos.d/ 3 [root@node1 yum.repos.d]# vi elasticsearch.repo 4 [elasticsearch-2.x] 5 name=Elasticsearch repository for 2.x packages 6 baseurl=http://packages.e