《ELK Stack权威指南(第2版)》一导读

Preface前  言

《ELK Stack权威指南》第1版面世之后的这一年多时间里,ELK Stack在Elastic.co公司以及社区的共同努力下飞速发展。国内外都出现了不少基于ELK Stack实现的日志分析产品和创业公司。ELK Stack已经成为DevOps技术栈中必不可缺少的一个部分,较大型的互联网公司甚至已经配备有专职的ELK Stack管理团队。

对于并不精通ELK Stack技术及其发展历史的人来说,过去复杂的版本对应是新手的第一道门槛。最近全新更新的ELK Stack各组件,统一使用5.x系列版本号,大大方便了新手入门。而5.x系列同样携带了大量崭新的特性,在日志分析、监控告警等场景,带来性能提升、管理简化、功能丰富等诸多好处。推荐广大读者积极尝试和升级。

IT运维模式正在向数据驱动、精细化、智能化发展。这个过程中,ELK Stack恰好是运维人员达成这个目的最方便的工具和平台。基于ELK Stack平台,越来越多的周边开源项目在涌现。这次再版,也进一步丰富了这些周边项目的介绍。

与第1版相比,第2版修订、删补了180多页内容,接近全书的一半。修改期间,怀孕的妻子一直默默陪伴左右,时不时叮嘱我注意保存。谨以此书献给她和刚出生的启舟宝贝,我爱你们!

本书章节内容

本书包括三大部分共19章,各部分可以独立阅读。但对于还没有大规模应用经验的新手,建议按顺序阅读全文。

第一部分 Logstash 

第1章:入门示例。该章介绍Logstash及其插件的配置安装方法,自定义配置语言的设计用途,并为不熟悉Linux系统管理的开发人员介绍了多种后台运行方式。

第2章:插件配置。该章列举Logstash最常用的几十种插件,通过实际示例和效果,讲解各插件的配置细节和用途。

第3章:场景示例。该章以最常见的运维、网络、开发和数据库场景,介绍Logstash处理Nginx、Postfix、Ossec、Log4J、MySQL、Docker等日志的最佳实践。

第4章:性能与监控。了解Logstash的性能情况一直是个难题,该章从Logstash设计原理和JVM平台本质出发,介绍几种行之有效的检测和监控方案。

第5章:扩展方案。该章介绍采用Redis和Kafka完成Logstash水平扩展的方案,同时也介绍其他几种日志收集系统与Logstash的配合方式。

第6章:Logstash源码解析。该章解析Logstash源码中最重要的Pipeline设计,以及Logstash::Event的来龙去脉。

第7章:插件开发。该章以最常见的用户登录记录和地址库解析、Consul数据更新等需求,实际演示Logstash 的自定义Filter、Input和Output插件的编写,同时还涉及了插件打包的RubyGems规范共有HttpClient功能项等细节。

第8章:Beats。该章讲述ELK Stack家族新成员Beats生态圈各组件的使用,包括Filebeat、packetbeat、metricbeat、winlogbeat等内容。

第二部分 Elasticsearch

第9章:架构原理。该章从更高级的架构层面,介绍Elasticsearch分布式设计中涉及稳定性和高性能的部分原理,并由此引发相关的优化配置介绍。另外,还提供了一种针对时序数据索引的读写分离方案,适用于拥有少部分SSD设备的用户。

第10章:数据接口用例。该章介绍Elasticsearch的RESTful接口的基础知识,并针对常见的重建索引需求提供两种快速实现方案,为有Spark经验的读者介绍通过Spark Streaming 接口读写Elasticsearch的方法。

第11章:性能优化。该章介绍Elasticsearch在日志处理场景下的读写优化知识和官方推荐的curator工具,其中重点介绍了Elasticsearch中几种不同cache的区别和有效场景。

第12章:测试和扩展方案。该章介绍Elasticsearch在生产环境中需要的一些周边工具,比如Puppet配置管理、Shield权限管理、版本升级操作、别名切换流程设计等。新增了快照与恢复功能。

