手机版
你好,游客 登录 注册
背景:
阅读新闻

Ubuntu 10.04下构建Nagios监控平台

[日期:2011-07-05] 来源:mike.org.cn  作者:mike [字体: ]
8、安装NRPE

  由于Nagios只能监测自己所在的主机的一些本地情况,例如,cpu负载、内存使用、硬盘使用等等。如果想要监测被监控的服务器上的这些本地情况,就要用到NRPE。NRPE(Nagios Remote Plugin Executor)是Nagios的一个扩展,它被用于被监控的服务器上,向Nagios监控平台提供该服务器的一些本地的情况。NRPE可以称为Nagios的Linux客户端。

  由于NRPE是通过SSL方式在监控和被监控主机上进行数据传输的,所以必须先安装ssl相关的软件包。

1
apt-get install libssl-dev libssl0.9.8

  编译安装NRPE

1
2
3
4
5
6
7
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config

  注:监控主机上只需要make install-plugin这一步就可以了。监控机上只要有一个check_nrpe插件用于连接被监控端nrpe的daemon就行了。

  启动NRPE

1
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

  验证NRPE是否正确安装

1
/usr/local/nagios/libexec/check_nrpe -H localhost

  注:如果成功,会返回NRPE的版本号。
  
  三、Nagios被控端安装配置

  1、创建Nagios用户及组

  建立Nagios账号

1
/usr/sbin/useradd -m -s /sbin/nologin nagios

  2、编译并安装Nagios插件

1
2
3
4
5
6
tar zxvf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
cd ..

  验证程序是否被正确安装:

1
ls /usr/local/nagios/libexec

  显示安装的插件文件,即所有的插件都安装在libexec这个目录下。

  3、安装NRPE

1
2
3
4
5
6
7
8
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
cd ..

  4、启动NRPE

1
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

  验证NRPE是否正确安装

1
/usr/local/nagios/libexec/check_nrpe -H localhost

  注:如果成功,会返回NRPE的版本号。

  5、修改NRPE配置文件,让监控主机可以访问被监控主机的NRPE。

  缺省NRPE配置文件中只允许本机访问NRPE的Daemon

1
2
3
4
vi /usr/local/nagios/etc/nrpe.cfg
 
#缺省为127.0.0.1,只能本机访问
allowed_hosts=192.168.1.108

  6、重启nrpe的方法

1
2
killall nrpe
/usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d

  四、Nagios配置文件关系说明

  Nagios的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#控制cgi访问的配置文件
cgi.cfg
#Nagios主配置文件
nagios.cfg
#resource.cfg
定义了一些变量,以便被其他文件引用,如$USER1$resource.cfg
#objects是一个目录,用于定义Nagios对象
objects
#servers是自己创建的一个目录,Nagios可以加载一个目录下面的所有配置文件(需要在nagios.cfg中配置)
servers
 
./objects:
#命令定义配置文件,里面定义的命令可以被其他文件引用
commands.cfg
#联系人和联系人组配置文件
contacts.cfg
#监控本地机器的配置文件
localhost.cfg
#监控打印机的一个事例配置文件(默认未启用)
printer.cfg
# 监控路由器的一个事例配置文件(默认未启用)
switch.cfg
# 模板配置文件,在此可以定义模板,在其他文件中引用
templates.cfg
# 定义监控时间段的配置文件
timeperiods.cfg
# 监控Windows的一个事例配置文件(默认未启用)
windows.cfg
 
./server:
 
# 自己创建的主机群组配置文件
hostgroup.cfg
# 自己创建的监控远程Linux主机的配置文件
linux.cfg

  五、监控应用

  监控一个项目最重要的有下面三点:首先是监控哪台机器,然后是这个监控要用什么命令实现,最后就是出了问题的时候要通知哪个联系人。

  A、定义监控的主机
  
  创建一个用于存放监控的项目的目录

1
mkdir -p /usr/local/nagios/etc/server

  配置nagios.cfg文件

  让Nagios能够访问自定义的目录下的配置文件,增加以下内容:

1
cfg_dir=/usr/local/nagios/etc/server

  创建要监控主机的配置文件

  这里我以示例的localhost.cfg为基础进行创建

1
cp /usr/local/nagios/etc/objects/localhost.cfg  /usr/local/nagios/etc/server/linuxsever1.cfg

  先修改对linuxsever.cfg文件中对主机定义部分,服务部分的定义放在后面来说。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
vi /usr/local/nagios/etc/server/linuxsever.cfg
 
define host{
        use                     linux-server            ; Name of host template to use
							; This host definition will inherit all variables that are defined
							; in (or inherited by) the linux-server host template definition.
        host_name               linuxsever1
        alias                   linuxsever1
        address                 192.168.1.106
        }
 
# Define an optional hostgroup for Linux machines
 
