第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除
SNMP
故障排除
IRIS
子代理(运行 ^SNMP
例程)取决于操作系统提供的 SNMP
主代理的正确安装和配置。正如 IRIS
作为子代理中所述,^SNMP
例程与此主代理通信有两种主要方式:
^SNMP
主要在TCP
端口705
上使用AgentX
协议。- 在
Windows
上,^SNMP
使用安装为iscsnmp.dll
的Windows
扩展代理DLL
。
操作系统应该提供配置 SNMP
代理的详细说明,系统管理员应该花一些时间来了解如何执行此操作。如果在使 IRIS
与 SNMP
代理通信时遇到问题,以下是一些基本的故障排除指南和提示。
所有系统
- 确保
SNMP
代理独立于IRIS
工作,并且至少可以查询mib-2.system
树以获取一般系统信息。如果失败,在Windows
上检查Windows SNMP
服务;在UNIX®/Linux
上查看SNMP
守护程序(snmpd)
是否正在运行。
如果可以成功查询 SNMP
系统信息但不能查询 IRIS MIB
,则检查 IRIS
中运行 ^SNMP
例程的后台进程。尝试使用 $$start^SNMP()
函数启动它。如果例程启动但没有继续运行,请检查 IRIS
install-dir/mgr
目录中的 messages.log
和 SNMP.log
日志文件中的错误。在 Windows
上,iscsnmp.dll
会在 Windows\System32\snmpdbg.log
中记录它遇
- 到的任何错误(在
64
位Windows
系统上,该文件位于SysWOW64
子目录中)。 - 确保
IRIS %Service_Monitor
服务已启用。 - 如果在
%SYS
命名空间中设置^SYS(“MONITOR”,”SNMP”,”DEBUG”)=1
并重新启动^SNMP IRIS
子代理进程,则可以将更多信息记录到SNMP.log
文件中。这会记录有关接收和发送的每条消息的详细信息。
Windows 系统
- 并非所有
Windows
版本都默认安装Windows SNMP
服务。您可能需要将此作为附加步骤执行。确保该服务的“属性”对话框的“安全”选项卡至少有一个具有读取权限的公共社区。要发送 SNMP 陷阱,您必须在属性对话框的陷阱选项卡上定义社区名称和目标。 IRIS
希望在安装IRIS
之前安装SNMP
服务,因此它可以将iscsnmp.dll
添加到正确的注册表项中。安装IRIS
后,必须重新启动SNMP
服务,以便它正确加载iscsnmp.dll
并可以找到新的IRIS
实例并与之通信。
注意: IRIS
,则iscsnmp.dll
无法正确注册,必须在安装Windows SNMP
服务后使用set myStatus=$$Register^SNMP()
函数来注册。完成后,必须重新启动 SNMP
服务。
- 在
Windows
上,$$start^SNMP()
函数仅向SNMP
服务发送信号,IRIS ^SNMP
进程实际上是通过从SNMP
服务到IRIS
的回调启动的。该过程可能需要几秒钟才能启动,然后再过几秒钟才能响应查询。
UNIX® 系统
许多 UNIX
操作系统 (IBM AIX®) 目前不支持 AgentX
协议。如果您的系统不支持 AgentX
,则必须安装单独的支持 AgentX
的 SNMP
代理,例如 Net-SNMP
。
带有 Net-SNMP 的 Linux 和 macOS
- 默认不开启
AgentX
支持,默认端口不是705
,必须修改snmpd.conf
文件,添加master agentx
和agentXSocket TCP:localhost:705
,或者在命令行使用snmpd -x TCP:localhost:705
. - 必须在
snmpd.conf
中定义syslocation
、syscontact
和sysservices
等基本系统信息,才能成功启动snmpd
守护程序。
最新版本的 Net-SNMP
还实现了 VACM
(基于视图的访问控制模型)安全性,默认情况下,仅允许访问 mib-2.system
子树;因此, IRIS
子代理启动并运行时没有错误,但没有 SNMP
请求转发到 IRIS
。
- 必须扩展
snmpd.conf
中定义的“视图”以包括IRIS MIB
子树。 - 要发送
SNMP
陷阱,必须使用snmpd.conf
中的trapsink
参数定义目标,例如trapsink 192.16.61.36 public
。
MIB
结构
通过 SNMP
接口可用的所有托管对象数据都在 IRIS MIB
文件 ISC-IRIS.mib
中定义,该文件位于 install-dir\SNMP
目录中。通常,SNMP
管理应用程序必须加载 MIB
文件,以便被管理的应用程序能够理解并适当地显示信息。由于此过程因应用程序而异,请查阅管理应用程序文档以了解加载 IRIS MIB
的适当方法。
IRIS MIB
中定义的特定数据记录在文件本身中,因此此处不再重复。但是,了解 IRIS MIB
树的整体结构可能很有价值,尤其是当它与同一系统上的多个实例相关时。
注意:查看 MIB
树的最佳方式是将 MIB
加载到管理应用程序或 MIB
浏览器中。这些工具将 MIB
显示为具有对象 ID (OID)
、对象的匹配文本表示和对象描述的树。
SNMP
定义了管理信息结构 (SMI)
,这是所有被管理对象的特定分层树结构,在 RFC 1155
中有详细说明。每个托管对象都由一个唯一的对象标识符 (OID)
命名,它被写成一个由句点分隔的整数序列,例如:1.3.6.1.2.1.1.1
。 MIB
将这个点分整数标识符转换为文本名称。
标准的 SNMP MIB
定义了许多标准的管理对象。如 IRIS
所做的那样,要为标准 MIB
定义特定于应用程序的扩展,应用程序使用定义如下的企业分支:
iso.org.dod.internet.private.enterprises (1.3.6.1.4.1)
互联网编号分配机构 (IANA
) 为每个组织分配一个私人企业编号作为层次结构中的下一级。对于 IRIS
,这是 16563
,代表系统间。
在此之下, IRIS
实现其企业私有子树如下:
- “产品”或应用程序
ID
级别。对于IRIS
,此值为.4(IscIris)
。这用作MIB
模块标识。 - 下一层是“对象”层,它将数据对象与通知分开。对于
IRIS
,这些是.1 (irisObjects)
.2 (irisTraps)
。按照惯例,树使用一个简短的小写前缀添加到所有数据对象和通知名称。对于IRIS
,这是iris
。。 - 下一级是“表”或组级别。所有数据对象都组织到表中,即使表中只有一个实例或“行”。这用于将管理数据对象组织成组。这对于在一台机器上支持多个 IRIS 实例也是必要的。所有表都使用 IRIS 实例名称作为表的第一个索引。这些表还可以有一个或多个附加索引。
- 下一级始终为 .1,是表的“概念行”(根据
SNMP SMI
的要求)。 - 最后,该表中包含的各个数据对象,包括任何指定为索引的数据对象。
- 通知(陷阱)被定义为与“表”处于同一层级的单个条目。
- 通过通知(陷阱)发送的 IRIS 特定辅助对象被定义为与“表”处于同一层级的单个条目。
例如,将数据库的大小编码为:
1.3.6.1.4.1.16563.4.1.3.1.6.4.84.69.83.84.1
这转化为:
iso.org.dod.internet.private.enterprises.intersystems.isciris.irisObjects irisDBTab.irisDBRow.irisDBSize.TEST(instname).1(DBindex)