你将从本书学习到:
安装、配置并运行Elasticsearch、Logstash和Kibana
理解日志分析的需求,以及当前在日志分析中的挑战
使用ELK构建自己的数据管道
熟悉Logstash的关键特性及其提供的不同的输入、过滤和输出插件
构建自定义Logstash插件
使用Kibana的图表、直方图和快速搜索等特性创建有价值的分析
理解Elasticsearch在ELK技术栈中的作用
ELK 技术栈是一套新兴的日志处理开源系统,ELK 分别代表Elasticsearch、Logstash 和Kibana。Elasticsearch 是基于Lucene 构建的一套分布式搜索引擎,提供了实时搜索和聚合分析的能力,是整个ELK技术栈的核心。Logstash 构建了数据采集、解析和输出的框架,通过插件可以支持不同的输入、过滤和输出的场景。Kibaba 实现了对Elasticsearch 的搜索查询和数据可视化。三者组合起来是一套经过很多生产环境验证的日志解决方案。《Learning ELK Stack 中文版》针对ELK 技术栈由浅入深地对每个组件做了介绍,并且通过实际的部署和应用案例,真正地讲清楚了如何利用ELK 技术栈来实现日志数据的完整管道。
译者序
随着云计算和大数据的发展,分布式架构已经成为常态。分布式架构解决了系统随着业务发展的可扩展性问题,也随之引入了一些新的问题。比如日志,在分布式系统中,日志也随之分布到多台服务器上。这时候,要借助日志来排查系统问题,或者分析业务数据等,成本就比传统的单机系统要高出很多了。
从大数据的角度来看,大数据的来源,主要包括:
1. 数据库
2. 日志文件
3. 爬虫
其中日志文件是最常见也是量最大的数据来源。爬虫也经常会将初步处理的数据以文件的形式存放,也可以归结到日志文件一类。解决日志文件的采集、解析和分析,也是大数据时代的普遍需求。
所以,在云计算和大数据时代,将分布在多台服务器上的日志集中起来,统一地进行存储、解析、搜索和分析展现,成为一种普遍需求。在开源领域,ELK 技术栈是解决日志问题的一种流行方案,这两年来得到了越来越多公司的青睐。ELK 技术栈中的E,代表Elasticsearch,是基于Lucene 构建的一套分布式搜索引擎,并且在传统的基于倒排索引的搜索功能之外,通过引入列式存储DocValue,具备了不错的分析能力。
我在创立袋鼠云之初,就将日志做为公司大数据产品的主攻方向,基于Elasticsearch和Logstash 开发了袋鼠云日志。在产品的开发过程中,对Elasticsearch、Logstash 和Kibana这套ELK 技术栈有了更深的认识。在日志场景下,这确实是非常匹配的一套开源的日志解决方案。但要用好这套开源产品,也需要深入理解每个组件的细节,需要有一支技术能力较强的团队来维护和开发。
今年春节前,电子工业出版社的张春雨在朋友圈征集这本书的译者时,刚好是我们团队在设计袋鼠云日志的阶段,所以毫不犹豫的点赞抢得了这个机会。完稿之后,才发现这本书写得真是非常扎实,各种细节娓娓道来,真正做到了深入浅出,对于技术写作来说,这相当不容易。所以这次翻译工作也让我们团队获益不小,希望本书的读者同样也能有所收获。
为了让本书尽快和读者见面,我们组织了一个袋鼠云的专家团队。我本人负责第一、二章,张新铭负责第三、四章,阚海明负责第五、六、七章,林杰负责第八、九、十章,最后由我统一审稿。由于时间比较紧张,疏漏之处难免,敬请读者朋友们指正。
宁海元 袋鼠云CTO
2016/5/6 于西园
前言 XIII
1 EKL 技术栈介绍 1
日志分析的必要性 1
问题调试 2
性能分析 2
安全分析 2
预测分析 2
物联网日志 3
日志分析的挑战 3
不一致的日志格式 3
不同的时间格式 4
专业知识的需求 5
ELK 技术栈 5
Elasticsearch 5
Logstash 6
Kibana 6
ELK 数据管道 7
安装 ELK 技术栈 8
安装 Elasticsearch 8
运行 Elasticsearch 9
配置 Elasticsearch 10
Elasticsearch 插件 11
安装 Logstash 11
运行 Logstash 12
Logstash 的文件输入插件 13
Learning ELK stack(中文版)
【VIII】
Logstash 的 Elasticsearch 输出插件 13
配置 Logstash 14
安装 Logstash forworder 15
Logstash 插件 15
安装 Kibana 17
配置 Kibana 18
运行 Kibana 18
Kibana 的界面 19
总结 22
2 构建第一条 ELK 数据管道 23
输入的数据集 23
输入数据集的数据格式 23
配置 Logstash 的输入 25
过滤和处理输入数据 26
将数据存储到 Elasticsearch 29
使用 Kibana 可视化 32
运行 Kibana 32
Kibana 可视化组件 34
构建折线图 35
构建柱状图 36
构建度量 37
构建数据表 38
总结 40
3 使用 Logstash 采集、解析和转换数据 41
配置 Logstash 41
Logstash 插件 42
列出 Logstash 的所有插件 42
插件属性的数据类型 43
Logstash 条件语句 44
Logstash 插件的类型 46
总结 72
目录
【IX】
4 创建自定义 Logstash 插件 73
Logstash 插件管理 73
插件生命周期管理 74
安装插件 74
更新插件 75
卸载插件 75
Logstash 插件的结构 76
需要的依赖 77
类定义 78
配置插件名字 78
配置选项设置 78
插件方法 79
实现一个 Logstash 过滤器插件 81
构建插件 83
总结 86
5 为什么需要 ELK 中的 Elasticsearch 87
为什么是 Elasticsearch 87
Elasticsearch 的基本概念 88
索引 88
文档 88
字段 89
类型 89
映射 89
分片 89
主分片和副本分片 89
集群 90
节点 90
探索 Elasticsearch API 91
列出所有可用索引 92
列出集群中的所有节点 93
检查集群的健康状态 93
Learning ELK stack(中文版)
【X】
创建索引 94
检索文档 95
删除文档 96
Elasticsearch Query DSL 97
Elasticsearch 插件 104
Bigdesk 插件 104
Elastic-Hammer 插件 105
Head 插件 105
总结 106
6 使用 Kibana 理解数据 107
Kibana 4 的功能 107
搜索词高亮显示 107
Elasticsearch 聚合 108
衍生字段 108
动态仪表盘 108
Kibana 界面 109
搜索页面 109
查询和检索数据 111
总结 116
7 Kibana 可视化和仪表盘 117
可视化页面 117
创建可视化 118
可视化的类型 118
度量和桶聚合 119
可视化 124
仪表盘页面 129
创建新的仪表盘 130
保存和加载仪表盘 131
分享仪表盘 131
总结 132
目录
【XI】
8 构建完整的 ELK 技术栈 133
输入数据集 133
配置 Logstash 输入 134
访问日志的 Grok 表达式 134
Kibana 可视化 137
运行 Kibana 137
在搜索页进行搜索 139
可视化―图表 141
创建折线图 142
创建区域图 143
创建柱状图 144
创建 Markdown 145
仪表盘页面 146
总结 147
9 生产环境的 ELK 技术栈 149
防止数据丢失 149
数据保护 150
系统可扩展性 152
数据保留 153
ELK 技术栈实施案例 153
LinkedIn 的 ELK 技术栈 153
SCA 使用 ELK 的案例 156
SCA 如何使用 ELK 157
如何帮助分析 157
SCA 使用 ELK 做监控 158
Cliffhanger Solutions 使用 ELK 的案例 158
Kibana 示例――Packetbeat 仪表盘 160
总结 163
10 扩展 ELK 165
Elasticsearch 插件和工具 165
Learning ELK stack(中文版)
【XII】
用于索引管理的 Curator 165
用于安全的 Shield 167
用于监控的 Marvel 169
ELK 的路线图 172
Elasticsearch 路线图 172
Logstash 路线图 172
Kibana 路线图 173
总结 174