使用 Nagios 和向上集成模块实现 IBM 系统的管理

红薯 发布于 2009/12/13 15:41
阅读 2K+
收藏 2

Nagios 是一款 Linux 上的成熟的监视系统运行状态的开源 IT 基础设施管理系统。它能够实现服务监视,错误通知,事件处理等主要功能。与传统的 IT 基础设施管理系统,如 Tivoli, HP OVO 等相比,Nagios 具有成本极低,结构简单,可维护性强等优势,受到了 SMB IT 管理人员的亲睐。仅仅从 SourceForge 网站上,就有超过 230 万份 Nagios 被用户下载。

从结构上讲,Nagios 可分为核心和插件。Nagios 的核心部分只提供了很少的监控功能,因此要实施一个完整的 IT 基础设施管理系统,用户需要在 Nagios Exchange 网站寻找或是自己编写所需的插件。目前 Nagios 的插件对 IBM 系统的支持并不理想,不能够提供必要的功能,如系统异常事件的收集,系统状态监控等。IBM Systems Director 平台代理是 IBM 提供的免费管理软件,它可以在 CIM 的基础上提供系统事件报告,系统状态数据等信息。要想将平台代理的功能集成进 Nagios,需要配置平台代理自带的向上集成模块,并且编写 Nagios 插件。

本文介绍给 IBM 的 SMB IT 管理人员一个免费的,可维护性高的硬件管理方法。具体来说包括:

  • 简要介绍 IBM Systmes Director 平台代理程序和支持的硬件平台,以及其中的向上集成模块及其主要功能。
  • 如何利用向上集成模块支持 Nagios 来管理 IBM 的系统以及举例阐述如何在 Nagios 上进行开发等。
  • 简单介绍如何为向上集成模块配置 SNMP 服务以及如何进行疑难问题查找和排除等。



IBM Systems Director 平台代理

IBM Systems Director 平台代理是安装在被管理机器节点上的代理程序。它对内存的占用量要求非常小,并且能够为管理员提供比较丰富的特性,比如与被管理的系统进行通信并管理它 们,包括硬件警报和状态信息等。平台代理完全通过行业标准提供发现、身份验证和管理,比如 Common Information Model (CIM),这些行业标准是由主流硬件和软件厂商 ( 包括 IBM) 组成的协会 Distributed Management Task Force (DMTF) 开发的。CIM 提供一个框架,支持使用通用的构建块 ( 而不是专有软件 ) 管理系统。如果设备与 CIM 兼容,也与 CIM 兼容的软件 ( 比如 Systems Director) 就可以更容易地管理设备。

事实上,IBM Systems Director 代理有两种代理程序 — 平台代理 (Platform Agent) 和通用代理 (Common Agent)。通用代理的功能涵盖了平台代理的功能,所以通用代理的功能相对于平台代理比较丰富,但是占用的内存也会比较多。对于向上集成模块,平台代理 提供的功能已经足够并且平台代理比较小巧,本文不讨论通用代理,所以下文如无特别说明,本文都将针对平台代理进行讨论。

支持平台

IBM Systems Director 平台代理支持很多现有的比较流行的操作系统平台,比如 Windows、Linux 和 AIX 等。这些平台跨越了 X 系列、P 系列、Z 系列和存储产品等硬件平台。

向上集成模块

IBM Systems Director 向上集成模块 (Upward Integrated Modules - UIMs) 是 IBM 针对 IBM Systems Director 进行功能的扩展模块,用来管理 IBM Systems Director 代理平台和 IBM 的带外 (Out Of Band - OOB) 设备 , 用于第三方网络管理软件的免费插件。目前已经被很多第三方网络管理软件客户下载并用来管理 IBM 的机器,比如 HP 的 Network Node Manager(NNM), OVO 和 Tivoli 的 Netview 等。UIMs 不仅能够在已有的管理软件环境当中保护您的资产而且还能够通过获取更详细的硬件信息来增加这些产品和工具的附加值。因为 UIMs 使您能够通过这些您熟悉的强大的工具平台来管理您的环境,所以它能够为您节省更多的开支。

