1. 企业级Nagios监控系统概述
Nagios作为一款开源的IT基础设施监控工具,在企业运维领域已经服务了超过20年。根据我的实践经验,一套合理配置的Nagios系统可以轻松管理500+节点的监控需求,平均故障检测时间能控制在3分钟以内。相比商业监控方案,Nagios在定制灵活性和成本控制方面具有明显优势,特别适合预算有限但监控需求复杂的中小企业环境。
关键提示:生产环境部署建议选择Nagios Core而非XI版本,前者虽然配置复杂但性能更好,后者虽然界面友好但资源消耗较大。
2. 系统部署与基础配置
2.1 环境准备与安装
在CentOS 7系统上的标准安装流程如下:
bash复制# 安装EPEL仓库和必要依赖
yum install -y epel-release
yum install -y httpd php gcc glibc glibc-common gd gd-devel make net-snmp
# 创建nagios用户和组
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
usermod -a -G nagcmd apache
# 编译安装Nagios核心
wget https://assets.nagios.com/downloads/nagioscore/releases/nagios-4.4.6.tar.gz
tar xzf nagios-4.4.6.tar.gz
cd nagios-4.4.6
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-config
make install-commandmode
安装完成后需要特别注意:
- Web界面登录密码存储在
/usr/local/nagios/etc/htpasswd.users - 主配置文件路径为
/usr/local/nagios/etc/nagios.cfg - 插件默认安装在
/usr/local/nagios/libexec
2.2 核心配置文件解析
Nagios的配置体系采用分层结构:
code复制nagios.cfg (主配置)
├── objects (对象定义)
│ ├── commands.cfg (命令定义)
│ ├── contacts.cfg (联系人定义)
│ ├── timeperiods.cfg (时间周期定义)
│ └── templates.cfg (模板定义)
└── resources.cfg (资源定义)
典型的主机监控配置示例:
cfg复制define host {
host_name web01
alias Web Server 01
address 192.168.1.101
use linux-server
check_period 24x7
max_check_attempts 3
notification_interval 60
notification_period 24x7
notification_options d,u,r
}
经验之谈:建议将业务相关的主机分组配置,比如按web/db/app分组管理,比单台配置效率提升40%以上。
3. 高级监控配置实战
3.1 服务监控配置
监控HTTP服务的典型配置:
cfg复制define service {
host_name web01
service_description HTTP
use generic-service
check_command check_http!-H web01.example.com -u /health -e 200
normal_check_interval 5
retry_check_interval 1
notification_options w,u,c
contact_groups admins
}
关键参数说明:
check_http:使用HTTP插件进行检查-H:指定检查的主机名-u:检查的URL路径-e:期望的HTTP状态码
3.2 分布式监控架构
当监控节点超过200台时,建议采用分布式架构:
code复制主Nagios服务器
├── 从服务器A(监控IDC1)
├── 从服务器B(监控IDC2)
└── 从服务器C(监控云环境)
配置NRPE实现远程执行:
cfg复制define command {
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
define service {
host_name db01
service_description MySQL Connections
use generic-service
check_command check_nrpe!check_mysql_connections
}
4. 性能优化与故障处理
4.1 性能调优参数
在nagios.cfg中关键性能参数:
cfg复制# 检查工作进程数(建议CPU核心数×2)
max_concurrent_checks=8
# 检查结果处理间隔(毫秒)
check_result_reaper_frequency=5
# 服务检查间隔抖动(避免同时检查)
service_inter_check_delay_method=s
host_inter_check_delay_method=s
# 保持状态信息以提高性能
retain_state_information=1
4.2 常见故障排查
-
监控数据不更新
- 检查
nagios.log是否有错误 - 验证
nagios用户对插件有执行权限 - 确认NRPE服务在目标主机运行正常
- 检查
-
报警未触发
- 检查
contacts.cfg配置 - 验证邮件服务器可访问
- 查看
notification.log发送记录
- 检查
-
Web界面无法访问
- 检查Apache错误日志
- 确认
/usr/local/nagios/etc/cgi.cfg配置正确 - 验证SELinux和防火墙设置
5. 生产环境最佳实践
5.1 监控策略设计
根据业务重要性分级监控:
| 级别 | 检查间隔 | 重试次数 | 通知方式 | 响应时间要求 |
|---|---|---|---|---|
| 关键 | 1分钟 | 1次 | 短信+邮件 | 15分钟内 |
| 重要 | 5分钟 | 2次 | 邮件 | 1小时内 |
| 一般 | 15分钟 | 3次 | 邮件 | 4小时内 |
5.2 自动化维护方案
推荐使用以下工具组合:
- 配置管理:Ansible管理Nagios配置
- 日志分析:ELK收集分析Nagios日志
- 报表生成:NagiosQL生成周报/月报
- 自动修复:自定义事件处理程序实现简单故障自愈
bash复制#!/bin/bash
# 自动清理30天前的日志
find /usr/local/nagios/var/archives/ -name "*.log" -mtime +30 -exec rm {} \;
# 每周自动生成性能报告
/usr/local/nagios/bin/nagiostats -d /usr/local/nagios/var/status.dat -m > /var/www/html/nagios/report_$(date +%Y%m%d).txt
经过多年实战验证,这套架构在日处理50万+检查项的环境中仍能保持稳定运行,平均CPU占用率控制在15%以下。关键在于合理的分布式部署和持续的性能调优。