Nagios 监控运维完整教程
Nagios 监控运维完整教程
本教程从零开始,系统讲解 Nagios 监控系统的安装、配置、运维与实战。适合运维工程师、SRE、DevOps 从业者以及希望深入了解企业级监控体系的技术人员。
一、教程概览
Nagios 是业界最成熟、最广泛使用的开源监控系统之一,自 1999 年诞生以来,已成为金融、电信、互联网等行业 IT 基础设施监控的事实标准。本教程共 14 章,覆盖从入门到高级运维的完整知识体系。
章节列表
二、目标读者
本教程适合以下人群:
- 运维工程师:负责服务器、网络、应用监控的日常运维人员
- SRE(站点可靠性工程师):关注系统可用性和性能的技术人员
- DevOps 工程师:需要在 CI/CD 流水线中集成监控的开发运维人员
- 技术管理者:需要了解监控体系架构和建设思路的团队负责人
- 学生和爱好者:希望系统学习企业级监控技术的学习者
前置知识要求
| 技能领域 | 要求程度 | 说明 |
|---|
| Linux 基础 | 中级 | 熟悉命令行、文件系统、用户权限、服务管理 |
| 网络基础 | 中级 | 了解 TCP/IP、DNS、HTTP、SSH 等协议 |
| Shell 编程 | 初级 | 能编写简单的 Shell 脚本 |
| Web 服务 | 初级 | 了解 Apache/Nginx 基本配置 |
| 编程语言 | 可选 | 自定义插件开发需要 Python/Perl/Shell 基础 |
三、学习路径建议
快速上手路线(1-2 天)
- 阅读第 1 章了解 Nagios 概貌
- 按第 2 章完成安装部署
- 学习第 3 章配置文件结构
- 参考第 4、5 章添加主机和服务监控
- 配置第 6 章的联系人和通知
系统学习路线(1-2 周)
- 依次阅读所有章节
- 每章动手实践,完成配置示例
- 搭建完整的监控环境
- 完成第 12 章的 Docker 部署实验
高级运维路线(持续学习)
- 深入第 7、8 章的插件开发
- 掌握第 10 章的高级通知策略
- 实施第 11 章的性能数据可视化
- 参考第 14 章建立运维规范
四、实验环境建议
最低配置
| 资源 | 推荐配置 | 说明 |
|---|
| CPU | 1 核 | 监控少量主机足够 |
| 内存 | 1 GB | Nagios Core 本身占用不大 |
| 磁盘 | 20 GB | 包含系统和日志空间 |
| 操作系统 | CentOS 7+ / Ubuntu 18.04+ | 推荐使用 LTS 版本 |
生产环境建议
| 资源 | 推荐配置 | 说明 |
|---|
| CPU | 4 核+ | 监控 500+ 主机需要更多计算资源 |
| 内存 | 8 GB+ | 包含 Web 界面和插件运行 |
| 磁盘 | 100 GB+ | 性能数据和日志长期存储 |
| 操作系统 | CentOS 8 / Rocky Linux 9 / Ubuntu 22.04 | 选择长期支持版本 |
推荐实验拓扑
┌─────────────────────────────────────────────────────────────┐
│ 监控服务器 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Nagios Core │ │ Apache │ │ PNP4Nagios │ │
│ │ (主进程) │ │ (Web界面) │ │ (性能图表) │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
│ │ │
┌───────▼───────┐ ┌────▼────┐ ┌────────▼────────┐
│ 被监控主机A │ │ 主机B │ │ 主机C │
│ NRPE Agent │ │ Agent │ │ SNMP / SSH │
└───────────────┘ └─────────┘ └─────────────────┘
五、核心概念速览
在开始学习之前,先了解几个核心概念:
1. 对象模型(Object Model)
Nagios 的一切配置都是对象(Object),主要包括:
- Host(主机):被监控的设备或服务器
- Service(服务):主机上的具体检查项
- Command(命令):定义如何执行检查或发送通知
- Contact(联系人):接收告警通知的人员
- Timeperiod(时间段):定义检查和通知的时间窗口
- Hostgroup/Servicegroup(分组):逻辑分组便于管理
2. 状态模型(State Model)
Nagios 使用状态来表示检查结果:
| 对象类型 | 状态值 | 含义 |
|---|
| Host | UP | 主机可达 |
| Host | DOWN | 主机不可达 |
| Host | UNREACHABLE | 主机不可达(通过父主机判断) |
| Service | OK | 服务正常 |
| Service | WARNING | 服务警告 |
| Service | CRITICAL | 服务严重故障 |
| Service | UNKNOWN | 服务状态未知 |
3. 检查类型
- 主动检查(Active Check):Nagios 主动发起的检查
- 被动检查(Passive Check):外部系统提交的检查结果
- 强制检查(Forced Check):忽略时间间隔的强制检查
4. 通知流程
检查执行 → 状态判断 → 是否通知?
├─ 是 → 联系人筛选 → 通知升级 → 发送通知
└─ 否 → 记录日志
六、常用命令参考
| 命令 | 作用 | 示例 |
|---|
nagios -v | 验证配置文件 | nagios -v /etc/nagios/nagios.cfg |
systemctl restart nagios | 重启服务 | systemctl restart nagios |
nagios -d | 以守护进程模式运行 | nagios -d /etc/nagios/nagios.cfg |
tail -f nagios.log | 查看实时日志 | tail -f /var/log/nagios/nagios.log |
七、扩展阅读
官方资源
相关工具
推荐书籍
- 《Learning Nagios》 - Wolfgang Barth
- 《Nagios: System and Network Monitoring》 - Wolfgang Barth
- 《Nagios Core Administration Cookbook》 - Tom Ryder
八、教程约定
配置文件路径约定
| 路径 | 说明 |
|---|
/etc/nagios/ | Nagios 主配置目录 |
/etc/nagios/nagios.cfg | 主配置文件 |
/etc/nagios/objects/ | 对象定义目录 |
/usr/local/nagios/ | 编译安装的主目录 |
/var/log/nagios/nagios.log | 日志文件 |
/usr/lib64/nagios/plugins/ | 插件目录(64位系统) |
命令行约定
# 开头的命令需要 root 权限执行$ 开头的命令可以使用普通用户执行- 命令中的
... 表示省略的部分内容
配置示例约定
- 所有配置示例均为可运行的完整示例
- 配置中使用
... 表示省略不相关的内容 - 关键配置项会有详细注释说明
开始学习:建议从 第1章:Nagios 简介与架构 开始,了解 Nagios 的历史背景和核心架构。