pnp4nagios的安装
参考自:http://www.360doc.com/content/12/0323/11/9192114_196917555.shtml
1、准备工作
Apache,PHP,nagios,rrdtool需要先安装好,除了rrdtool以外其他的均可在本站找到
2、rrdtool安装
rrd(Round Robin Databases)
官方网站:http://oss.oetiker.ch/rrdtool/
找到最新版,下载安装即可,截至2012年3月22日,可以下载到的最新版本为rrdtool-1.4.7
1
2
3
4
5
6
|
cd
/
usr
/
local
/
src
/
tarbag
/
wget
http
:
//oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
tar
zxvf
rrdtool
-
1.4.7.tar.gz
-
C
.
.
/
software
cd
.
.
/
software
/
rrdtool
-
1.4.7
.
/
configure
--
prefix
=
/
usr
/
local
/
rrdtool
make
&&
make
install
|
3、安装pnp
官方网站:http://www.pnp4nagios.org/
找到最新版,下载安装即可,截至2012年3月22日,可以下载到的最新版本为pnp4nagios-0.6.16
1
2
3
4
5
6
7
8
9
10
11
|
cd
/
usr
/
local
/
src
/
tarbag
/
wget
http
:
//downloads.sourceforge.net/project/pnp4nagios/PNP-0.6/pnp4nagios-0.6.16.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fpnp4nagios%2Ffiles%2FPNP-0.6%2F&ts=1332411433&use_mirror=ncu
tar
-
zxvf
pnp4nagios
-
0.6.16.tar.gz
-
C
.
.
/
software
/
cd
.
.
/
software
/
pnp4nagios
-
0.6.16
/
.
/
configure
--
with
-
nagios
-
user
=
nagios
--
with
-
nagios
-
group
=
nagios
--
with
-
rrdtool
=
/
usr
/
local
/
rrdtool
/
bin
/
rrdtool
(如果单独编译安装的
rrdtoool,则使用
--
with
-
rrdtool
=
/
usr
/
local
/
rrdtool
/
bin
/
rrdtool这样的形式)
make
all
make
install
make
install
-
webconf
make
install
-
config
make
install
-
init
(使用这条命令替换所有的
make命令(不包括
make
all),
make
fullinstall
)
|
修改apache配置,默认是将pnp4nagios的web配置安装在/etc/httpd/conf.d/下,如果你是通过源码安装的,则需要将配置文件拷贝到相关的目录下或者配置文件中
1
2
3
4
|
cd
/
etc
/
httpd
/
conf
.
d
/
cp
pnp4nagios
.
conf
/
usr
/
local
/
apache
-
2.2.21
/
conf
/
extra
/
vhosts
/
/
usr
/
local
/
apache
-
2.2.21
/
bin
/
apachectl
-
k
restart
(在重启
httpd前,请确认
php安装无误
)
|
4、配置
pnp4nagios有三种模式,相关官方文档:http://docs.pnp4nagios.org/pnp-0.6/modes
简单点理解,第一种Synchronous Mode和后两种模式相比,更简单,更容易配置,且带来的额外负载更低,但是监控间隔最低是5分钟。
而后两种可以时时监控数据,监控的时间间隔根据官方文档记录是10秒,当然也会带来额外的负载。
配置方法分别如下
4.1、Synchronous Mode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
vi
/
usr
/
local
/
nagios
/
etc
/
nagios
.
cfg
process_performance_data
=
1
enable_environment_macros
=
1
service_perfdata_command
=
process
-
service
-
perfdata
host_perfdata_command
=
process
-
host
-
perfdata
vi
/
usr
/
local
/
nagios
/
etc
/
objects
/
commands
.
cfg
define
command
{
command_name
process
-
service
-
perfdata
command_line
/
usr
/
local
/
pnp4nagios
/
libexec
/
process_perfdata
.
pl
}
define
command
{
command_name
process
-
host
-
perfdata
command_line
/
usr
/
local
/
pnp4nagios
/
libexec
/
process_perfdata
.
pl
-
d
HOSTPERFDATA
}
|
4.2、Bulk Mode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
vi
/
usr
/
local
/
nagios
/
etc
/
nagios
.
cfg
process_performance_data
=
1
service_perfdata_file
=
/
usr
/
local
/
pnp4nagios
/
var
/
service
-
perfdata
service_perfdata_file_template
=
DATATYPE
::
SERVICEPERFDATA
\
tTIMET
::
$
TIMET
$
\
tHOSTNAME
::
$
HOSTNAME
$
\
tSERVICEDESC
::
$
SERVICEDESC
$
\
tSERVICEPERFDATA
::
$
SERVICEPERFDATA
$
\
tSERVICECHECKCOMMAND
::
$
SERVICECHECKCOMMAND
$
\
tHOSTSTATE
::
$
HOSTSTATE
$
\
tHOSTSTATETYPE
::
$
HOSTSTATETYPE
$
\
tSERVICESTATE
::
$
SERVICESTATE
$
\
tSERVICESTATETYPE
::
$
SERVICESTATETYPE
$
service_perfdata_file_mode
=
a
service_perfdata_file_processing_interval
=
15
service_perfdata_file_processing_command
=
process
-
service
-
perfdata
-
file
host_perfdata_file
=
/
usr
/
local
/
pnp4nagios
/
var
/
host
-
perfdata
host_perfdata_file_template
=
DATATYPE
::
HOSTPERFDATA
\
tTIMET
::
$
TIMET
$
\
tHOSTNAME
::
$
HOSTNAME
$
\
tHOSTPERFDATA
::
$
HOSTPERFDATA
$
\
tHOSTCHECKCOMMAND
::
$
HOSTCHECKCOMMAND
$
\
tHOSTSTATE
::
$
HOSTSTATE
$
\
tHOSTSTATETYPE
::
$
HOSTSTATETYPE
$
host_perfdata_file_mode
=
a
host_perfdata_file_processing_interval
=
15
host_perfdata_file_processing_command
=
process
-
host
-
perfdata
-
file
vi
/
usr
/
local
/
nagios
/
etc
/
command
.
cfg
define
command
{
command_name
process
-
service
-
perfdata
-
file
command_line
/
usr
/
local
/
pnp4nagios
/
libexec
/
process_perfdata
.
pl
--
bulk
=
/
usr
/
local
/
pnp4nagios
/
var
/
service
-
perfdata
}
define
command
{
command_name
process
-
host
-
perfdata
-
file
command_line
/
usr
/
local
/
pnp4nagios
/
libexec
/
process_perfdata
.
pl
--
bulk
=
/
usr
/
local
/
pnp4nagios
/
var
/
host
-
perfdata
}
|
由于一次处理的性能数据比较多,有可能超时,可以更改etc/process_perfdata.cfg里的timeout时间。
4.3、Bulk Mode with NPCD: (我们现在使用的是这种方式)
更改方法同bulk mode,只有定义command部分不同:
1
2
3
4
5
6
7
8
9
10
11
|
vi
/
usr
/
local
/
nagios
/
etc
/
command
.
cfg
define
command
{
command_name
process
-
service
-
perfdata
-
file
command_line
/
bin
/
mv
/
usr
/
local
/
pnp4nagios
/
var
/
service
-
perfdata
/
usr
/
local
/
pnp4nagios
/
var
/
spool
/
service
-
perfdata
.
$
TIMET
$
}
define
command
{
command_name
process
-
host
-
perfdata
-
file
command_line
/
bin
/
mv
/
usr
/
local
/
pnp4nagios
/
var
/
host
-
perfdata
/
usr
/
local
/
pnp4nagios
/
var
/
spool
/
host
-
perfdata
.
$
TIMET
$
}
/
usr
/
local
/
pnp4nagios
/
bin
/
npcd
-
d
-
f
/
usr
/
local
/
pnp4nagios
/
etc
/
npcd
.
cfg
(确保
npcd
.
cfg中设置了正确的
spool目录
)
|
由于一次处理的性能数据比较多,有可能超时,可以更改etc/process_perfdata.cfg里的timeout时间。
5、更改定义主机和服务的模板文件
5.1、修改模板配置
在templates.cfg文件最后添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
|
cd
/
usr
/
local
/
nagios
/
etc
/
objects
/
vi
templates
.
cfg
define
host
{
name
host
-
pnp
action_url
/
pnp4nagios
/
graph
?
host
=
$
HOSTNAME
$
&
srv
=
_HOST_
register
0
}
define
service
{
name
srv
-
pnp
action_url
/
pnp4nagios
/
graph
?
host
=
$
HOSTNAME
$
&
srv
=
$
SERVICEDESC
$
register
0
}
|
5.2、修改主机配置
再定义主机和服务时,添加上use行,来使用模板中定义的主机(host-pnp)和服务(srv-pnp):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
cd
/
usr
/
local
/
nagios
/
etc
/
objects
/
vi
localhost
.
cfg
define
host
{
use
linux
-
server
,
host
-
pnp
;
Name
of
host
templates
to
use
;
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
}
define
service
{
use
local
-
service
,
srv
-
pnp
;
Name
of
service
template
to
use
host_name
localhost
service_description
PING
check_command
check_ping
!
100.0
,
20
%
!
500.0
,
60
%
}
|
重启nagios,可以进入监控页面看效果
6、检查安装
6.1、检查pnp4nagios安装
第一次访问http://ip/php4nagios
将会执行一个必要部分的检查。
看到全部Pass基本就ok了,然后删除install.php。即会出现一个error页面,提示未找到perfdata下的_HOST_.xml文件,稍等片刻,即可生成文件,并显示监控图像。
6.2、检查nagios图表
点击service页面,可看到localhost和PING服务旁边有个图标的按钮,点击会弹出一个监控页面,如下图所示
图7-1
7、排错verify_pnp_config
7.1、在运行pnp4nagios之前,我们最好运行一下scritps下的verify_pnp_config.pl来检查一下PNP的配置。
7.2、如果看到“PHP magic_quotes_gpc is deprecated”,那么到php.ini文件中找到相应的设置并off掉。
7.3、调试日志
如果想产生调试日志,则更改process_perfdata.cfg中的
LOG_LEVEL=2,
一般情况下设置为0即可。
高级配置
8、将性能图集成到nagios的web页面中
你可以定义PNP集成到Nagios中,不需要点击任何图表就显示性能数据
1. 安装并运行PNP
2. 将contrib/ssi目录下的status-header.ssi拷贝到/usr/local/nagios/share/ssi/下。不要添加可执行权限。
3.更改相关的主机和服务模板设置:
1
2
3
4
5
6
7
8
9
10
|
define
host
{
name
host
-
pnp
action_url
/
pnp4nagios
/
graph
?
host
=
$
HOSTNAME
$
&
srv
=
_HOST
_
' class='
tips
' rel='
/
pnp4nagios
/
popup
?
host
=
$
HOSTNAME
$
&
srv
=
_HOST_
register
0
}
define
service
{
name
srv
-
pnp
action_url
/
pnp4nagios
/
graph
?
host
=
$
HOSTNAME
$
&
srv
=
$
SERVICEDESC
$
' class='
tips
' rel='
/
pnp4nagios
/
popup
?
host
=
$
HOSTNAME
$
&
srv
=
$
SERVICEDESC
$
register
0
}
|
9、设置PNP Web前端
通过更改etc/config.php来实现对PNP Web前端的更改。一般我们将自己的调整写在etc/config_local.php中,
但是如果这个文件不存在,则config.php可以作为一个参考。
10、定义page
在/usr/local/pnp4nagios/etc/pages下创建*.cfg的文件,文件定义了要显示在一个页面上的性能数据:例如
1
2
3
4
5
6
7
8
9
10
11
12
|
define
page
{
use
_regex
1
# 0 = use no regular expressions, 1 = use regular expressions
page_name
test
-
page
# page description
}
define
graph
{
host_name
host1
,
host2
,
host3
#将显示host1,host2,host3三台主机的Current_Load服务性能图在test-page页面上
service_desc
Current
_Load
}
define
graph
{
host_name
host1
,
host2
#将显示host1和host2上所有包含a或者o的服务的性能图到test-page页面上
service
_desc
a
|
o
}
|
10、模板
模板存放在两个位置
share/template.dist 存放PNP包中的模板
share/template 自定义的模板存放位置
如果显示localhost上http服务的图形,那么PNP将会通过perfdata/localhost/http.xml文件中的TEMPLATE定义部分来决定使用什么模板(这个文件是自动生成的)。
PNP查找模板的顺序如下:
1. templates/check_http.php
2. templates.dist/check_http.php
3. templates/default.php
4. templates/default.php
创建自己的模板
模板必须遵循如下原则:
1.必须是有效的php语句
2.模板不能产生任何输出
3.队列$opt[]和$def[]必须被填充
另外一个需要注意的是,PNP4nagios是这样一个画图流程。
nagios里定义的命令名字 => pnp4nagios在etc/check_commands/ 目录下找跟命令名一样的 command_name.cfg => 这个配置文件中定义了模板的名字规则
个人总结:如果要创建某个nagios服务的画图模板,我们可以先确认这个服务的名称是什么,服务命令的名称是什么,然后到perfdata/hostname/下找到对应的“服务名.xml”,打开文件,看TEMPLATE定义部分的内容,这个内容便是这个相应检查命令默认使用的模板名称,模板后缀为php。
例如主机AAA的服务ALL_DISK,使用的命令是snmp_linux_alldisk_check.sh,那么我们可以查看perfdata/AAA/ALL_DISK.xml文件,TEMPLATE部分的内容是snmp_linux_alldisk_check,则说明这个服务使用模板snmp_linux_alldisk_check.php,而你可以自己创建这个文件,并放在share/tmplates下,来实现自定义显示效果。
11、NCPD的介绍
当nagios服务器运行大量的服务(即检查),高负载可能导致这样一个问题,定义的检查轮训是5分钟,也许它10分钟才执行。如果这时,nagios服务器再执行性能数据的采集,将会加重其检查的延迟,为了使nagios core摆脱性能数据的处理部分,我们使用ncpd。通过上面的配置部分,我们可以发现原本由nagios core处理性能数据的命令,变成了仅仅将性能数据拷贝到/usr/local/pnp4nagios/var/spool目录下,并打上时间戳,这个速度是非常快的。剩下性能数据处理工作就由ncpd进程来完成,更新到rrd文件中。
使用ncpd还有一个好处,防止性能数据的丢失,因为即使你的ncpd进程死掉活着重启之后没有启动ncpd,在/usr/local/pnp4nagios/var/spool目录下也保存着包含时间戳的数据,当重启ncpd进程时,它会对所有搜索到的数据进行处理,并更新到rrd文件中。
12、nagios性能数据
nagios将插件输出中”|”号后的内容作为性能数据。性能数据格式如下:
'label'=value[UOM];[warn];[crit];[min];[max]
注意:
1. 多个性能数据之间用空格分割
2. label 可以包含任何字符
3. 如果label中包含空格、等号、或者单引号,则label需要用单引号来括起来
4. warn/crit/min/max可以为null值
5. 如果UOM单位是%,则min和max不需要再指定
6. UOM单位可以是如下: 默认空,表示数量(用于用户数、处理器数等)
s 表示秒(也可以用us,ms)
% 表示百分比
B 表示字节(也可以用KB,MB,TB,GB)
c 一个连续的计数(如:接口传输的字节数)
转载请注明:成长的对话 » 7.nagios+pnp4nagios图形监控安装