Nagios 是一款免费的开源 IT 基础设施监控系统,功能强大,灵活性强,能有效监控 Windows、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在恢复后发出正常的邮件或短信。Nagios 结构简单,可维护性强,提供一个可选的基于浏览器的 Web 界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其它异常现象。
一、Nagios 结构简单说明Nagios 结构上来说,可分为核心和插件两个部分。Nagios 的核心部分只提供了很少的监控功能,因此要搭建一个完善的 IT 监控管理系统,用户还需要在 Nagios 服务器安装相应的插件,插件可以从 Nagios 官方网站下载 ,也可以根据实际要求自己编写所需的插件。
二、Nagios 可实现的功能特性监控网络服务(SMTP、POP3、HTTP、FTP、PING等)
监控本机及远程主机资源(CPU负荷、磁盘使用率、进程等)
允许用户编写自己的插件来监控特定的服务,支持多种开发语言(Shell、Perl、Python、PHP、C等)
具备定义网络分层结构的能力
当服务或主机问题产生与解决时将告警发送给联系人(通过Email、短信、自定义方式)
可以支持并实现对主机的冗余监控
可用 web 界面用于查看当前的网络状态、通知和故障历史、日志文件等
三、Nagios 监控实现原理Nagios 软件需安装在一台独立的服务器上运行,这台服务器称为监控中心,监控中心服务器可以采用 Linux 或 Unix 操作系统;每一台被监视的硬件主机或服务都运行一个与监控中心服务器进行通信的 Nagios 软件后台程序,也可以理解为 Agent 或插件均可。监控中心服务器读取配置文件中的指令与远程的守护程序进行通信,并且指示远程的守护程序进行必要的检查。虽然 Nagios 软件必须在 Linux 或 Unix 操作系统上运行,但是远程被监控的机器可以是任何能够与其进行通信的主机,根据远程主机返回的应答,Naigos 将依据配置进行回应;接着 Nagios 将通过本地的机器进行测试,如果检测返回值不正确,Nagios 将通过一种或多种方式报警。
四、监控中心服务器安装配置1. 中心服务器基本环境
操作系统:CentOS 6.4 x86_64
IP 地址:192.168.0.8
2. 安装epel扩展源(nagios)
[root@nagios ~]# yum install epel-release -y
3. 安装nagios系列软件
[root@nagios ~]# yum install httpd nagios nagios-plugins-all nagios-plugins-nrpe
4. 设置修改后台用户密码
[root@nagios ~]# htpasswd -c /etc/nagios/passwd nagiosadmin
默认用户名:nagiosadmin 密码:nagiosadmin 通过此命令可以修改密码。
5. 配置文件修改
[root@nagios ~]# vim /etc/nagios/nagios.cfg # 配置文件基本不用修改
检查配置文件是否有语法错误:
[root@nagios ~]# nagios -v /etc/nagios/nagios.cfg
6. 启动nagios相关服务
[root@nagios ~]# service nagios start [root@nagios ~]# service httpd start
7. 浏览器访问
# 注意最好要关闭iptables和selinux
通过浏览器访问上述的地址,输入后台用户名和密码。默认:nagiosadmin nagiosadmin
五、监控客户端基本网络服务1. 说明
对于客户端类似ping、ssh、http等基础网络服务,只需要在服务器端执行简单网络探测的命令即可查看相应的服务是否正常运行,因此对于这些服务的监控在客户端不需要安装任何的插件及服务。
2. 客户端环境
操作系统:CentOS 6.4 x86_64
IP 地址:192.168.0.28
3. 添加基本服务
在服务器端添加配置文件:
vim /etc/nagios/conf.d/192.168.0.28.cfg # 添加如下内容
define host{ # 定义主机:192.168.0.28 use linux-server host_name 192.168.0.28 alias 0.28 address 192.168.0.28 } define service{ # 添加 ping 监控服务 use generic-service host_name 192.168.0.28 service_description check_ping check_command check_ping!100.0,20%!200.0,50% max_check_attempts 5 normal_check_interval 1 } define service{ # 添加 ssh 监控服务 use generic-service host_name 192.168.0.28 service_description check_ssh check_command check_ssh max_check_attempts 5 normal_check_interval 1 } define service{ # 添加 http 监控服务 use generic-service host_name 192.168.0.28 service_description check_http check_command check_http max_check_attempts 5 normal_check_interval 1 }
4. 重新加载nagios配置文件
service nagios reload