第13章:映射与模板的定制。该章详细介绍Elasticsearch中的核心类型及其对应的常见映射设置,以及如何通过动态模板简化映射定制操作的复杂度。

第14章:监控方案。Elasticsearch作为一个分布式系统,也是有一定的运维难度的,因此其本身的监控也相当重要。该章介绍Elasticsearch自带的一系列监控接口,以及由此衍生的多种实时或长期的监控方案。

第15章:Elasticsearch在运维监控领域的其他应用。该章介绍Elasticsearch在运维方面的其他运用方式,包括实时过滤接口、定时报警系统设计、时序数据存储和相关性排序等。

第三部分 Kibana

第16章:Kibana的产品对比。该章介绍Kibana 3与Kibana 5之间,以及它们与Hadoop、Splunk之间的差异,方便读者在不同场景需求下选择更正确的工具。

第17章:Kibana 5。该章介绍Kibana 5的安装部署和界面操作方式,重点介绍Kibana 5提供的几种可视化图表的配置细节和效果,并以几种场景的日志分析需求演示了Kibana 5全新的子聚合功能的效果。最后还介绍了一种采用phantom.js截图方式记录长期报表数据的方案。

第18章:Kibana 5源码解析。该章介绍Kibana 4的界面实现,重点包括其内部ORM实现的Counrier类、可视化绘图的Vislib类等。

第19章:Kibana插件开发示例。该章讲述Kibana最常用的插件类型二次开发实例,包括可视化效果、服务器段进程、完整App演示等内容。

致谢

我本人虽然接触ELK较早,但本身专于Web和App应用数据方面,动笔以来得到诸多朋友的帮助,在此深表感谢。此外,还要特别感谢Elastic.co公司的曾勇(medcl)和吴晓刚(Wood),曾勇完成Elasticsearch在国内的启蒙式分享,并主办Elasticsearch中国用户大会,吴晓刚积极帮助新用户,并最早分享了携程的ELK日亿级规模的实例。

目  录Contents

前 言

第一部分 Logstash

第1章 入门示例     

1.1 下载安装   

1.2 Hello World  

1.3 配置语法    

1.3.1 语法     

1.3.2 命令行参数    

1.3.3 设置文件示例    

1.4 插件安装  

1.5 长期运行方式    

第2章 插件配置    

2.1 输入插件   

2.1.1 标准输入    

2.1.2 文件输入   

2.1.3 TCP输入    

2.1.4 syslog输入    

2.1.5 http_poller抓取    

2.2 编解码配置   

2.2.1 JSON编解码    

2.2.2 多行事件编码    

2.2.3 网络流编码    

2.2.4 collectd输入    

2.3 过滤器配置   

2.3.1 date时间处理    

2.3.2 grok正则捕获    

2.3.3 dissect解析    

2.3.4 GeoIP地址查询    

2.3.5 JSON编解码    

2.3.6 key-value切分    

2.3.7 metrics数值统计    

2.3.8 mutate数据修改    

2.3.9 随心所欲的Ruby处理    

2.3.10 split拆分事件    

2.3.11 交叉日志合并    

2.4 输出插件    

2.4.1 输出到Elasticsearch    

2.4.2 发送email    

2.4.3 调用系统命令执行    

2.4.4 保存成文件  

2.4.5 报警发送到Nagios    

2.4.6 statsd  

2.4.7 标准输出stdout    

2.4.8 TCP发送数据    

2.4.9 输出到HDFS    

第3章 场景示例    

3.1 Nginx访问日志    

3.1.1 grok处理方式    

3.1.2 split处理方式    

3.1.3 JSON格式    

3.1.4 syslog方式发送    

3.2 Nginx错误日志    

3.3 Postfix日志      

3.4 Ossec日志   

3.4.1 配置所有Ossec agent采用syslog输出    

3.4.2 配置Logstash    

3.4.3 推荐Kibana仪表盘    

3.5 Windows系统日志   

3.5.1 采集端配置    

3.5.2 接收解析端配置    

