强曰为道

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

Nagios 监控运维完整教程

Nagios 监控运维完整教程

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


一、教程概览

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

章节列表

章节文件主题核心内容
第1章01-introduction.mdNagios 简介与架构历史、架构、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.mdNRPE 远程监控NRPE 配置、安全、命令参数、被动检查、NSClient++
第10章10-escalations.md通知升级与依赖通知升级、依赖关系、维护时段、灵活性、自定义逻辑
第11章11-perfdata.md性能数据与可视化性能数据、图表、PNP4Nagios、Grafana 集成、数据导出
第12章12-docker.mdDocker 部署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 章建立运维规范

四、实验环境建议

最低配置

资源推荐配置说明
CPU1 核监控少量主机足够
内存1 GBNagios Core 本身占用不大
磁盘20 GB包含系统和日志空间
操作系统CentOS 7+ / Ubuntu 18.04+推荐使用 LTS 版本

生产环境建议

资源推荐配置说明
CPU4 核+监控 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 使用状态来表示检查结果:

对象类型状态值含义
HostUP主机可达
HostDOWN主机不可达
HostUNREACHABLE主机不可达(通过父主机判断)
ServiceOK服务正常
ServiceWARNING服务警告
ServiceCRITICAL服务严重故障
ServiceUNKNOWN服务状态未知

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/
NaemonNagios 分支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 的历史背景和核心架构。