1、安装nagios
#useradd -s /bin/false nagios
#tar zxvf nagios-2.9.tar.gz
#cd nagios-2.9
#./configure –prefix=/usr/local/nagios –with-gd-lib=/usr/local/lib –with-gd-inc=/usr/local/include
#make all //编译nagios
#make install //安装主要的程序,CGI及HTML文件
#make install-init //在/etc/rc.d/init.d安装启动脚本
#make install-commandmode //给外部命令访问nagios配置文件的权限
#make install-config //将配置文件的例子复制到nagios的安装目录
#cd /usr/local
#chown -R nagios
2、安装nagios-plugins
#tar zxvf nagios-plugins-1.4.9.tar.gz
#cd nagios-plugins-1.4.9
#./configure –prefix=/usr/local/nagios/
#make
#make install
#ls /usr/local/nagios/libexec/ //显示安装的插件文件
3、安装p_w_picpathpak-base
#tar -xvzf p_w_picpathpak-base.tar.gz //解压以后是base目录
#cp -R base /usr/local/nagios/share/p_w_picpaths/logos
4、安装apache
还需安装一下软件,安装过程略。
gd //http://www.boutell.com/gd/http/gd-2.0.11.tar.gz
zlib //http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
pnglib //http://download.sourceforge.net/libpng/libpng-1.2.5.tar.gz
jpeglib //http://www.ijg.org/files/jpegsrc.v6b.tar.gz
5、修改apache配置
Apache 的目的是可以在WEB上更加人性化的查看监控结果,其他的WEB服务器也可以。
grep ^User /usr/local/apache2/conf/httpd.conf
User daemon
usermod -G nagios daemon
此处替换成自己的。比如我的机器上是apache
usermod -G nagios apache 把apache和nagios 都放到nagios 组中。
vi /usr/local/apache2/conf/httpd.conf //在下面加入如下内容
#Setting for nagios
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory “/usr/local/nagios/sbin”>
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
#useradd -s /bin/false nagios
#tar zxvf nagios-2.9.tar.gz
#cd nagios-2.9
#./configure –prefix=/usr/local/nagios –with-gd-lib=/usr/local/lib –with-gd-inc=/usr/local/include
#make all //编译nagios
#make install //安装主要的程序,CGI及HTML文件
#make install-init //在/etc/rc.d/init.d安装启动脚本
#make install-commandmode //给外部命令访问nagios配置文件的权限
#make install-config //将配置文件的例子复制到nagios的安装目录
#cd /usr/local
#chown -R nagios
2、安装nagios-plugins
#tar zxvf nagios-plugins-1.4.9.tar.gz
#cd nagios-plugins-1.4.9
#./configure –prefix=/usr/local/nagios/
#make
#make install
#ls /usr/local/nagios/libexec/ //显示安装的插件文件
3、安装p_w_picpathpak-base
#tar -xvzf p_w_picpathpak-base.tar.gz //解压以后是base目录
#cp -R base /usr/local/nagios/share/p_w_picpaths/logos
4、安装apache
还需安装一下软件,安装过程略。
gd //http://www.boutell.com/gd/http/gd-2.0.11.tar.gz
zlib //http://www.gzip.org/zlib/zlib-1.1.4.tar.gz
pnglib //http://download.sourceforge.net/libpng/libpng-1.2.5.tar.gz
jpeglib //http://www.ijg.org/files/jpegsrc.v6b.tar.gz
5、修改apache配置
Apache 的目的是可以在WEB上更加人性化的查看监控结果,其他的WEB服务器也可以。
grep ^User /usr/local/apache2/conf/httpd.conf
User daemon
usermod -G nagios daemon
此处替换成自己的。比如我的机器上是apache
usermod -G nagios apache 把apache和nagios 都放到nagios 组中。
vi /usr/local/apache2/conf/httpd.conf //在下面加入如下内容
#Setting for nagios
ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin
<Directory “/usr/local/nagios/sbin”>
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
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
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
<Directory “/usr/local/nagios/share”>
Options None
AllowOverride None
Order allow,deny
Allow from all
AuthName “Nagios Access”
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
/usr/local/apache2/bin/apachectl -t //检查配置文件是否正确
httpd -t
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd ritto
cat /usr/local/nagios/etc/htpasswd //查看认证文件内容
/usr/local/apache2/bin/apachectl start //启动apache
service httpd restart
6、配置nagios
nagios自定义了一套规则用于配置文件,在nagios里面定义了一些基本对象,如:
联系人 contact 出了问题像谁报告?一般当然是系统管理员了
监控时间段 timeperiod 7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机 host 所需要监控的服务器,当然可以是监控机自己
监控命令 command nagios 发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务 service 例如主机是否存活,80是否开,磁盘使用情况或自定义的服务等
多个被监控主机可以定义为一个主机组
多个联系人可以被定义为一个联系人组
多个服务也可以被定义为一个服务组
httpd -t
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd ritto
cat /usr/local/nagios/etc/htpasswd //查看认证文件内容
/usr/local/apache2/bin/apachectl start //启动apache
service httpd restart
6、配置nagios
nagios自定义了一套规则用于配置文件,在nagios里面定义了一些基本对象,如:
联系人 contact 出了问题像谁报告?一般当然是系统管理员了
监控时间段 timeperiod 7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机 host 所需要监控的服务器,当然可以是监控机自己
监控命令 command nagios 发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务 service 例如主机是否存活,80是否开,磁盘使用情况或自定义的服务等
多个被监控主机可以定义为一个主机组
多个联系人可以被定义为一个联系人组
多个服务也可以被定义为一个服务组
将配置文件改名:
cd /usr/local/nagios/etc/
tar zcvf bak.tar.gz *
mv cgi.cfg-sample cgi.cfg
mv commands.cfg-sample commands.cfg
mv localhost.cfg-sample localhost.cfg
mv nagios.cfg-sample nagios.cfg
mv resource.cfg-sample resource.cfg
cd /usr/local/nagios/etc/
tar zcvf bak.tar.gz *
mv cgi.cfg-sample cgi.cfg
mv commands.cfg-sample commands.cfg
mv localhost.cfg-sample localhost.cfg
mv nagios.cfg-sample nagios.cfg
mv resource.cfg-sample resource.cfg
修改nagios的配置文件
vi nagios.cfg //修改nagios的主配置文件
#cfg_file=/usr/local/nagios//etc/localhost.cfg //注释此行
//将下面几行的注释去掉
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径
check_external_commands=0 //将 0 改成 1,允许在web界面下执行重启nagios
command_check_interval=15s //改成 10s,命令检查时间间隔
vi nagios.cfg //修改nagios的主配置文件
#cfg_file=/usr/local/nagios//etc/localhost.cfg //注释此行
//将下面几行的注释去掉
cfg_file=/usr/local/nagios/etc/contactgroups.cfg //联系组配置文件路径
cfg_file=/usr/local/nagios/etc/contacts.cfg //联系人配置文件路径
cfg_file=/usr/local/nagios/etc/hostgroups.cfg //主机组配置文件路径
cfg_file=/usr/local/nagios/etc/hosts.cfg //主机配置文件路径
cfg_file=/usr/local/nagios/etc/services.cfg //服务配置文件路径
cfg_file=/usr/local/nagios/etc/timeperiods.cfg //监视时段配置文件路径
check_external_commands=0 //将 0 改成 1,允许在web界面下执行重启nagios
command_check_interval=15s //改成 10s,命令检查时间间隔
配置相关CGI脚本
vi cgi.cfg //修改cgi脚本控制文件
use_authentication=1 //确保值为 1
default_user_name=ritto //修改为认证用户
//后面修改内容如下:
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
vi cgi.cfg //修改cgi脚本控制文件
use_authentication=1 //确保值为 1
default_user_name=ritto //修改为认证用户
//后面修改内容如下:
authorized_for_system_information=nagiosadmin,test
authorized_for_configuration_information=nagiosadmin,test
authorized_for_system_commands=test
authorized_for_all_services=nagiosadmin,test
authorized_for_all_hosts=nagiosadmin,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin,test
关于所有命令的配置都在commands.cfg里面
vi misccommands.cfg //主要功能是用于发送报警短信和报警邮件
#host-notify-by-sms //发送短信报警
define command {
command_name host-notify-by-sms
command_line /usr/local/bin/sms_send “Host $HOSTSTATE$ alert for $HOSTNAME$! on ‘$DATETIME$’ ” $CONTACTPAGER$
}
#service notify by sms //发送短信报警
define command {
command_name service-notify-by-sms
command_line /usr/local/bin/sms_send “‘$HOSTADDRESS$’ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$” $CONTACTPAGER$
}
vi misccommands.cfg //主要功能是用于发送报警短信和报警邮件
#host-notify-by-sms //发送短信报警
define command {
command_name host-notify-by-sms
command_line /usr/local/bin/sms_send “Host $HOSTSTATE$ alert for $HOSTNAME$! on ‘$DATETIME$’ ” $CONTACTPAGER$
}
#service notify by sms //发送短信报警
define command {
command_name service-notify-by-sms
command_line /usr/local/bin/sms_send “‘$HOSTADDRESS$’ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$” $CONTACTPAGER$
}
vi timeperiods.cfg //定义监控时间段,名称是24*7,监控时间是全天24小时
define timeperiod{
timeperiod_name 24×7 //时间段的名称,这个地方不要有空格
alias 24 Hours A Day,7Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
define timeperiod{
timeperiod_name 24×7 //时间段的名称,这个地方不要有空格
alias 24 Hours A Day,7Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
vi contacts.cfg //定义联系人
define contact {
contact_name sa //不要有空格
alias system administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-notify-by-email //命令读配置miscommands.cfg
host_notification_commands host-notify-by-email,host-notify-by-sms //命令读配置miscommands.cfg
email [email]test@nagios.org[/email]
pager 13800138000
}
define contact {
contact_name nagios
alias system administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-notify-by-email
host_notification_commands host-notify-by-email,host-notify-by-sms
email [email]test@nagios.org[/email]
pager 13800138000
}
define contact {
contact_name sa //不要有空格
alias system administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-notify-by-email //命令读配置miscommands.cfg
host_notification_commands host-notify-by-email,host-notify-by-sms //命令读配置miscommands.cfg
email [email]test@nagios.org[/email]
pager 13800138000
}
define contact {
contact_name nagios
alias system administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands service-notify-by-sms,service-notify-by-email
host_notification_commands host-notify-by-email,host-notify-by-sms
email [email]test@nagios.org[/email]
pager 13800138000
}
//如果不需要手机报警的话,则改成如下:
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
//上面的文件定义了2个联系人,如果有更多联系人的话,照这个格式在后面追加即可。
//服务通知选项(service_notification_options)
//与主机通知选项(host_notification_options)的几个选项在这里说明一下:
//w-warning 报警,u-unknown 未知,c-critical 严重,r-recovery 从异常情况恢复正常,d-down 关机了,u-unreachable 不可达,注意一下,主机报警和服务报警有些差异。
service_notification_commands notify-by-email
host_notification_commands host-notify-by-email
//上面的文件定义了2个联系人,如果有更多联系人的话,照这个格式在后面追加即可。
//服务通知选项(service_notification_options)
//与主机通知选项(host_notification_options)的几个选项在这里说明一下:
//w-warning 报警,u-unknown 未知,c-critical 严重,r-recovery 从异常情况恢复正常,d-down 关机了,u-unreachable 不可达,注意一下,主机报警和服务报警有些差异。
vi contactgroups.cfg //将多个联系人定义一个联系人组
define contactgroup{
contactgroup_name sagroup
alias System Administrators
members nagios,sa
}
define contactgroup{
contactgroup_name sagroup
alias System Administrators
members nagios,sa
}
vi hosts.cfg //定义被监控主机
define host {
host_name nagios-server
alias nagios server
address 192.168.0.1
contact_groups sagroup //多个联系组用逗号分隔,数据来源于contactgroups.cfg
check_command check-host-alive //这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 5 //检查失败后重试的次数
notification_interval 10 //提醒的时间,每隔10秒提醒一次
notification_period 24×7 //提醒的周期,24*7,来自之前timeperiods.cfg中定义的
notification_options d,u,r //指定什么情况下提醒,来自contacts.cfg中定义的
}
define host {
host_name nagios-server
alias nagios server
address 192.168.0.1
contact_groups sagroup //多个联系组用逗号分隔,数据来源于contactgroups.cfg
check_command check-host-alive //这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 5 //检查失败后重试的次数
notification_interval 10 //提醒的时间,每隔10秒提醒一次
notification_period 24×7 //提醒的周期,24*7,来自之前timeperiods.cfg中定义的
notification_options d,u,r //指定什么情况下提醒,来自contacts.cfg中定义的
}
define host {
host_name linux-server
alias nagios test client
address 192.168.0.2
contact_groups sagroup
check_command check-host-alive
max_check_attempts 5
notification_interval 10
notification_period 24×7
notification_options d,u,r
}
host_name linux-server
alias nagios test client
address 192.168.0.2
contact_groups sagroup
check_command check-host-alive
max_check_attempts 5
notification_interval 10
notification_period 24×7
notification_options d,u,r
}
vi hostgroups.cfg //将多个主机定义一个主机组
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members nagios-server,linux-server //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}
define hostgroup{
hostgroup_name sa-servers //主机组名称
alias sa Servers //别名
members nagios-server,linux-server //组的成员主机,多个主机以逗号相隔,必须是上面hosts.cfg中定义的
}
vi services.cfg //定义监控的服务
define service{
host_name nagios-server //要监控的主机,必须是hosts.cfg 中定义的
service_description check-host-alive //定义的是监控这个主机是不是存活
check_command check-host-alive //所用的命令,是commands.cfg中定义的
check_period 24×7 //监控的时间段,是timeperiods.cfg中定义的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup //联系人组,contactgroups.cfg中定义的
notification_interval 10
notification_period 24×7 //通知的时间段,是timeperiods.cfg中定义的
notification_options w,u,c,r //在监控的结果是wucr时通知联系人
}
define service {
host_name linux-server
service_description check_tcp 80
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_tcp!80 //检查tcp 80端口服务是否正常
}
define service{
host_name nagios-server //要监控的主机,必须是hosts.cfg 中定义的
service_description check-host-alive //定义的是监控这个主机是不是存活
check_command check-host-alive //所用的命令,是commands.cfg中定义的
check_period 24×7 //监控的时间段,是timeperiods.cfg中定义的
max_check_attempts 5
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup //联系人组,contactgroups.cfg中定义的
notification_interval 10
notification_period 24×7 //通知的时间段,是timeperiods.cfg中定义的
notification_options w,u,c,r //在监控的结果是wucr时通知联系人
}
define service {
host_name linux-server
service_description check_tcp 80
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_tcp!80 //检查tcp 80端口服务是否正常
}
//书写时要注意的是,check_tcp与要监控的服务端口之间要用”!”做分隔符,如果服务太多,以考虑用脚本来生成。
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg //检查所有配置文件的正确性,确保这一部的warning 和 error 为0
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg //作为守护进程后台启动nagios
echo “/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg” >> /etc/rc.local //开机自动运行
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg //作为守护进程后台启动nagios
echo “/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg” >> /etc/rc.local //开机自动运行
使用命令和插件监控更多信息
/usr/local/nagios/libexec //插件默认的安装路径
./check_disk -w 10% -c 5% / //检查根分区的使用情况,若剩余10%以下,为警告状态(warning),若剩余 5%以下,为严重状态(critical)
7、使用NRPE监控Linux上的本地信息
对系统为Linux的主机进行如下监控:CPU负载,磁盘容量,登陆用户数,总进程数,僵尸进程数,swap分区使用情况。
/usr/local/nagios/libexec //插件默认的安装路径
./check_disk -w 10% -c 5% / //检查根分区的使用情况,若剩余10%以下,为警告状态(warning),若剩余 5%以下,为严重状态(critical)
7、使用NRPE监控Linux上的本地信息
对系统为Linux的主机进行如下监控:CPU负载,磁盘容量,登陆用户数,总进程数,僵尸进程数,swap分区使用情况。
#useradd nagios
#passwd nagios
#tar zxvf nagios-plugins-1.4.9.tar.gz
#cd nagios-plugins-1.4.9
#./configure –prefix=/usr/local/nagios
#make
#make install
#chown nagios.nagios /usr/local/nagios
#chown -R nagios.nagios /usr/local/nagios/libexec/
#passwd nagios
#tar zxvf nagios-plugins-1.4.9.tar.gz
#cd nagios-plugins-1.4.9
#./configure –prefix=/usr/local/nagios
#make
#make install
#chown nagios.nagios /usr/local/nagios
#chown -R nagios.nagios /usr/local/nagios/libexec/
#tar zxvf nrpe-2.8.1.tar.gz
#cd nrpe-2.8.1
#./configure //NRPE port: 5666
#make all
#make install-plugin //监控机需要安装check_nrpe这个插件,被监控机并不需要
#make install-daemon //安装daemon
#make install-daemon-config //安装配置文件
#/usr/local/nagios/bin/nrpe -c -n /etc/nrpe.cfg -d
#cd nrpe-2.8.1
#./configure //NRPE port: 5666
#make all
#make install-plugin //监控机需要安装check_nrpe这个插件,被监控机并不需要
#make install-daemon //安装daemon
#make install-daemon-config //安装配置文件
#/usr/local/nagios/bin/nrpe -c -n /etc/nrpe.cfg -d
将NRPE daemon作为xinetd下的一个服务运行
yum -y install xinetd
service xinetd start
chkconfig –level 3 xinetd on
make install-xinetd //安装xinetd脚本
vi /etc/xinetd.d/nrpe
only_from = 127.0.0.1 192.168.4.226 //在后面增加监控主机的地址,以空格间隔
yum -y install xinetd
service xinetd start
chkconfig –level 3 xinetd on
make install-xinetd //安装xinetd脚本
vi /etc/xinetd.d/nrpe
only_from = 127.0.0.1 192.168.4.226 //在后面增加监控主机的地址,以空格间隔
增加nrpe服务
vi /etc/services
nrpe 5666/tcp #nrpe //增加这一行
vi /etc/services
nrpe 5666/tcp #nrpe //增加这一行
重启xinetd服务
service xinetd restart
service xinetd restart
netstat -at | grep nrpe //查看NRPE是否已经启动
netstat -an | grep 5666 //查看5666端口是否被监听
netstat -an | grep 5666 //查看5666端口是否被监听
vi /etc/sysconfig/iptables //增加一条5666的端口
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5666 -j ACCEPT
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 5666 -j ACCEPT
在被监控机器上测试一下NRPE是否正常工作
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 //测试NRPE是否正常工作
NRPE v2.8.1 //正常的结果会显示当前NRPE的版本号
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 //测试NRPE是否正常工作
NRPE v2.8.1 //正常的结果会显示当前NRPE的版本号
/usr/local/nagios/libexec/check_nrpe –h //查看这个命令的用法
可以看到用法是check_nrpe –H 被监控的主机 -c 要执行的监控命令
注意:-c后面接的监控命令必须是nrpe.cfg文件中定义的,也就是NRPE daemon只运行nrpe.cfg中所定义的命令。
可以看到用法是check_nrpe –H 被监控的主机 -c 要执行的监控命令
注意:-c后面接的监控命令必须是nrpe.cfg文件中定义的,也就是NRPE daemon只运行nrpe.cfg中所定义的命令。
查看NRPE的监控命令
cd /usr/local/nagios/etc
vi nrpe.cfg
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
cd /usr/local/nagios/etc
vi nrpe.cfg
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
[]中是命令名,也就是check_nrpe的-c参数可以接的内容,=后面是实际执行的插件程序。
比如,我现在要监控硬盘的情况,加入以下内容:
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda1
command[check_hda3]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda3
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda1
command[check_hda3]=/usr/local/nagios/libexec/check_disk -w 20 -c 10 -p /dev/sda3
所以以上nrpe.cfg配置的命令用法如下:
# check_nrpe -H 127.0.0.1 -c check_hda1
DISK OK - free space: /boot 77 MB (82% inode=99%);| /boot=16MB;78;88;0;98
# check_nrpe -H 127.0.0.1 -c check_hda3
DISK OK - free space: / 134960 MB (97% inode=99%);| /=3322MB;145789;145799;0;145809
# check_nrpe -H 127.0.0.1 -c check_hda1
DISK OK - free space: /boot 77 MB (82% inode=99%);| /boot=16MB;78;88;0;98
# check_nrpe -H 127.0.0.1 -c check_hda3
DISK OK - free space: / 134960 MB (97% inode=99%);| /=3322MB;145789;145799;0;145809
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_users //检测登陆用户数
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load //CPU负载
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_zombie_procs //僵尸进程
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_total_procs //总进程数
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_load //CPU负载
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_zombie_procs //僵尸进程
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1 -c check_total_procs //总进程数
//check_load -w 15,10,5 -c 30,25,20
//在unix里面负载的均值通常表示是1分钟,5分钟,15分钟内平均有多少进程处于等待状态
//当1分钟多于15个进程等待,5分钟多于10个,15分钟多于5个则为warning状态
//当1分钟多于30个进程等待,5分钟多于25个,15分钟多于20个则为critical状态
//在unix里面负载的均值通常表示是1分钟,5分钟,15分钟内平均有多少进程处于等待状态
//当1分钟多于15个进程等待,5分钟多于10个,15分钟多于5个则为warning状态
//当1分钟多于30个进程等待,5分钟多于25个,15分钟多于20个则为critical状态
在commands.cfg中增加对check_nrpe的定义
vi /usr/local/nagios/etc/commands.cfg
# ‘check_nrpe’ command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
vi /usr/local/nagios/etc/commands.cfg
# ‘check_nrpe’ command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
//command_name check_nrpe 定义命令名称为check_nrpe,在services.cfg中要使用这个名称
//command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 定义实际运行的插件程序
//command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 定义实际运行的插件程序
接下来可以在services.cfg中定义对主机CPU负载的监控,注意机器必须是LINUX系统,并且安装了NRPE。
vi services.cfg
define service {
host_name linux-server
service_description check-load
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
vi services.cfg
define service {
host_name linux-server
service_description check-load
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_nrpe!check_load
}
在被监控机上增加check_swap命令的定义
vi /usr/local/nagios/etc/nrpe.cfg
增加下面这一行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
//如果在被监控机上是以daemon运行的nrpe,则需要手动重启
//如果在被监控机上是以xinetd运行的,则不需要
vi /usr/local/nagios/etc/nrpe.cfg
增加下面这一行
command[check_swap]=/usr/local/nagios/libexec/check_swap -w 20% -c 10%
//如果在被监控机上是以daemon运行的nrpe,则需要手动重启
//如果在被监控机上是以xinetd运行的,则不需要
在监控机上增加这个监控项目:
vi /etc/services.cfg
define service {
host_name linux-server
service_description check-swap
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_nrpe!check_swap
}
vi /etc/services.cfg
define service {
host_name linux-server
service_description check-swap
check_period 24×7
max_check_attempts 4
normal_check_interval 3
retry_check_interval 2
contact_groups sagroup
notification_interval 10
notification_period 24×7
notification_options w,u,c,r
check_command check_nrpe!check_swap
}
重启nagios服务
killall nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
8、Windows服务器客户端安装步骤
A. 从 [url]http://sourceforge.net/projects/nrpent/[/url]下载nrpe_nt.0.8b-bin-NoSSL.zip,解压
B. 从 [url]http://www.nagiosexchange.org/cgi-bin/page.cgi?g=Detailed%2F2131.html;d=1[/url]下载nrpe_nt_plugins.zip,并放于C:\nrpe_nt\plugins\目录
C. 解压后,,行NRPE_NT.exe -i -n 安装服务
D. 编辑nrpe.cfg,大概内容如下:
server_port=5666
allowed_hosts=192.168.0.2
dont_blame_nrpe=0
debug=1
command_timeout=30
loglevel=4
use_win_metachars=1
command[check_cmd]=e:\NRPE_NT\test.cmd
command[nt_check_disk_c]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe c: 70 90
command[nt_check_disk_d]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe d: 70 90
command[nt_check_disk_e]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe e: 70 90
command[nt_cpuload]=C:\nrpe_nt\plugins\cpuload_nrpe_nt.exe 50 80
command[nt_memload]=C:\nrpe_nt\plugins\memload_nrpe_nt.exe 70 90
command[nt_service]=C:\nrpe_nt\plugins\service_nrpe_nt.exe “Event Log,DNS Client”
command[nt_eventlog]=C:\nrpe_nt\plugins\eventlog_nrpe_nt.exe -m 7200 -s “Service Control Manager”
E. 找相关目录里面启动服务即可,如果有防火墙要开放5666端口
killall nagios
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
8、Windows服务器客户端安装步骤
A. 从 [url]http://sourceforge.net/projects/nrpent/[/url]下载nrpe_nt.0.8b-bin-NoSSL.zip,解压
B. 从 [url]http://www.nagiosexchange.org/cgi-bin/page.cgi?g=Detailed%2F2131.html;d=1[/url]下载nrpe_nt_plugins.zip,并放于C:\nrpe_nt\plugins\目录
C. 解压后,,行NRPE_NT.exe -i -n 安装服务
D. 编辑nrpe.cfg,大概内容如下:
server_port=5666
allowed_hosts=192.168.0.2
dont_blame_nrpe=0
debug=1
command_timeout=30
loglevel=4
use_win_metachars=1
command[check_cmd]=e:\NRPE_NT\test.cmd
command[nt_check_disk_c]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe c: 70 90
command[nt_check_disk_d]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe d: 70 90
command[nt_check_disk_e]=C:\nrpe_nt\plugins\diskspace_nrpe_nt.exe e: 70 90
command[nt_cpuload]=C:\nrpe_nt\plugins\cpuload_nrpe_nt.exe 50 80
command[nt_memload]=C:\nrpe_nt\plugins\memload_nrpe_nt.exe 70 90
command[nt_service]=C:\nrpe_nt\plugins\service_nrpe_nt.exe “Event Log,DNS Client”
command[nt_eventlog]=C:\nrpe_nt\plugins\eventlog_nrpe_nt.exe -m 7200 -s “Service Control Manager”
E. 找相关目录里面启动服务即可,如果有防火墙要开放5666端口
9、nagios里点3-D Status Map时提示打开statuswrl.cgi的解决办法
根据nagios的官方网站的faq里的说法,如果要看3-D statusmap CGI (statuswrl.cgi)的输出的话,得为你的web浏览器安装vrml的client(客户端)或plugin(插件)。
nagios官方推荐插件:
Cortona (Parallel Graphics)
Cosmo Player (Computer Associates and NIST)
FreeWRL和OpenVRML
10、参考学习地址
[url]http://sery.blog.51cto.com/10037/20520[/url]
[url]http://yahoon.blog.51cto.com/13184/41778[/url]
附:nagios通过飞信短信报警配置
根据nagios的官方网站的faq里的说法,如果要看3-D statusmap CGI (statuswrl.cgi)的输出的话,得为你的web浏览器安装vrml的client(客户端)或plugin(插件)。
nagios官方推荐插件:
Cortona (Parallel Graphics)
Cosmo Player (Computer Associates and NIST)
FreeWRL和OpenVRML
10、参考学习地址
[url]http://sery.blog.51cto.com/10037/20520[/url]
[url]http://yahoon.blog.51cto.com/13184/41778[/url]
附:nagios通过飞信短信报警配置
前言:
1、nagios是一个非常好的系统监控工具,现在我的nagios系统已经正常运行,使用短信猫和邮件可以报警,使用飞信可以节约我们的短信猫和短信费用。
2、飞信首先手机要开通中国移动的飞信业务,目前使用飞信发送短信是免费的,需要把接受短信的手机和飞信发送手机加为好友。
3、下载飞信的Linux客户端程序,解开包后只有一个文件sms。不错,这个就是飞信发送短信的程序。现在的飞信还是不能用的,因为它需要libace的glibc库的支持。
1、nagios是一个非常好的系统监控工具,现在我的nagios系统已经正常运行,使用短信猫和邮件可以报警,使用飞信可以节约我们的短信猫和短信费用。
2、飞信首先手机要开通中国移动的飞信业务,目前使用飞信发送短信是免费的,需要把接受短信的手机和飞信发送手机加为好友。
3、下载飞信的Linux客户端程序,解开包后只有一个文件sms。不错,这个就是飞信发送短信的程序。现在的飞信还是不能用的,因为它需要libace的glibc库的支持。
飞信Linux程序下载:
1、飞信官方网站: [url]http://www.it-adv.net/[/url]
2、飞信官方命令下载: [url]http://www.it-adv.net/fetion/fetion_linux_20080402.tar.gz[/url]
3、飞信官方lib库下载:
32位官方lib库: [url]http://www.it-adv.net/fetion/library32.rar[/url]
64位官方lib库: [url]http://www.it-adv.net/fetion/library64_linux.tar.gz[/url]
1、飞信官方网站: [url]http://www.it-adv.net/[/url]
2、飞信官方命令下载: [url]http://www.it-adv.net/fetion/fetion_linux_20080402.tar.gz[/url]
3、飞信官方lib库下载:
32位官方lib库: [url]http://www.it-adv.net/fetion/library32.rar[/url]
64位官方lib库: [url]http://www.it-adv.net/fetion/library64_linux.tar.gz[/url]
飞信程序测试:
1、飞信命令测试:
# wget [url]http://www.it-adv.net/fetion/fetion_linux_20080402.tar.gz[/url]
# tar xvfz fetion_linux_20080402.tar.gz
# cp sms /usr/bin
# sms -h
sms -f mobile -p pwd -t mobile1,.. -m message -a message -d
sms -f mobile -p pwd -t mobile1,.. -i file_name[utf8] -a invite_message -d 1
-f:Fetion mobile account(only supports mobile phone No.)
-p:Account password
-t:Destination mobile list
-m:Message
-i:File name(only supports utf8)
-a:Auto send invite using invite_message.
-d:Debug on.
如果没有安装lib库,将会提示缺少libACE.so.5.4.7包
1、飞信命令测试:
# wget [url]http://www.it-adv.net/fetion/fetion_linux_20080402.tar.gz[/url]
# tar xvfz fetion_linux_20080402.tar.gz
# cp sms /usr/bin
# sms -h
sms -f mobile -p pwd -t mobile1,.. -m message -a message -d
sms -f mobile -p pwd -t mobile1,.. -i file_name[utf8] -a invite_message -d 1
-f:Fetion mobile account(only supports mobile phone No.)
-p:Account password
-t:Destination mobile list
-m:Message
-i:File name(only supports utf8)
-a:Auto send invite using invite_message.
-d:Debug on.
如果没有安装lib库,将会提示缺少libACE.so.5.4.7包
解决缺少lib库的方法
说明:在CentOS5下装提示需要libACE.so.5.4.7这个库,千万不要自己去安装ACE包,很麻烦,官方已经给了Liunx的下载版本:
1、先检查一下缺少的lib文件
[root@nagios libexec]# ldd sms
linux-gate.so.1 => (0×00b00000)
libACE.so.5.4.7 => not found
libACE_SSL.so.5.4.7 => not found
libssl.so.0.9.8 => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0×02a05000)
libm.so.6 => /lib/libm.so.6 (0×00cd4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0×029f7000)
libc.so.6 => /lib/libc.so.6 (0×00b92000)
/lib/ld-linux.so.2 (0×001c3000)
2、下载lib库
32位官方lib库: [url]http://www.it-adv.net/fetion/library32.rar[/url]
64位官方lib库: [url]http://www.it-adv.net/fetion/library64_linux.tar.gz[/url]
3、安装lib库
# ls
libACE.so.5.4.7 libACE_SSL.so.5.4.7 libcrypto.so.0.9.8 libssl.so.0.9.8
# cp *.* /lib/
# cp *.* /usr/lib/
4、测试sms:
[root@nagios libexec]# ./sms
************************ IMPORTANT STATEMENT ************************
** **
** PLEASE DON’T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES. **
** OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES. **
** **
** [version:2008-4-2] **
*********************************************************************
This program is for sending short messages via CMCC Fetion!
[url]http://www.fetion.com.cn/[/url]
AUTHOR:KelvinHan MSN/EMAIL:shichangguo@msn.com 2008/3/8
Usage:
sms -f mobile -p pwd -t mobile1,.. -m message -a message -d
sms -f mobile -p pwd -t mobile1,.. -i file_name[utf8] -a invite_message -d 1
-f:Fetion mobile account(only supports mobile phone No.)
-p:Account password
-t:Destination mobile list
-m:Message
-i:File name(only supports utf8)
-a:Auto send invite using invite_message.
-d:Debug on.
说明:在CentOS5下装提示需要libACE.so.5.4.7这个库,千万不要自己去安装ACE包,很麻烦,官方已经给了Liunx的下载版本:
1、先检查一下缺少的lib文件
[root@nagios libexec]# ldd sms
linux-gate.so.1 => (0×00b00000)
libACE.so.5.4.7 => not found
libACE_SSL.so.5.4.7 => not found
libssl.so.0.9.8 => not found
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0×02a05000)
libm.so.6 => /lib/libm.so.6 (0×00cd4000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0×029f7000)
libc.so.6 => /lib/libc.so.6 (0×00b92000)
/lib/ld-linux.so.2 (0×001c3000)
2、下载lib库
32位官方lib库: [url]http://www.it-adv.net/fetion/library32.rar[/url]
64位官方lib库: [url]http://www.it-adv.net/fetion/library64_linux.tar.gz[/url]
3、安装lib库
# ls
libACE.so.5.4.7 libACE_SSL.so.5.4.7 libcrypto.so.0.9.8 libssl.so.0.9.8
# cp *.* /lib/
# cp *.* /usr/lib/
4、测试sms:
[root@nagios libexec]# ./sms
************************ IMPORTANT STATEMENT ************************
** **
** PLEASE DON’T USE THIS SOFTWARE TO SEND JUNK SHORT MESSAGES. **
** OTHERWISE PLEASE BEAR YOUR OWN CONSEQUENCES. **
** **
** [version:2008-4-2] **
*********************************************************************
This program is for sending short messages via CMCC Fetion!
[url]http://www.fetion.com.cn/[/url]
AUTHOR:KelvinHan MSN/EMAIL:shichangguo@msn.com 2008/3/8
Usage:
sms -f mobile -p pwd -t mobile1,.. -m message -a message -d
sms -f mobile -p pwd -t mobile1,.. -i file_name[utf8] -a invite_message -d 1
-f:Fetion mobile account(only supports mobile phone No.)
-p:Account password
-t:Destination mobile list
-m:Message
-i:File name(only supports utf8)
-a:Auto send invite using invite_message.
-d:Debug on.
nagios飞信测试
1、需要注册一个可以使用飞信的手机号码,测试期间可以自己发送给自己做测试。
2、给别的手机发飞信,需要给把手机绑定为好友。
3、飞信环境解决了,发短信测试一下(136933XXXXX为发飞信的注册手机号码,136833XXXXX、36733XXXXX为接收飞信短信的手机号码)。
# ./sms -f 136933XXXXX -p password -t 136833XXXXX -m hello,this is test
//也可以发送一个文本文件,如 message.txt
#./sms -f 136933XXXXX -p password -t 136833XXXXX,136733XXXXX -i message.txt
//如果接收短信的手机号码在你的好友列表里,就会发送成功。
//如果不在好友列表里,发送是不成功的。如果你想让程序邀请他们加入,那么就用 -a 参数
sms -f 136933XXXXX -p password -t 136833XXXXX,136733XXXXX -m 你好,飞信 -a UBUNTU
//这样,对方就会收到移动发的确认短信。
1、需要注册一个可以使用飞信的手机号码,测试期间可以自己发送给自己做测试。
2、给别的手机发飞信,需要给把手机绑定为好友。
3、飞信环境解决了,发短信测试一下(136933XXXXX为发飞信的注册手机号码,136833XXXXX、36733XXXXX为接收飞信短信的手机号码)。
# ./sms -f 136933XXXXX -p password -t 136833XXXXX -m hello,this is test
//也可以发送一个文本文件,如 message.txt
#./sms -f 136933XXXXX -p password -t 136833XXXXX,136733XXXXX -i message.txt
//如果接收短信的手机号码在你的好友列表里,就会发送成功。
//如果不在好友列表里,发送是不成功的。如果你想让程序邀请他们加入,那么就用 -a 参数
sms -f 136933XXXXX -p password -t 136833XXXXX,136733XXXXX -m 你好,飞信 -a UBUNTU
//这样,对方就会收到移动发的确认短信。
nagios的配置
1、nagios命令配置commands.cfg:
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name notify-service-by-sms
command_line /usr/bin/sms -f 13901111111 -p 562128 -t $CONTACTPAGER$ -m “$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$
on $TIME$ result is $SERVICEOUTPUT$” $CONTACTPAGER$
}
2、nagios联系人配置contacts.cfg:
# vi /usr/local/nagios/etc/contacts.cfg
define contact{
contact_name sa
alias system admin
host_notification_period 24×7
service_notification_period 24×7
host_notification_options d,r,
service_notification_options c,w,r
service_notification_commands notify-service-by-email,notify-service-by-sms
# service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
# email [email]test@nagios.org[/email]
pager 13800138000
}
1、nagios命令配置commands.cfg:
# vi /usr/local/nagios/etc/commands.cfg
define command{
command_name notify-service-by-sms
command_line /usr/bin/sms -f 13901111111 -p 562128 -t $CONTACTPAGER$ -m “$HOSTNAME$ $SERVICEDESC$ is $SERVICESTATE$
on $TIME$ result is $SERVICEOUTPUT$” $CONTACTPAGER$
}
2、nagios联系人配置contacts.cfg:
# vi /usr/local/nagios/etc/contacts.cfg
define contact{
contact_name sa
alias system admin
host_notification_period 24×7
service_notification_period 24×7
host_notification_options d,r,
service_notification_options c,w,r
service_notification_commands notify-service-by-email,notify-service-by-sms
# service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
# email [email]test@nagios.org[/email]
pager 13800138000
}
转载于:https://blog.51cto.com/marsren/153996