3.6 Java日志   

3.6.1 Log4J配置    

3.6.2 Logstash配置    

3.6.3 异常堆栈测试验证   

3.6.4 JSON Event layout    

3.7 MySQL慢查询日志    

3.8 Docker日志    

3.8.1 记录到主机磁盘    

3.8.2 通过logspout收集    

第4章 性能与监控    

4.1 性能测试    

4.1.1 配置示例    

4.1.2 使用方式    

4.1.3 额外的话    

4.2 监控方案    

4.2.1 logstash-input-heartbeat心跳检测方式    

4.2.2 JMX启动参数方式   

4.2.3 API方式    

第5章 扩展方案    

5.1 通过Redis队列扩展    

5.1.1 读取Redis数据    

5.1.2 采用list类型扩展Logstash    

5.1.3 输出到Redis    

5.2 通过Kafka队列扩展    

5.2.1 Kafka基础概念    

5.2.2 Input配置    

5.2.3 Output配置    

5.2.4 性能    

5.3 logstash-forwarder    

5.3.1 Indexer端配置    

5.3.2 Shipper端配置    

5.3.3 AIX上的logstash-forwarder-java    

5.4 Rsyslog    

5.4.1 常用模块介绍    

5.4.2 与Logstash合作    

5.4.3 Mmexternal模块    

5.5 Nxlog    

5.6 Heka    

5.7 Fluentd    

5.7.1 配置示例    

5.7.2 Fluentd插件    

5.8 Message::Passing   

第6章 Logstash源码解析    

6.1 Pipeline    

6.2 Plugins    

第7章 插件开发    

7.1 插件格式    

7.2 插件的关键方法    

7.3 插件打包    

7.4 Filter插件开发示例    

7.4.1 mmdb数据库的生成方法    

7.4.2 LogStash::Filters::Mmdb实现    

7.4.3 logstash-filter-mmdb打包    

7.5 Input插件开发示例    

7.5.1 FileWatch模块原理    

7.5.2 LogStash::Inputs::Utmp实现   

7.6 Output插件开发示例    

第8章 Beats    

8.1 libbeat的通用配置    

8.1.1 过滤器配置    

8.1.2 输出配置    

8.1.3 shipper网络配置    

8.1.4 日志配置    

8.1.5 运行配置    

8.2 Filebeat    

8.2.1 安装部署   

8.2.2 配置    

8.2.3 生成的可用字段    

8.3 packetbeat抓包分析    

8.3.1 安装部署    

8.3.2 配置示例     

8.3.3 dashboard效果   

8.3.4 Kibana 3拓扑图    

8.4 metricbeat    

8.4.1 配置示例    

8.4.2 各模块输出指标示例    

8.4.3 采集Docker中的指标    

8.5 winlogbeat    

第二部分 Elasticsearch

第9章 架构原理    

9.1 准实时索引的实现    

9.1.1 动态更新的Lucene索引    

9.1.2 利用磁盘缓存实现的准实时检索    

9.1.3 translog提供的磁盘同步控制    

9.2 segment merge的影响    

9.2.1 归并线程配置    

9.2.2 归并策略    

9.2.3 forcemerge接口    

9.3 routing和replica的读写过程    

9.3.1 路由计算     

9.3.2 副本一致性    

9.4 shard的allocate控制    

9.4.1 reroute接口    

9.4.2 分配失败原因    

9.4.3 节点下线    

9.4.4 冷热数据的读写分离    

9.5 自动发现的配置     

第10章 数据接口用例    

10.1 增删改查操作    

10.2 搜索请求    

10.2.1 全文搜索    

10.2.2 聚合请求    

10.2.3 pipeline聚合    

10.2.4 搜索请求参数    

10.3 脚本    

10.3.1 动态提交    

10.3.2 固定文件    

10.3.3 其他语言    

10.4 重建索引    

10.4.1 Perl客户端    

10.4.2 用Logstash重建索引    

10.4.3 新reindex接口的应用    

10.5 Spark Streaming交互    

