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用户和组
命令如下: