Nagios系统监控实践(原书第2版)
上QQ阅读APP看书,第一时间看更新

这本书讲些什么

尽管Nagios本身很难,但它是无数工具中唯一能够组建世界级开源监控系统的。同时,它的文档最完备,不仅拥有一系列书籍、精湛的在线文档,还有生动翔实的邮件列表。我撰写此书的本意是补充文档中漏掉的部分。这本书不是关于Nagios的,而是讲解如何使用Nagios构建一整套监控平台,更多讲述的是构建监控平台的过程,而非配置某个监控工具。

在本书中,我会介绍一些常用的配置模板,但是如何配置和安装Nagios不是我的重点。我关注的是带领读者构建一套优秀的监控平台,为读者介绍一些能够增强Nagios功能并简化配置的协议和工具。读者需要深入了解Nagios内部的工作机制,这样才能够根据自身需求对它进行扩展。因为Nagios的功能远远超出你的想象,所以在本书中,我会花一些时间展示它的强大能力。最后,我还会介绍一些与Nagios关系不大的内容,比如最佳实践、SNMP、时序数据的可视化,以及微软脚本相关技术,如WMI和WSH等。

最重要的是,我将以不同的方式介绍Nagios。提前介绍它有效的调度和通知引擎,这样在讨论内部机制的时候就能够简洁明了一些。我将重点介绍插件定制和调度等,使读者尽早了解核心内容,而非将这些重要信息放在很少有人阅读的高级部分中。

尽管本书各章节内容有些许独立性,但是我尽可能使这本书成为重要参考资料,涵盖了一系列重要信息,因此建议读者从头读到尾,略过你已经熟悉的内容。本书文字不是很多,但是信息量很大,甚至在监控方面最有经验的老手也能发现一些有用的至理名言。

本书各章节相互依赖,在介绍更为普遍的监控概念时,我也会随意介绍一下某些Nagios特有内容的细节。因为在软件安装前,需要做出很多重要的决定,所以我以第1章的内容作为开始。该章会让读者考虑进行监控的动机是因何产生的?如何取得成功,比如如何开展实施工作,涉及哪些人,要避免哪些问题?

第2章基于第1章的通用设计原则,从零开始介绍Nagios的基本原理,会让读者从细节上明白Nagios的工作机制,但没有提供很具体的配置指令,不会让你淹没在配置的细枝末节里。这里离配置透明化还有很长的一段路要走。

在能够配置Nagios监控环境之前,我们需要先进行安装。第3章将会帮助读者通过源代码或者包管理器安装Nagios。

第4章讲述配置,这是令人畏惧的一章。首次进行Nagios配置对大多数人来说没什么乐趣,但是我希望通过自下而上的方式,只记录常用和必需的指令,提供常用的示例,并指出对象之间的引用关系及如何引用,尽可能减少大家的痛苦。

很多用户在初次使用Nagios之后就无法离开它  我敢说,这些用户对它一见钟情。 了,并且厌恶使用其他的工具。但是,如果大家对Nagios都有点儿抱怨,那肯定是配置了。第5章讲了一些题外话,并提供了一些有效的工具,以简化配置过程。这些工具包含自动发现工具,还有图形用户界面等。

在第6章,我们终于做好了准备,去了解系统监控的本质工作,并提供了一些具体的案例:包括一些Nagios插件配置语法以解决现实世界的问题。以监视微软Windows系统环境作为开始,然后介绍了针对UNIX的监视,最后介绍“其他系统”的监控,其中包含了网络设备以及环境传感器。

第7章是第2版新增的部分。在过去的5~6年中,大规模网络环境下Nagios的扩展已经成为Nagios系统管理员处理的最有意思的问题。设备虚拟化和符合成本效益的云服务的爆炸性增长,需要掌控大量小型节点组成的大型并发处理架构。该章介绍几个工具和策略能够使你将监控的负载分散,并建立一个稳定的大规模监控平台对数万节点进行监控。

第8章讲述了一个我感兴趣的主题:数据可视化。优秀的数据可视化能够解决其他方式无法解决的问题,我很高兴现在能有一些选择,包括那些即将诞生的工具。通过最流行的可视化工具,如RRDTool、Ganglia以及Graphite等,可以很容易地将每天Nagios提供的时序数据绘制出来,该章所讨论的不仅仅是折线图。

第9章也是第2版中新增的部分包括,描述了Nagios最新的商业版本——Nagios XI。创建它的人也是Nagios的创始人,Nagios XI使用了本书所介绍的多种工具构建而成,是真正集成和易用性的杰作,使Nagios监控变得如此简单,甚至我母亲都可以使用(当然,我母亲曾为嵌入式FLIR系统编写了经优化的交叉编译器,希望各位读者明白我的意思)。

读到最后,读者应该已经清楚规则了,第10章就要教各位读者如何打破这些常规了。就我所知,该章是唯一介绍最新的Nagios事件代理接口的纸质内容。事件代理是目前Nagios中最强大的接口,掌握它带给各位读者的回报是能够独自重写第2章,读者能够从根本上改变Nagios的运作或扩展它的各个方面,以满足自身的任何需求。该章叙述了事件代理的工作机制,并带领读者构建一个NEB模块。