新書推薦:
《
万千心理·我的精神分析之道:复杂的俄狄浦斯及其他议题
》
售價:NT$
475.0
《
荷马:伊利亚特(英文)-西方人文经典影印21
》
售價:NT$
490.0
《
我的心理医生是只猫
》
售價:NT$
225.0
《
股权控制战略:如何实现公司控制和有效激励(第2版)
》
售價:NT$
449.0
《
成吉思汗传:看历代帝王将相谋略 修炼安身成事之根本
》
售價:NT$
280.0
《
爱丁堡古罗马史-罗马城的起源和共和国的崛起
》
售價:NT$
349.0
《
人生解忧:佛学入门四十讲
》
售價:NT$
490.0
《
在虚无时代:与马克斯·韦伯共同思考
》
售價:NT$
260.0
編輯推薦:
(1) 拥有10余年工作经验的资深运维工程师撰写,Nagios创始人兼总裁亲自作序推荐,权威性毋庸置疑(2) 深度阐述系统监控的最佳实践和运作原理,全面而系统地讲解Nagios系统监控的各项功能、技术和方法,为构建高效的企业级监控平台提供有效指导
內容簡介:
本书是介绍Nagios的权威指南。详细讲解了整个监控技术,演示了最佳做法,揭示了常见的错误及其后果,以及如何避免。提供了所有配置和运行方式,并探讨如何编写自定义模块与基于Nagios事件代理API。
本书从实际出发,在开篇就系统运维中的监控提出一系列需求,从而展开对Nagios系统的初步介绍(第1~2章),随后从实用的角度,全面、详细地讲解了Nagios安装、配置的相关内容(第3~4章)。通过简化配置、实施监控等工作(第5~6章),用大量的示例展示Nagios的实际能力。然后,在扩展方面介绍了一些常用的方案(第7章),并从原理、案例到最后的DIY,一步步带领读者进入数据可视化的世界(第8章)。此外,还介绍了Nagios商业版本——Nagios XI的功能特色(第9章)。最后,介绍Nagios事件代理(NEB),并用C语言实现完整NEB插件(第10章),使读者进一步掌握NEB的工作机制。
關於作者:
David Josephsen
资深系统运维专家,拥有超过10年的行业从业经验,擅长于在复杂的、大规模的网络环境下维护UNIX系统、路由器、防火墙、负载均衡等设备,对Nagios有深入的研究。现担任DBG公司的系统工程总监,负责维护一群分布在各地的服务器农场。除本书之外,他还撰写了《Ganglia系统监控》一书的部分章节。目前他正在负责编写《Login》杂志中的“iVoyer”专栏,发表了大量关于安全、系统监控、反垃圾邮件等技术文章。
目錄 :
译者序
序言
前言
第1章 最佳实践
1.1 系统监控的过程方法
1.2 处理和开销
1.2.1 远端处理与本地处理
1.2.2 带宽方面的考虑
1.3 网络位置和依赖关系
1.4 安全
1.5 沉默是金
1.6 监视端口与监视应用
1.7 谁来监控这些检测插件
第2章 运作原理
2.1 主机和服务范例
2.1.1 从头开始
2.1.2 主机和服务
2.1.3 相互依赖
2.1.4 主机和服务的消极面
2.2 插件
2.2.1 退出代码
2.2.2 远程执行
2.3 调度
2.3.1 检测间隔及状态
2.3.2 分散负载
2.3.3 信息采集和并发执行
2.4 通知
2.4.1 全局陷阱
2.4.2 通知选项
2.4.3 模板
2.4.4 时间段
2.4.5 计划宕机时间、状态确认以及升级规则
2.5 IO界面总结
2.5.1 Web界面
2.5.2 当前状态
2.5.3 报表
2.5.4 外部命令文件
2.5.5 性能数据
2.5.6 事件代理
第3章 Nagios的安装
3.1 操作系统支持及FHS
3.2 安装步骤及先决条件
3.3 安装Nagios
3.3.1 configure
3.3.2 make
3.3.3 make install
3.4 安装插件
3.5 安装NRPE
第4章 Nagios的配置
4.1 对象和定义
4.2 nagios.cfg
4.3 CGI程序配置
4.4 模板
4.5 时间段
4.6 命令
4.7 联系人
4.8 联系人组
4.9 主机
4.10 服务
4.11 主机组
4.12 服务组
4.13 升级规则
4.14 依赖关系
4.15 扩展信息
4.16 Apache配置
4.17 GO
第5章 Nagios配置文件引导
5.1 开发脚本模板
5.2 自动发现
5.2.1 Check_MK
5.2.2 Nagios XI
5.2.3 自动发现:已死还是永生
5.3 NagiosQL
第6章 监视:通过Nagios插件监控
6.1 本地查询
6.1.1 Ping检测
6.1.2 端口查询
6.1.3 多端口查询
6.1.4 更复杂的服务检测
6.1.5 使用WebInject和Cucumber-Nagios进行端到端监控
6.2 监视Windows
6.2.1 Windows脚本开发环境
6.2.2 COM和OLE
6.2.3 WMI技术
6.2.4 WSH:用还是不用
6.2.5 VB:用还是不用
6.2.6 Windows脚本开发的未来
6.2.7 切入正题
6.2.8 NRPE
6.2.9 Check_NT
6.2.10 NSCP
6.3 监视UNIX
6.3.1 NRPE
6.3.2 CPU
6.3.3 内存
6.3.4 磁盘
6.4 Check_MK
6.5 监视“其他内容”
6.5.1 SNMP
6.5.2 使用SNMP进行工作
6.5.3 环境传感器
6.5.4 独立传感器
6.5.5 LMSensor
6.5.6 IPMI
第7章 Nagios的扩展
7.1 调整、优化以及一些组成要素
7.1.1 NRDPNSCA
7.1.2 NDOUtils
7.2 使用二级Nagios守护进程进行分布式被动检测
7.3 事件代理模块:DNX、Merlin以及Mod Gearman
7.3.1 DNX
7.3.2 Mod Gearman
7.3.3 Op5 Merlin
7.4 分布式仪表板:Fusion、MNTOS以及MK-Multisite
第8章 可视化
8.1 Nagios性能数据
8.2 RRDTool:基础
8.2.1 初识RRDTool
8.2.2 RRD数据类型
8.2.3 心跳周期和步进周期
8.2.4 最小值和最大值
8.2.5 循环归档
8.2.6 RRDTool创建语法
8.2.7 RRDTool图形模式
8.2.8 RPN
8.3 数据可视化策略:三位系统管理员的故事
8.3.1 Suitcorp:Nagios、Nagios-Graph以及Drraw
8.3.2 singularity.gov:Nagios和Ganglia
8.3.3 Massive Ginormic:Nagios、Logsurfer、Graphite及RRDTool以外的生活方式
8.4 DIY仪表板
8.4.1 了解自己正在做的事情
8.4.2 RRDTool抓取模式
8.4.3 GD图形库
8.4.4 NagVis
8.4.5 GraphViz
8.4.6 迷你图
8.4.7 使用jsvis的力导向图
第9章 Nagios XI
9.1 它是什么
9.2 如何运作
9.3 有什么好处
9.3.1 美观的界面
9.3.2 集成时序数据
9.3.3 模块化组件
9.3.4 强化的报表和高级可视化功能
9.3.5 内置插件和配置向导
9.3.6 运维方面的改进
9.4 如何上手
第10章 Nagios事件代理接口
10.1 C中的函数引用以及回调
10.2 NEB的架构
10.3 使用NEB实现一个文件系统接口
10.4 DNX,实际的示例
10.5 总结
內容試閱 :
第1章
最 佳 实 践
监控平台的构建是一项复杂的任务。监控系统要能够有效地与环境中的其他系统交互,并且要适用于各种客户,不论是菜鸟还是专家。监控平台的构建不仅需要技术能力,还需要精心的规划、全局的视角以及良好的人际沟通技巧。
可能最重要的是,所构建的监控系统不能对现有系统造成影响。与优秀的系统相比,拙劣的监控系统会产生一系列的影响,不仅会占用网络、系统资源,还会产生安全问题,甚至会影响到信任它的运维人员。“首先,不要带来伤害”这一信条不仅适用于医师,也适用于正在构建监控平台的你!
本书的第1章包含了一系列的建议,这些建议都是从邮件列表中一点一滴收集而来,它们出自于Nagios的用户列表、系统管理员以及来之不易的经验。我希望本章能够预先帮你做出重要的计划决策,避免一些常见的问题,以确保构建出来的监控系统是巨大的财富,而不是沉重的包袱。
1.1 系统监控的过程方法
优秀的监控系统可不是由管理员闭门造车一个个脚本写出来(这样写出来的系统往往如同摇摇欲坠的空中楼阁),而是有条不紊地创建出来,管理员创建这样的系统不仅要获得管理层的支持,还需要对环境有清晰的认识—包括程序和计算环境,毕竟这些环境也是他们运维的。
如果对环境认识不清,会很麻烦。还是举例说明这个问题吧:如何确定哪些是关键系统,需要通过特定监控手段判断出它是否出现故障?但是对如此简单的问题,现实中常常会上演这么一幕:
经理:你把我加入到监控系统中,我想接收所有系统的告警消息。
管理员:所有的?
经理:是的,所有的告警消息。
管理员:呃,好的。
—第二天
经理:昨晚传呼机响个不停,害我一夜没合眼。这意味着什么?
管理员:哦,服务器1的var分区满了,连接站点Site5的VPN隧道时断时续。
经理:你就不能通知我实际的问题吗?
管理员:这些就是实际的问题。
大学、医院及企业等机构之所以必须要通过HIPPA、Sarbanes-Oxley、PCIDSS、SSAE16等认证,就是为了要掌控其IT的过程方面。当今,多数组织无论规模大小,都制定了完善的应急计划,以应对糟糕事情的发生。灾难恢复、业务连续性、危机计划等工作,都是为了确保运维人员对业务的关键系统有所了解,在危机时刻到来时按照步骤操作就能保障系统的正常运行,或者在系统被破坏时能及时恢复。此外,这些认证也同样可以确保管理层为避免关键系统故障而进行过相关检查:如安装冗余设备或保存离站的磁带备份。
无论出于什么理由,这些应急计划的过程方法似乎都遗漏了监控系统。大多数监控系统都是因为1~2个小型技术团队对此有特殊需求,而作为兴趣项目上线的。通常情况下,多数团队都是各自使用自己的监控工具,无视组织内部的其他监控手段,这里似乎没必要连累别人。虽然这种系统监控方式可以满足个人或小团队的一时之需,但当规模扩大时就会慢慢暴露其弱点—由于早期缺乏规划,使其在发展过程中慢慢变成需求实现的堆积,整个系统将会变得十分脆弱,而用户的组织将会成为最终的受害者。
为了理解为何这个问题如此危险,则要考虑到在缺少过程化实施的监控框架的前提下,数百个关键重要的问题基本上无法回答。比如下面这些问题:
系统监控所消耗的总体带宽是多少?
为确保监控系统正常运行,客户端所需的UID是什么?
路由器或者其他系统依赖于什么?
在主机和监控系统之间,是否有敏感信息以明文传输?
如果有必要为监控某个进程编写一个脚本,那么也同样有必要思考当系统运行的这个脚本故障时会发生什么,或者是否会出现这样的情况:某人的账户被禁用但他写的脚本还在。治标不治本的方式,是迄今为止最常见的系统监控方式,这种方式带来了太多的问题。
我们前面所举的例子中,其核心问题就是没有标准能够明晰地定义什么是一个“问题”,因为监控系统部署时,这些标准还不存在。我们的经理感觉看不到系统的问题,而为他提供了详细信息的时候,他依然感觉没有获得什么有价值的信息。这就是为什么过程方法非常重要。负责监控项目的人在工作前应当明白:哪些系统对组织的正常运作起到关键作用,管理层对于这些系统正常运行时间的期望值是什么。
明确了上面两个问题之后,就能将策略制定为详细的支持和扩展计划两部分。应当对关键系统的优先级及必要部分进行定义。这并不是说例子中的管理员在服务器1的var分区满了的时候不应发出通知,而是说,在收到通知的时候,他应该明白该通知是什么意思。管理层是希望他立刻修复还是明天再说呢?还应通知谁呢?如果他不响应会发生什么呢?将这些信息定义明确也对管理层有帮助。只有明确地定义了问题的构成,管理层才能提出自己的见解,比如对哪种告警需要问询,可能更重要的是他们什么时候才能回去睡觉。
小公司可能只有一个兼职的系统管理员,很容易陷入治标不治本的监控怪圈。想象一下,一个只有4个人的公司,还需要依照运维制度执行,这种做法看起来不仅愚蠢还浪费时间,但在小型环境中,事故响应处理制度确实更为重要。通过精心构建的监控系统来贯彻深思熟虑的制度,将会使问题得到快速响应并系统化,否则,小公司一旦出现问题就将面临崩溃。
理想情况下,一个监控系统应当执行组织的制度,而非仅仅将问题反映出来。如果管理层期望有人能在10分钟内查看服务器1的所有问题,那么监控系统应当给我们的管理员提供明确的指示(比如优先级)、确认告警消息的机制以及告警的自动升级—例如,超出10分钟的时候通知其他人。
那么我们如何知道哪些系统是关键的呢?因为公司高层为公司正常运营负全责,所以应该由他们来决定,这也是让管理层参与进来的重要原因。如果你认为这开始听起来像灾难恢复计划的工作,那么说明你已经领先了。灾难恢复的工作主要是确定关键系统从而定义恢复的优先级,规划监控平台的时候也一样。实际上,如果已经制定了灾难恢复计划,那么就参照灾难恢复计划继续吧,因为关键系统已经圈定了。
关键系统虽然已由公司高层确定,但不一定都适用同一个原则,例如:“服务器1上的所有问题要在10分钟内查看”,很可能公司高层只是定义了逻辑实体,例如“邮件系统是关键系统”。所以当关键系统确定后,实施人员应该对每个关键系统的组件进行分析。在这个过程中,一定要保证所有利益相关方都参与进来。邮件系统管理员将能提出一些好的想法,比如邮件系统的组成、邮件监控的标准—如果没有这样的标准,那么系统管理员将不可避免地切换回自己的监控工具。
上述工作要与尽可能多的团队合作,并获取信息,如果无法制定一个解决方案满足所有人的需求,那么至少要满足所有关键系统监控的特定需求。如果已有自定义的监控脚本,千万别错过,尝试将它们整合到系统中。每个小组都趋向于信任自己已经在使用的工具,所以整合这些工具可以使你得到部分的支持。Nagios在这方面的优势很明显,可以按照自身调度计划和新增规则调用外部监控逻辑。