手把手教你搭建 ELK 实时日志分析平台
本篇文章主要是手把手教你搭建 ELK 实时日志分析平台,那么,ELK 到底是什么呢?
ELK 是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。
- Elasticsearch 是一个搜索和分析引擎。
- Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等存储库中。
- Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

Elasticsearch 的核心是搜索引擎,所以用户开始将其用于日志用例,并希望能够轻松地对日志进行采集和可视化。有鉴于此,Elastic 引入了强大的采集管道 Logstash 和灵活的可视化工具 Kibana。
ELK日志系统数据流图如下:

简短了解 ELK 是个啥后,让我们一起动手搭建 ELK 实时日志分析平台,首先安装 Elasticsearch。
注:ELK 环境搭建版本很关键,建议统一版本,避免错误无处下手,我在这里选用的是 7.1.0 版本。
ElasticSearch 介绍与安装
ElasticSearch 的介绍与安装在上一篇文章已经讲过了,这里就不进行赘述了,大家可以点击下方链接查看:
如果你已经了解并安装好 Elasticsearch,那么就跟着我一起往下一步进发:了解并安装 Kibana。
Kibana 介绍与安装
这部分主要讲解如何下载并安装 Kibana,以及如何安装 Kibana 插件,同时会针对 Kibana 的界面进行简单的介绍。
首先让我们来看下 Kibana 究竟是何物?
什么是 Kibana?
Kibana 是为 Elasticsearch 设计的开源分析和可视化平台,你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互,你可以很容易实现高级的数据分析和可视化,以图标的形式展现出来。
在简单了解了 Kibana 后,让我们来到 Kibana 的下载网站 https://www.elastic.co/cn/downloads/kibana ,目前使用的是 Windows 系统,因此下载 Windows 版本的 Kibana 下载包 kibana-7.1.0-windows-x86_64.zip。

运行 Kibana
下载完成后在本地解压,如果需要对 Kibana 做一些定制,可以在 config 目录下 编辑 kibana.yml 文件,在运行 Kibana 之前需要先运行 ElasticSearch(以下简称 ES),因为 Kibana 是基于 ES 运行的,现在进入 bin 目录下打开 kibana.bat 就可以运行 Kibana 了,我们现在打开浏览器,Kibana 是运行在 5601 端口上的,因此打开 http://localhost:5601,打开后会出现如下页面:

导入样例数据,查看 Dashboard
进入首页后会提示我们可以添加一些测试数据,ES 在 Kibana 开箱即用的版本中,已经为我们准备了三种样例数据,电商网站的订单,航空公司的飞行记录以及 WEB 网站的日志,我们可以点击 Add data,把他们添加进来,添加完成后,我们可以打开 Dashboards 界面,就可以看到系统已经为我们创建了数据的 Dashboard。

第一个是电商的利润报表,我们可以打开来看一下:

在 Dashboard 中,我们可以将多套可视结果整合至单一页面内,而后提供搜索查询或者点击可视结果内的某元素指定过滤条件,从而实现结果过滤,Dashboard 能够帮助我们更全面地了解总体日志内容,并将各可视结果同日志关联起来,以上就是 Kibana 的 Dashboard 功能。
Dev Tools
接下来介绍 Kibana 里面非常有用的工具 Dev Tools,其实就是可以很方便地在 Kibana 中执行 ES 中的一些 API,比如我们上文讲到的检测有哪些节点在运行: GET /_cat/nodes?v,这样我们就能在 Kibana 中运行 ES 命令了。

另外,Kibana 的 Dev Tools 还有许多的快捷菜单操作,比如 Ctrl + / 可以查看 API 帮助文档,其他的大家可以去自行摸索。
安装与查看插件
Kibana 可以通过插件的方式来提供一些 Kibana 中的特定应用或者增强图表展示的功能,Kibana 安装插件和 ES 非常相似。
输入 kibana-plugin install kibana-plugin install https://github.com/sivasamyk/logtrail/releases/download/v0.1.31/logtrail-7.1.0-0.1.31.zip 就可以下载 LogTrail 插件了。
在 cmd 中输入 kibana-plugin list 可以查看本机已安装的 Kibana 插件。

