1 Nagios简介
Nagios于1999年首次推出,原名为NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式:"Nagios Ain't Gonna Insist On Sainthood"Sainthood翻译为圣徒,而"Agios"是"saint"的希腊表示方法。Nagios被开发在Linux下使用,但在Unix下也工作得非常好(摘自维基百科)。它是一个强大的IT管理系统和IT监控软件套件,为服务器、网络和应用程序提供完整的IT监控和警报软件,使组织能够在影响关键业务流程之前识别和解决IT基础架构问题。通过Nagios可以:监控整个IT基础架构、得到问题预警、当异常发生和解除时能提醒用户、与利益相关者共享可用性数据、检测安全漏洞、规划IT升级、减少停机时间和业务损失。
Nagios产品主要有Nagios XI、Nagios Log Server、Nagios Network Analyzer、Nagios Fusion。Nagios项目主要包括Nagios Core核心部分、Nagios Core Plugins插件、Nagios Core Addons拓展插件、Nagios Core Frontends前台应用四个部分。
1.1Nagios结构简介
Nagios结构主要由Nagios core、Nagios-plugins和一些可选的Addon(NRPE,NSCA,NDOUtils等等)组成,实际生产中,Nagios core提供的监控功能远不能满足需求,要想搭建一个完善的IT监控管理系统,需要在Nagios监控端与被监控端安装相应功能的Addon,下载地址http://www.nagios.org/,也可根据实际需求编写所需的插件。
1.2 Nagios可实现的功能
1.监控网络服务(SMTP、POP3、HTTP、FTP、PING等);
2.监控本机及远程主机资源(processor、CPU load、disk usage等),也包括Windows主机(使用NSClient++plugin);
3.允许用户编写plugin来监控特定的服务,方便扩展用户服务的检测方法,支持多种开发语言(Shell、Perl、Python、PHP等);
4.能够定义网络主机的层次,允许逐级检查,可从父主机开始向下检查;
5.当服务或主机问题产生与解决时将告警发送给联系人(通过EMail、短信、用户定义方式);
6.可以通过配置Nagios远程执行插件远程执行脚本;
7.远程监控支持SSH或SSL通道方式;
8.支持并实现对主机的冗余监控;
9.可用WEB界面查看当前的网络状态、通知和故障历史、日志文件等。
1.3 Nagios监控实现原理
几个常用的Addon如下:
1.NRPE:允许在被监控的远程Linux/UNIX主机上执行插件以实现对主机本地资源或属性的监控;
2.NSCA:该插件将远程Linux/Unix主机的被动检查结果发送到在监控端运行的Nagios守护程序;
3.NSClient++:它是Windows系统的监视代理程序/守护程序,它是NSClient和NRPE_NT的替代品;
4.NDOUtils:实现将Nagios中的所有状态信息存储在MySQL数据库中。
实际工作中,Nagios监控端读取配置文件中的指令与远程的守护程序进行通信,并且指示远程的守护程序进行对应监控项的检查,具体原理如下图所示:
2. Nagios安装与配置
2.1 Nagios监控实现原理
监控端IP:172.16.56.131,主机名:monitors;
被监控端IP:192.183.3.145,主机名:kk;
2.2 Nagios Core安装
- 安装依赖包
不同的系统平台下,nagios所需要的依赖包也不同:
- RHEL/CentOS平台
[root@monitors ~]# yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip
- Ubuntu (15.10 and below)
sudo apt-get install wget build-essential apache2 php5 php5-gd libgd-dev unzip
- Ubuntu (16.04 and above)
sudo apt-get install wget build-essential apache2 php apache2-mod-php7.0 php-gd libgd-dev unzip
2.下载Nagios Core和Nagios Plugins安装包
[root@monitors ~]# cd /tmp
[root@monitors tmp]# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.2.0.tar.gz
[root@monitors tmp]# wget http://nagios-plugins.org/download/nagios-plugins-2.1.2.tar.gz
3.创建nagios用户和用户组
[root@monitors tmp]# useradd nagios
[root@monitors tmp]# groupadd nagcmd
[root@monitors tmp]# usermod -a -G nagcmd nagios
- RHEL/CentOS
[root@monitors tmp]# usermod -a -G nagios,nagcmd apache
- Ubuntu
usermod -a -G nagios,nagcmd www-data
4.Nagios Core编译
[root@monitors tmp]# tar zxvf nagios-4.2.0.tar.gz
[root@monitors tmp]# tar zxvf nagios-plugins-2.1.2.tar.gz
[root@monitors tmp]# cd nagios-4.2.0
- RHEL/CentOS
[root@monitors nagios-4.2.0]# ./configure --with-command-group=nagcmd
- Ubuntu
./configure --with-command-group=nagcmd -–with-mail=/usr/bin/sendmail --with-httpd-conf=/etc/apache2/
5.执行安装
[root@monitors nagios-4.2.0]# make all
[root@monitors nagios-4.2.0]# make install
[root@monitors nagios-4.2.0]# make install-init
/usr/bin/install -c -m 755 -d -o root -g root /etc/rc.d/init.d
/usr/bin/install -c -m 755 -o root -g root daemon-init /etc/rc.d/init.d/nagios
*** Init script installed ***
[root@monitors nagios-4.2.0]# make install-config
[root@monitors nagios-4.2.0]# make install-commandmode
/usr/bin/install -c -m 775 -o nagios -g nagcmd -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw
*** External command directory configured ***
[root@monitors nagios-4.2.0]# make install-webconf
/usr/bin/install -c -m 775 -o nagios -g nagcmd -d /usr/local/nagios/var/rw
chmod g+s /usr/local/nagios/var/rw
*** External command directory configured ***
/usr/bin/install -c -m 644 sample-config/httpd.conf /etc/httpd/conf.d/nagios.conf
*** Nagios/Apache conf file installed ***
[root@monitors nagios-4.2.0]# cp -R contrib/eventhandlers/ /usr/local/nagios/libexec/
[root@monitors nagios-4.2.0]# chown -R nagios:nagios /usr/local/nagios/libexec/eventhandlers
[root@monitors nagios-4.2.0]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios Core 4.2.0
Copyright (c) 2009-present Nagios Core Development Team and Community Contributors
Copyright (c) 1999-2009 Ethan Galstad
Last Modified: 08-01-2016
License: GPL
Website: https://www.nagios.org
Reading configuration data...
Read main config file okay...
Read object config files okay...
Running pre-flight check on configuration data...
Checking objects...
Checked 8 services.
Checked 1 hosts.
Checked 1 host groups.
Checked 0 service groups.
Checked 1 contacts.
Checked 1 contact groups.
Checked 24 commands.
Checked 5 time periods.
Checked 0 host escalations.
Checked 0 service escalations.
Checking for circular paths...
Checked 1 hosts
Checked 0 service dependencies
Checked 0 host dependencies
Checked 5 timeperiods
Checking global event handlers...
Checking obsessive compulsive processor commands...
Checking misc settings...
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
6.启动
- RHEL/CentOS
[root@monitors nagios-4.2.0]# /etc/init.d/nagios start
Starting nagios: done.
[root@monitors nagios-4.2.0]# /etc/init.d/httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using monitors.localdomain for ServerName [确定]
- Ubuntu
sudo a2ensite nagios
sudo a2enmod rewrite cgi
sudo cp /etc/init.d/skeleton /etc/init.d/nagios
sudo vi /etc/init.d/nagios (and add the following lines)
DESC="Nagios"
NAME=nagios
DAEMON=/usr/local/nagios/bin/$NAME
DAEMON_ARGS="-d /usr/local/nagios/etc/nagios.cfg"
PIDFILE=/usr/local/nagios/var/$NAME.lock
systemctl restart apache2
systemctl start nagios
7.创建WEB登录用户名及密码
[root@monitors nagios-4.2.0]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
2.3 Nagios Plugin 安装
[root@monitors nagios-4.2.0]# cd /tmp/nagios-plugins-2.1.2
[root@monitors nagios-plugins-2.1.2]# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@monitors nagios-plugins-2.1.2]# make
[root@monitors nagios-plugins-2.1.2]# make install
Nagios Service配置:
[root@monitors nagios-plugins-2.1.2]# chkconfig --add nagios
[root@monitors nagios-plugins-2.1.2]# chkconfig --level 35 nagios on
[root@monitors nagios-plugins-2.1.2]# chkconfig --add httpd
[root@monitors nagios-plugins-2.1.2]# chkconfig --level 35 httpd on
Ubuntu:
sudo update-rc.d nagios defaults
到目前为之Nagios基本安装成功,若要投入生产环境,还需要安装其他相应的插件及配置,否则是无法提供相应的监控等功能。登录http://172.16.56.131/nagios/,用户名:nagiosadmin,密码:123456,验证配置结果。
如果页面出现:nagios Unable to get process status
解决方法(禁用Selinux和iptables):
[root@monitors nagios-plugins-2.1.2]# vi /etc/sysconfig/selinux
[root@monitors nagios-plugins-2.1.2]# getenforce
Enforcing
[root@monitors nagios-plugins-2.1.2]# setenforce 0
[root@monitors nagios-plugins-2.1.2]# getenforce
处理后刷新登录:
2.4 安装Postfix邮件服务
Nagios监控结果的报警功能能够实现的关键之一就是邮件通知,MTA—Postfix、sendEmail、外部SMTP服务器等方式都可以实现警报邮件的发送。本文简单介绍一下Postfix(postfix是Wietse Venema在IBM的GPL协议之下开发的MTA软件,与sendmail保有足够的兼容性)的安装,因为Nagios只用到了Postfix的邮件发送功能,仅需要安装Postfix,并将服务添加至开机自启动,其他配置这里就略过。
[root@monitors ~]# rpm -qa |grep postfix
postfix-2.6.6-2.2.el6_1.x86_64
如果没有安装,执行如下命令:
[root@monitors ~]# yum install postifx
[root@monitors ~]# chkconfig postfix on
[root@monitors ~]#/etc/init.d/postfix restart
关闭 postfix: [确定]
启动 postfix: [确定]
附:本文参阅Nagios官方文档实践后所编写,文中不足之处欢迎批评指正!