define hostgroup{
        hostgroup_name  linuxsever ; The name of the hostgroup
        alias           linuxsever ; Long name of the group
        members         linuxsever1     ; Comma separated list of hosts that belong to this group
        }

  B、定义监控的命令

  要对主机上的服务进行监控,首先需要定义监控服务所使用的监控命令。

  监控远程服务和资源的命令以及如何发送邮件命令的定义一般都在commands.cfg中进行。大部分监控远程服务和资源的命令都是通过/usr/local/nagios/libexec下的脚本实现,如ping命令为check_ping。

  配置commands.cfg文件

  我们这里要对被监控服务器的一些本地资源情况,这里就先加入NRPE的支持。

  定义NRPE支持,commands.cfg中增加以下内容

1
2
3
4
5
6
vi /usr/local/nagios/etc/objects/commands.cfg
 
define command{
	command_name check_nrpe
	command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
	}

  定义发送邮件的命令,实现邮件报警

  修改commands.cfg中的notify-host-by-email和notify-service-by-email命令

1
2
3
4
5
6
7
8
9
10
11
12
13
vi /usr/local/nagios/etc/objects/commands.cfg
 
# 'notify-host-by-email' command definition
define command{
	command_name	notify-host-by-email
	command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/sendEmail -f nagiosdemo@163.com -t $CONTACTEMAIL$ -s smtp.163.com -u "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" -xu nagiosdemo -xp nagiosdemo
	}
 
# 'notify-service-by-email' command definition
define command{
	command_name	notify-service-by-email
	command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/sendEmail -f nagiosdemo@163.com -t $CONTACTEMAIL$ -s smtp.163.com -u "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu nagiosdemo -xp nagiosdemo
	}

  注:监控主机上没有安装任何SMTP服务,这里就采用了外部邮件��务器上SMTP服务进行发送邮件。这样就需要一个可自定义SMTP服务器的邮件客户端。这里采用的是sendEmail。

  SendEmail简单介绍

  SendEmail官方地址:http://caspian.dotconf.net/menu/Software/SendEmail/

  安装

1
apt-get install sendemail

  基本用法

1
sendemail -f nagiosdemo@163.com -t nagiosdemo@163.com -s smtp.163.com -u “from nagios” -xu nagiosdemo -xp nagiosdemo -m happy

  各参数具体含义

1
2
3
4
5
6
7
-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu  表示SMTP验证的用户名
-xp  表示SMTP验证的密码(注意:这个密码有限制,一些特殊符号或者超长度密码不能被正确识别)
-m 表示邮件的内容

  更详细用法可参考官方文档或直接运行sendEmail就会显示详细的用法。

  小技巧:如果这里的收件邮箱采用139的邮箱,就一举两得的同时实现了邮件报警和短信报警的两个功能。因为139邮箱提供了邮件到达后,免费短信提醒通知功能。也算是短信通知了另一种实现方式吧,呵呵!

  注:飞信机器人在Ubuntu 10.04环境下不能成功运行,提示’No such file or directory’,由于无更多提示信息,暂不能解决。CentOS5.2下能成功运行,不知是不是由于官方提供的飞信机器人支持库是在CentOS环境编译的原因!

  C、定义监控联系人和联系人组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vi /usr/local/nagios/etc/objects/contacts.cfg
 
define contact{
        contact_name                    mike            ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
 
        email                           nagios@nagios.com  ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
        }
 
define contactgroup{
        contactgroup_name       admins
        alias                   Nagios Administrators
        members                 mike
        }

  D、定义常用监控的服务

  Nagios监控功能非常的强大,这里只说下比较常见的一些监控项目。

  A、通过NRPE监控被监控主机的本地资源信息

  1、监控被监控主机的负载情况

1
2
3
4
5
6
7
8
vi /usr/local/nagios/etc/server/linuxsever.cfg
 
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Current Load
	check_command			check_nrpe!check_load
        }

  2、监控被监控主机上的登陆用户数

1
2
3
4
5
6
7
8
vi /usr/local/nagios/etc/server/linuxsever.cfg
 
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Current Users
	check_command			check_nrpe!check_users
        }

  3、监控被监控主机上的根分区磁盘使用情况

1
2
3
4
5
6
7
8
vi /usr/local/nagios/etc/server/linuxsever.cfg
 
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Root Partition
	check_command			check_nrpe!check_sda1
        }

  4、监控被监控主机上的Swap使用情况

1
2
3
4
5
6
7
8
vi /usr/local/nagios/etc/server/linuxsever.cfg
 
define service{
        use                             generic-service         ; Name of service template to use
        host_name                       linuxsever1
        service_description             Swap Usage
	check_command			check_nrpe!check_swap
        }

  

linux
本文评论   查看全部评论 (1)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
第 1 楼
* 十年 发表于 2011/8/24 16:36:01
我想问下 你的apt源是什么啊?我安装GD和libgd2-noxpm libgd2-noxpm-dev 这三个东西的时候找不到啊,我用的是163的源。