如果想移除插件可以使用 kibana-plugin remove logtrail 命令来进行移除插件。
到此为止,我们就下载并安装完成 Kibana,并对 Kibana 主要功能进行简单介绍,还介绍了 Dev Tools,大家可以自己在本地进行实践操作下。
目前就差 ELK 三兄弟的最后一个:Logstash,让我们一起学习下。
Logstash 介绍与安装
这部分主要是下载并安装 Logstash,并通过 Logstash 将测试数据集导入到 ES 中。
话不多说,首先让我们来了解下 Logstash 是个啥?
什么是 Logstash?
Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的存储库中。
Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用 Grok 从非结构化数据中派生出结构,从 IP 地址解码出地理坐标,匿名化或排除敏感字段,并简化整体处理过程。
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件,能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
再了解过后,让我们去下载安装 Logstash。
安装 Logstash
还是来到 Logstash 的官网,进入到下载页面 https://www.elastic.co/cn/downloads/logstash,下载的时候注意要和 ES 和 Kibana 的版本相同,这里下载的为 7.1.0 版本 logstash-7.1.0.zip。

下载后进行解压,也可以进入 conf 目录下修改 logstash.conf 进行配置,运行的时候可以通过指定配置文件 logstash -f logstash.conf 就可以执行数据的插入和转换的工作。
再安装完成之后,让我们来使用 Logstash 往 ES 中导入数据。
用 Logstash 导入 ES
下面我们来导入测试数据集,首先修改 logstash.conf 文件,内容为:
input {
file {
path => ["D:/SoftWare/logstash-7.1.0/csv/movies.csv"]
start_position => "beginning"
sincedb_path => "D:/SoftWare/logstash-7.1.0/csv/null"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
}
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
mutate {
split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
}
mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "movies"
document_id => "%{id}"
}
stdout {}
}
测试数据集来自 Movielens :https://grouplens.org/datasets/movielens/,大家可以前往下载。配置文件中的 path 根据自己下载的测试文件路径去修改。另外,配置文件的逻辑将在以后的文章中进行讲解。
现在来执行命令 logstash -f logstash.conf 来把数据导入 ES。当看到数据打印到控制台时,数据也正在被写入 ES 中。

