fateame 发表于 2019-1-15 07:21:15

Nagios 监控linux 服务器

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 的插件库,各种插件的功能可以看帮助详细了解
# useradd nagios    #创建nagios用户
# cd /home/nagios/
# tar zxvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios
# make && make install
3.NRPE 安装
#服务端也要安装NRPE插件,然后在command.cfg定义下check_nrpe 就可以了,其它的不需要配置
# tar zxvf nrpe-2.13.tar.gz
# cd nrpe-2.13
# ./configure --prefix=/usr/local/nagios/
# make all
# make install-plugin   #安装NRPE插件
# make install-daemon   #安装nrpe-daemon
# make install-daemon-config#安装daemon配置文件
# 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

# service xinetd restart
停止 xinetd:[失败]
正在启动 xinetd:[确定]
# cd /usr/local/nagios/libexec/
# ./check_nrpe -H localhost
NRPE v2.13
服务端
# ./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
# /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=/usr/local/nagios//libexec/check_users -w 5 -c 10
command=/usr/local/nagios//libexec/check_load -w 15,10,5 -c 30,25,20
command=/usr/local/nagios//libexec/check_disk -w 20% -c 10% -p /dev/hda1
command=/usr/local/nagios//libexec/check_procs -w 5 -c 10 -s Z
command=/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
# cpan
install Sys::Statistics::Linux
2)还可以下载安装Sys-Statistics-Linux-0.66.tar.gz
# tar zxvf Sys-Statistics-Linux-0.66.tar.gz
# cd Sys-Statistics-Linux-0.66
# perl Makefile.PL
# make
# make test
# make install

3)监控内存, 超过80%告警,90%紧急;50是swap的值,需要设定,可以打-h查看

客户端nrpe.cfg
command=/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就可以了,这样就可以自己编写插件来实现自己的监控需求了;
0OK
1WARNING
2CRITICAL
3UNKNOWN



有什么不明白之处可以给我留言,有什么想法或者好的建议也可以提出来,我会及时回复大家http://blog.运维网.com/neweditor/editor/images/smiley/35.gif




页: [1]
查看完整版本: Nagios 监控linux 服务器