UIMs 模块能够使第三方企业管理服务器 (Enterprise Management Server) 和装有 IBM Systems Director 平台代理程序的机器进行通讯,也可以通过与 IBM Director 服务器进行通讯。目前 UIMs 分为两个模块,一个模块作为插件位于第三方企业管理服务器端,另一模块作为 Subagent 位于平台代理端。图 1 向我们展示了 UIMs 的在正整个架构中的位置:


图 1. 向上集成模块位置结构图
向上集成模块位置结构图


网络设备发现功能

目前 UIMs 依据不同的第三方企业管理软件提供有两种不同方式的网络设备发现功能:

  • 基于 Simple Network Management Protocol (SNMP) 的 Director 平台代理的设备发现功能,比如 HP 的 OpenView NNM 和 Tivoli 的 Netview 等产品。
  • 基于 Service Location Protocol (SLP) 的 Director 平台代理的设备发现功能,比如 HP 的 Operations Manger 和 Tivoli 的 Netcool/OMNIbus 等产品。

 

事件订阅以及通知功能

同 样地,UIMs 会依据不同的第三方企业管理软件提供不同的事件通知或者订阅功能。对于基于 SNMP 设备发现的第三方企业管理软件,UIMs 会使用 SNMP Traps 从安装了 Director 平台代理程序的设备上通知给第三方管理软件,然后 UIMs 接收这些事件并显示在第三方软件管理平台上。而对于基于 SLP 设备发现的第三方企业管理软件,UIMs 提供订阅 Director 平台代理上的事件功能,当有事件发生时,Director 平台代理会根据订阅目标来发送事件,然后 UIMs 接收这些事件并显示在第三方软件管理平台上。

 

向上集成模块下载信息

向上集成模块下载链接 IBM® Systems Director Upward Integration Modules (UIMs)

利用向上集成模块支持 Nagios

目 前,UIMs 支持的产品线包含了 Tivoli, Microsoft, HP and CA 等的企业管理软件产品。而 Nagios 是一款非常流行的免费企业管理软件,目前欧洲和中国已经很多客户在使用 Nagios 作为自己的企业管理软件,为了让 Nagios 也能够对 IBM 的系统进行管理,我们在下文当中详细讲述如何利用 UIMs 来支持 Nagios 来管理 IBM 的系统。

Nagios 提供了插件开发的机制,用户可以在 Nagios 上开发出各种各样的插件来管理各种各样的资源。UIMs 将利用插件开发的机制来支持 Nagios 管理 IBM 的系统。图 2 当中显示了利用哪些模块来支持 Nagios。


图 2. 利用向上集成模块支持 Nagios 的位置结构图
利用向上集成模块支持 Nagios 的位置结构图

利用 UIMs 支持 Nagios 的两种功能 — 硬件状态信息监控基于 SNMP 的事件接收功能

  • 对于硬件状态信息监控功能,我们将利用 Nagios 的插件机制来开发出的新的插件 ( 见图 2 当中的虚线框内 ) 实现硬件状态信息监控。详细介绍见 Nagios 插件开发简介
  • 对 于基于 SNMP 的事件接收功能,我们将利用基于 SNMP 协议的接收机制来实现。所以在 Nagios 服务器上必须事先安装好 Net-SNMP 和 SNMP Trap Translator(SNMPTT)。Net-SNMP 提供了 SNMPTRAPD 服务,SNMPTT 提供了 SNMPTRAPD 服务与 Nagios 结合在一起的功能。我们只需要在 SNMPTT 中添加处理 IBM 事件的脚本 ( 见图 2 当中的虚线框内 ) 和做一些配置就可以实现该模块的功能。详细介绍见 关于 SNMPTT 及其在 Nagios 上的脚本开发和配置

如何为向上集成模块配置 SNMP 服务,请参考下文 为向上集成模块配置 SNMP 服务

Nagios 的安装配置和利用向上集成模块支持 Nagios 的主要功能

如何安装配置 Nagios 以及它的插件,在 DeveloperWorks 上已经有文章进行了详细的阐述,这里就不多做介绍了,请参考文章 "Ganglia 和 Nagios,第 2 部分 : 使用 Nagios 监视企业集群"。下面主要介绍一下利用 UIMs 支持 Nagios 能够提供哪些管理功能。

 

