第1部分 认识Nagios 2
第1章 Nagios的检测机制 2
1.1 两种检测方式 2
1.1.1 主动检测 2
1.1.2 被动检测 3
1.1.3 状态类型 4
1.2 外部命令和事件处理程序 7
1.2.1 外部命令 7
1.2.2 事件处理程序 8
1.3 两类检测对象 13
1.3.1 主机检测 14
1.3.2 服务检测 16
1.3.3 检测和处理“摆动”状态 18
1.4 六种监控策略 23
1.4.1 “可变”服务机制 23
1.4.2 “跟踪”状态机制 25
1.4.3 缓存检测 27
1.4.4 服务和主机“新鲜”检测机制 30
1.4.5 预测依赖性检测 32
1.4.6 被动主机状态转换 34
1.5 决定网络主机的状态和可达性 35
1.5.1 设定父/子关系 36
1.5.2 可达性逻辑的运作 38
1.5.3 UNREACHABLE状态和通知 39
1.6 优化Nagios 39
1.6.1 快速启动选项 39
1.6.2 Nagios调优发挥最大性能 46
1.6.3 使用内嵌Perl解释器 49
1.6.4 分布式监控 51
1.6.5 性能数据 51
1.6.6 使用use_large_installation_tweaks选项 54
1.7 Nagios与变量 54
1.7.1 理解宏变量及其如何工作 54
1.7.2 自定义对象变量 60
第2章 实现监控 62
2.1 监控公开提供的服务 62
2.1.1 用于监控服务的插件 63
2.1.2 监控HTTP 64
2.1.3 监控FTP 65
2.1.4 监控SSH 66
2.1.5 监控SMTP 66
2.1.6 监控POP3 67
2.1.7 监控IMAP服务 68
2.2 监控Windows机器 68
2.2.1 先决条件 70
2.2.2 安装Windows代理 73
2.2.3 配置Nagios 74
2.3 监控Linux/UNIX机器 76
2.4 监控网络打印机 77
2.4.1 先决条件 79
2.4.2 配置Nagios 81
2.5 监控路由器和交换机 82
2.5.1 先决条件 84
2.5.2 配置Nagios 86
第3章 相关设置 90
3.1 CGI设置 90
3.1.1 自定义CGI的页眉和页脚 90
3.1.2 增强CGI的安全和认证 91
3.1.3 在CGI中的认证和授权 95
3.2 Nagios的配置与校验 98
3.2.1 Nagios的配置文件 98
3.2.2 Nagios配置文件校验 98
3.3 设置联系人待命规则 100
3.3.1 方案1:假日和周末 100
3.3.2 方案2:隔日交替通知 103
3.3.3 方案3:隔周交替通知 103
3.3.4 方案4:假期通知 104
第4章 Nagios的高可用 107
4.1 方案1:冗余监控 108
4.1.1 冗余监控目标 108
4.1.2 网络拓扑图 108
4.1.3 初始化程序设置 108
4.1.4 初始化配置 108
4.1.5 事件处理程序命令的定义 109
4.1.6 事件处理脚本 109
4.1.7 时间间隔 114
4.1.8 特殊情况 114
4.2 方案2:故障转移监控 115
4.2.1 故障转移监控的目标 115
4.2.2 初始化程序设置 115
4.2.3 Master进程检测 115
4.2.4 额外的问题 116
第5章 分布式监控的实现 117
5.1 DNX 117
5.1.1 DNX的优点 118
5.1.2 下载和安装 118
5.1.3 DNX的配置文件 123
5.1.4 效果 123
5.1.5 关于实现HA 124
5.2 Nagios Fusion 124
5.2.1 Nagios Fusion的优点 124
5.2.2 下载和安装Nagios Fusion 125
5.3 MNTOS 127
5.3.1 MNTOS的优点 127
5.3.2 下载和安装MNTOS 128
第2部分 走进Nagios 134
第6章 安装前的目录结构 134
6.1 相关目录 137
6.1.1 contrib/目录 137
6.1.2 tools/目录 140
6.2 相关文件 141
第7章 安装Nagios 142
7.1 配置安装 142
7.2 分析Makefile文件 144
7.2.1 第一部分:变量设置 144
7.2.2 第二部分:make命令的选项 145
7.2.3 第三部分:make install命令的选项 149
7.2.4 第四部分:基于不同结构创建数据包 152
7.3 编译Nagios 154
7.3.1 执行make all 154
7.3.2 执行make X-install 155
7.4 启动/停止Nagios服务 158
7.5 安装Nagios Plugins 158
第8章 安装后的目录结构 163
8.1 bin/目录 163
8.1.1 bin/nagios 163
8.1.2 bin/nagiostats 170
8.2 etc/目录 176
8.2.1 etc/cgi.cfg 177
8.2.2 etc/nagios.cfg 184
8.2.3 etc/resource.cfg 218
8.2.4 etc/objects/commands.cfg 219
8.2.5 etc/objects/contacts.cfg 219
8.2.6 etc/objects/localhost.cfg 219
8.2.7 etc/objects/printer.cfg 219
8.2.8 etc/objects/switch.cfg 219
8.2.9 etc/objects/templates.cfg 219
8.2.10 etc/objects/timeperiods.cfg 222
8.2.11 etc/objects/windows.cfg 223
8.3 libexec/目录 223
8.3.1 安装Nagios插件之前 223
8.3.2 安装Nagios插件之后 224
8.4 sbin/目录 224
8.4.1 sbin/status.cgi 225
8.4.2 sbin/statusmap.cgi 225
8.4.3 sbin/statuswml.cgi 226
8.4.4 sbin/statuswrl.cgi 227
8.4.5 sbin/tac.cgi 227
8.4.6 sbin/outages.cgi 228
8.4.7 sbin/config.cgi 228
8.4.8 sbin/cmd.cgi 229
8.4.9 sbin/extinfo.cgi 230
8.4.10 sbin/showlog.cgi 231
8.4.11 sbin/history.cgi 231
8.4.12 sbin/notifications.cgi 232
8.4.13 sbin/trends.cgi 232
8.4.14 sbin/avail.cgi 234
8.4.15 sbin/histogram.cgi 235
8.4.16 sbin/summary.cgi 235
8.5 share/目录 236
8.5.1 share/contexthelp 238
8.5.2 share/docs 239
8.5.3 share/images 239
8.5.4 share/includes 239
8.5.5 share/locale 240
8.5.6 share/ssi 240
8.5.7 share/stylesheets 240
8.5.8 share/index.php 241
8.5.9 share/config.inc.php 244
8.5.10 share/main.php 244
8.5.11 share/robots.txt 244
8.5.12 share/side.php 245
8.6 var/目录 245
8.6.1 var/archives 245
8.6.2 var/nagios.lock 246
8.6.3 var/nagios.log 246
8.6.4 var/objects.cache 247
8.6.5 var/objects.precache 248
8.6.6 var/retention.dat 249
8.6.7 var/rw/nagios.cmd 251
8.6.8 var/spool/checkresults 251
8.6.9 var/status.dat 252
第3部分 使用Nagios 256
第9章 监控Linux系统下的host和service 256
9.1 认识NRPE 256
9.1.1 图解NRPE 256
9.1.2 使用方法 257
9.2 安装NRPE 258
9.2.1 客户端安装 259
9.2.2 服务器端安装 269
9.3 监控host和service 273
9.3.1 创建host和service定义 274
9.3.2 自定义监控 278
9.4 升级NRPE 279
9.4.1 监控主机升级 279
9.4.2 远程主机升级 280
第10章 监控Windows系统下的host和service 281
10.1 认识NSClient++ 281
10.1.1 图解NSClient++ 282
10.1.2 使用方法 282
10.2 安装NSClient++ 283
10.2.1 客户端安装 283
10.2.2 服务器端安装 289
10.3 监控host和service 289
10.3.1 创建host和service定义 289
10.3.2 自定义监控 292
第11章 监控公开提供的service 295
11.1 对公网提供的服务 295
11.2 对内网提供的服务 300
第12章 监控其他设备 303
12.1 路由器 303
12.2 交换机 303
12.3 网络打印机 304
第13章 升级Nagios 306
13.1 从早期3.x版本升级Nagios 306
13.2 从2.x版本升级安装Nagios 307
13.3 从RPM升级安装Nagios 308
第4部分 对象配置 310
第14章 配置文件概述 310
14.1 14种对象配置文件 313
14.1.1 host定义 313
14.1.2 hostgroup定义 323
14.1.3 service定义 325
14.1.4 servicegroup定义 333
14.1.5 contact定义 335
14.1.6 contactgroup定义 339
14.1.7 timeperiod定义 340
14.1.8 command定义 343
14.1.9 hostdependency定义 344
14.1.10 servicedependency定义 346
14.1.11 hostescalation定义 349
14.1.12 serviceescalation定义 352
14.1.13 extendedhost信息定义 356
14.1.14 extendedservice信息定义 358
14.2 host和service依赖性 359
14.2.1 服务依赖性 360
14.2.2 主机依赖性 364
第15章 对象继承与对象定义技巧 366
15.1 对象继承 366
15.1.1 继承介绍 366
15.1.2 定义格式 367
15.1.3 本地变量和继承变量的比较 368
15.1.4 继承链 369
15.1.5 使用不完整对象定义作为模板 370
15.1.6 自定义对象变量 371
15.1.7 取消继承的字符串值 372
15.1.8 添加继承的字符串值 372
15.1.9 隐含继承 373
15.1.10 扩充中的隐含/添加继承 373
15.1.11 “!”功能 374
15.1.12 多个继承源 375
15.1.13 多继承源的优先权 376
15.2 对象定义技巧 376
15.2.1 正则表达式匹配 377
15.2.2 service定义 377
15.2.3 service扩充定义 378
15.2.4 service依赖定义 380
15.2.5 host扩充定义 383
15.2.6 host依赖定义 384
15.2.7 host组 385
第5部分 图形化Nagios数据第16章 使用PNPNagios 388
16.1 PNPNagios的安装与设置 388
16.1.1 软件依赖性 388
16.1.2 下载和安装 388
16.1.3 安装后的结构 395
16.1.4 相关文件 396
16.2 PNPNagios的工作模式 405
16.2.1 Synchronous模式 405
16.2.2 Bulk模式 405
16.2.3 使用NPCD的Bulk模式 406
16.2.4 使用npcdmod的Bulk模式 406
16.2.5 Gearman模式 406
16.3 使用PNPNagios 407
16.3.1 Synchronous模式下的设置 407
16.3.2 Bulk模式下的设置 408
16.3.3 使用NPCD的Bulk模式下的设置 410
16.3.4 使用npcdmod的Bulk模式下的设置 411
16.3.5 Gearman模式下的设置 412
16.4 实例 414
16.4.1 使用Bulk模式 415
16.4.2 使用NPCD的Bulk模式 423
第17章 使用MRTG 425
17.1 nagiostats工具 425
17.1.1 使用信息 425
17.1.2 容易读懂的输出 425
17.1.3 分析数据与MRTG集成 427
17.2 使用MRTG绘制Nagios工作性能数据图 427
17.2.1 MRTG配置文件样本 427
17.2.2 图例分析 427
17.3 实例 436
17.3.1 安装MRTG 436
17.3.2 配置MRTG 440
17.3.3 运行MRTG 442
17.3.4 设置Apache访问 444
17.3.5 访问生成的页面 444
第6部分 实现Nagios通知第18章 概述通知 446
18.1 通知 446
18.1.1 通知策略 446
18.1.2 过滤器 446
18.1.3 发送通知的方式 450
18.2 通知扩充 450
第19章 通知方式 456
19.1 使用飞信 456
19.1.1 Linux命令行下使用飞信 456
19.1.2 Nagios与飞信结合 461
19.2 使用139信箱 462
19.2.1 注册139信箱 463
19.2.2 在Nagios中添加联系人 464
19.3 其他方式 464
第7部分 图解Nagios前端接口第20章 使用Nagios的Web接口 466
20.1 一般选项 466
20.2 当前状态选项 467
20.3 报告查看选项 467
20.4 系统配置选项 467
第21章 相关的Nagios前端程序 471
21.1 Web接口 471
21.2 Linux命令行接口 476
21.3 手机图形接口 478
第8部分 Nagios的扩展 482
第22章 Addon和Plugin 482
22.1 Nagios Addons 482
22.1.1 有效的Addon 482
22.1.2 获取Addon 483
22.2 Nagios Plugins 484
22.2.1 可用的插件 486
22.2.2 获取插件 486
22.2.3 使用Plugin的方法 486
22.2.4 Plugin API 487
22.3 Nagios Plugin API 487
22.3.1 返回代码 487
22.3.2 Plugin输出规格 487
22.3.3 Plugin输出举例 488
22.3.4 Plugin输出长度的约束 489
22.3.5 Perl Plugins 490
第23章 Nagios插件开发 491
23.1 对开发平台的要求 491
23.2 Nagios插件输出的约定 491
23.2.1 将文本仅打印在一行 491
23.2.2 详细输出 492
23.2.3 屏幕输出 492
23.2.4 插件返回代码 492
23.2.5 阈值和范围 493
23.2.6 性能数据 494
23.2.7 翻译 494
23.3 系统命令和辅助文件 495
23.4 Perl插件 495
23.5 运行时间超时 496
23.5.1 使用DEFAULT_SOCKET_TIMEOUT 496
23.5.2 为网络插件添加警告 496
23.6 插件选项 496
23.6.1 选项处理 497
23.6.2 门限值及门限范围的使用 498
23.7 测试 498
23.7.1 测试插件 498
23.7.2 测试C库函数 499
23.8 代码准则 501
23.8.1 C coding 501
23.8.2 Crediting sources 501
23.8.3 CVS注释 501
23.8.4 开发人员的翻译工作 501
23.9 提交新的插件和补丁 502
23.9.1 补丁的提交 502
23.9.2 捐献插件的提交 503
23.9.3 新插件的提交 503
第9部分 商业版Nagios XI服务器第24章 走进Nagios XI 506
24.1 安装Nagios XI 506
24.1.1 下载Nagios XI 507
24.1.2 安装过程 507
24.1.3 安装总结 511
24.2 安装后的目录结构 512
24.2.1 相关服务 521
24.2.2 商业价格 523
24.3 有关NRDP 524
24.3.1 NRDP要比NSCA更好使用 524
24.3.2 NRDP的工作原理 525
24.3.3 下载和安装NRDP 525
24.3.4 测试NRDP API 527
24.3.5 使用NRDP客户端 527
第25章 访问Web界面 529
25.1 Home选项 531
25.1.1 快速查看 532
25.1.2 详细查看 532
25.1.3 性能数据图 535
25.1.4 网络状态图 536
25.1.5 事件管理 537
25.1.6 监控Nagios引擎进程 538
5.2 Views选项 539
25.2.1 查看工具 540
25.2.2 定制查看 540
25.3 Dashboards选项 541
25.3.1 仪表板工具 541
25.3.2 我的仪表板 542
25.3.3 添加Dashlets 542
25.4 Repoit选项 543
25.4.1 我的报告 544
25.4.2 有效报告 544
25.4.3 数据可视化 548
25.4.4 遗留报告 548
25.5 Configure选项 549
25.5.1 运行配置监控向导 549
25.5.2 进入Nagios核心配置管理 557
25.5.3 账户设置 571
25.6 Help选项 573
25.7 Admin选项 574
25.7.1 查看系统状态 575
25.7.2 用户管理 577
25.7.3 系统配置 578
25.7.4 监控配置 584
25.7.5 检测输出传输 585
25.7.6 系统扩展 585