您的位置:首页 > 运维架构 > Linux

centos7-nagiospnp-4.08配置

2016-02-04 00:00 597 查看
摘要: Nagios是一款开源的免费网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或短信通知。

1.官网下载nagios-4.0.8、nagios-plugins-2.0.3
wget http://jaist.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.0.8/nagios-4.0.8.tar.gz
wget http://nagios-plugins.org/download/nagios-plugins-2.0.3.tar.gz
2.安装前系统的依赖检查

rpm –q httpd pnp gcc glibc glibc-common gd gd-devel make

没有的话用yum下载下:

yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make
3.创建nagios用户与用户组
useradd nagios
groupadd nagcmd
usermod -a -G nagcmd nagios
mkdir /usr/local/nagios
chown -R nagios:nagcmd /usr/local/nagios/
4.编译安装nagios-4.0.8
tar zxvf nagios-4.0.8.tar.gz
cd nagios-4.0.8
./configure --prefix=/usr/local/nagios
make all
make install
make install-init
make install-config
make install-commandmode
make install-webconf
5.配置httpd和php
(1)配置web登陆用户名和密码

创建nagios验证文件:
htpasswd -c /usr/local/nagios/etc/htpasswd nagiosadmin ##创建nagios登录web界面的用户名和密码

(2)vi /etc/httpd/conf/httpd.conf 加入以下内容
找到
user apache
group apache
修改为
user nagios
group nagcmd
(3) 在Apache 配置文件件/etc/httpd/conf/httpd.conf 中找到DirectoryIndex index.html
将其修改为:
DirectoryIndex index.html index.php
以上主要用于增加 php 文件的支持。
同时为了安全,需要经过授权才能访问 Nagios 的 Web 监控界面,请确保/etc/httpd/conf.d/nagios.conf 中有如下访问控制配置,一般编译后nagios.conf中会自动生成,若有需要,请自行修改。
# vi /etc/httpd/conf.d/nagios.conf
将21行和38行的htpasswd.user改为htpasswd(注:也可不进行更改,但在下部中要加全路径名)
<Directory "/usr/local/nagios/sbin">
# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
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">
# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile /usr/local/nagios/etc/htpasswd
Require valid-user
</Directory>
(4)修改SELinux,有2种办法
① vi /etc/sysconfig/selinux 要重启机器reboot
SELINUX=disabled
②临时关闭(不用重启机器):
# setenforce 0 ##设置SELinux 成为permissive模式 (关闭SELinux)
# setenforce 1 ##设置SELinux 成为enforcing模式 (开启SELinux)
检查selinux是否关闭:
#getenforce #如果显示enforcing则没有关闭

6、安装nagios-plugins
tar zxvf nagios-plugins-2.0.3.tar.gz
cd nagios-plugins-2.0.3
./configure --prefix=/usr/local/nagios
make
make install
检查配置是否有错误:/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
7、设置开机启动
# chkconfig --add nagios ##增加nagios为系统服务
#systemctl enable httpd.service ##设置CentOS开机启动http服务
# systemctl start httpd.service
# systemctl start nagios.service
8、Nagios 目录与相关配置文件说明
Nagios 安装完成后,/usr/local/nagios/目录下会生成 nagios 相关目录及配置文件,默认的的配置文件在/usr/local/nagios/etc 目录下。关于详细的描述,见下表:
表 1. Nagios 相关目录的名称及用途
目录名称: 作用



