一、系统环境
[root@host3 ~]# cat /etc/redhat-release
CentOS release 5.5 (Final)
[root@host3 ~]# uname -a
Linux host3.zc.com 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:14 EDT 2010 x86_64 x86_64 x86_64 GNU/Linux
软件包存放目录
/data
所需软件包
nagios-3.2.3.tar.gz
nagios-cn-3.2.3.tar.bz2
nagios-plugins-1.4.9.tar.gz
nrpe-2.12.tar.gz
监控端:host3
ip:192.168.1.220
被监控端:host4
ip:192.168.1.221
二、Nagios的快速安装
监控机host3上安装:
1、准备软件包
在做安装之前确认要对该机器拥有root权限。确认你安装好的linux系统上已经安装如下软件包再继续。
Apache
php
GCC编译器
GD库与开发库
mysql(可选,为以后nagios扩展做准备)
可以用yum命令来安装这些软件包,键入命令:
[root@host3 ~]# yum -y install httpd php mysql mysql-server php-mysql httpd-manual php-adodb openphp-gd openssl gcc* openssl-devel xinetd
2、建立nagios账号
创建一个用户组名为nagcmd用于从Web接口执行外部命令。将nagios用户和apache用户都加到这个组中。
[root@host3 ~]# useradd -s /sbin/nologin nagios
[root@host3 ~]# groupadd nagcmd
[root@host3 ~]# usermod -G nagcmd nagios
[root@host3 ~]# usermod -G nagcmd apache
3、nagios源码软件包安装
解包、配置、编译安装nagios
[root@host3 ~]# cd /data/
[root@host3 data]# tar -zxf nagios-3.2.3.tar.gz
[root@host3 data]# cd nagios-3.2.3
[root@host3 nagios-3.2.3]# ./configure --with-command-group=nagcmd
[root@host3 nagios-3.2.3]# make all
//输出如下信息
[root@host3 nagios-3.2.3]# make install
//安装主程序,CGI和HTML文件
[root@host3 nagios-3.2.3]# make install-init
//在/etc/rc.d/init.d安装启动脚本
[root@host3 nagios-3.2.3]# make install-config
//配置目录权限
[root@host3 nagios-3.2.3]# make install-commandmode //来安装示例配置文件
[root@host3 nagios-3.2.3]# make install-webconf
//生成web接口
验证程序是否被正确安装。切换目录到安装路径(这里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var这五个目录,如果存在则可以表明程序被正确的安装到系统了。后表是五个目录功能的简要说明:
bin
Nagios执行程序所在目录,nagios文件即为主程序
etc
Nagios配置文件位置,初始安装完后,只有几个*.cfg-sample文件
sbin
NagiosCgi文件所在目录,也就是执行外部命令所需文件所在的目录
Share
Nagios网页文件所在的目录
Var
Nagios日志文件、spid等文件所在的目录
var/archives
Emptydirectoryfor thearchivedlogs
var/rw
Emptydirectoryfor theexternalcommandfile
4、安装Nagios汉化插件
[root@host3 nagios-3.2.3]# cd /data/
[root@host3 data]# tar -jxf nagios-cn-3.2.3.tar.bz2
[root@host3 data]# cd nagios-cn-3.2.3
[root@host3 nagios-cn-3.2.3]# ./configure
[root@host3 nagios-cn-3.2.3]# make all
[root@host3 nagios-cn-3.2.3]# make install
[root@host3 nagios-cn-3.2.3]# cd
5、增加用户验证
[root@host3 ~]# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
Newpassword:(输入redhat)
Re-typenewpassword:(再输入一次密码redhat)
nagiosadmin系统默认管理用户,拥有对nagios有完全控制权限。
密码:redhat(注意:也可自定义用户,或增加用户,但必须从以下文件中设置)
[root@host3 ~]# vim /usr/local/nagios/etc/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,test
authorized_for_all_service_commands=nagiosadmin,test
authorized_for_all_host_commands=nagiosadmin
6、启动nagios,httpd
把Nagios加入到服务列表中以使之在系统启动时自动启动
[root@host3 ~]# chkconfig --add nagios
[root@host3 ~]# chkconfig nagios on
验证Nagios的样例配置文件
[root@host3 ~]# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果没有报错,可以启动Nagios服务和apache服务
[root@host3 ~]# /etc/init.d/nagios start
[root@host3 ~]# /etc/init.d/httpd start
7、测试
登录http://ip/nagios
输入用户名nagiosadmin密码redhat就可以正常登陆了
三、增加本机监控项
1、监控机(本机)中安装插件
[root@host3 ~]# cd /data/
[root@host3 data]# tar -zxf nagios-plugins-1.4.9.tar.gz
[root@host3 data]# cd nagios-plugins-1.4.9
[root@host3 nagios-plugins-1.4.9]# ./configure --prefix=/usr/local/nagios/
[root@host3 nagios-plugins-1.4.9]# make
[root@host3 nagios-plugins-1.4.9]# make install
在libexec目录中生成了多个监控脚本
[root@host3 nagios-plugins-1.4.9]# cd /usr/local/nagios/libexec/
[root@host3 libexec]# ls
check_apt check_file_age check_mailq check_pop check_ups
check_breeze check_flexlm check_mrtg check_procs check_users
check_by_ssh check_ftp check_mrtgtraf check_real check_wave
check_clamd check_http check_nagios check_rpc negate
check_cluster check_icmp check_nntp check_sensors urlize
check_dhcp check_ifoperstatus check_nt check_smtp utils.pm
check_dig check_ifstatus check_ntp check_ssh utils.sh
check_disk check_imap check_nwstat check_swap
check_disk_smb check_ircd check_oracle check_tcp
check_dns check_load check_overcr check_time
check_dummy check_log check_ping check_udp
[root@host3 libexec]#./check_ping --help
可以大多可查看到帮助信息
2、增加监控项
Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.在Nagios里面定义了一些基本的对象,一般用到的有:
联系人
contact
出了问题像谁报告?一般当然是系统管理员了
监控时间段
timeperiod
7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机
host
所需要监控的服务器,当然可以是监控机自己
监控命令
command
nagios发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务
service
例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等
另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组呢。
我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告。
主配置文件选项
Nagios的主配置文件为/usr/local/nagios/etc/nagios.cfg
重要配置说明如下:
nagios_user=nagios
nagios用户
nagios_group=nagios
nagios组
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
//联系人/组配置文件
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
//本机配置文件
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
//监视时段配置文件
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
//监视脚本配置
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
//监视服务,报警配置
cfg_file=/usr/local/nagios/etc/objects/switch.cfg
//监视路由
cfg_file=/usr/local/nagios/etc/objects/windows.cfg
//监视微软
打开本机localhost.cfg模版如下:
definehost{
声明主机
use linux-server
引入模版linux-server
host_name localhost
主机名
alias localhost
address 127.0.0.1
所对应的ip地址
}
definehostgroup{
声明主机组
hostgroup_name linux-servers
引入模版linux-servers
alias LinuxServers
members localhost
将哪些主机加入此组,如有多台主机以,号隔开
}
defineservice{
声明监控服务项
use local-service
引入模版local-service哪些主机
host_name localhost
要使用此监控项若有多个,以,号隔开。
service_description PING
此监控项的描述
check_command check_ping!100.0,20%!500.0,60%
此监控项监控脚本名称及设置相关选项或阈值
}
打开模版:
vim /usr/local/nagios/etc/objects/ templates.cfg
definehost{
name linux-server
use generic-host
check_period 24x7
//监测时间
check_interval 5
//检测时间间隔
retry_interval 1
//再次间隔时间
max_check_attempts 10
//最大尝试次数
check_command check-host-alive
//主机检查使用命令
notification_period workhours
//报警通知时间
notification_interval 120
//通知间隔时间
notification_options d,u,r
// 通知级别
#d-down,u-unreacheable,r-recovery
contact_groups admins
//设置报警组
register 0
}
四、增加被监控机host4的监控项
1、监控机host3上安装
[root@host3 ~]# cd /data/
[root@host3 data]# tar -zxf nrpe-2.12.tar.gz
[root@host3 data]# cd nrpe-2.12
[root@host3 nrpe-2.12]# ./configure
[root@host3 nrpe-2.12]# make all
[root@host3 nrpe-2.12]# make install-plugin
[root@host3 nrpe-2.12]# make install-daemon
[root@host3 nrpe-2.12]# make install-daemon-config
[root@host3 nrpe-2.12]# make install-xinetd
2、被监控机host4上配置
[root@host4 ~]# yum -y install gcc* openssl-devel xinetd
[root@host4 ~]# cd /data/
[root@host4 data]# useradd -s /sbin/nologin nagios
1)安装监控脚本插件
[root@host4 data]# tar -zxf nagios-plugins-1.4.9.tar.gz
[root@host4 data]# cd nagios-plugins-1.4.9
[root@host4 nagios-plugins-1.4.9]# ./configure --prefix=/usr/local/nagios
[root@host4 nagios-plugins-1.4.9]# make
[root@host4 nagios-plugins-1.4.9]# make install
2)安装nrpe
[root@host4 nagios-plugins-1.4.9]# cd /data/
[root@host4 data]# tar -zxf nrpe-2.12.tar.gz
[root@host4 data]# cd nrpe-2.12
[root@host4 nrpe-2.12]# ./configure
[root@host4 nrpe-2.12]# make all
[root@host4 nrpe-2.12]# make install-plugin
[root@host4 nrpe-2.12]# make install-daemon
[root@host4 nrpe-2.12]# make install-daemon-config
[root@host4 nrpe-2.12]# make install-xinetd
3、监控机和被监控机上启动NRPE,并进行测试
被监控端
[root@host4 nrpe-2.12]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
#启动nrpe服务
[root@host4 nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H localhost
#查看nrpe版本
NRPE v2.12
[root@host4 nrpe-2.12]# netstat -anpt | grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 22941/nrpe
添加nrpe开机启动:
[root@host4 nrpe-2.12]# vi /etc/xinetd.d/nrpe
only_from = 127.0.0.1 192.168.1.220
#添加监控端ip
[root@host4 nrpe-2.12]# vi /etc/services
nrpe 5666/tcp # nrpe
#末行添加
[root@host4 nrpe-2.12]# pkill nrpe
#关闭之前开启的nrpe进程
如不关闭,下面监控端做测试的时候会提示,CHECK_NRPE: Error - Could not complete SSL handshake.
[root@host4 nrpe-2.12]# /etc/init.d/xinetd restart
停止 xinetd: [失败]
启动 xinetd: [确定]
监控端
[root@host3 nrpe-2.12]# /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
#启动nrpe服务
[root@host3 nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H localhost
#查看nrpe版本
NRPE v2.12
[root@host3 nrpe-2.12]# netstat -anpt | grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 1970/nrpe
添加nrpe开机启动
[root@host3 nrpe-2.12]# vi /etc/services
nrpe 5666/tcp # nrpe
#末行添加
[root@host3 nrpe-2.12]# /etc/init.d/xinetd restart
停止 xinetd: [失败]
启动 xinetd: [确定]
[root@host3 nrpe-2.12]# /usr/local/nagios/libexec/check_nrpe -H 192.168.1.221
#查看被监控端的nrpe版本
NRPE v2.12
4、添加被监控主机
监控端host3配置
[root@host3 nrpe-2.12]# cd /usr/local/nagios/etc/objects/
[root@host3 objects]# cat 192.168.1.221.cfg
#以下所有模版都是通过调用/usr/local/nagios/libexec/templates.cfg文件中对模版的定义
define host{
use linux-server
#引用linux-server模版
host_name 192.168.1.221
#主机名
alias 192.168.1.221
#别名
address 192.168.1.221
#被监控端ip地址
}
define service{
use local-service #引用local-service模版
host_name 192.168.1.221
service_description PING
#对监控服务内容的描述
check_command check_ping!100.0,20%!500.0,60%
#指定检查的命令,check_ping命令在commands.cfg中定义,后跟两个参数,命令与参数间用!分割
}
define service{
use local-service
host_name 192.168.1.221
service_description Root Partition
check_command check_local_disk!20%!10%!/
}
define service{
use local-service
host_name 192.168.1.221
service_description Current Users
check_command check_local_users!20!50
}
define service{
use local-service
host_name 192.168.1.221
service_description Total Processes
check_command check_local_procs!250!400!RSZDT
}
define service{
use local-service
host_name 192.168.1.221
service_description Current Load
check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
}
define service{
use local-service
host_name 192.168.1.221
service_description Swap Usage
check_command check_local_swap!20!10
}
define service{
use local-service
host_name 192.168.1.221
service_description SSH
check_command check_ssh
notifications_enabled 0
}
define service{
use local-service
host_name 192.168.1.221
service_description HTTP
check_command check_http
notifications_enabled 0
}
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
#定义命令
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
#定义联系人和联系人组
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
#定义监控时间段
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
#定义模版
5、监控报警机制
可参考http://zhumeng8337797.blog.163.com/blog/static/10076891420118279354233/