此篇文章发表于老博客2015-10-18,现摘录新博客
Nagios的配置文档
首先需要准备的软件都有cgilib-0.5.tar.gz fetion20091117-linux.tar.gz httpd-2.2.22.tar.gz libgd2-2.0.33-2_11.0.el5.i386.rpm libmcrypt-2.5.7.tar.gz nagios-3.2.0.tar.gz nagios-cn-3.2.0.tar.bz2 nagios-plugins-1.4.14.tar.gz nrpe-2.12.tar.gz pnp4nagios-0.6.19.tar.gz pnp-0.4.13.tar.gz
rrdtool-1.4.5.tar.gz rrdtool-1.4.7.tar.gz
这些软件包不是最新的,如果需要可以下载最新版。
在安装nagios之前需要先安装apache/nginx和php
建议把nagios安装在/usr/local/nagios这个目录下面
对于php需要选择下如果用php3.x以上的版本就可能需要改php的文件的代码,不过在里面我将使用php-5.4.8.tar.gz,然后改他的php代码
至于为什么要改,因为php3.0以上版本的语法问题
或者用php3.x一下的版本都可以解决这个问题
首先安装apache
apr-1.4.6.tar.gz
apr-util-1.4.1.tar.gz
httpd-2.4.3.tar.gz
pcre-8.31.tar.gz
首先解压上面三个软件
tar zxvf httpd-2.4.3.tar.gz
tar zxvf apr-1.4.6.tar.gz
tar zxvf apr-util-1.4.1.tar.gz
tar zxvf pcre-8.31.tar.gz
然后
mv apr-1.4.6 httpd-2.4.3/srclib/apr
mv apr-util-1.4.1 httpd-2.4.3/srclib/apr-util
安装pcre
./configure
make && make install
安装apache
./configure --prefix=/usr/local/apache2 --enable-so--enable-so --enable-cgi
make && make install
完成后启动apache 如果出现it work 表示安装成功
下面安装php
php-5.4.8.tar.gz
在安装php之前请确认您的服务器里面安装了
gd gd-devel zlib libjpeglibjpeg-devel
因为pnp绘图需要否则将无法绘图
下面安装
yum -y install gd gd-devel zlib libjpeg libjpeg-devel
解压
tar zxvf php-5.4.8.tar.gz
进入php目录
./configure --prefix=/usr/local/php --enable-mbstring--with-zlib --with-gd --with-jpeg-dir --with-apxs2=/usr/local/apache2/bin/apxs--enable-cgi --enable-sockets
make && make test && make install
cp php.ini-production /etc/php.ini
安装完成后然后让apache支持php
编辑httpd.conf
如果有LoadModulephp5_module modules/libphp5.so
说明php安装成功
User daemon
Group daemon
改为
User nagios
Group nagos
添加以下东西
AddType application/x-httpd-php .php
修改DirectoryIndex index.html为DirectoryIndex index.php index.html
重启apache 测试用phpinfo函数测试
创建Nagios用户和用户组
useradd –s /sbin/nologin nagios
mkdir /usr/local/nagios
chown -R nagios.nagios /usr/local/nagios
正常输出安装nagios
nagios-3.4.1.tar.gz
解压
tar zxvf nagios-3.4.1.tar.gz
./configure --prefix=/usr/local/nagios
make all && make install && makeinstall-init && make install-commandmode && make install-config
安装nagios插件
nagios-plugins-1.4.16.tar.gz
解压
tar zxvf nagios-plugins-1.4.16.tar.gz
./configure –prefix=/usr/local/nagios
注意:安装路径是nagios的安装路径
make && make install
安装nagios汉化插件
tar jxvf nagios-cn-3.2.0.tar.bz2
cd nagios-cn-3.2.0
./configure
make
make install
安装完成后在回到httpd.conf文件添加以下内容
LoadModule cgid_module modules/mod_cgid.so
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>
保存退出然后
创建Apache目录验证文件
/usr/local/apache2/bin/htpasswd –c /usr/local/nagios/etc/htpasswd ixdba
New password: 输入密码
Re-type new passwd 再次输入密码
Adding password for user ixdba
在/usr/local/nagios/etc/目录下创建了一个htpasswd验证文件,对应的用户为ixdba。 Web访问时需要输入的用户名和密码。
启动apache
/usr/local/apache2/bin/apachectl start
注意:这里如果报错:/usr/local/apache/modules/libphps.so………cannot restoresegment prot after reloc:Permission denied
①php没有安装正确,重新装一次
②因为SELINUX的问题,需要关闭SELINX,执行 /usr/sbin/setenforce 0
登录
http://ip/nagios
登录后看的如下图
下面配置nagios
在nagios安装目录etc下有cgi.cfg nagios.cfg
resoruce.cnfg
分别是 cgi权限,nagios 主配置文件 和变量定义文件
objects 目录下有
commands.cfg 定义命令文件
contacts.cfg 定义联系人的
localhost.cfg 定义本机主机的配置文件
priter.cfg 定义监控打印机
swicth.cng 定义监控路由器
templates.cfg 定义主机和服务的一个模板配置文件
timeperiods.cfg 定义nagios监控时间段的文件
windows.cfg 定义监控windows主机的配置文件
首先看templates.cfg
找到
define contact{
name generic-contact #联系人名称
service_notification_period 24x7 #当服务出现故障时发送通知的时间段
host_noetification_period 24x7 #当主机出现故障时发送通知的时间段
service_notification_options w,u,c,r #当服务出现什么情况是发送通知,w警告状态,u,不明状态,c,表示紧急状态 r,表示恢复状态
host_notification_options w,u,c,r #当主机出现什么情况是发送通知,w警告状态,u,不明状态,c,表示紧急状态 r,表示恢复状态
service_notification_commands notify-service-by-mail #服务出现故障时候发送通知的方式 ,可以是短信,邮件,notify-service-by-mail 是在commands.cfg里定义的
host_notification_commands notify-service-by-mail #主机出现故障时候发送通知的方式 ,可以是短信,邮件,notify-service-by-mail 是在commands.cfg里定义的
register 0
}
define host{
name generic-host
notifications_enabled 1 #是否开启提醒功能。1为开启,0为禁用
event_handler_enabled 1
flap_detection_enabled 1
process _perf_data 1
#其值可以为0或1,其作用为是否启用Nagios的数据输出功能,如果将此项赋值为1
#那么nagios就会将收集数据写入某个文件中以备提取
retain_status_information 1
retain_nonstatus_information 1
notification_period 24x7
#指定“发送通知的时间段”,也就说可以在什么时间发送通知
register 0
}
define host{
name linux-server
#主机名
use generic-host#use表示引用,也就将generic-host的所有属性引用进来
check_period 24x7 #check_period告诉nagios检查主机的时间段
check_interval 5 #nagios检查主机的时间间隔,这里是5分钟检查一次
retry_interval 1 #重试检查时间间隔单位是分钟
max_check_attempts 10 #最大检查次数是10次,也就说10次后报警
check_command check_host_alive #指定检查主机状态的命令,其中 check_host_alive 在commands.cfg里定义
netification_period workhours #主机故障时候发送通知的时间范围 workhours在timeperiods.cfg中定义
notification_interval 120 #在主机出现故障后,故障一直没有解决,nagios再次发送通知的时间间隔,0位只发送一次
notification_options d,u,r #定义了主机在什么状态下可以发送通知给使用者d 表示down u表示不可达r表示恢复
contact_groups admins #指定联系人组
register 0
}
手动建立一个hosts.cfg文件在里面写入
define host {
use linux-server
host_name local_web 主机名
alias web 主机别名
address 192.168.0.254 被监控主机的ip地址
}
define host {
use linux-server
host_name remot-web
alias web
address 122.0.67.6
}
define hostgroup{
hostgroup_name linux-group
alias group
members local_web,remot-web #加入的主机名,以“," 分割
}
在手动建立一个services.cfg文件写入
define service{
use local-service
host_name local_web
service_description http
check_command check_http
}
define service{
use local-service
host_name remot-web
service_description http
check_command check_http
}
define servicegroup{
servicegroup_name server-group
alias server
members local_web,http,remot-web,http #不同是的是主机+服务名
}
编辑cgi.cfg文件
修改内容如下
defaul_user_name=通过网页登陆nagios的用户
authorized_for_system_information=nagiosadmin,通过网页登陆nagios的用户
authorized_for_configuretion_information=nagiosadmin,通过网页登陆nagios的用户
authorized_for_system_commands=nagiosadmin,通过网页登陆nagios的用户
authorized_for_all_services=nagiosadmin,通过网页登陆nagios的用户
authorized_for_all_hosts=nagiosadmin,通过网页登陆nagios的用户
authorized_for_all_service=nagiosadmin,通过网页登陆nagios的用户
authorized_for_all_host=nagiosadmin,通过网页登陆nagios的用户
编辑nagios.cfg文件
添加
cfg_file=/usr/local/nagios/etc/objects/host.cfg
cfg_file=/usr/local /nagios/etc/objects/server.cfg
修改
status_updata_interval=10 #状态文件的更新时间
nagios_user=nagios
nagios_group
#指定用户名这组
check_external_commands=1 #是否允许在网页运行cgi命令 如关闭nagios
command_check_interval=2 #nagios对外部命令的监测时间间隔,
interval_length=60 指定nagios的时间单位
完成然后启动apache启动nagios 了
可以用/usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg来检查nagios配置文件是否有错误
启动nagios
/etc/init.d/nagios start
测试成功
下面安装pnp
需要的东西
rrdtool.tar.gz
pnp-0.4.14.tar.gz
解压
tar zxvf pnp-0.4.14.tar.gz
tar zxvf rrdtool.tar.gz
安装rrdtool
cd rrdtool-1.4.5
./configure –prefix=/usr/local/rrdtool
make
make install
这个错误的解决如下
yum –y install pango-devel cairo-devel
安装pnp
cd pnp-0.14.13
./configure --with-rrdtool=//usr/local/rrdtool/bin/rrdtool--with-nagios-user=nagios --with-nagios-group=nagios --with-perfdata=/usr/local/nagios/share/perfdata
make && make install && makeinstall-config && make install-init
解决方法
./configure --with-rrdtool=/usrlocal/rrdtool/bin/rrdtool--with-nagios-user=nagios --with-nagios-group=nagios --with-perfdata=/usr/local/nagios/share/perfdata--with-perl_lib_path=/data/rrdtool/lib/perl/5.8.8/x86_64-linux-thread-multi/
make && make install && makeinstall-config && make install-init\
解决方法2
cp/usr/local/rrdtool/lib/perl/5.8.8/x86_64-linux-thread-multi/RRDs.pm/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/
cp/usr/local/rrdtool/lib/perl/5.8.8/x86_64-linux-thread-multi/auto/RRDs/RRDs.so/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/
原因:缺少perl
配置PNP
cd /usr/local/nagios/etc/pnp/
cp process_perfdata.cfg-sample process_perfdata.cfg
cp npcd.cfg-sample npcd.cfg
cp rra.cfg-sample rra.cfg
chown -R nagios:nagios /usr/local/nagios/etc/pnp
修改process_perfdata.cfg
vim /usr/local/nagios/etc/pnp/process_perfdata.cfg
LOG_FILE = /usr/local/nagios/var/perfdata.log
# Loglevel 0=silent 1=normal 2=debug
LOG_LEVEL = 2
添加小太阳模版
编辑templates.cfg /usr/local/nagios/etc/objects/templates.cfg
添加以下内容
define host{
name hosts-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$
process_perf_data 1
}
defineservice {
name services-pnp
register 0
action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
process_perf_data 1
}
修改nagios.cfg
process_performance_data=0
改为
process_performance_data=1
去掉前面的#号
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
修改 commands.cfg
修改成文下面内容
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/local/nagios/libexec/process_perfdata.pl
}
修改 hosts.cfg 和 services.cfg
use linux-server,host-pnp 添加host-pnp
use linux-server,host-pnp 添加server-pnp
出现下述问题需要改动php
改以下几行
这是因为pnp-0.4.14对PHP 5.3.0的支持还不是很好,其中有几个bug需要修改:
根据错误提示打开
vi/usr/local/nagios/share/pnp/include/function.inc.php
找到行1541附近修改为
if($level == 2&& $type == "complete" &&preg_match("/^NAGIOS_/",$tag)){
还会有两处错误需要修改,根据提示找到对应行进行修改:
line 556: 添加:date_default_timezone_set('UTC');
line 1033:修改为$pdf = new PDF('P', 'mm', 'A4'); 删除&
再重新重启nagios,应该就能看到图表了
利用插件扩展Nagios的监控功能—-构建监控远程主机
在client安装nrpe,
nrpe-2.12.tar.gz
nagios-plugins-1.4.16.tar.gz
建立nagios用户
useradd -s /sbin/nologin nagios
tar zxvf nagios-plugins-1.4.16.tar.gz
./configure
make && make install
编译nrpe
tar zxvf nrpe-2.12.tar.gz
./configure
make all && make install-plugin &&make install-daemon && make install-daemon-config
chown -R nagios.nagios /usr/local/nagios
修改/usr/local/nagios/libexec
找到allowed_allowed_hosts=127.0.0.1,192.168.0.254#服务端ip
启动nrpe
/usr/local/nagios/bin/nrpe -c/usr/local/nagios/etc/nrpe.cfg -d
测试
/usr/local/nagios/libexec/check_nrpe -H 127.0.0.1
NRPE v2.12
返回版本信息就算安装成功
定义监控服务内容
在/usr/local/nagios/etc/nrpe.cfg
command[check_users_1]=/usr/local/nagios/libexec/check_users-w 5 -c 10
command[check_load_1]=/usr/local/nagios/libexec/check_load-w 15,10,5 -c 30,25,20
command[check_sda_1]=/usr/local/nagios/libexec/check_disk-w 20% -c 10% -p /dev/sda1
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_1]=/usr/local/nagios/libexec/check_swap-w 20 -c 10
修改或者添加上面的东西
在服务端安装nrpe
tar zxvf nrpe-2.12.tar.gz
./configure --prefix=/usr/local/nagios
make all && make install-plugin
测试
/usr/local/nagios/libexec/check_nrpe -H192.168.0.102
NRPE v2.12
返回版本信息就算安装成功
定义一个check_nrpe监控命令
修改/usr/local/nagios/etc/objects/commands.cfg文件
添加如下内容
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
在services.cfg文件添加如下内容
define service {
use local-service
host_name remot-web
service_description disk
check_command check_nrpe!check_sda_1
}
define service {
use local-service
host_name remot-web
service_description load
check_command check_nrpe!check_load_1
}
define service {
use local-service
host_name remot-web
service_description users
check_command check_nrpe!check_users_1
}
define service {
use local-service
host_name remot-web
service_description swap
check_command check_nrpe!check_swap_1
}
define servicegroup{
servicegroup_name server-group
alias server
members remot-web,disk,remot-web,load,remot-web,users,remot-web,swap
}
测试和重启nagios
/usr/local/nagios/bin/nagios –v /usr/loca/nagios/etc/nagios.cfg
利用飞信实现nagios短信报警功能。(由于飞信版本升级,移动禁止低版本的继续使用,所以这个实验至今没做出来)
假如飞信安装在/usr/local/fetion下
配置飞信所需的动态链接库
vi /etc/ld.so.conf
添加
/usr/local/fetion
运行ldconfig
测试
ldd /usr/local/fetion/fetion
/usr/local/fetioni/fetion
出现帮助信息表示安装成功
--mobile=[手机号]
--sid=[飞信号]
--pwd=[密码]
--config=[文件名]
--index=[索引号]
接收者
--to=[手机号/ 飞信号/URL]
--msg-utf8=[utf8编码信息]
--msg-gb[编码信息]
--msg-type=[0/1/2]0普通信息,1长信息,2,智能短信
--query-cmcc-no 查询移动手机手机段
可先参数
--debug 显示调试信息
--hide 隐身登陆飞信
--proxy-ip=http 以代理的方式登陆
--proxy-port=http 以代理端口的方式登陆
测试是否发消息成功
/usr/local/fetion/fetion --mobile=158xxxxxxxx --pwd=飞信密码 --to=135xxxxxxxx --msg-gb="this is test"--debug
sms ok
表示成功
配置/usr/local/nagios/etc/command.cfg
添加如下内容
define command {
command_name notify-service-by-sms
command_line /usr/local/fetion/fetion --mobile=15810765409--pwd=飞信密码 --to=$CONTACTPAGER$ --msg-utf8="$HOSTADDRESS$'$HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$"
}
define command{
command_name notify-host-by-sms
command_line /usr/local/fetion/fetion --mobile=15810765409--pwd=飞信密码 --to=$CONTACTPAGER$ --msg-utf8="host $HOSTSTATE$alaer to for $HOSTNAME$ ! ON $DATETIME$"
}
配置/usr/local/nagios/etc/ctemplates.cfg
define contact{
name generic-contact
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r,f,s
host_notification_options d,u,r,f,s
service_notification_commands notify-service-by-email,notify-service-by-sms
host_notification_commands notify-host-by-email,notify-host-by-sms
register 0
}
配置/usr/local/nagios/etc/cpmtacts.cfg
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email xiaoxin@killdos.com
pager 15810765409}
文章评论