备注: Nagios 在配置方面非常灵活,默认的配置文件并不是必需的。可以使用这些默认的配置文件,也可以创建自己的配置文件,然后在主配置文件 nagios.cfg 中引用即可。
Nagios 配置文件间的关联
Nagios 的配置过程涉及几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等,从这些定义可以看出,Nagios 的各个配置文件之间是互为关联、彼此引用的。成功配置一台 Nagios 监控系统,需要掌握每个配置文件之间依赖与被依赖的关系,可从下面四个步骤来入手,第一步:定义哪些主机、主机组、服务和服务组,第二步:要定义这个监控要通过什么命令实现,第三步:要定义监控的时间段,第四步:要定义主机或服务出现问题时要通知的联系人和联系人组;强烈建议依据以上顺序对 Nagios 系统进行相关配置。
Nagios 配置设定
Nagios 安装成功后,会在/usr/loca/nagios 目下生成相应的主机,服务、命令、模板等配置文件,同时也可看到之前设置的 Nagios 授权目录认证文件 htpasswed.users,而 Object 目录是存放一些配置文件模板,主要用于定义 Nagios 对象,具体如下图:
自定义监控目录
# cd /usr/local/nagios/etc
# mkdir monitor
# chown nagios:nagios monitor
修改 nagios.cfg 配置文件,修改默认定义的对象配置文件为common_cfg目录,并在 nagios.cfg 文件增加一行:cfg_dir=/usr/local/nagios/etc/monitor
Nagios 的配置大多是对监控对象配置文件进行修改配置,这里复制了 objects 目录下的所需对象配置文件模板,同时在 monitor 文件下创建了独立的配置文件 hosts.cfg 和 services.cfg 来定义主机和服务,创建grps-host.cfg和grps-service.cfg来定义主机组和服务组。至于联系人和监控的时间段这里保持默认配置。
下面主要描述下此平台架设相关的几个主要配置文件具体含义,分别为:templates.cfg、hosts.cf、services.cfg.
templates.cfg 文件
默认模板配置文件
define contact{
name generic-contact #联系人名称
service_notification_period 24x7 #当服务出现异常时,发送通知的时间段
host_notification_period 24x7 #当主机出现异常时,发送通知的时间段
service_notification_options w,u,c,r #通知发出的情况w即 warning 警告状态,u即unknown 不明状态,c即criticle 紧急状态,r即recover 恢复状态
host_notification_options d,u,r #主机何种状态需要发送通知,d即down,表示宕机状态,u即unreachable,不可到达状态,r即recovery,恢复状态
service_notification_commands notify-service-by-email #服务故障时,发送通知的方式,其中notify-service-by-email在 commands.cfg 文件中定义
host_notification_commands notify-host-by-email #主机故障时,发送通知的方式,其中“notify-host-by-email”在 commands.cfg 文件中定义
}
define host{
name linux-server #主机名称
use generic-host #use 表示引用,也就是将主机 generic-host 的所有属性引用到 linux-server 中来
check_period 24x7 #这里的 check_period 告诉 nagios 检查主机的时间段
check_interval 5 #nagios 对主机的检查时间间隔,这里是 5 分钟
retry_interval 1 #重试检查时间间隔,单位是分钟
max_check_attempts 10 #nagios 对主机的最大检查次数
check_command check-host-alive #指定检查主机状态的命令,其中“check-host-alive”在 commands.cfg 文件中定义
notification_period workhours #主机故障时,发送通知的时间范围,其中“workhours”在 timeperiods.cfg 中进行了定义
notification_interval 30 #在主机出现异常后,故障没解决,nagios 再次发出通知的时间。单位分钟
notification_options d,u,r #主机何状态时发送通知给使用者,d即down,宕机状态,u 即 unreachable,不可达状态,r 即 recovery,恢复状态
contact_groups admins #指定联系人组,这个“admins”在 contacts.cfg 文件中定义
}
define service{
name local-service #定义一个服务名称
use generic-service #引用服务local-service的属性信息,local-service 主机在 templates.cfg 文件中进行了定义
max_check_attempts 4 #最大检测 4 次,为了确定服务最终状态
normal_check_interval 5 #每 5 分钟检测一次
retry_check_interval 1 #每 1 分钟重新检测服务,最终的状态能被确定
}
hosts.cfg 文件
此文件默认情况下不存在,需要手动创建。hosts.cfg 主要用来指定被监控的主机地址及相关属性信息。配置如下表:
定义主机配置实例
define host { use linux-server #引用主机 linux-server 的属性信息,linux-server 主机在 templates.cfg 文件中进行了定义 host_name mail1 #被监控主机名 alias mail server #被监控主机别名 address 192.168.1.162 #被监控主机 IP 地址}
services.cfg 文件
此文件在默认情况下也不存在,需要手动创建。services.cfg 文件主要用于定义监控的服务和主机资源,例如监控 HTTP 服务、FTP 服务、主机磁盘空间、主机系统负载等。
定义服务配置
define service{ use local-service #引用服务local-service 的属性,local-service 主机在 templates.cfg 文件中进行定义 host_name mail1 #被监控主机名 service_description SSH #监控的服务 check_command check_ssh # nagios 插件监控指令 }define service{ use local-service host_name mail1 service_description SSHD check_command check_tcp!22 # 使用的检测命令,同时多个参数匹配用 “!” 分隔 }
定义主机组
# Define an optional hostgroup for Linux machinesdefine hostgroup{ hostgroup_name inux-servers alias Linux Servers }
定义服务组
# Define an optional servicegroup for Linux machinesdefine servicegroup{ servicegroup_name linux-services alias Linux Services }

9. 安装 RRDtool
#yum -y install zlib zlib-devel libpng libpng-devel \ freetype freetype-devel libart_lgpl libart_lgpl-devel \ libxml2 libxml2-devel gd gd-devel cairo cairo-devel \ pango pango-devel php-gd perl-rrdtool rrdtool
10. 编译安装 PNP
#wget -c http://sourceforge.net/projects/pnp4nagios/files/PNP-0.6/pnp4nagios-0.6.24.tar.gz#tar zxvf pnp4nagios-0.6.24.tar.gz#cd pnp4nagios-0.6.24#./configure\--with-nagios-user=nagios \--with-nagios-group=nagios \--with-rrdtool=/usr/bin/rrdtool \--with-perfdata-dir=/usr/local/nagios/share/perfdata#make all#make install#make install-webconf#make install-config#make install-init

11. PNP 配置文件定义
在 PNP 安装完成后,默认安装目录下回自带相应的模板配置文件,因此只需要参考相应的模板文件进行修改即可,
<span; style="margin: 0px; padding: 0px;">
1. PNP 配置文件定义
{
1.cd /usr/local/pnp4nagios/etc
2.mv misccommands.cfg-sample misccommands.cfg
3.mv nagios.cfg-sample nagios.cfg
4.mv rra.cfg-sample rra.cfg
}
打开 process_perfdata.cfg 文件,修改相关内容。可从下图的注释信息了解到,将数字 0 变更为 2 是开启了日志的调试功能,开启日志调试后pnp每次处理都会在LOG_FILE指定的文件中生成日志。
修改 Nagios 相关配置文件,在nagios界面中增加pnp图标
修改 templates.cfg,增加一个定义 PNP 的 host 和 service,根据pnp4nagios安装的位置修改URL,见下图:
define host{ name hosts-pnp register 0 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=_HOST_ process_perf_data 1 }define service{ name services-pnp register 0 action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/popup?host=$HOSTNAME$&srv=$SERVICEDESC$ process_perf_data 1 }
修改 nagios.cfg,如果想让 nagios 将数据输出,首先要修改 nagios 的主配置文件 nagios.cfg,找到如下几项,如有注释的将其去掉。修改后的信息如下:

12. 增加 nagios 数据输出设置
#vim /usr/local/nagios/etc/nagios.cfg
process_performance_data=1
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
host_perfdata_file_mode=a
service_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
service_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file
service_perfdata_file_processing_command=process-service-perfdata-file
enable_environment_macros=1
修改 commands.cfg
process-host-perfdata 和 process-service-perfdata 指令声明了 nagios 输出哪些值到输出文件中。不过这些定义相对简单,而 PNP 提供了一个 Perl 脚本,非常详细地定义了一个输出数据的方法,process_perfdata.pl 其实是 PNP 自带的一个脚本,这个脚本在 PNP 安装完成后会自动生成。因此,可以将 process-host-perfdata 和 process-service-perfdata 指令中对应的执行命令的内容替换成此脚本。增加下的内容:
在 commands.cfg 文件中增加性能图片配置
# 'process-host-perfdata' command definitiondefine command{# command_name process-host-perfdata command_name process-host-perfdata-file command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/host-perfdata }# 'process-service-perfdata' command definitiondefine command{# command_name process-service-perfdata command_name process-service-perfdata-file command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl --bulk=/usr/local/pnp4nagios/var/service-perfdata
修改 hosts.cfg 与 services.cfg
将 hosts-pnp 和 services-pnp 引用到 hosts.cfg 和 services.cfg 的每个定义段中,修改后的 hosts.cfg 内容如图 13 和图 14 所示:
在 hosts.cfg 文件中增加性能图片配置
define host {use linux-server,hosts-pnphost_name mail1address 192.168.X.Xhostgroups inux-servers}define host {use linux-server,hosts-pnphost_name test1-lnxaddress 192.168.X.Xhostgroups inux-servers}
在 services.cfg 文件中增加性能图片配置
define service{use local-service,services-pnphost_name mail1service_description SSH check_command check_ssh servicegroups linux-services}define service{use local-service,services-pnphost_name mail1service_description SSHDcheck_command check_tcp!22 servicegroups linux-services}

13.WEB测试登陆访问
http://IP/nagios 输入用户名nagiosadmin和密码登陆测试
点图标显示这个图片证明pnp配置成功,然后mv install.php installcs.php,就可以了



安装配置遇到的问题总结:

1.centos7 /usr/local/nagios/etc生成的验证密码文件是这个htpasswd,而配置文件nagios.conf和pnp4nagios.conf里面的配置文件名字却是AuthUserFile /usr/local/nagios/etc/htpasswd.users要改成AuthUserFile /usr/local/nagios/etc/htpasswd

2.点图标报这个错误,php权限问题,因为apache我们制定了nagios用户和组,所以要进入cd /var/lib/php/ 敲命令ll看php属于的用户和组,并将其改为nagios用户和组



命令如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  nagios pnp rrdtool centos7