第11章 性能优化    

11.1 bulk提交    

11.1.1 bulk大小    

11.1.2 UDP方式    

11.2 gateway配置    

11.3 集群状态维护    

11.4 缓存    

11.4.1 filter缓存    

11.4.2 shard reguest缓存    

11.4.3 field_stats 接口    

11.5 字段数据    

11.5.1 Circuit Breaker    

11.5.2 doc values    

11.6 curator工具    

11.6.1 参数介绍    

11.6.2 常用示例    

11.7 profiler调试接口    

第12章 测试和扩展方案    

12.1 测试方案    217

12.2 多集群互联    

12.3 puppet-elasticsearch模块的使用   

12.3.1 安装和配置示例    

12.3.2 配置解释    

12.4 计划内停机升级的操作流程    

12.5 Shield权限管理    

12.5.1 Shield架构    

12.5.2 安装部署    

12.6 searchguard权限管理    

12.6.1 安装    

12.6.2 权限角色配置    

12.6.3 其他组件配置方式    

12.7 别名的应用    

12.7.1 索引更名时的无缝切换    

12.7.2 限制索引数据部分可读    

12.8 快照与恢复    

12.8.1 HDFS插件安装配置    

12.8.2 Hadoop配置   

12.8.3 备份操作    

12.9 rollover和shrink管理    

12.9.1 rollover管理    

12.9.2 shrink缩容    

12.10 ingest节点    

12.10.1 创建管道流    

12.10.2 测试管道流    

12.10.3 处理器    

第13章 映射与模板的定制    

13.1 映射的增删改查    

13.2 Elasticsearch的核心类型    

13.3 自定义字段映射    

13.3.1 精确索引    

13.3.2 时间格式    

13.3.3 多重索引    

13.4 特殊字段    

13.5 动态模板映射    

13.6 索引模板    

第14章 监 控 方 案    

14.1 监控相关接口    

14.1.1 集群健康状态    

14.1.2 节点状态    

14.1.3 热线程状态    

14.1.4 索引状态    

14.1.5 任务管理       

14.1.6 cat接口的命令行使用    

14.2 日志记录    

14.3 实时bigdesk方案    

14.4 cerebro    

14.5 Zabbix trapper方案    

14.5.1 安装配置    

14.5.2 模板应用    

第15章 Elasticsearch在运维监控领域的其他应用    

15.1 Percolator接口   

15.2 Watcher报警    

15.3 ElastAlert    

15.3.1 安装    

15.3.2 配置结构    

15.3.3 扩展    

15.4 时序数据库    

15.5 Etsy的Kale异常检测    

15.6 Grafana可视化    

15.6.1 安装   

15.6.2 配置数据源    

15.6.3 生成第一个图表    

15.6.4 模板功能    

15.6.5 在线资源     

15.7 Juttle可视化    

15.7.1 安装部署    

15.7.2 命令行运行示例    

15.7.3 可视化界面    

15.7.4 可视化相关指令介绍    

第三部分 Kibana

第16章 Kibana的产品对比    

16.1 Kibana 3的设计思路和功能    

16.2 Kibana 5的设计思路和功能    

16.3 与Hadoop体系的区别    

16.4 Splunk场景参考    

第17章 Kibana 5    

17.1 安装、配置和运行    

17.2 生产环境部署    

17.2.1 Nginx代理配置    

17.2.2 开启SSL   

17.3 Discover功能    

17.3.1 设置时间过滤器   

17.3.2 搜索数据    

17.3.3 按字段过滤   

17.3.4 过滤器的协同工作方式    

17.3.5 查看文档数据    

17.4 各种可视化功能    

17.4.1 area   

17.4.2 table    

17.4.3 line    

17.4.4 Markdown     

17.4.5 metric   

17.4.6 pie    

17.4.7 tile map    332

17.4.8 vertical bar   

17.4.9 tagcloud    

17.5 仪表盘功能    

17.5.1 开始    

17.5.2 容器功能    

17.5.3 修改可视化   

