Nagios 系统介绍
Nagios是一个用来监视系统和网络的开源应用软件,它通常运行于一个主服务器上,
这个服务器运行 Liunx 或 Unix 操作系统。Nagios 利用其众多的插件实现对本机和远端服务的监控,当被监控对象出现异常,Nagios 就会及时给管理人员告警。它是一个基于 TCP/IP
协议的软件包,包含有nagios主程序和它的各个插件,配置非常灵活,可以监视的项目很多,也可以通过自定义 shell 脚本进行监控服务,非常适合各类企业的网络应用。
Nagios 系统的主要特点
Nagios 系统的特点主要有下面几点:
1.监控主机资源和网络服务
2.允许用户通过设计实现简单的插件来监控自己特定的服务
3.当被监控对象出现问题时,会及时通知管理人员
4.事先定义事件处理程序,当对象出现问题时自动调用对应的处理程序
5.通过 web 页面来监视对象状态,警告提示和日志文件。
可见,Nagios 采用分布--集中的管理模式。在 Nagios 服务器上安装 Nagios 主程序,
在被监控主机上安装 Nagios 代理程序。通过 Nagios 主程序和 Nagios 代理程序之间的通讯,监视对象的状态。
以下是我在RHEL5.4上进行的配置过程:
准备软件包
nagios-3.2.1 .tar.gz
nagios-plugins-1.4.14 .tar.gz
nrpe-2.12.tar.gz
安装必备软件包:
[root@station1 ~]# yum -y install httpd gcc glibc glibc-common gd gd-devel php
支持PHP
[root@station1 ~]# vim /etc/httpd/conf/httpd.conf
DirectoryIndex index.html index.html.var index.php index.phps
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
[root@station1 html]# cat index.php
<?php
phpinfo();
?>
[root@station1 html]#
创建nagios用户与组(用户组nagcmd用于从web接口执行外部命令.)
[root@station1 ~]# useradd nagios;passwd nagios
Changing password for user nagios.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@station1 ~]# groupadd nagcmd
[root@station1 ~]# usermod -G nagcmd nagios
[root@station1 ~]# usermod -G nagcmd apache
[root@station1 ~]#
[root@station1 src]# cd /usr/local/src/
[root@station1 src]# ls
nagios-3.2.1 .tar.gz nagios-plugins-1.4.14.tar.gz nrpe-2.12.tar.gz
[root@station1 src]# tar zxvf nagios-3.2.1 .tar.gz
[root@station1 src]# cd nagios-3.2.1
[root@station1nagios-3.2.1 ]#./configure–with-command-group=nagcmd –prefix=/usr/local/nagios
[root@station1nagios-3.2.1 ]#make all
[root@station1nagios-3.2.1 ]#make install #安装主程序,CGI和HTML文件
[root@station1nagios-3.2.1 ]#make install-init #在/etc/rc.d/init.d安装启动脚本
[root@station1nagios-3.2.1 ]#make install-config #安装示例配置文件
[root@station1nagios-3.2.1 ]#make install-commandmode #配置目录权限
验证是否安装成功:
[root@station1 nagios]# pwd
/usr/local/nagios
[root@station1 nagios]# ls
bin etc libexec sbin share var
[root@station1 nagios]# cd var/
[root@station1 var]# ls
archives rw spool
[root@station1 var]
编译并安装nagios插件 nagios‐plugins
[root@station1 src]# tar zxvf nagios-plugins-1.4.14 .tar.gz
[root@station1 src]# cd nagios-plugins-1.4.14
[root@station1nagios-plugins-1.4.14 ]#./configure--with-nagios-user=nagios --with-nagios-group=nagios --prefix=/usr/local/nagios/
[root@station1nagios-plugins-1.4.14 ]# make && make install
验证插件是否安装成功:
[root@station1 nagios]# du -h libexec/
[root@station1 nagios]#
配置Apache
[root@station1 ~]# vim /etc/httpd/conf/httpd.conf
###############################
# setting for nagios 20100719 #
###############################
ScriptAlias /nagios/cgi-bin/ "/usr/local/nagios/sbin"
<Directory "/usr/local/nagios/sbin">
Options ExecCGI
Order allow,deny
Allow from all
AllowOverride None
AuthName "Nagios Access"
AuthType basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
Alias /nagios "/usr/local/nagios/share"
<Directory "/usr/local/nagios/share">
Options None
Order allow,deny
Allow from all
AllowOverride None
AuthName "Nagios Access"
AuthType basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
创建apache目录验证文件
[root@station1 ~]# htpasswd -cm /usr/local/nagios/etc/htpasswd nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin
查看cgi.cfg是否允许nagiosadmin用户的认证
[root@station1 etc]# pwd
/usr/local/nagios/etc
[root@station1 etc]# grep authorized < cgi.cfg
authorized_for_system_information=nagiosadmin
authorized_for_configuration_information=nagiosadmin
authorized_for_system_commands=nagiosadmin
authorized_for_all_services=nagiosadmin
authorized_for_all_hosts=nagiosadmin
authorized_for_all_service_commands=nagiosadmin
authorized_for_all_host_commands=nagiosadmin
#authorized_for_read_only=user1,user2
[root@station1 etc]#
配置nagios配置文件
#vi /usr/local/nagios/etc/objects/contacts.cfg 修改email地址为自己的email地址.
启动nagios
[root@station1 ~]# chkconfig --add nagios
[root@station1 ~]# chkconfig nagios on
[root@station1 ~]#
检查配置文件
[root@station1 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Total Warnings: 0
Total Errors: 0
[root@station1 ~]# service nagios start
Starting nagios: done.
[root@station1 ~]# service httpd start
Starting httpd: [ OK ]
[root@station1 ~]#
访问http://localhost/nagios 输入用户名密码
安装附加插件nrpe
[root@station1 src]# tar zxvf nrpe-2.12.tar.gz
[root@station1 src]# cd nrpe-2.12
[root@station1 nrpe-2.12]# ./configure
[root@station1 nrpe-2.12]# make all
[root@station1 nrpe-2.12]# make install-plugin #服务器端只要安装nrpe监控插件就行
[root@station1 nrpe-2.12]# make install-daemon
[root@station1 nrpe-2.12]# make install-daemon-config
添加要监控的主机
[root@station1 ~]# vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=127.0.0.1
以独立守护进程启动nrpe
[root@station1 ~]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg –d
写入开机脚本
[root@station1 ~]# echo "/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d">> /etc/rc.d/rc.local
检查nrpe是否安装正常
[root@station1 ~]# /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.12
[root@station1 ~]# netstat -tln | grep 5666
tcp 0 0 0.0.0 .0:5666 0.0.0 .0:* LISTEN
[root@station1 ~]#
定义监控命令
[root@station1 ~]# vim /usr/local/nagios/etc/nrpe.cfg
以下是默认定义好的:
# The following examples use hardcoded command arguments...
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
自定义监控命令:
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
command[check_disk_root]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /
测试:
[root@station1 ~]# /usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /home
DISK OK - free space: /home 86 MB (93% inode=99%);| /home=5MB;76;86;0;96
[root@station1 ~]#
[root@station1 etc]# pwd
/usr/local/nagios/etc
[root@station1 etc]# vim resource.cfg
$USER1$=/usr/local/nagios/libexec #定义插件路径
例:SWAP监控
[root@station1 etc]# vim objects/commands.cfg #命令配置文件
# 'check_local_swap' command definition
define command{
command_name check_local_swap
command_line $USER1$/check_swap -w $ARG1$ -c $ARG2$
}
[root@station1 objects]# vim localhost.cfg #监控对象控制
define service{
use local-service ; Name of service template to use
host_name localhost
service_description Swap Usage
check_command check_local_swap!20!10
}