到此为止,我们就成功安装了 Logstash,并通过 Logstash 将测试数据集写入 ES,同时我们的 ELK 实时日志分析平台就搭建完成了。
补充
在通过 Logstash 将测试数据集写入 ES 后,小伙伴会发现 movies 索引状态为 yellow,不用担心,yellow 代表有副本分片没有被分配。
因为只在本机之启动了一个节点,而 movies 的索引设置了一个主分片一个副本分片,主副分片是无法分配在一个节点上的。
解决方法:修改索引 setting,将副本 replica 设置成 0,或者为集群增加一个节点,状态就会变为 green。
总结
本文主要了解了什么是 ELK,然后通过实际操作和大家一起搭建了一个 ELK 日志分析平台,如果在搭建过程中有什么问题,欢迎留言交流讨论。
如果 ELK 安装包或者测试数据集下载速度慢的话,可以在【武培轩】公众号回复 elk资料即可获得。
参考文献
https://www.elastic.co/guide/en/kibana/7.1/index.html
https://www.elastic.co/guide/en/logstash/7.1/index.html
Elasticsearch核心技术与实战
手把手教你搭建 ELK 实时日志分析平台的更多相关文章
- asp.net core结合NLog搭建ELK实时日志分析平台
0.整体架构 整体架构目录:ASP.NET Core分布式项目实战-目录 一.介绍ELK 1.说明(此篇ELK采用rpm的方式安装在服务器上)-牛刀小试 承接上一篇文章的内容准备部署ELK来展示asp ...
- ELK实时日志分析平台环境部署--完整记录
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- ELK实时日志分析平台环境部署--完整记录(转)
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- elk实时日志分析平台部署搭建详细实现过程
原文:http://blog.csdn.net/mchdba/article/details/52132663 1.ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:以下内容 ...
- ELK实时日志分析平台环境部署,以及可视化展示
ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件.新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent) ...
- ELK实时日志分析平台环境部署
为什么要用到ELK一般我们需要进行日志分析场景是:直接在日志文件中 grep.awk 就可以获得自己想要的信息.但在规模较大的场景中,此方法效率低下,面临问题包括日志量太大如何归档.文本搜索太慢怎么办 ...
- ELK实时日志分析平台环境部署--完整记录(ElasticSearch+Logstash+Kibana )
https://blog.csdn.net/oLevin/article/details/81020794
- ELK搭建实时日志分析平台之二Logstash和Kibana搭建
本文书接前回<ELK搭建实时日志分析平台之一ElasticSearch> 文:铁乐与猫 四.安装Logstash logstash是一个数据分析软件,主要目的是分析log日志. 1)下载和 ...
- ELK搭建实时日志分析平台之一ElasticSearch搭建
文:铁乐与猫 系统:CentOS Linux release 7.3.1611 (Core) 注:我这里为测试和实验方便,ELK整套都装在同一台服务器环境中了,生产环境的话,可以分开搭建在不同的服务器 ...
随机推荐
- 解决python爬虫requests.exceptions.SSLError: HTTPSConnectionPool(host='XXX', port=443)问题
爬虫时报错如下: requests.exceptions.SSLError: HTTPSConnectionPool(host='某某某网站', port=443): Max retries exce ...
- 【javaScript】获取某年某月的的最后一天(即当月天数) 妙用
javaScript里 面的new Date("xxxx/xx/xx")这个日期的构造方法有一个妙处,当你传入的是"xxxx/xx/0"(0号)的话,得到的日期 ...
- 《编写高质量代码:改善C#程序的157个建议》是C#程序员进阶修炼的必读之作
- MYGUI3.2改造——完善windows下的文字显示
MYGUI 3.2 是支持中文显示的——往“MyGUI_Fonts.xml”文件里添加上中文的编码范围即可,这个网上有很多. 能显示中文后,再添加中文的自动换行,这个网上有:http://blog.s ...
- mysql输出到页面MVC模式
上一篇文章我提到过在jsp页面不好 这篇文章讲的就是界面和代码分离,可以初步实现两个或三个人合作完成一个项目 好,废话不多说,进正题 这次又四个步骤 第一步,新建项目,新建实体类 第二步,新建数据库, ...
- maven远程部署到tomcat8服务器
maven远程部署到tomcat8服务器 环境准备 linux服务器一台 服务器安装JDK 服务器安装Tomcat 服务器Tomcat8配置 添加Tomcat权限 配置文件路径: tomcat/con ...
- 【学习笔记】Git的日常使用
Note:本笔记是我学习廖雪峰老师的Git教程整理得到,在此向廖老师的无私付出表示衷心的感谢! 0.Git的历史 Git是一个分布式的版本控制系统(C语言编写,一开始为Linux社区服务,替代BitK ...
- 图像GIST特征和LMGIST包的python实现(有github)
1什么是Gist特征 (1) 一种宏观意义的场景特征描述 (2) 只识别"大街上有一些行人"这个场景,无需知道图像中在那些位置有多少人,或者有其他什么对 ...
- React报错Failed prop type: Invalid prop `component` of type `object` supplied to `Route`, expected `function`
引言 最近在忙毕业设计,博客也很久没更新了,毕业设计使用vue做了一个校园寻物网站,现在开始学Raect,记录一下自己遇到问题,react-redux的connect方法使得组件与Redux建立了联系 ...
- 1、通过CP数据文件的方式恢复MySQL 从库 启动后报错:Last_IO_Errno: 1236:A slave with the same server_uuid/server_id as this slave has connected to the master;
1.问题: MySQL从库中查看主从状态: show slave status\G,发现出现IO的报错: Last_IO_Errno: Last_IO_Error: Got fatal error f ...