强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Nagios 监控运维完整教程

Nagios 监控运维完整教程

本教程从零开始,系统讲解 Nagios 监控系统的安装、配置、运维与实战。适合运维工程师、SRE、DevOps 从业者以及希望深入了解企业级监控体系的技术人员。


一、教程概览

Nagios 是业界最成熟、最广泛使用的开源监控系统之一,自 1999 年诞生以来,已成为金融、电信、互联网等行业 IT 基础设施监控的事实标准。本教程共 14 章,覆盖从入门到高级运维的完整知识体系。

章节列表

章节 文件 主题 核心内容
第1章 01-introduction.md Nagios 简介与架构 历史、架构、Core、Web、插件模型、与 Zabbix/Prometheus 对比、适用场景
第2章 02-install.md 安装与部署 编译安装、包管理、初始配置、用户权限、SELinux
第3章 03-config.md 配置文件结构 nagios.cfg、对象定义、模板、继承、宏
第4章 04-hosts.md 主机管理 主机定义、主机检查、被动检查、父主机、主机分组、图标
第5章 05-services.md 服务管理 服务定义、服务检查、命令、阈值、依赖、时间段、通知
第6章 06-contacts.md 联系人与通知 联系人、联系人组、通知命令、升级、通知过滤、静默
第7章 07-commands.md 命令与插件开发 命令定义、插件开发、返回值、性能数据、NRPE、NSCA
第8章 08-plugins.md 插件体系详解 官方插件、自定义插件、Nagios XI、检查类型
第9章 09-nrpe.md NRPE 远程监控 NRPE 配置、安全、命令参数、被动检查、NSClient++
第10章 10-escalations.md 通知升级与依赖 通知升级、依赖关系、维护时段、灵活性、自定义逻辑
第11章 11-perfdata.md 性能数据与可视化 性能数据、图表、PNP4Nagios、Grafana 集成、数据导出
第12章 12-docker.md Docker 部署 Docker 部署、Compose、配置管理、插件扩展、监控容器
第13章 13-troubleshooting.md 故障排查 常见问题、配置验证、通知不发、插件调试、日志分析
第14章 14-best-practices.md 运维最佳实践 运维规范、监控策略、告警设计、性能调优、高可用

二、目标读者

本教程适合以下人群:

  • 运维工程师:负责服务器、网络、应用监控的日常运维人员
  • SRE(站点可靠性工程师):关注系统可用性和性能的技术人员
  • DevOps 工程师:需要在 CI/CD 流水线中集成监控的开发运维人员
  • 技术管理者:需要了解监控体系架构和建设思路的团队负责人
  • 学生和爱好者:希望系统学习企业级监控技术的学习者

前置知识要求

技能领域 要求程度 说明
Linux 基础 中级 熟悉命令行、文件系统、用户权限、服务管理
网络基础 中级 了解 TCP/IP、DNS、HTTP、SSH 等协议
Shell 编程 初级 能编写简单的 Shell 脚本
Web 服务 初级 了解 Apache/Nginx 基本配置
编程语言 可选 自定义插件开发需要 Python/Perl/Shell 基础

三、学习路径建议

快速上手路线(1-2 天)

  1. 阅读第 1 章了解 Nagios 概貌
  2. 按第 2 章完成安装部署
  3. 学习第 3 章配置文件结构
  4. 参考第 4、5 章添加主机和服务监控
  5. 配置第 6 章的联系人和通知

系统学习路线(1-2 周)

  1. 依次阅读所有章节
  2. 每章动手实践,完成配置示例
  3. 搭建完整的监控环境
  4. 完成第 12 章的 Docker 部署实验

高级运维路线(持续学习)

  1. 深入第 7、8 章的插件开发
  2. 掌握第 10 章的高级通知策略
  3. 实施第 11 章的性能数据可视化
  4. 参考第 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

七、扩展阅读

官方资源

相关工具

工具 用途 官网
PNP4Nagios 性能数据可视化 https://docs.pnp4nagios.org/
Grafana 通用监控可视化 https://grafana.com/
Thruk 替代 Web 界面 https://www.thruk.org/
Naemon Nagios 分支 https://naemon.org/

推荐书籍

  • 《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 的历史背景和核心架构。