Nagios是一款用来监视系统和网络的开源应用软件。
利用其众多的插件实现对本机和远端服务的监控,当被监控对象异常时,会及时向管理员报警,用户可以直接调用插件,也可以自定义shell脚本来监控服务;可通过web页面显示对象状态,日志,报警信息。
1 搭建Nagios监控服务器
(1)部署Nagios服务运行环境
[root@ser56 ~]# yum -y install httpd php
[root@ser56 ~]# systemctl start httpd
[root@ser56 ~]#yum -y install gcc gcc-c++
[root@ser56 ~]# useradd nagios
[root@ser56 ~]# groupadd nagcmd
[root@ser56 ~]# usermod -G nagcmd nagios
(2)安装Nagios软件
[root@ser56 ~]#tar -xf nagios-4.2.4.tar.gz
./configure --help
[root@ser56 nagios-4.2.4]#./configure
--with-nagios-user=nagios
--with-nagios-group=nagcmd
--with-command-user=nagios
--with-command-group=nagcmd
[root@ser56 nagios-4.2.4]# make all #编译
[root@ser56 nagios-4.2.4]# make install #安装
[root@ser56 nagios-4.2.4]# make install-init #安装控制脚本
[root@ser56 nagios-4.2.4]# make install-commandmode #调配置文件的访问权限
[root@ser56 nagios-4.2.4]# make install-config #安装配置
[root@ser56 nagios-4.2.4]# make install-webconf #部署网站配置
[root@ser56 nagios-4.2.4]# make install-exfoliation #web页面格式
安装默认位置:/usr/local/nagios
(3)安装监控插件
[root@ser56 nagios]# tar -xf nagios-plugins-2.1.4.tar.gz
[root@ser56 nagios-plugins-2.1.4]# ./configure
[root@ser56 nagios-plugins-2.1.4]# make
[root@ser56 nagios-plugins-2.1.4]# make install
插件存放位置:/usr/local/nagios/libexec/
(4)启动监控服务
[root@ser56 ~]# /etc/init.d/nagios start
[root@ser56 ~]# /etc/init.d/nagios status
[root@ser56 ~]# vim /etc/httpd/conf.d/nagios.conf
在该文件内定义了目录别名以及用户认证
39行:Alias /nagios "/usr/local/nagios/share" #定义目录别名位置
52行:AuthUserFile /usr/local/nagios/etc/htpasswd.users #登录的用户名密码存放位置
为Nagios平台添加Web管理用户
[root@ser56 ~]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin #该用户必须是此名称
[root@ser56 ~]# cat /usr/local/nagios/etc/htpasswd.users
nagiosadmin:$apr1$QXl/iLJm$lFPRZ69PLrlvKmsFP6I6J1
此时重启httpd服务,重新加载/etc/httpd/conf.d/nagios.conf配置文件
firefox http://192.168.4.56/nagios
输入帐号和密码进入nagios首页
(因为在/etc/httpd/conf.d/nagios.conf配置文件中定义了别名,首页的真正位置在/usr/local/nagios/share下)
(5)查看监控信息
①默认监控服务:cpu, Current Users, HTTP, PING, 根, ssh, swap, 进程
CPU负载 check_load
系统登录用户数量 check_users
网站服务运行状态 check_http
PING check_ping
根分区空闲空间 check_disk
ssh服务 check_ssh
交换分区使用量 check_swap
系统总进程数量 check_procs
②监控显示状态:
ok:正常, warning:警告, unknown:监控配置错误, critical:报错, pending:监控中
nagios服务监控过程?
服务运行时,自动调用监控插件,将获取到的数据和插件的阀值做比较并返回监控状态信息。调用插件时,可以定义警告值和错误值。
2 配置Nagios监控服务
2.1 配置文件说明
(1)路径:/usr/local/nagios/etc下
(2)主配置文件:nagios.cfg #服务启动加载文件
验证配置是否有错误:
[root@ser56 etc]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
(3)宏定义文件:resource.cfg (设置nagios服务使用的变量)
(4)cgi.cfg #定义CGI文件访问权限
什么时cgi文件?ls /usr/local/nagios/sbin/路径下有很多.cgi文件
开发者写好的脚本,用来设置那些用户有权限访问文件,允许登录的用户名(nagiosadmin)在此文件中配置。
(5)objects目录下:
localhost.cfg #监控本机配置文件
vim /usr/local/nagios/etc/objects/localhost.cfg
define host{ #定义监控主机
use linux-server #定义监控主机使用的模版
host_name localhost #定义主机名,网页面可以看到
alias localhost #定义描述信息 可选项
address 127.0.0.1 #被监控主机的IP地址
}
define service{ #定义监控主机资源
use local-sever #监控资源使用的模板
host_name localhost
service_description Root Partition #设置监控资源显示名称
check_command check_local_disk!20%!10%!/ #调用的监控命令 和localhost.cfg文件中commands.cfg相对应
}
commands.cfg #定义监控命令
vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_local_disk #命令名称,和check_command相对应
command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ #调用监控插件 -w警告值,-c错误值 -s 状态 -p 监控哪个分区
}
-s 状态:R(运行) Z(僵尸进程)
templates.cfg 定义监控模版配置文件
timeperiods.cfg 定义监控时间模版配置文件
contacts.cfg 指定接收监控报警消息邮箱地址
案例:监控本机的根分区使用情况
vim /usr/local/nagios/etc/objects/localhost.cfg
define service{
use local-service
host_name localhost
service_description boot
check_command check_disk
}
vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_disk
command_line $USER1$/check_disk -w 50% -c 25% -p /boot
}
2.2 监控插件使用
(1)插件所在位置:
/usr/local/nagios/libexec
(2)插件帮助信息查看:
[root@ser56 libexec]#./check_users --help
[root@ser56 libexec]# dd if=/dev/zero of=/boot/a.txt bs=1M count=250 #模拟占用/boot分区的大小
[root@ser56 libexec]# ./check_procs -w 10 -c 12 #查看所有的进程
[root@ser56 libexec]# ./check_procs -w 20 -c 22 -s Z #僵尸进程的状态 -s R 运行的中的进程
2.3监控远端主机
(1)监控主机的配置步骤:
①定义监控命令
[root@ser56 ~]# vim /usr/local/nagios/etc/objects/commands.cfg
②创建监控主机的配置文件
[root@ser56 ~]# grep -v '^#' /usr/local/nagios/etc/objects/localhost.cfg > /usr/local/nagios/etc/objects/ser51.cfg
③在主配置文件加载监控主机的配置文件
[root@ser56 ~]# vim /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/ser51.cfg
④检查配置是否有错
⑤重启监控服务
⑥访问web页面查看监控信息的状态
⑦若监控项有警告状态或严重错误状态的,查看是否收到报警
2.4 监控远端主机的公有资源
/usr/local/nagios/libexec/check_http -H 192.168.4.51 -p 80
vim /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name check_51_http
command_line $USER1$/check_http -H 192.168.4.51 -p 80
}
vim /usr/local/nagios/etc/objects/ser51.cfg
define host{
use linux-server #监控时使用的模版
host_name server51 #监控页面显示的名称
alias localhost #描述信息,可以不写
address 192.168.4.51 #监控远端的主机
}
define service{
use local-service
host_name server51
service_description HTTP #监控页面显示的监控项描述
check_command check_51_http
notifications_enabled 0
}
2.5 监控远端主机的私有资源
(1)配置被监控端
①安装获取私有资源的插件
[root@ser51 nagios]# tar -xf nagios-plugins-2.1.4.tar.gz
[root@ser51 nagios]# ./configure && make && make install
[root@ser51 ~]#ls /usr/local/nagios/
②运行nrpe
nrpe调用本地的插件收集私有资源状态,通过5666端口发送给监控服务器。监控服务器安装连接nrpe的插件。
[root@ser51 ~]#yum -y install openssl-devel openssl
[root@ser51 ~]#useradd nagios
[root@ser51 ~]#tar -xf nrpe-3.0.1.tar.gz
[root@ser51 ~]#./configure && make all
[root@ser51 ~]#make install-daemon #守护进程
[root@ser51 ~]# ls /usr/local/nagios/bin/ #安装上一步多出的
[root@ser51 ~]#make install-config #配置文件
[root@ser51 ~]#make install-init #启动服务
[root@ser51 ~]#make install-plugin #连接工具(测试)
主配置文件:
[root@ser51 ~]# vim /usr/local/nagios/etc/nrpe.cfg
command[nrpe_51_users]=/usr/local/nagios/libexec/check_users -w 1 -c 2
command[nrpe_51_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200 #自定义监控本机
allowed_hosts=127.0.0.1, 192.168.4.56 #除了本机也允许其它连接nrpe
[root@ser51 ~]# systemctl start nrpe
[root@ser51 ~]# systemctl enable nrpe
[root@ser51 ~]# netstat -anptu | grep :5666
③测试nrpe服务配置
[root@ser51 ~]# /usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -p 5666 -c nrpe_51_users #要和自定义的名称保持一致
(2)配置监控服务器
①安装连接nrpe服务的插件
yum -y install openssl openssl-devel
tar -xf nrpe-3.0.1
./configure && make all && make install-plugin
安装之后在该路径有:/usr/local/nagios/libexec/check_nrpe
测试:
[root@ser56 nrpe-3.0.1]# /usr/local/nagios/libexec/check_nrpe -H 192.168.4.51 -p 5666 -c nrpe_51_users
②定义监控远端主机私有资源的监控命令
[root@ser56 objects]# vim commands.cfg
define command{
command_name check_51_procs
command_line $USER1$/check_nrpe -H 192.168.4.51 -p 5666 -c nrpe_51_procs
} #此命令调用的定义和被监控端的/usr/local/nagios/etc/nrpe.cfg中保持一致
③监控远端主机时调用定义的监控命令
vim ser51.cfg
define service{
use local-service
host_name ser51
service_description proces
check_command check_51_procs
}#此定义的check_command和监控命令中的command_name 保持一致
④配置nagios服务运行时,加载监控远端主机的配置文件
2.6 监控报警
发生问题将信息以邮件的形式发送到邮箱:
grep email /usr/local/nagios/etc/object/contacts.cfg
mail -s “test” nagios < /etc/hosts
su - nagios
mail #查看是否收到邮件
3 Nagios工作原理
Nagios的主动模式和被动模式
被动模式:客户端起nrpe进程,服务端通过check_nrpe插件向客户端发送命令,客户端根据服务端的指示来调用相应的插件,插件可以获取到本机的相关信息,并把获取到的结果发送给服务端。因为需要调用客户端的插件去等待客户端返回的信息,所以叫做被动模式
主动模式:主动模式不需要调用客户端的插件,而是通过自己的插件主动去探测客户端的相关信息。
那么,因为主动模式和被动模式的区别这两种模式所擅长监控的服务也是不同的。
主动模式:主机死活,端口,http服务,MySQL服务等
被动模式:客户端主机的负载,硬盘空间,内存,用户登录数等