Nagios 监控linux服务器
一、nagios监控linux基本流程
1.nagios 运行check_nrpe插件,检查配置文件需要检测的对象
2.check_nrpe插件会通过SSL连接到远程的NRPE daemon
3.NRPE daemon会运行相应的nagios插件来执行检查本地资源或服务
4.NRPE daemon将检查的结果返回给check_nrpe插件,插件将其提交给nagios做处理

二、linux nagios客户端安装 
1.软件装备
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nrpe-2.13.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz 
2.nagios-plugins 安装
nagios-plugin 其实就是一个nagios 的插件库,各种插件的功能可以看帮助详细了解
[root@localhost ~]# useradd nagios    #创建nagios用户
[root@localhost ~]# cd /home/nagios/
[root@localhost nagios]# tar zxvf nagios-plugins-1.4.16.tar.gz
[root@localhost nagios]# cd nagios-plugins-1.4.16
[root@localhost nagios-plugins-1.4.16]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-1.4.16]# make && make install
3.NRPE 安装
#服务端也要安装NRPE插件,然后在command.cfg定义下check_nrpe 就可以了,其它的不需要配置
[root@localhost nagios]# tar zxvf nrpe-2.13.tar.gz
[root@localhost nagios]# cd nrpe-2.13
[root@localhost nrpe-2.13]# ./configure --prefix=/usr/local/nagios/
[root@localhost nrpe-2.13]# make all
[root@localhost nrpe-2.13]# make install-plugin   #安装NRPE插件
[root@localhost nrpe-2.13]# make install-daemon   #安装nrpe-daemon
[root@localhost nrpe-2.13]# make install-daemon-config  #安装daemon配置文件
[root@localhost nrpe-2.13]# make install-xinetd   #安装NRPE Deamon为xinetd下的一个服务

三、配置NRPE客户端
在command.cfg 中定义check_nrpe服务
define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }
配置允许nagios服务器地址
vi /etc/xinetd.d/nrpe
only_from       = 127.0.0.1 10.10.133.230   #多个地址空格分隔
#添加nrpe服务
vi /etc/services
nrpe            5666/tcp                # nrpe
[root@localhost ~]# service xinetd restart
停止 xinetd:[失败]
正在启动 xinetd:[确定]
[root@localhost ~]# cd /usr/local/nagios/libexec/
[root@localhost libexec]# ./check_nrpe -H localhost
NRPE v2.13
服务端
[root@localhost libexec]# ./check_nrpe -H 10.10.133.211
NRPE v2.13
如果没安装xinetd 服务,可以配置nrpe.cfg实现
vi /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1,10.10.133.230    #多个地址逗号分隔
启动nrpe
[root@localhost ~]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
可以将此命令添加到开机启动项

四、linux监控主机配置 
1.在monitor目录中新建个主机配置文件
touch linuxserver1.cfg
1.定义个主机
define host{
        use             linux-server
        host_name       linuxserver1
        alias           linuxserver1
        address         10.10.133.211
        }
如果需要加到组里,可以把这个主机名添加到localhost.cfg中的hostgroup中members 后,逗号相隔
2.基本服务
这些服务在客户端nrpe.cfg配置文件中已经定义了,只需在服务端引用一下就行了,如果以后想要监控其它服务,可以参考配置
客户端
vi /usr/local/nagios/etc/nrpe.cfg
·······
command[check_users]=/usr/local/nagios//libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios//libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios//libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios//libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios//libexec/check_procs -w 150 -c 200
·······
服务端(linuxserver1.cfg)
监控CPU负载
define service{
        use             generic-service
        host_name       linuxserver1
        service_description     check-load
        check_command           check_nrpe!check_load
}
#监控swap分区
check_nrpe!check_swap
#监控/dev/hda1的空闲空间,不同的磁盘可以去客户端nrpe.cfg定义
check_nrpe!check_hda1
#监控用户登录数
check_nrpe!check_users
#监控所有进程数
check_nrpe!check_total_procs
 
五、扩展监控
1.check_linux_status.pl
这个是一个比较好用的插件,可以监控内存、CPU使用率(check_load是负载,两者有区别,但都是可以反映CPU性能的插件)、磁盘I/O 但是直接执行执行不了,需要安装Sys::Statistics::Linux
 
1)通过cpan 安装Sys::Statistics::Linux(需要安装cpan)
yum install cpan
[root@localhost ~]# cpan
install Sys::Statistics::Linux
2)还可以下载安装Sys-Statistics-Linux-0.66.tar.gz 
[root@localhost ~]# tar zxvf Sys-Statistics-Linux-0.66.tar.gz
[root@localhost ~]# cd Sys-Statistics-Linux-0.66
[root@localhost Sys-Statistics-Linux-0.66]# perl Makefile.PL
[root@localhost Sys-Statistics-Linux-0.66]# make
[root@localhost Sys-Statistics-Linux-0.66]# make test
[root@localhost Sys-Statistics-Linux-0.66]# make install
3)监控内存, 超过80%告警,90%紧急;50是swap的值,需要设定,可以打-h查看
客户端nrpe.cfg
command[check_mem]=/usr/local/nagios/libexec/check_linux_stats.pl -M -w 80,50 -c 90,50
服务端linuxserver1.cfg
define service{
        use             generic-service
        host_name       linuxserver1
        service_description     check-memory
        check_command           check_nrpe!check_mem
}
2.监控mysql服务,并实现自动重启-无密码登陆
限于篇幅,我说下实现过程,下面配置需要通过nagios服务端到mysql服务端无密码登陆,如何配置网上资料很多,服务重启直接远程过去重启,还可以在客户端定义个命令重启mysql,服务端引用,别在权限上栽跟头
下面贴出nagios配置参考
command.cfg
define command{
        command_name    check_mysql
        command_line    $USER1$/check_mysql -H $HOSTADDRESS$ -P $ARG1$ -u $ARG2$ -p $ARG3$
        }
define command{
        command_name    mysql-restart
        command_line    /usr/bin/ssh nagios@$HOSTADDRESS$ "sudo /etc/rc.d/init.d/mysql restart"
        } 
linuxserver1.cfg
define service{
        use             generic-service
        host_name       linuxserver1
        service_description     mysql
        check_command           check_mysql!3306!axon!action
        event_handler_enabled   1
        event_handler           mysql-restart
        }
3.监控mysql坏表,并自动修复
监控mysql坏表是判断数据库中表引擎是否为空来实现,可能有些其它情况下坏表监控不到,这个需要完善,有什么好的建议网友也可提出来,一起提高···
4.监控mysql主从
监控主从的依据其实就是判断slave 状态,如果IO 和SQL不为yes,那就有问题了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5.监控一个网站所有页面
这个就不建议用nagios 去监控了,但可以利用check_http 这个插件,对所有url进行轮询,然后将超时的提取出来通过邮件发送,可以做个定时任务。
 
六、Nagios插件编写
会点shell或者python 会对监控运维工作有很大帮助。
Nagios 插件编写其实并不难,记住4个状态就行了,执行时给nagios返回0、1、2、3就可以了,这样就可以自己编写插件来实现自己的监控需求了;
0  OK
1  WARNING
2  CRITICAL
3  UNKNOWN

有什么不明白之处可以给我留言,有什么想法或者好的建议也可以提出来,我会及时回复大家