文章
· 二月 1, 2023 阅读大约需 5 分钟

第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除

第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除

SNMP 故障排除

IRIS 子代理(运行 ^SNMP 例程)取决于操作系统提供的 SNMP 主代理的正确安装和配置。正如 IRIS 作为子代理中所述,^SNMP 例程与此主代理通信有两种主要方式:
- ^SNMP 主要在 TCP 端口 705 上使用 AgentX 协议。
- 在 Windows 上,^SNMP 使用安装为 iscsnmp.dllWindows 扩展代理 DLL

操作系统应该提供配置 SNMP 代理的详细说明,系统管理员应该花一些时间来了解如何执行此操作。如果在使 IRISSNMP 代理通信时遇到问题,以下是一些基本的故障排除指南和提示。

所有系统

  • 确保 SNMP 代理独立于 IRIS 工作,并且至少可以查询 mib-2.system 树以获取一般系统信息。如果失败,在 Windows 上检查 Windows SNMP 服务;在 UNIX®/Linux 上查看 SNMP 守护程序 (snmpd) 是否正在运行。
  • 如果可以成功查询 SNMP 系统信息但不能查询 IRIS MIB,则检查 IRIS 中运行 ^SNMP 例程的后台进程。尝试使用 $$start^SNMP() 函数启动它。如果例程启动但没有继续运行,请检查 IRIS install-dir/mgr 目录中的 messages.logSNMP.log 日志文件中的错误。在 Windows 上,iscsnmp.dll 会在 Windows\System32\snmpdbg.log 中记录它遇到的任何错误(在 64Windows 系统上,该文件位于 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,则必须安装单独的支持 AgentXSNMP 代理,例如 Net-SNMP

带有 Net-SNMP 的 Linux 和 macOS

  • 默认不开启AgentX支持,默认端口不是705,必须修改snmpd.conf文件,添加master agentxagentXSocket TCP:localhost:705,或者在命令行使用snmpd -x TCP:localhost:705 .
  • 必须在 snmpd.conf 中定义 syslocationsyscontactsysservices 等基本系统信息,才能成功启动 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.1MIB 将这个点分整数标识符转换为文本名称。

标准的 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)
讨论 (0)1
登录或注册以继续