硬件状态信息监控

UIMs 利用插件的方式支持 Nagios 来提供硬件状态信息监控功能,安装了插件之后就能使 Nagios 监控到 IBM Systems Director 平台代理机器上详细的硬件信息。图 3 是一个利用向上集成模块监控到的硬件状态信息和性能数据的示例图:


图 3. 硬件状态信息和性能数据图
硬件状态信息和性能数据图


基于 SNMP 的事件接收

当 IBM Systems Director 平台代理机器上发生硬件事件或者警报时,平台代理程序当中的 UIMs 模块将向 Nagios 服务器发送基于 SNMP 的事件,而安装了 Net-SNMP 和 SNMPTT 的 Nagios 服务器将接收这些事件并调用启用了被动模式 (PASSIVE) 的 UIMs 服务 ( 见图 4 当中红线框内的"Director Agent"服务 ),这个服务将这些基于 SNMP 的事件转成适当的格式并在 Nagios 服务器网页管理平台上显示出来。图 4 当中显示该服务在接收到事件之后的状态:


图 4. 接收到事件之后的服务状态 - 当中显示当前该服务所处的状态。
接收到事件之后的服务状态

在图 4 当中点击服务"Director Agent",可以查看该服务当前状态的详细内容,见图 5:


图 5. 事件详细内容。
事件详细内容

Nagios 的插件开发和有关配置简介

这里将根据上文提到的"利用向上集成模块支持 Nagios 的主要功能"简介为例,简要介绍一下如何利用插件机制使 UIMs 支持 Nagios 监控 IBM 系统的,还有如何对 SNMPTT 进行脚本配置来实现在 Nagios 上接收基于 SNMP 事件的。

 

Nagios 插件开发简介

Nagios 的插件是以服务和命令的方式被引入到 Nagios 的框架当中的,所以在开发出一个 Nagios 插件之后,需要对其进行一些配置。首先,在配置文件 /usr/local/nagios/etc/objects /commands.cfg 当中定义需要的服务命令,比如下面定义的"check_agent"和"submit_check_result":

 # 'check_agent' command definition 
define command{
command_name check_agent
command_line $USER1$/check_agent $HOSTADDRESS$
}

#'submit_check_result' command definition
define command{
command_name submit_check_result
command_line $USER1$/eventhandlers/submit_check_result
}

 

这里"check_agent"是用于执行监控客户机状态信息的命令,$HOSTADDRESS$ 是其对应的参数;而"submit_check_result"是用于处理事件的命令。

其 次,为需要被监控的平台 ( 比如下面代码当中 Windows 系统名称 my_host_name) 定义需要的服务,这里我们使用上述命令"check_agent"和"submit_check_result"为 Windows 平台定义下面这个服务"Director Agent",我们需要为配置文件 /usr/local/nagios/etc/objects/windows.cfg 添加下面这些内容:

 # Define a service to check Denali Agent on the this windows machine "my_host_name". 
define service{
use generic-service ; Name of service template to use
host_name my_host_name ; Host name to be monitored
service_description Director Agent ; Service Name
event_handler submit_check_result ; Event handler command name
check_command check_agent ; Developed plugins command name
max_check_attempts 1 ; Max times for the attempt
active_checks_enabled 1 ; Active mode enabled
passive_checks_enabled 1 ; Passive mode enabled
is_volatile 1 ; If it is a volatile service
}

 

然 后,为服务"check_agent"编写 C 文件"check_agent.c"来获取硬件状态信息,编译之后发布到目录 /usr/local/nagios/libexec/ 下。这里可以利用安装了 IBM Systems Director 平台代理程序客户端的特殊信息 ( 比如 OID) 来识别该客户端是否为 IBM 的系统并通过它们获取该系统上的性能数据和状态信息等。下面是一部分示例性的代码片段:

 int main (int argc, char **argv) 
{
int result = STATE_UNKNOWN;

setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);

if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));