17.5.4 修改主题风格    

17.6 management功能  

17.6.1 创建一个连接到Elasticsearch的索引模式   

17.6.3 创建一个脚本化字段    

17.6.4 设置高级参数    

17.6.5 管理已保存的搜索、可视化和仪表盘    

17.7 设置Kibana服务器属性    

17.8 常用sub agg示例    

17.8.1 函数堆栈链分析    

17.8.2 分图统计    

17.8.3 TopN的时序趋势图    

17.8.4 响应时间的百分占比趋势图    

17.8.5 响应时间的概率分布在不同时段的相似度对比    

17.9 Kibana报表的快速实现    

17.10 timelion应用   

17.11 console应用    

第18章 Kibana 5源码解析    

18.1 Kibana索引的数据结构    

18.2 主页入口    

18.2.1 Kibana App    

18.2.2 Courier类    

18.2.3 路径记忆功能的实现    

18.3 Discover解析    

18.4 Visualize解析    

18.4.1 vis_types实现    

18.4.2 savedVisualizations实现    

18.4.3 Visualize实现    

18.4.4 VisEditorSidebar实现    

18.5 Dashboard解析    

第19章 Kibana插件开发示例    

19.1 Kibana插件    

19.1.1 部署命令    

19.1.2 默认插件    

19.2 可视化插件示例     

19.2.1 插件目录生成    

19.2.2 主文件及解释    

19.3 服务器端插件示例    

19.4 完整应用开发示例    

19.4.1 App模块的index.js结构    

19.4.2 服务器端部分    

19.4.3 前台界面的app.js    

19.4.4 页面模板    

时间: 2024-11-02 00:39:01

《ELK Stack权威指南(第2版)》一导读的相关文章

《TCP/IP路由技术(第二卷)》一导读

前 言 TCP/IP路由技术(第二卷)自从出版了<TCP/IP路由技术(第一卷)>之后,虽然Cisco Press"CCIE职业发展系列"中增加了大量新书,而且CCIE计划本身也被扩展到多个专业领域,但IP路由协议仍然是所有准CCIE们的核心基础.因此,必须透彻地对其加以理解和掌握,否则基础不牢,大厦将倾. 我在<TCP/IP路由技术(第一卷)>的前言中曾经说过,"--随着互联网络规模和复杂性的不断增大,路由问题也随即变得庞大且错综复杂".由

《TCP/IP路由技术(第二卷)》一1.4 配置EGP

1.4 配置EGP TCP/IP路由技术(第二卷) 通过以下4个基本步骤即可完成路由器上的EGP配置. 第1步:利用命令autonomous-system指定路由器的AS. 第2步:利用命令router egp启动EGP进程并指定邻居的AS. 第3步:利用命令neighbor指定EGP邻居. 第4步:指定由EGP宣告的网络. 下面的第一个案例研究将详细解释前3个配置步骤,同时也给出了步骤4的多种实现方法. 1.4.1 案例研究:EGP末梢网关 图1-10给出了一台位于AS 65502的EGP末梢

《TCP/IP路由技术(第二卷)》一1.9 配置练习题

1.9 配置练习题 TCP/IP路由技术(第二卷) 本书附录E中提供了以下配置练习题的答案. (1)图1-14中的自治系统65531是一个核心AS,请在RTA和RTB上配置EGP,要求如下: 不要将AS内的数据链路宣告给任何外部邻居. RTA将连接在其S1接口上的网络宣告给RTB:另外,要求RTA和RTB之间不能宣告其他AS间链路. RTA和RTB向其外部邻居(除了从其他自治系统学习到的网络)宣告默认路由,而且这两个网关都不得将默认路由宣告给其内部邻居. (2)例1-26给出了图1-15中RTC

《TCP/IP路由技术(第二卷)》一1.1 EGP的起源

