话不多说,下面开始,nagios具体的介绍,可以搜一下,这篇文章为作者在实际操作中整理出来的,~如果不想在线看,可以下载文档,请点击文档下载
环境准备
此文档共用2台服务器的配置,操作系统均为centOS6.7,安装用户都为nagios用户,所有的安装都必须基于nagios,当权限不足时,采用sudo的方式,具体信息如下:
IP地址 | 角色 | 安装用户 |
---|---|---|
192.168.1.10 | Nagios服务端 | nagios |
192.168.1.11 | 被监控主机 | nagios |
nagios服务端安装步骤
编译安装nagios软件
安装需要192.168.1.10服务器预装cc,glibc,glibc-common,gd,gd-devel,xinetd,openssl-devel等,执行命令:
[nagios@localhost ~]$ rpm -qa | grep **
#依次检查是否安装以上软件,如果没有安装则执行命令:
[nagios@localhost ~]$ sudo yum install -y **
依赖部分处理好之后,下面进行nagios的编译安装,nagios的下载地址为:nagios官网下载 ,下载好之后,进入防止安装包的目录,解压压缩包:
[nagios@localhost ~]$ tar zxvf nagios-3.5.0.tar.gz
进入解压后的目录: cd /home/nagios/nagios依次执行:
./configure --prefix=/usr/local/nagios
make all
sudo make install
sudo make install-init
make install-commandmode
make install-config
sudo chkconfig --add nagios
sudo chkconfig --level 35 nagios on
最后执行
sudo chkconfig --list nagios
显示如下结果:
[图片上传失败...(image-d2a366-1551885373192)]
下面来验证nagios是否被安装:
切换到目录/usr/local/nagios/下,查看目录结构如下:
[图片上传失败...(image-699daa-1551885373192)]
如果以上目录都存在,说明程序已经被安装到服务器中,各个目录的作用为:
目录 | 作用 |
---|---|
bin | 可执行程序所在目录 |
etc | 配置文件所在目录 |
libexec | 外部插件所存放的目录 |
sbin | Nagios CGI文件所在目录,也就是执行外部命令所需文件所在的目录 |
share | 网页文件存放目录 |
var | 日志,lock文件目录 |
安装nagios插件
nagios插件下载地址为:官网下载解压安装包:
tar zxvf nagios-plugins-2.0.1.tar.gz
进入解压目录:
[nagios@localhost ~]$ cd nagios-plugins-2.0.1
[nagios@localhost nagios-plugins-2.0.1]$ pwd
/home/nagios/nagios-plugins-2.0.1 #解压路径
分别执行命令:
./configure --prefix=/usr/local/nagios
make
sudo make install
安装apache和php
安装apache
nagios提供了web页面,可以观看被监控的资源状态,所以需安装apache与php来支持此项功能,那么首,查看操作系统是否自带了apache,如果有就删除掉:
[nagios@localhost nagios-plugins-2.0.1]$ rpm -qa | grep httpd
httpd-tools-2.2.15-45.el6.centos.x86_64
httpd-2.2.15-45.el6.centos.x86_64
#删除自带的apache
[nagios@localhost nagios-plugins-2.0.1]$ sudo rpm -e --nodeps httpd
下载apache安装包 官网下载 解压下载的安装包并安装:
#创建文件夹,存到执行脚本配置文件等
sudo mkdir /usr/local/apache2
#解压安装包
tar zxvf httpd-2.2.23.tar.gz
#进入安装路径
cd httpd-2.2.23
#配置值向目录,通第一条命令的目录
./configure --prefix=/usr/local/apache2
#编译
make
#安装
sudo make install
安装php
php安装包下载地址:官网下载,下载后执行以下命令:
#解压安装包
tar zxvf php-5.4.10.tar.gz
#创建文件夹,存到执行脚本配置文件等
sudo mkdir /usr/local/php
#进入解压之后的目录
cd php-5.4.10
#配置指向目录
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs
执行最后一条语句时,出现如下错误:
[图片上传失败...(image-391ebf-1551885373192)]
说明没有安装libxml2和libxml2-devel,安装即可:
#已经存在libxml2,说明只安装libxml2-devel即可
[nagios@localhost php-5.4.10]$ rpm -qa libxml2
libxml2-2.7.6-20.el6.x86_64
#安装libxml2-devel
sudo yum install -y libxml2-devel
执行成功,接续执行:
#编译
make
#安装
make install
最后将安装目录下的php.ini-production文件,拷贝至/usr/local/php/lib/下并命名为php.ini
sudo cp php.ini-production /usr/local/php/lib/php.ini
配置apache
编辑apache的配置文件httpd.conf
sudo vim /usr/local/apache2/conf/httpd.conf
找到:
User daemon
Group daemon
修改为:
Group nagios
找到:
DirectoryIndex index.html
修改为:
DirectoryIndex index.html index.php
AddType application/x-httpd-php .php
为了增加用户的访问权限,在此文件中增加以下配置:
#setting for magion
ScriptAlias /nagios/cgi-bin "/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
Alias /nagios "/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
创建apache目录验证文件
在上面的配置中,指定了权限验证文件/usr/local/nagios/etc/htpasswd,下面来创建这个文件,最后的nagios是用户名,输入命令后,需要手工输入密码:
/usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd nagios
最后启动apache服务:
sudo /usr/local/apache2/bin/apachectl start
访问地址http://yourserver/nagios
[图片上传失败...(image-20e1f0-1551885373192)]
输入用户名密码
[图片上传失败...(image-2491da-1551885373192)]
出现上述页面,即apache安装成功
配置nagios server
默认情况下,nagios没有做任何配置,那么下面介绍一些主要配置文件和如何配置服务,配置文件主要在目录: /usr/local/nagios/etc/
[图片上传失败...(image-823eed-1551885373192)]
nagios的配置文件,是相互联系的,搞清楚具体的配置,就可以弄清楚他们之间的依赖:
- templates.cfg
nagios主要用于监控主机资源以及服务,在nagios配置中称为对象,为了不必重复定义一些监控对象,nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便于多次引用,这就是templates.cfg的作用,具体的含义如下:
#一般的通用配置,下面具体的某种类型配置中,可以引用次配置
define contact{
name generic-contact ; 别名
service_notification_period 24x7 当服务出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义
host_notification_period 24x7 ;当主机出现异常时,发送通知的时间段,这个时间段"24x7"在timeperiods.cfg文件中定义
service_notification_options w,u,c,r,f,s ; 什么级别的通知(针对主机),会被发送出去(w:warn|u:unknow|c:criticle紧急状态|r:recover恢复状态|d:宕机),f,s含义还没查到
host_notification_options d,u,r,f,s ;什么级别的警告(针对服务)会被通知出去
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文件中定义
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL CONTACT, JUST A TEMPLATE!
}
define host{
name generic-host ; 主机名称,这里的主机名,并不是直接对应到真正机器的主机名 ; 乃是对应到在主机配置文件里所设定的主机名
notifications_enabled 1 ; Host notifications are enabled 主机启动通知,1已启用,0为启用
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data 其值可以为0或1,其作用为是否启用Nagios的数据输出功能;如果将此项赋值为1,那么Nagios就会将收集的数据写入某个文件中,以备提取
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_period 24x7 ; Send host notifications at any time 指定“发送通知”的时间段,也就是可以在什么时候发送通知给使用者
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
# 功能同上,只不过这个是针对linux服务器的特殊配置
define host{
name linux-server ; The name of this host template
use generic-host ; This template inherits other values from the generic-host template use表示引用,也就是将主机generic-host的所有属性引用到linux-server中来; 在nagios配置中,很多情况下会用到引用
check_period 24x7 ; By default, Linux hosts are checked round the clock 这里的check_period告诉nagios检查主机的时间段
check_interval 5 ; Actively check the host every 5 minutes 对主机的检查间隔时间,单位/分钟
retry_interval 1 ; Schedule host check retries at 1 minute intervals cho 重试间隔,单位/分钟
max_check_attempts 10 ; Check each Linux host 10 times (max) 最大重试此书
check_command check-host-alive ; Default command to check Linux hosts 指定检查主机状态的命令,其中“check-host-alive”在commands.cfg文件中定义
notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day 主机故障时,发送通知的时间范围,其中“workhours”在timeperiods.cfg中进行了定义
; Note that the notification_period variable is being overridden from
; the value that is inherited from the generic-host template!
notification_interval 0 ; Resend notifications every 2 hours 在主机出现异常后,故障一直没有解决,nagios再次对使用者发出通知的时间,0代表值通知1次
notification_options d,u,r ; Only send notifications for specific host states 定义主机在什么状态下可以发送通知给使用者
contact_groups admins ; Notifications get sent to the admins by default 指定联系人组,这个“admins”在contacts.cfg文件中定义
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}
# Generic service definition template - This is NOT a real service, just a template!定义服务的通用配置,下面的可以利用use来引用
define service{
name generic-service ; The 'name' of this service template 为这个服务取一个名字
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service 'freshness'
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
is_volatile 0 ; The service is not volatile
check_period 24x7 ; The service can be checked at any time of the day 告诉nagios检查服务的时间段
max_check_attempts 3 ; Re-check the service up to 3 times in order to determine its final (hard) state
normal_check_interval 10 ; Check the service every 10 minutes under normal conditions
retry_check_interval 2 ; Re-check the service every two minutes until a hard state can be determined
contact_groups admins ; Notifications get sent out to everyone in the 'admins' group 指定联系人组
notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events
notification_interval 60 ; Re-notify about service problems every hour
notification_period 24x7 ; Notifications can be sent out at any time
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
#定义一个监控本机的service
define service{
name local-service ; The name of this service template
use generic-service ; Inherit default values from the generic-service definition
max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state
normal_check_interval 5 ; Check the service every 5 minutes under normal conditions
retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}
#其余的配置,如打印机,windowServer,交换机的监控这里暂时不介绍
- resource.cfg
这个配置文件只有一行:
$USER1$=/usr/local/nagios/libexec
指定了nagios可执行插件的路径,这个根据自己的实际路径来决定.将来配置插件或者自定义插件,会大量用到这个变量
commands.cfg
这个文件是定义一些命令的时候,需要修改的文件,目前不需要修改默认的配置文件,后面章节中会有添加自定义服务,那里会详细介绍如何修改hosts.cfg文件
这个文件需要手动创建,在/usr/local/nagios/etc/objects目录下创建,内容如下:
define host{
use linux-server ;引用主机linux-server的属性信息,linux-server主机在templates.cfg文件中进行了定义。
host_name nagios1 ;主机名
alias nagios1 ;主机别名
address 192.168.1.11 ;被监控的主机地址,这个地址可以是ip,也可以是域名。
}
#定义一个主机组
define hostgroup{
hostgroup_name bsmart-servers ;主机组名称,可以随意指定。
alias bsmart servers ;主机组别名
members nagios1 ;主机组成员,其中“Nagios-Linux”就是上面定义的主机。
}
- localhost.cfg
这个配置文件是监控nagios server本身的
# 为本机定义一个host,取名为localhost
define host{
use linux-server ; 引用模板配置文件里的内容
; This host definition will inherit all variables that are defined
; in (or inherited by) the linux-server host template definition.
host_name localhost
alias localhost
address 127.0.0.1
}
#定义主机组,成员只有localhost
define hostgroup{
hostgroup_name linux-servers ; The name of the hostgroup
alias Linux Servers ; Long name of the group
members localhost ; Comma separated list of hosts that belong to this group
}
#配置文件的其他内容都为利用默认的插件,配置的一些服务,也就是localhost需要监控的一些项目
- services.cfg
这个文件也需要手工创建, 在/usr/local/nagios/etc/objects下创建,主要内容为:
define service{
use local-service ;引用local-service服务的属性值,local-service在templates.cfg文件中进行了定义。
host_name nagios1 ;指定要监控哪个主机上的服务,“Nagios-Server”在hosts.cfg文件中进行了定义。
service_description check-host-alive ;对监控服务内容的描述,以供维护人员参考。
check_command check-host-alive ;指定检查的命令。
}
define service{
use local-service
host_name nagios1
service_description Current Load
check_command check_nrpe!check_load
}
define service{
use local-service
host_name nagios1
service_description Check Disk sda1
check_command check_nrpe!check_sda1
}
define service{
use local-service
host_name nagios1
service_description Total Processes
check_command check_nrpe!check_total_procs
}
define service{
use local-service
host_name nagios1
service_description Current Users
check_command check_nrpe!check_users
}
define service{
use local-service
host_name nagios1
service_description Check Zombie Procs
check_command check_nrpe!check_zombie_procs
}
- contacts.cfg
主要配置一些联系人,联系人组:
#联系人
define contact{
contact_name gzd ; Short name of user
use generic-contact ; Inherit default values from generic-contact template (defined above)引用generic-contact的属性信息,其中“generic-contact”在templates.cfg文件中进行定义
alias gzd ; Full name of user
email [email protected] ;
}
#联系人组,成员只有gzd
define contactgroup{
contactgroup_name admins
alias admins
members gzd
}
- timeperiods.cfg
时间的定义文件:
#24*7也就是每天
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days 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 workhours
alias Normal Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
#美国的节假日,用不到,可以直接删除
define timeperiod{
name us-holidays
timeperiod_name us-holidays
alias U.S. Holidays
january 1 00:00-00:00 ; New Years
monday -1 may 00:00-00:00 ; Memorial Day (last Monday in May)
july 4 00:00-00:00 ; Independence Day
monday 1 september 00:00-00:00 ; Labor Day (first Monday in September)
thursday 4 november 00:00-00:00 ; Thanksgiving (4th Thursday in November)
december 25 00:00-00:00 ; Christmas
}
- cgi.cfg
此文件用来控制相关cgi脚本,如果想在nagios的web监控界面执行cgi脚本,例如重启nagios进程,关闭nagios通知,停止nagios主机检测等,就需要配置cgi.cfg文件了,由于nagios的web监控界面验证用户为nagios,所以只需在cgi.cfg文件中需要修改的配置信息如下:
default_user_name=nagios
authorized_for_system_information=nagiosadmin, nagios
authorized_for_configuration_information=nagiosadmin, nagios
authorized_for_system_commands= nagios
authorized_for_all_services=nagiosadmin, nagios
authorized_for_all_hosts=nagiosadmin, nagios
authorized_for_all_service_commands=nagiosadmin, nagios
authorized_for_all_host_commands=nagiosadmin, nagios
- nagios.cfg
nagios的核心配置文件,所有的配置,需要在此定义,才可以生效.
log_file=/usr/local/nagios/var/nagios.log # 定义nagios日志文件的路径
cfg_file=/usr/local/nagios/etc/objects/commands.cfg # “cfg_file”变量用来引用对象配置文件,如果有更多的对象配置文件,在这里依次添加即可。
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
cfg_file=/usr/local/nagios/etc/objects/services.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg # 本机配置文件
cfg_file=/usr/local/nagios/etc/objects/windows.cfg # windows 主机配置文件(不用可以删掉)
object_cache_file=/usr/local/nagios/var/objects.cache # 该变量用于指定一个“所有对象配置文件”的副本文件,或者叫对象缓冲文件
precached_object_file=/usr/local/nagios/var/objects.precache
resource_file=/usr/local/nagios/etc/resource.cfg # 该变量用于指定nagios资源文件的路径,可以在nagios.cfg中定义多个资源文件。
status_file=/usr/local/nagios/var/status.dat # 该变量用于定义一个状态文件,此文件用于保存nagios的当前状态、注释和宕机信息等。
status_update_interval=10 # 该变量用于定义状态文件(即status.dat)的更新时间间隔,单位是秒,最小更新间隔是1秒。
nagios_user=nagios # 该变量指定了Nagios进程使用哪个用户运行。
nagios_group=nagios # 该变量用于指定Nagios使用哪个用户组运行。
check_external_commands=1 # 该变量用于设置是否允许nagios在web监控界面运行cgi命令;
# 也就是是否允许nagios在web界面下执行重启nagios、停止主机/服务检查等操作;
# “1”为运行,“0”为不允许。
command_check_interval=10s # 该变量用于设置nagios对外部命令检测的时间间隔,如果指定了一个数字加一个"s"(如10s);
# 那么外部检测命令的间隔是这个数值以秒为单位的时间间隔;
# 如果没有用"s",那么外部检测命令的间隔是以这个数值的“时间单位”的时间间隔。
interval_length=60 # 该变量指定了nagios的时间单位,默认值是60秒,也就是1分钟 # 即在nagios配置中所有的时间单位都是分钟。
最后验证配置文件是正确:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
如果出现以下内容,则验证成功:
[图片上传失败...(image-3e4265-1551885373192)]
nagios的启动,停止操作
启动主要有三种方式:
#指定配置文件启动
/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
#初始化脚本启动
/etc/init.d/nagios start
#利用服务启动
service nagios start
重启:
#初始化脚本重启
/etc/init.d/nagios reload
或者
/etc/init.d/nagios restart
#利用服务启动
service nagios restart
#可以通过web监控页的 "Process Info" -> "Restart the Nagios process"来重启nagios
停止
#初始化脚本重启
/etc/init.d/nagios stop
#利用服务启动
service nagios stop
#可以通过web监控页的 "Process Info" -> "Shutdown the Nagios process"来停止nagios
启动nagios后,登录web页面,点击左侧菜单"hosts",可以看到我们在上面定义的主机"localhost":
[图片上传失败...(image-35349d-1551885373192)]
点击左侧菜单的"service",可以看到监控的服务状态,如果为PENDING,说明服务等待执行中,稍等一会或者调小运行间隔可缩短等待时间,可以看到,服务的监控状态均绿色,"OK"状态,表示正常:
[图片上传失败...(image-a88981-1551885373192)]
至此,nagios Serveer的配置已经完成!
nagios客户端配置
安装nagios插件和NRPE
被监控主机上需要安装NRPE和安装nagios-plugins-2.0.1.tar.gz
这个插件和nagios server上的插件为同一,安装方法也一样:
# mkdir /usr/local/nagios
# tar zxvf nagios-plugins-2.0.1.tar.gz
# cd nagios-plugins-2.0.1
# configure --prefix=/usr/local/nagios
# make && make install
安装NPRE:
下载请点击:下载地址!
安装需SSL库,运行:sudo yum install -y openssl-devel安装,安装后,一次执行以下命令:
#解压安装包
tar zxvf nrpe-2.8.1.tar.gz
#进入解压目录
cd nrpe-2.8.1
#配置安装
./configure
#编译
make all
#安装check_nrpe插件
make install-plugin
#安装daemon
make install-daemon
#安装配置文件
make install-daemon-config
#安装xinetd
make install-xinetd
安装好了之后,可以看到多了这个文件:/etc/xinetd.d/nrpe,编辑这个文件:
service nrpe
{
flags = REUSE
socket_type = stream
port = 5666
wait = no
user = nagios
group = nagios
server = /usr/local/nagios/bin/nrpe
server_args = -c /usr/local/nagios/etc/nrpe.cfg --inetd
log_on_failure += USERID
disable = no
#在这里增加nagios server的ip,空格分割
only_from = 127.0.0.1 192.168.1.10
}
编辑etc/services 文件,增加nrpe服务,增加内容:
nrpe 5666/tcp # nrpe
重启xinted服务:
service xinetd restart
输入命令netstat -na | grep :5666,出现:
[图片上传失败...(image-3ce7d-1551885373192)]
则为启动正常!
配置监控主机nrpe服务
安装NRPE:
一次执行命令:
tar zxvf nrpe-2.13.tar.gz
cd nrpe-2.13
./configure
make all
make install-plugin
以上内容结束,重启nagios服务!
被监控主机的配置
修改/usr/local/nagios/etc/nrpe.cfg配置文件:
ommand[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_sda1]=/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
如上图,我们在被监控的主机上定义的命令,需要在此配置文件给出!
最后请重启nagios
PNP4Nagios
PNP4Nagios 是一个用于显示nagios性能图表的插件,基于RRDTool日志分析,并以 Kohana(一个 PHP 开发框架)呈现在 Web 端,可以以 Action Url 的形式集成到 Nagios 中,此处的安装主机均在nagios server机器上安装
Nagios对服务或主机监控的是一个瞬时状态,有时候系统管理员如果需要了解主机在一段时间内的性能以及服务的响应状态,并且形成图表时,就需要通过查看日志数据来分析,但是这种方式不但繁琐,而且抽象,可以利用PNP来解决这个问题
安装PNP
PNP是一个小巧的开源软件包,它基于PHP和PERL,PNP可以利用rrdtool工具将Nagios采集的数据绘制成相关的图表,然后显示主机或者服务在一段时间内的运行状况
安装rrdtool
rrdtool是一个生成图表的工具,下载地址为: 下载地址
以此执行以下命令:
#进入压缩包所在目录
cd /home/nagios/
创建配置目录
sudo mkdir /usr/local/rrdtool
解压压缩包,注意这里用tar xvf命令解压
tar xvf rrdtool-1.4.8.tar.gz
进入解压包目录
cd rrdtool-1.4.8
#配置目录
./configure --prefix=/usr/local/rrdtool
提示需要安装依赖:perl和fix库文件:
yum -y install pango*
yum -y install perl*
继续执行
make
make install
安装pnp4nagios
tar -xvzf pnp4nagios-0.6.21.tar.gz
cd pnp4nagios-0.6.21
./configure --with-nagios-user=nagios --with-nagios-group-nagios --with-rrdtool=/usr/local/rrdtool/bin/rrdtool
make all
sudo make install
sudo make install-webconf
make install-config
make install-init
配置PNP
创建配置文件misccommands.cfg, nagios.cfg, rra.cfg, check_all_local_disks.cfg, check_nrpe.cfg, check_nwstat.cfg等
执行命令:
cp misccommands.cfg-sample misccommands.cfg
cp nagios.cfg-sample nagios.cfg
cp rra.cfg-sample rra.cfg
进入pages目录,创建配置文件web_traffic.cfg
cp web_traffic.cfg-sample web_traffic.cfg
cd ../check_commands
cp check_all_local_disks.cfg-sample check_all_local_disks.cfg
cp check_nrpe.cfg-sample check_nrpe.cfg
cp check_nwstat.cfg-sample check_nwstat.cfg
最后,重启NPCD服务:
sudo /etc/init.d/npcd restart
修改nagios server配置文件
修改nagios.cfg文件:
sudo vim /usr/local/nagios/etc/nagios.cfg
process_performance_data=0
#修改为
rocess_performance_data=1
#打开注释
host_perfdata_command=process-host-perfdata
service_perfdata_command=process-service-perfdata
修改/usr/local/nagios/etc/objects/commonds.cfg:
增加下面内容:
#ss-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-
command_line /usr/local/pnp4nagios/libexec/process_perfdata.pl
修改 /usr/local/nagios/etc/objects/templates.cfg:
添加:
define host {
name hosts-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$
}
define service {
name services-pnp
register 0
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
}
修改vim /usr/local/nagios/etc/objects/services.cfg:
所有服务引用services-pnp服务,例如:
define service{
use local-service,services-pnp
host_name nagios1
service_description Current Load
check_command check_nrpe!check_load
}
最后,重启nagios server
配置pnp4nagios虚拟目录
执行命令: vi /usr/local/apache2/conf/httpd.conf,在文档末尾添加:
Alias /pnp4nagios "/usr/local/pnp4nagios/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
修改之后,重启apache服务
最后验证是否安装正确:
[图片上传失败...(image-34aec3-1551885373192)]
图标已经出现(途中红框部分),点击进去,发现页面报错误:
[图片上传失败...(image-af70d7-1551885373192)]
解决办法,可以将/usr/local/pnp4nagios/share/ install.php文件删除即可.
删除后,重启点击图标,可以看到:
[图片上传失败...(image-59c129-1551885373192)]
以上则安装成功!
安装nagiosql
NagiosQL是一个基于Web方式的Nagios配置管理工具,它使用PHP语言开发,可运行在Apache下,后台使用Mysql数据库.同时,NagiosQL也是一个开源软件,Nagios监控配置信息都存放于文件中,配置和修改都需要手工编辑文件,这样十分不便,尤其当监控的内容增多时,问题就更加明显.NagiosQL就是一款解决此类问题的软件,它提供了可视化的配置环境(基于Web方式),以下的所有安装,均在nagios server上进行
安装nagiosql
安装包下载地址:下载请点击
解压安装包:
tar zxvf /home/nagios/nagiosql_311.tar.gz
将解压包放入nagios目录下:
mv nagiosql /usr/local/nagios/
建立配置文件目录:
建立nagiosql导出nagios的配置文件目录,命令如下:
sudo mkdir -p /etc/nagiosql/{hosts,services,backup,import}
sudo mkdir -p /etc/nagiosql/backup/{hosts,services}
修改httpd.conf:
添加nagiosql的虚拟目录,文件目录:
/usr/local/apache2/conf/httpd.conf
添加的内容为:
Alias /nagiosql "/usr/local/nagios/nagiosql/"
Options None
AllowOverride None
Order allow,deny
Allow from all
最后重启apache:
sudo /usr/local/apache2/bin/apachectl restart
访问nagiosql web页面,地址为访问地址: http://yourserver/nagiosql
出现异常:
[图片上传失败...(image-a69adc-1551885373192)]
说明php环境没有安装gettext,那么下面安装gettext
进入php解压包里的目录: /home/nagios/php-5.4.10/ext/gettext
依次执行命令:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make
make install
最后,修改文件/usr/local/php/lib/php.ini,在文件里增加内容:
extension = "gettext.so"
重新打开后,显示如下则正常:`
[图片上传失败...(image-eece90-1551885373192)]
开始安装
点击开始安装,出现错误:"mysql组件未安装",这个错误并不是没有安装mysql数据库造成的,而是因为PHP在安装时,没有安装mysql相关模块造成的,那么,下面开始说明,如何在php已经安装的情况下,安装php-mysql组件:
进入php的解压目录:
所有php的版本都要统一的,文档中都是用的同一PHP:
cd /home/nagios/php-5.4.10/ext/mysql
执行命令:
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --with-mysql=/usr/ --with-zlib-dir=/usr/local/lib
这里有个问题,通过yum安装的mysql, "--with-mysql"参数填写"/usr/"就好,这个初步判断是由于configure脚本的内容决定的,继续添写下级目录,会报错找不到mysql头文件.上述命令执行后,如果报错信息为:
configure: error: Cannot find libmysqlclient under /usr.
Note that the MySQL client library is not bundled anymore!
解决办法为执行命令:
ln -s /usr/lib64/mysql/libmysqlclient.so.16 /usr/lib/libmysqlclient.so
这个是因为php的在编译的时候,会去/usr/lib目录下寻找libmysqlclient,但是mysql默认是将libmysqlclient安装到了/usr/lib64/mysql/目录下,所以在这里,为/usr/lib64/mysql/libmysqlclient.so.16在/usr/lib/目录下创建一个软连接,这样,重新运行的命令,就会执行通过.
继续执行命令:
make
make install
修改php.ini文件
sudo vim /usr/local/php/lib/php.ini
将";extension=php_mysql.dll"修改为extension=mysql.so
将" ;date.timezone = "修改为" date.timezone = Asia/Shanghai"
这里的时区不做修改,在安装nagiosql的时候,会有可能显示配置文件已过期!因为时区不一致,导致时间比对出问题,报错"配置文件已过期"
重启apache服务:
sudo /usr/local/apache2/bin/apachectl restart
进入web页面:http://yourserver/nagiosql,点击"开始安装",可以看到:
[图片上传失败...(image-b09bdd-1551885373192)]
红框位置,已经不再报错,可以继续往下执行安装程序了!
mysql的配置
上面的网页中,点击"下一步",出现:
[图片上传失败...(image-9f2743-1551885373192)]
填写上图红框中的内容.点击"下一步":
删除magiosql安装目录
点击"下一步"之后,出现:
[图片上传失败...(image-96ff17-1551885373192)]
要求删除安装目录,下面采用修改权限的方式来删除:
chmod 000 /usr/local/nagios/nagiosql/install
删除后,点击"完成",会弹出登录页面(如下图),至此,安装部分结束:
[图片上传失败...(image-8bc543-1551885373192)]
配置nagiosql
填写用户名:admin,密码,登陆进管理页面:
[图片上传失败...(image-87334d-1551885373192)]
修改nagios相关路径
[图片上传失败...(image-d8a705-1551885373192)]
点击左侧框的图标,计入页面,并填写红框内容:
[图片上传失败...(image-1f2be8-1551885373192)]
点击"保存",提示成功写入数据库则完成:
[图片上传失败...(image-f62b64-1551885373192)]
导入nagios配置文件
进入菜单"管理->工具->导入数据",如下图:
[图片上传失败...(image-d376c2-1551885373192)]
将nagios的全部配置文件导入,选择所有文件,点击"导入"按钮.
继续进入菜单:"管理 -> 工具 -> Nagios控制":
[图片上传失败...(image-8799df-1551885373192)]
点击红框按钮,完成数据写入.
其实上面的两个步骤,第一个是将nagios配置文件的数据写入到mysql表,而写第二个步骤,则是将mysql中已经写好的nagios配置文件数据,写入到/etc/nagiosql/目录中,那么,现在来查看/etc/nagiosql/目录下是否已经写好了配置文件,如果增加了配置文件,则证明写入成功,如下图,文件已经成功写入:
[图片上传失败...(image-411c84-1551885373192)]
修改nagios主配置文件
主配置文件就是指"nagios.cfg",只不过,在这里是用web界面做修改,进入菜单"管理 -> 工具 -> Nagios配置":
[图片上传失败...(image-4e99bf-1551885373192)]
编辑里面的配置内容:将"cfg_file"开头的配置注释掉,加入新的配置,如下:
cfg_dir=/etc/nagiosql/hosts/
cfg_dir=/etc/nagiosql/services/
cfg_file=/etc/nagiosql/commands.cfg
cfg_file=/etc/nagiosql/contactgroups.cfg
cfg_file=/etc/nagiosql/contacts.cfg
cfg_file=/etc/nagiosql/contacttemplates.cfg
cfg_file=/etc/nagiosql/hostdependencies.cfg
cfg_file=/etc/nagiosql/hostescalations.cfg
cfg_file=/etc/nagiosql/hostextinfo.cfg
cfg_file=/etc/nagiosql/hostgroups.cfg
cfg_file=/etc/nagiosql/hosttemplates.cfg
cfg_file=/etc/nagiosql/servicedependencies.cfg
cfg_file=/etc/nagiosql/serviceescalations.cfg
cfg_file=/etc/nagiosql/serviceextinfo.cfg
cfg_file=/etc/nagiosql/servicegroups.cfg
cfg_file=/etc/nagiosql/servicetemplates.cfg
cfg_file=/etc/nagiosql/timeperiods.cfg
修改之后,点击"保存"
然后, "检查配置文件"来检测一下是否有错误的地方:
[图片上传失败...(image-e70205-1551885373192)]
点击后,报错:
[图片上传失败...(image-45a55d-1551885373192)]
检查文件目录"/etc/nagiosql"下,在这个目录下,里面寻找hosts/hplj2605dn.cfg文件,找到之后发现,里面是一个主机的配置:
[图片上传失败...(image-c279ba-1551885373192)]
看起来是一个惠普打印机的配置,所以觉得这个配置没有什么用,应该是模板配置文件,所以先尝试删除此文件,保险起见,先执行:
mv /etc/nagiosql/hosts/hplj2605dn.cfg /etc/nagiosql/hosts/hplj2605dn.cfg.bak
同样的,修改这个,同时也必须修改相关依赖文件,比如service的配置文件,所以在此执行命令:
mv /etc/nagiosql/services/imp_hplj2605dn.cfg /etc/nagiosql/services/imp_hplj2605dn.cfg.bak
重新检测配置文件,发现类似的错误,不过,这次的错误是" hosts/inksys-srw224p.cfg"造成的,这个是一个路由器的配置,所以和以上的处理方法同样,删除或者重名了,以此类推,以同样的方式来处理"hosts/winserver.cfg",经过对三个配置文件的处理,重新检测,发现配置文件没有问题:
[图片上传失败...(image-9a6fe2-1551885373192)]
最后,请点击:重新启动nagios的按钮来重启nagios!
nagiosql的应用配置
nagiosql的应用配置是配置一些自定义或nagios带的一些服务,配置菜单在"管理 -> 命令 -> 定义":
[图片上传失败...(image-447688-1551885373192)]
他的主机定义在"管理 -> 监督 -> Host":
[图片上传失败...(image-1c6aa9-1551885373192)]
其中有三个主机,这三个主机的配置文件,已经在之前删除,所以,这里将这三个主机删除.删除按钮就在右侧的删除图标
如何自定义服务
因为,在nagios server(10.10.20.243)上已经安装了mysql,那么下面,准备在此自定义一个查询mysql服务是否启动的服务
编写监控shell脚本
#!/bin/bash
process=`ps -ef |grep mysql|grep -v grep |wc -l`
if [ $process -ne 2 ]
then
echo "OK-mysql已经运行!|mc=1;-;0;"
else
echo "CRITICAL info: 未发现mysql进程|mc=0;-;0;"
fi
编写完成后,将此脚本check_mysql.sh放入nagios server(10.10.20.243)主机的/usr/local/nagios/libexec/目录下
定义命令
进入定义命令的菜单,如图:
[图片上传失败...(image-872765-1551885373192)]
点击"添加"按钮.
[图片上传失败...(image-e5bec6-1551885373192)]
填写完成后,保存.
定义服务
进入定义服务的菜单,如图:
[图片上传失败...(image-751b28-1551885373192)]
点击添加按钮,在页面内编辑:
[图片上传失败...(image-5e87d9-1551885373192)]
点击保存,现在看一下服务列表:
[图片上传失败...(image-595800-1551885373192)]
检查文件并重启nagios
重启前,需要进行配置检查和写入配置数据等,操作如下图,一次执行,确保每一步都没有报错才可以执行下一步:
[图片上传失败...(image-806621-1551885373192)]
检查服务是否成功执行
进入http://yourserver/nagios/,点击左侧菜单"services"按钮:
[图片上传失败...(image-5b8743-1551885373192)]
以上,则定义成功!
没有更详细的说明自定义服务的说明和更多的一些例子,因为需要结合pnp4nagios做报表展示,作者只研究出了一个大概和满足了当下需求,所以为了不误导大家,并没有把其他示例和编写规则写上去,大家可以先自己去研究一下,篇幅较长,整理过程中可能会出现有问题的地方,希望谅解,编写不易,转载请注明出处!