/* initialize alarm signal handling */
signal (SIGALRM, socket_timeout_alarm_handler);

alarm (socket_timeout);
/* Get the status of the host */
result = check_agent(server_name, port, ...);

alarm (0);
return (result);
}

 

最后,为服务 submit_check_result 添加以下内容,并发布该文件 submit_check_result 到目录 /usr/local/nagios/libexec/eventhandlers/ 下。这一部分是为处理事件功能做的配置工作。

 #!/bin/sh 

# SUBMIT_CHECK_RESULT
# Written by Ethan Galstad (nagios@nagios.org)
# Last Modified: 02-18-2002
#
# This script will write a command to the Nagios command
# file to cause Nagios to process a passive service check
# result. Note: This script is intended to be run on the
# same host that is running Nagios. If you want to
# submit passive check results from a remote machine, look
# at using the nsca addon.
#
# Arguments:
# $1 = host_name (Short name of host that the service is
# associated with)
# $2 = svc_description (Description of the service)
# $3 = return_code (An integer that determines the state
# of the service check, 0=OK, 1=WARNING, 2=CRITICAL,
# 3=UNKNOWN).
# $4 = plugin_output (A text string that should be used
# as the plugin output for the service check)
#

echocmd="/bin/echo"

CommandFile="/usr/local/nagios/var/rw/nagios.cmd"

# get the current date/time in seconds since UNIX epoch
datetime=`date +%s`

# create the command line to add to the command file
cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"

# append the command to the end of the command file
`$echocmd $cmdline >> $CommandFile`



关于 SNMPTT 及其在 Nagios 上的脚本开发和配置

在 Nagios 服务器上接收基于 SNMP 的事件,必须事先安装 Net-SNMP 和 SNMPTT。Net-SNMP 是接收基于 SNMP 事件的客户端,而 SNMPTT 是用来转换 SNMP 事件的服务。它们的安装资料可以在因特网上查到,这里就不多做介绍,请查看 参考资料部分。这里主要介绍一下 SNMPTT 和 Nagios 怎样结合在一起接收基于 SNMP 的事件并显示在 Nagios 的 web 界面上的。

在做完基本的 SNMPTT 配置之后,我们首先需要定义 IBM 自己的 Events 文件 snmptt.conf.ibm,下面是其中一个 Event 定义示例片段:

 EVENT ibmSystemTrapPowerSupply .1.3.6.1.4.1.2.6.159.1.1.0.23  "Status Alarms" Critical 
FORMAT $5
EXEC /usr/local/nagios/libexec/eventhandlers/submit_check_result $A "Director
Agent" 2 "$5"
SDESC
"This event is sent when the Remote Supervisor Adapter detects that the
state of a system's power supply changes with respect to availability."
Variables:
1: ibmSystemTrapPowerSupplyIdentifier
Syntax="String (Octet String) "
Descr=""
2: ibmSystemTrapPowerSupplySourceObjectPath
Syntax="String (Octet String) "
Descr=""
3: ibmSystemTrapPowerSupplyTargetObjectPath
Syntax="String (Octet String) "
Descr=""
4: ibmSystemTrapPowerSupplySeverity
Syntax="Uint16 (Integer) (0..65535)"
Descr="2=Critical -- A power supply in a system has failed."
5: ibmSystemTrapPowerSupplydescription
Syntax="String (Octet String) "
Descr=""
6: ibmSystemTrapErrorLogTimeStamp
Syntax="Datetime (Octet String) "
Descr=""
EDESC
#
#

 

上 面第三行当中的 submit_check_result 是上文当中定义的处理事件的命令,参数 $A 是被监控的 IBM 系统主机名称,参数"Director Agent"是我们在上文当中定义的 UIMs 的服务名称,参数 2 代表 Severity 为"Critical",参数 $5 是该事件的描述内容。

然后我们需要把文件 snmptt.conf.ibm 添加到 SNMPTT 的主配置文件 snmptt.ii 当中:

 [TrapFiles] 
# A list of snmptt.conf files (this is NOT the snmptrapd.conf file). The COMPLETE path
# and filename. Ex: '/etc/snmp/snmptt.conf'
snmptt_conf_files = <<END
/etc/snmp/snmptt.conf
/etc/snmp/snmptt.conf.ibm
END

 

