nagios和nconf整合与使用
Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。打开Nagios官方的文档,会发现Nagios基本上没有什么依赖包,只要求系统是Linux或者其他Nagios支持的系统。不过如果你没有安装apache(http服务),那么你就没有那么直观的界面来查看监控信息了,所以apache姑且算是一个前提条件。
NConf是一个用来配置Nagios监控软件的Web工具。它不同于类似的工具,它能够提供企业级功能,如模板、依赖、并能够配置一个大型分布式的Nagios服务器拓扑结构。它可以让你毫不费力地保持一个分布式的Nagios拓扑。具有一个用户友好的GUI,其特点是主机和服务的模板,图形依赖浏览器,多个身份验证模式,一个Nagios配置的提供者,一个CSV文件导入和Perl的数据库API,其数据架构是可定制和可扩展。
LAMP环境部署
# yum install mysql perl mysql-server perl-DBI perl-DBD-MySQL
# wget http://archive.apache.org/dist/httpd/httpd-2.4.6.tar.bz2
# tar -xvf httpd-2.4.6.tar.bz2
# cd httpd
# ./configure --prefix=/usr/local/apache2
# make&&make install
# wget http://cn2.php.net/distributions/php-5.5.3.tar.bz2
# tar -xvf php-5.5.3.tar.bz2
# cd php-5.5.3
#./configure --prefix=/usr/local/php --with-apxs=/usr/local/apache2/bin/apxs --with-mysql
# make&&make install
# iptables -F
# iptables -X
# iptables -Z
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD ACCEPT
# setenforce 0
yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel
# useradd -s /sbin/nologin nagios
# mkdir /usr/local/nagios
# chown -R nagios:nagios /usr/local/nagios
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.5.1.tar.gz
# tar -zxvf nagios-3.5.1.tar.gz
# cd nagios
# ./configure --prefix=/usr/local/nagios
# make all
# make install
# make instal-init
# make install-commandmode
# make install-config
# chkconfig --add nagios
# chkconfig --level 35 nagios on
# chkconfig --list nagios
#wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz
# tar --zxvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# ./configure --prefix=/usr/local/nagios
# make&&make install
修改/usr/local/apache2/conf/httpd.conf文件:
将User和Group修改如下:
User nagios
Group nagios
将DirectoryIndex修改如下:
DirectoryIndex index.html index.php
添加以下内容:
AddType application/x-httpd-php .php
为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf 文件新增以下内容:
#setting for nagios
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
AuthType Basic
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
AuthType Basic
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName "nagios Access"
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
防止nagios页面乱码,在httpd.conf中新增如下:
AddDefaultCharset utf-8
同时将以下两行的注释去掉:
LoadModule cgid_module modules/mod_cgid.so
LoadModule actions_module modules/mod_actions.so
在上面的配置中,指定了目录验证文件htpasswd,下面要创建这个文件(可根据实际情况新增,此处新增luyx这个账号):
# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd luyx
这样就在/usr/local/nagios/etc 目录下创建了一个htpasswd 验证文件,当通过http://192.168.9.188/nagios/ 访问时就需要输入用户名和密码了。
修改/usr/local/nagios/etc/cgi.cfg文件,使得用户luyx具备相应的权限:
authorized_for_system_information=nagiosadmin,luyx
authorized_for_configuration_information=nagiosadmin,luyx
authorized_for_system_commands=nagiosadmin,luyx
authorized_for_all_services=nagiosadmin,luyx
authorized_for_all_hosts=nagiosadmin,luyx
#authorized_for_all_service_commands=nagiosadmin,luyx
#authorized_for_all_host_commands=nagiosadmin,luyx
# /usr/local/apache2/bin/apachectl start
nagios的验证方法:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios的启动和停止:
# service nagios start
#service nagios stop
到此nagios的安装基本完成,可以通过web来访问了。
该配置文件应该设置成如下:
short_open_tag = On
register_globals = Off
magic_quotes_gpc = Off
# tar -xvf nconf-1.3.0.0.tgz -C /usr/local/apache2/htdocs/
# mysql -u root -p (root初始密码为空,可自行更改)
mysql> create database nconf;
mysql> grant all privileges on nconf.* to nconf@localhost identified by '1q2w3e';
mysql> flush privileges;
# cd /usr/local/apache2/nconf
# mysql -u nconf -p nconf < INSTALL/create_database.sql
# chown -R nagios:nagios config/ temp/ static_cfg/ output/
如果selinux打开了,需要设置安全上下文:
# chcon -R -t httpd_sys_content_t /usr/local/apache2/nconf/
# chcon -t httpd_sys_script_exec_t /usr/local/apache2/nconf/bin/nagios
在浏览器中输入http://ip/nconf/,此例中地址为http://192.168.9.188/nconf/ 安装画面如下:
# cd /usr/local/apache2/htdocs/nconf
# rm -rf INSTALL* UPDATE*
# cp /usr/local/nagios/bin/nagios bin/nagios
# chown -R nagios:nagios bin
此例为http://192.168.9.188/nconf/页面:
登录后界面如下,表示安装成功:
要利用nagios来监控linux主机,需要在监控主机中安装check_nrpe,在被监控主机中安装nrpe deamon.
NRPE 总共由两部分组成:
1 check_nrpe 插件,位于监控主机上
2 NRPE daemon,运行在远程的Linux主机上(通常就是被监控机)
按照上图,整个的监控过程如下:
当Nagios 需要监控某个远程Linux 主机的服务或者资源情况时:
1 Nagios 会运行check_nrpe 这个插件,告诉它要检查什么;
2 check_nrpe 插件会连接到远程的NRPE daemon,所用的方式是SSL;
3 NRPE daemon 会运行相应的Nagios 插件来执行检查;
4 NRPE daemon 将检查的结果返回给check_nrpe 插件,插件将其递交给nagios做处理。
注意:NRPE daemon 需要Nagios 插件安装在远程的Linux主机上,否则,daemon不能做任何的监控。
此处以监控机192.168.8.188为例:
# tar -xvf nrpe-2.12.tar.gz
# cd nrpe-2.12
# ./configure
# make install
# make-plugin
在commands.cfg中增加对check_nrpe的定义:
# vi /usr/local/nagios/etc/objects/commands.cfg
此处以被监控主机192.168.9.190为例:
# useradd nagios
# passwd nagios
# tar -xvf nagios-plugins-1.4.16.tar.gz
# cd nagios-plugins-1.4.16
# ./configure --prefix=/usr/local/nagios
# make&&make install
# chown nagios.nagios /usr/local/nagios
# chown -R nagios.nagios /usr/local/nagios/libexec
# Tar -xvf nrpe-2.12.tar.gz
# cd nrpe-2.12
# ./configure
# make all
# make install-plugin
# make install-daemon
# make install-daemon-config
####将nrpe作为xinetd下的一个服务来管理
# make install-xinetd
####在配置文件中新增监控主机的IP地址
# vi /etc/xinetd.d/nrpe
####编辑/etc/services文件,增加nrpe服务
####重启xinetd服务
#service xinetd restart
# /usr/local/nagios/libexec/check_nrpe -H localhost
####返回nrpe的版本,说明nrpe daemon正常。
####注意,若有开启防火墙,需要放行5666端口。
至此,nagios与nconf的整合完毕。
以linux系统192.168.9.190为例:
保存后设备添加完成,点【Generate Nagios config】生成nagios配置文件
如果生成Nagios配置文件没问题的话,就可以执行以下脚本使nagios配置生效:
# /usr/local/apache2/htdocs/nconf/ADD-ONS/deploy_local.sh
执行后看到以下结果说明正常:
#/usr/local/apache2/htdocs/nconf/ADD-ONS/deploy_local.sh
Running configuration check...done.
Reloading nagios configuration...done
注:可以将此脚本做成计划任务1分钟执行一次,这也是nconf官方推荐的,但是这里没有做成计划任务,因为个人觉得这没必要,这个配置不会天天修改,一分钟执行一次太频繁了,完全没这个必要。当然,想增加计划任务也是可以的,按个人需要,如果你想增加计划任务的话,执行此命令即可添加:
echo '* * * * * root /usr/local/apache2/htdocs/nconf/ADD-ONS/deploy_local.sh'>> /etc/crontab
至此通过nconf来配置nagios完成,http://IP/nagios 进行查看刚添加的监控设备。
编写好相关的监控脚本check_mem.sh,上传至Nagios的/usr/local/nagios/libexec/ 目录里,或者利用该目录内已有的check命令:
####修改权限:
chown nagios.nagios check_mem.sh
chmod 755 check_mem.sh
添加的服务可被多次利用,【Services】是针对单台设备监控添加的服务
在最尾部,添加参数值:
#vim /usr/local/apache2/htdocs/nconf/config/deployment.ini
允许nagios执行sudo:
#将Defaults requretty注释掉,同时新增nagios这个无密码的sudoers
# 将其中cfg_file=*******字段全部注释 ,并加入
cfg_dir=/usr/local/nagios/etc/Default_collector
cfg_dir=/usr/local/nagios/etc/global
chown nagios:nagios /usr/locasl/nagios/etc/Default_collector/
chown nagios:nagios /usr/locasl/nagios/etc/global/
点击Deploy,完成自动部署。
重载nagios的配置,使用最新的配置文件:
# service nagios reload
以下为个人新增的service和host: