Nagios的官方Quickstart网址https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/quickstart-fedora.html
关于Nagios与其他服务器的关系图(最简单的描述)
之所以是最简单,是因为这里只是介绍最普遍的部署方式,还有一种集群模式这里暂不研究
方式一:
1)在Nagios服务器上部署Nagios Core套件
2)在Client端上安装Nagios Plugin套件和NRPE套件
3)Nagios服务器每次收集信息都会联系Client端的NRPE(端口5666),由Client端的NRPE实现客户端的信息采集。NRPE实际上是一个客户端软件,可扩展性非常强,还可以自己用SHELL/PYTHON等编写插件。该种采集方式叫被动模式。
4)Client端也可以作为代理端,因为NRPE作为Client的本地软件,既可以访问本地资源,也可以访问外部资源,通过一些插件,也可以去探测其他Server的应用,而这些Server并不需要安装NRPE。这种探测方式叫主动模式。
方式二:
1)Nagios服务器端直接去探测其他Server的应用,这些Server不需要额外安装NRPE。
如果能看懂基本的英文,基本上Nagios的安装照着Quickstart装就可以了。这里说一点注意事项和简单的翻译一下
注意实现
一般情况下,Nagios服务器需要预先安装以下组件
httpd php* net-snmp* mrtg gcc glibc glibc-common gd gd-devel perl perl-devel mailx
可选组件mysql mysql-devel
预配
===================================================
1)关闭selinux。命令:setenforce 0 并且把selinux disabled;
2)增加nagios用户,并设置密码,/usr/sbin/useradd -m nagios; passwd nagios;
3)设置好/etc/mail.rc的内容(http://coosh.blog.51cto.com/6334375/1735688 )并且设置权限,默认情况下,它的权限是rw-------,后续我们会进行修改nagios的邮件提醒功能,因此chgrp nagios /etc/mail.rc; chmod 640 /etc/mail.rc;
4)如果要主动检测远程服务器的mysql,那么就要安装上面的可选组件;
5)把httpd设置为开机启动状态
创建nagcmd组(可选,我在测试中并没有进行这步,因为觉得它有点多余,但照着官方指引也没错)
/usr/sbin/groupadd nagcmd
/usr/sbin/usermod -a -G nagcmd nagios
/usr/sbin/usermod -a -G nagcmd apache
下载Nagios,在官方指南中,版本如下,而我在写这篇笔记时Nagios是4.1.1,Nagios Plugins是2.1.1,所以下面的wget命令如果照搬的话,未必能下载得到相应的文件。最好还是从官网上找相应的链接。
mkdir ~/downloads
cd ~/downloads
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.8.tar.gz
wget http://www.nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
开始安装
先解压
cd ~/downloads
tar xzf nagios-4.0.8.tar.gz
cd nagios-4.0.8
./configure --with-command-group=nagcmd #这一步我把nagcmd改为了nagios,这里的是否修改由自己决定,但非常重要,一旦修改,那么以后Nagios运行的组就是现在设置的组名。
make all
make install
make install-init
make install-config
make install-commandmode
#如果依赖的组件都装齐了,一般是不会有Error的
vi /usr/local/nagios/etc/objects/contacts.cfg #修改联系方式,后期再修改也可以
make install-webconf
#重启apache服务
service httpd restart
配置CGI权限
先配置一个HTTP用户admin
[root@Lab ~]# htpasswd -cb /usr/local/nagios/etc/htpasswd.users admin adminpassword
[root@Lab ~]# vi /usr/local/nagios/etc/cgi.cfg
将所有nagiosadmin字符串改为nagiosadmin,admin,这是因为你将会使用admin登录web界面,但admin这个帐号不具备访问CGI权限。
#安装Nagios Plugins
cd ~/downloads
tar xzf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
chkconfig --add nagios
chkconfig nagios on
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
#所有配置文件都OK的情况下,会提示OK,否则会提示Error或者Warning
修改通知邮件的发送方式,红色部分,原本是mail,请改为mailx
[root@Lab ~]# vi /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mailx -s
"** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditi
onal Info:\n\n$SERVICEOUTPUT$\n" | /bin/mailx -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
修改一下,服务器端的配置文件
[root@Nagios-Server etc]# vi /usr/local/nagios/etc/nagios.cfg
如果需要监控交换机路由器,就把以下的注释去掉
# Definitions for monitoring a router/switch
#cfg_file=/usr/local/nagios/etc/objects/switch.cfg
另外,为了方便组织配置文件,可酌情把以***释去掉
cfg_dir=/usr/local/nagios/etc/servers
#cfg_dir=/usr/local/nagios/etc/printers
#cfg_dir=/usr/local/nagios/etc/switches
#cfg_dir=/usr/local/nagios/etc/routers
并且创建这些目录
[root@Nagios-Server ~]# service nagios start
至此Nagios服务器端安装完毕。
2016.02.08更新:服务器上也应安装NRPE,主要用于主动模式。参考Client端的安装↓
===========================================================
在Client上安装NRPE
NRPE需要先安装Nagios Plugins,而如果涉及mysql的话,也需要预先安装mysql mysql-devel
关闭selinux,方法不再赘述。
添加nagios用户
/usr/sbin/useradd nagios
passwd nagios
下载nagios plugin,注意以下为官方指南的链接,未必能下载到文件,理由同上。
mkdir ~/downloads
cd ~/downloads
wget http://osdn.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.6.tar.gz
tar xzf nagios-plugins-1.4.6.tar.gz
cd nagios-plugins-1.4.6
./configure
make
make install
chown nagios.nagios /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios/libexec
yum install xinetd #在老男孩老师的视频里,是独立daemon的方式,而在官方指南里,则是使用xinetd,我同样地用了xinetd,因此xinetd的配置文件有如下修改
[root@syslog-srv ~]# vi /etc/xinetd.d/nrpe
service nrpe
{
flags = IPv4 #默认这里是REUSE,我改为了IPv4,测试中发现如果用REUSE的话,无法监听IPv4的端口
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
only_from = 127.0.0.1 192.168.5.41 #加入Nagios服务器的地址,用空格间隔
}
下载NRPE,我在写该笔记时最新版本是2.15
cd ~/downloads
wget http://osdn.dl.sourceforge.net/sourceforge/nagios/nrpe-2.8.tar.gz
tar xzf nrpe-2.8.tar.gz
cd nrpe-2.8
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd
务必、一定要在/etc/services的最后加入如下一行,否则NRPE不能启动
nrpe 5666/tcp # NRPE
重启xinetd服务
service xinetd restart
查看是否有监听TCP 5666
netstat -tlnp | grep 5666
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 1241/xinetd
自我检测一下,如果正常,则返回NRPE的版本号,注意,官方指南用的是localhost,但一般情况下,localhost会被解析成127.0.0.1和::1,由于我们只监听IPv4,所以把主机改为127.0.0.1
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.8
配置Client的防火墙
[root@syslog-srv ~]# vi /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5666 -j ACCEPT
[root@syslog-srv ~]# /etc/init.d/iptables restart
至此Client端安装完毕