重新启动 SNMPTT 服务 : service snmptt restart

最 后,在安装了 IBM Systems Director 平台代理程序的系统上发送 SNMP 事件,然后 Nagios 服务器就会接收到该事件,并显示到 Nagios 的 web 管理平台上,您可以通过左边菜单"Service Problems"查看当前接收到的事件 ( 见 图 4图 5),也可以通过菜单"Alert History"查看所有主机的所有历史事件 ( 见下面的图 6)。


图 6. 历史事件视图
历史事件视图

为向上集成模块配置 SNMP 服务

有 些第三方企业管理软件 ( 比如 HP NNM,Nagios 等 ) 使用了 SNMP 协议来作为网络之间的传输管理协议,所以我们需要在安装了 IBM Systems Director 平台代理程序的机器上为这些第三方企业管理软件来安装 SNMP 服务,在安装完成 SNMP 服务之后还需要对其进行相应的配置。SNMP 服务的配置大概分为三个步骤:

1). 配置"团体名称"为"public";

2). 配置第三方企业管理软件的机器地址;

3). 重启代理程序服务。

因为 IBM Systems Director 平台代理程序支持很多不同的平台,下面以 Windows 和 Linux 平台为例,对 SNMP 服务的配置进行示例介绍:


Windows 平台

				
a) 开始 -> 控制面板 -> 管理工具 -> 服务
b) 左键单击 SNMP Service -> 属性
c) 陷阱 -> 确保"团体名称"为"public" -> 添加
-> 输入"陷阱目标"的主机名或者 IP 地址 -> 添加"SNMP 服务配置"
d) 确定"SNMP Service 属性"
e) 重启"SNMP Service"



Linux 平台

				
a) 切换到目录 /etc/snmp
b) 用下面的配置内容更新文件 snmpd.conf:
master agentx
rocommunity public
rwcommunity public
trapcommunity public
trapsink <ip/hostname> # 第三方企业管理软件的机器地址,这里可以添加多行目标地址
c) /etc/init.d/icesnmp stop
d) /etc/init.d/snmpd stop
e) /etc/init.d/snmpd start
f) /etc/init.d/icesnmp start

故障诊断及排除 (Trouble Shooting)

 

检查 CIM Server

当您安装和配置完成 Director 代理程序或者在使用当中遇到问题时,首先检查代理程序当中的 CIM Server 是否处于运行状态当中。请参考下面这些命令在不同平台上来做诊断:

  Windows 平台:
a) 开始 -> 控制面板 -> 管理工具 -> 服务 ;
b) 检查"IBM WMI+A Service"是否已经处于"已启动"状态;
c) 如果没有启动,可以单击右键点击"启动",或者可以"重新启动";

Linux 平台:
/etc/init.d/cimserverd {start|stop|status|test|restart}

 

关闭防火墙

如果 Linux 平台在没有关闭防火墙的前提下 , IBM Systems Director 平台代理程序是无法和局域网中的服务器进行通讯的,所以需要事先关闭这些平台上的防火墙。可以使用命令 iptables 来查看和关闭防火墙。

为了您能够诊断及排除在使用当中出现的问题,您可以通过设置日志级别来记录不同层级的日志,这样可以帮助您快速定位和排除问题。设置下面几个文件当中的字段 logLevel 为更大的数字,系统将为您记录更详细的日记。

  — cim2snmp.cfg 
— SnmpConsumer.cfg
— TivoliConsumer.cfg

结束语

IBM Systems Director 是 IBM 的企业管理软件,它利用 Director 平台管理程序实现了管理 IBM 的系统。UIMs 利用 Director 平台代理程序实现了第三方企业管理软件管理 IBM 的系统。而 Nagios 是一款相当流行的并且免费的企业管理软件,用户能够利用 UIMs 来支持 Nagios, 能够提供给用户更多的功能来管理 IBM 的机器包括系统的异常事件管理。这使用户的管理变的更方便,更轻松。

加载中
返回顶部
顶部