第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除
第六十三章 使用 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()函数启动它。如果例程启动但没有继续运行,请检查IRISinstall-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)

浙公网安备 33010602011771号