一、 ELK日志系统简介
日志分析是运维工程师解决系统故障、发现问题的主要手段。日志包含多种类型,包括程序日志、Web 访问日志、系统日志以及安全日志等。ELK可以很好地查找以及分析所需要的内容,快速定位是否出现故障,以及哪些机器、哪些服务存在故障。
1.1 ELK的组成
ELK 由 ElasticSearch、Logstash 和 Kiabana 三个开源工具组成,其官方网站为 https://www.elastic.co/cn。
- Elasticsearch 是一个开源分布式实时分析搜索引擎,建立在全文搜索引擎库 Apache Lucene 基础上,同时隐藏了 Apache Lucene 的复杂性。Elasticsearch 将所有的功能 打包成一个独立的服务,并提供了一个简单的 RESTfulAPI 接口。它具有分布式、零配置、自动发现、索引自动分片、索引副本机制、RESTful 风格接口、多数据源、自动搜索负载等特点。
- Logstash 是一个完全开源的工具,主要用于日志收集,同时可以对数据处理,并输出 给 Elasticsearch。
- Kibana 也是一个开源和免费的工具,Kibana 可以为 Logstash 和 ElasticSearch 提 供图形化的日志分析 Web 界面,可以汇总、分析和搜索重要数据日志。
1.2 日志分析的步骤
Logstash 收集 AppServer 产生的 Log,并存放到 ElasticSearch 群集中,而 Kibana 则 从 ES 群集中查询数据生成图表,再返回给 Browser。
- 将日志进行集中化管理。
- 将日志格式化(Logstash)并输出到 Elasticsearch。
- 对格式化后的数据进行索引和存储(Elasticsearch)。
- 前端数据的展示(Kibana)。
1.3 Elasticsearch 介绍
Elasticsearch 提供了一 个分布式多用户能力的全文搜索引擎,基于 RESTful Web 接口。通过该接口,用户可以通 过浏览器与 Elasticsearch 通信。具有实时搜索、稳定、可靠、快速、安装使用方便等特点。
1.3.1 Elasticsearch 的基础核心概念
- 接近实时(NRT):Elasticsearch 是一个搜索速度接近实时的搜索平台,响应速度非常 快,从开始索引一个文档到这个文档能够被搜索到只有一个轻微的延迟(通常是 1s) 。
- 群集(cluster) :在一个或多个节点上存放用户数据,并一起提供索引和搜索功能。通过选举产生主节点,并提供跨节点的联合索引和搜索的功能。
- 节点(node):是指一台单一的服务器,多个节点组织为一个群集,每个节点都存储数据并参与群集的索引和搜索功能。默认情况,每个节点都已经加入 Elasticsearch 群集。如果群集中有多个 节点,它们将会自动组建一个名为 Elasticsearch 的群集。
- 索引(index):类似于关系型数据库中的“库”。当索引一个文档后,就可以使用 Elasticsearch 搜索到该文档,在 index 下面包含存储数据的类型(Type),Type 类似于关系型数据 库中的“表”,用来存放具体数据,而 Type 下面包含文档(Document),文档相当于关 系型数据库的“记录”,一个文档是一个可被索引的基础信息单元。
- 分片和副本(shards & replicas):Elasticsearch 将索引分成若干个部分,每个部分称为一个分片,每个分片就是一个全功能的独立的索引。分片的数量一般在索引创建前指定,且创建索引后不能更改。
- 分片的两个最主要原因如下。
水平分割扩展,增大存储量。
分布式并行跨分片操作,提高性能和吞吐量。 - Elasticsearch 将索引分片复制一份或多份,称为副本。副本是索引 的另一个备份,用于数据冗余以及负载分担。默认情况下 Elasticsearch 自动对索引请求进行负载分担。
1.4 Logstash 介绍
Logstash 由 JRuby 语言编写,运行在 Java 虚拟机(JVM)上,常用于日志处理。Logstash 只做三件事情:数据输入、数据加工(如过滤,改写等) 以及数据输出。
LogStash 的主要组件如下。
- Shipper:日志收集者。负责监控本地日志文件的变化,及时收集最新的日志文件内容。通常远程代理端(agent)只需要运行这个组件即可。
- Indexer:日志存储者。负责接收日志并写入到本地文件。
- Broker:日志 Hub。负责连接多个 Shipper 和多个 Indexer。
- Search and Storage:允许对事件进行搜索和存储。
- WebInterface:基于 Web 的展示界面。
Logstash 使用管道方式进行日志的搜集处理和输出。有点类似 Linux 系统的管道命令, 将前一个流程的处理结果发送到后一个流程继续处理。在 Logstash 中,包括了三个阶段, 分别是输入(Input )、处理(Filter,非必需)和输出(Output)。
1.5 Kibana 介绍
Kibana可以搜索、查看存储在 Elasticsearch 索引中的数据,并通过各种图表进行高级数据分析及展示,让数据看起来一目了然。
Kibana 的主要功能如下。
- Elasticsearch 无缝之集成。Kibana 架构是为 Elasticsearch 定制的,可以将任何(结构 化和非结构化)数据加入 Elasticsearch 索引。
- 整合数据。Kibana 可以让海量数据变得更容易理解,根据数据内容可以创建形象的柱形图、折线图、散点图、直方图、饼图和地图,方便用户查看。
- 复杂数据分析。Kibana 提升了 Elasticsearch 的分析能力,能够更加智能地分析数据,执行数据转换并且根据要求对数据切割分块。
- 让更多团队成员受益。强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
- 接口灵活,分享更容易。使用 Kibana 可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
- 配置简单。Kibana 的配置和启用非常简单,用户体验非常友好。Kibana 自带 Web 服务,可以快速启动运行。
- 可视化多数据源。Kibana 可以非常方便地把来自 Logstash、ES-Hadoop、Beats 或第三方技术的数据整合到 Elasticsearch。
- 简单数据导出。Kibana 可以方便地导出感兴趣的数据,与其他数据整合并融合后快速建模分析,发现新结果。
二、 部署Elasticsearch 群集
部署Elasticsearch 群集至少需要两台服务器
2.1 部署过程
1. 准备环境
修改主机名、hosts文件、关闭防火墙、内核防护
[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# su
[root@node1 ~]# vim /etc/hosts ##在hosts文件中写入下面的解析条目
14.0.0.77 node1
14.0.0.110 node2
[root@node1 ~]# systemctl stop firewalld.service
[root@node1 ~]# setenforce 0
[root@node1 ~]# java -version ##查看jdk是否安装
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# su
[root@node2 ~]# vim /etc/hosts
14.0.0.77 node1
14.0.0.110 node2
[root@node2 ~]# systemctl stop firewalld.service
[root@node2 ~]# setenforce 0
2. 安装Elasticsearch软件
两个节点服务器进行相同的操作,以node1服务器为例
[root@node1 ~]# cd /opt ##将软件包拷贝到/opt目录下
rz waiting to receive.
[root@node1 opt]# ls
elasticsearch-5.5.0.rpm logstash-5.5.1.rpm rh
elasticsearch-head.tar.gz node-v8.2.1.tar.gz
kibana-5.5.1-x86_64.rpm phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm ##rpm方式安装elasticsearch软件
警告:elasticsearch-5.5.0.rpm: 头V4 RSA/SHA512 Signature, 密钥 ID d88e42b4: NOKEY
准备中... ################################# [100%]
Creating elasticsearch group... OK
Creating elasticsearch user... OK
正在升级/安装...
1:elasticsearch-0:5.5.0-1 ################################# [100%]
### NOT starting on installation, please execute the following statements to configure elasticsearch service to start automatically using systemd
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
### You can start elasticsearch service by executing
sudo systemctl start elasticsearch.service
[root@node1 opt]# systemctl daemon-reload ##重载系统服务
[root@node1 opt]# systemctl enable elasticsearch.service ##设置为开机自启动
Created symlink from /etc/systemd/system/

本文介绍ELK(Elasticsearch、Logstash、Kibana)日志系统的原理、部署及使用方法,涵盖日志收集、分析和可视化全流程,助力运维人员高效排查故障。
最低0.47元/天 解锁文章
3847

被折叠的 条评论
为什么被折叠?