1.1 EGP的起源 TCP/IP路由技术(第二卷)在20世纪80年代早期,构成ARPANET(现代互联网的前身)的路由器(网关)设备上都运行了一种距离向量路由协议--GGP(Gateway-to-Gateway Protocol,网关到网关协议).但是随着ARPANET的不断发展,与当今许多负责管理日益增长的互联网络的网管员一样,ARPANET的架构师们也预见到了相同的问题:现在运行的路由协议没有很好的扩展性. Eric Rosen在RFC 827中阐述了以下扩展性问题. 由于所有的网关都要知

《TCP/IP路由技术(第二卷)》一1.6 附 注

1.6 附 注 TCP/IP路由技术(第二卷)1Eric Rosen,"RFC 827:外部网关协议(EGP)". 2Linda J. Seamonson和Eric C. Rosen"RFC 888:'末梢'外部网关协议". 3D.L. Mills,"RFC 904:外部网关协议正式规范". 4J. Rekhter,"RFC 1092:EGP和新NSFNET骨干网的策略路由".

《TCP/IP路由技术(第二卷)》一1.5 检测与排除EGP故障

1.5 检测与排除EGP故障 TCP/IP路由技术(第二卷)在1.3节中已经解释了EGP为何无法应用于复杂的AS间拓扑结构,而强制性的简单拓扑结构带来了一个意外的好处,那就是EGP的故障检测和排除变得非常简单. 与其他路由协议一样,检测与排除EGP故障的第一步工作就是查看路由表.如果所请求的路由缺失或路由表中存在一条非期望路由,通过查看路由表就可以检测到问题的根源.由于EGP的度量值几乎没有任何意义,因而与其他路由协议相比,利用路由表进行EGP故障的检测和排除工作可以得到大大简化. 需要注意的是

《TCP/IP路由技术(第二卷)》一第1章 外部网关协议

第1章 外部网关协议 TCP/IP路由技术(第二卷)本章将主要讨论以下主题. • EGP的起源:本节将讨论在RFC 827(1982)中定义的外部网关协议的发展历史. • EGP的操作:本节将讨论EGP的基本操作机制,重点是EGP拓扑结构.EGP功能及EGP消息格式. • EGP的不足:本节将探讨为什么EGP不再是一种可行的外部网关协议解决方案. • 配置EGP:本节将通过4个独立的案例研究--EGP末梢网关.EGP核心网关.间接邻居和默认路由,来说明不同类型的EGP配置方法. • 检测和排除E

《TCP/IP路由技术(第二卷)》一1.7 展 望

1.7 展 望 TCP/IP路由技术(第二卷)本章不但说明了AS间路由协议的发明驱动力,也解释了EGP难以胜任该角色的原因.第2章将简要描述EGP的替代协议--边界网关协议及其操作.表1-10汇总了本章用到的所有命令.

《TCP/IP路由技术(第一卷)(第二版)》一导读

前 言 TCP/IP路由技术(第一卷)(第二版)路由技术即使在最小的数据通信网络中也是基本的要素.在某种程度上,路由技术和路由器的配置是相当简单的.但是,当网络的规模越来越大,并且越来越复杂的时候,路由选择问题就变得比较突出和难以控制了.或许,有点不恰当地说,作为一名网络系统顾问,我应该感谢当前出现的大规模路由技术难题,这些问题给了我谋生的手段.假设没有它们,"你何以为生?"这句习语可能就会不幸地成为我每天生活词汇的一部分了. Cisco认证互联网专家(CCIE)在大型网络的设计.故障

《TCP/IP路由技术(第一卷)(第二版)》一第1章 TCP/IP回顾1.1 TCP/IP协议层

第1章 TCP/IP回顾 TCP/IP路由技术(第一卷)(第二版)本章包括以下主题: TCP/IP协议层: IP包头(IP Packet Header): IPv4地址: 地址解析协议(ARP): Internet控制消息协议(ICMP): 主机到主机层. 考虑到这本书的书名是<TCP/IP路由技术>,有必要从回顾TCP/IP的基本知识开始讲起,然后再讲述如何进行TCP/IP路由选择.如果读者正在准备Cisco认证互连网专家(Cisco Certified Internetwork Exper