首页 > 其他分享 >第六十五章 使用 SNMP 监控 IRIS - 用户定义的 SNMP 监视器类示例

第六十五章 使用 SNMP 监控 IRIS - 用户定义的 SNMP 监视器类示例

时间:2023-02-04 08:11:22浏览次数:48  
标签:OBJECT Monitor 示例 -- 第六十五章 SNMP 监视器

第六十五章 使用 SNMP 监控 IRIS - 用户定义的 SNMP 监视器类示例

本节介绍如何定义可通过 SNMP 查询的用户应用程序监视器类的示例。应用程序监视器仅包括 SNMP 数据中具有 %Monitor 数据类型的属性。

Example Sample Class

以下是此示例的示例类:

Class SNMP.Example Extends %Monitor.Adaptor
{

  /// Give the application a name. This allows you to group different 
  /// classes together under the same application level in the SNMP MIB.
  /// The default is the same as the Package name.
  Parameter APPLICATION = "MyApp";

  /// This groups a set of properties together at the "table" level of the
  /// SNMP MIB hierarchy. The default is the Class name.
  Parameter GROUPNAME = "MyTable";

  /// An integer metric counter
  Property Counter1 As %Monitor.Integer;

  /// Another integer metric counter
  Property Counter2 As %Monitor.Integer;

  /// A status indicator as a string data type
  Property Status As %Monitor.String;

  /// The method is REQUIRED. It is where the Application Monitor
  /// calls to collect data samples, which then get picked up by the
  /// ^SNMP server process when requested.
  Method GetSample() As %Status
  {
    set ..Counter1=$r(200)
    set ..Counter2=200+$r(100)
    set n=$r(4)
    set ..Status=$s(n=1:"Crashed",n=2:"Warning",n=3:"Error",1:"Normal")
    Quit $$$OK
  }

}

在用户命名空间中编译此类之前, IRIS 必须将支持类加载到命名空间中;需要这些类来存储 SNMP 的数据样本。

要加载这些类,请运行 ^%SYSMONMGR,如本指南“使用系统监视器”一章中使用 ^%SYSMONMGR 管理应用程序监视器中所述,并执行以下操作:

  • 选择选项 2,管理监视器类。
  • 选择选项 3Register Monitor System Classes

编译示例类时,它会创建 SNMP.Sample.Example 类来存储示例数据。

重要提示:不要明确删除生成的示例类;如果同时选择删除应用监控和生成的示例类,虽然删除了监控类例程,但示例类例程仍然存在,这会导致错误。为确保正确删除所有示例类例程,只删除生成它的应用程序监视器类;当您删除监视器类时,监视器类和生成的示例类以及这两个类的相关例程都会被删除。例如,要删除示例类(例如 SNMP.Sample.Example),请使用管理门户删除生成它的监视器类(即 SNMP.Example)。

运行 ^%SYSMONMGR 以激活示例类并启动应用程序监视器以收集示例:

  1. 选择选项 2,管理监视器类。
  2. 选择选项 1,激活/停用监视器类。
  3. 要查看已注册监视器类的编号列表,请输入 ?
  4. 输入要激活的监控类的数量;例如,要激活名为 SNMP.Example 的用户定义类,请在类名旁边输入数字。
  5. 选择选项 6,Exit(返回到 Application Monitor 主菜单)。
  6. 选择选项 1,管理应用程序监视器。
  7. 选择选项 1,启动应用程序监视器。
  8. 选择选项 5,Exit(返回到 Application Monitor 主菜单)。
  9. 选择选项 6,Exit(退出 Application Monitor 主菜单)。

注意:有关配置和使用应用程序监视器的信息,请参阅本指南“使用系统监视器”一章中的应用程序监视器。

Example of Creating a User MIB

要创建 SNMP MIB,请从 %SYS 命名空间运行 MonitorTools.SNMP:CreateMIB 方法

该方法的输入参数类似于以下内容:

CreateMIB("MyApp","USER",99990,1,"mycorp","myapp","mc","MC-MYAPP","Unknown",1)

重要提示:请勿使用 99990 作为生产企业 ID;每个组织都应向 IANA 注册自己的 ID

USER>set $namespace = "%SYS"
 
%SYS>Do ##class(MonitorTools.SNMP).CreateMIB("MyApp","USER",99990,1,"mycorp",
"myapp","mc","MC-MYAPP","Unknown",1)
 
 
Create SNMP structure for Application - MyApp
 
     Group - MyTable
          Counter1 = Integer
          Counter2 = Integer
          Status = String
 
 
Create MIB file for MyApp
 
     Generate table MyTable
          Add object Counter1
          Add object Counter2
          Add object Status
 
 
%SYS>

这会在默认目录 (install-dir\mgr\User) 中创建 MC-MYAPP.MIB 文件,可以将其加载到 SNMP 管理应用程序中。

注意:可能需要在系统上重新启动 SNMP 主代理和 IRIS ^SNMP 服务,然后才能识别此 MIB

--
-- MIB file generated for mcMyApp product.
--
-- Sep 16, 2008
--

MC-MYAPP DEFINITIONS ::= BEGIN

IMPORTS

  MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
  Counter32, Gauge32, Integer32
  FROM SNMPv2-SMI
  DisplayString
  FROM SNMPv2-TC
  enterprises
  FROM RFC1155-SMI
  cacheSysIndex
  FROM ISC-IRIS;


mcMyApp MODULE-IDENTITY
    LAST-UPDATED "200809161700Z"
    ORGANIZATION "mycorp"
    CONTACT-INFO "
                    Unknown"
    DESCRIPTION ""
    ::= { mycorp 1 }

mycorp OBJECT IDENTIFIER ::= { enterprises 16563 }

myappObjects OBJECT IDENTIFIER ::= { mcMyApp 1 }

--
-- Begin tables
--

-- Table myappMyTable

myappMyTable         OBJECT-TYPE
       SYNTAX        SEQUENCE OF myappMyTableR
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
       ""
   ::= { myappObjects 1 }

myappMyTableR        OBJECT-TYPE
       SYNTAX        myappMyTableR
       MAX-ACCESS    not-accessible
       STATUS        current
       DESCRIPTION
       "Conceptual row for MyTable table."
       INDEX  { cacheSysIndex }
   ::= { myappMyTable 1 }

myappMyTableR ::=
       SEQUENCE {
        myappCounter1   Integer32
        myappCounter2   Integer32
        myappStatus   DisplayString
       }

myappCounter1        OBJECT-TYPE
       SYNTAX        Integer32
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
       ""
       ::= { myappMyTableR 1 }

myappCounter2        OBJECT-TYPE
       SYNTAX        Integer32
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
       ""
       ::= { myappMyTableR 2 }

myappStatus          OBJECT-TYPE
       SYNTAX        DisplayString
       MAX-ACCESS    read-only
       STATUS        current
       DESCRIPTION
       "Status"
       ::= { myappMyTableR 3 }

--  End of MyTable table

myappTraps  OBJECT IDENTIFIER ::= { mcMyApp 2 }

-------------------------------------------------------------
 END

标签:OBJECT,Monitor,示例,--,第六十五章,SNMP,监视器
From: https://www.cnblogs.com/yaoxin521123/p/17090827.html

相关文章

  • 最大公约数算法真的无趣?一看就会的算法代码示例
    最大公约数算法不是很无聊,计算最大公约数是数学中一个重要的概念,可以用于判断两个数是否互质、求分数的约分等,在很多领域都有广泛的应用。具体如下:判断两个数是否互质:两......
  • ifc4x3 附录E示例-LinearPlacement_2
    ifc4x3 附录E示例-LinearPlacement_2示例概述意图此场景演示了IfcLinearPlacement与IfcAxi2PlacementLinear和IfcPointByDistanceExpression的组合使用。 先决条件......
  • 第六十四章 使用 SNMP 监控 IRIS - 扩展 InterSystems IRIS MIB
    第六十四章使用SNMP监控IRIS-扩展IRISMIB应用程序员可以添加托管对象定义并扩展IRIS子代理为其提供数据的MIB。这不是一个完整的MIB编辑器或SNMP工具包;......
  • stream操作常用API 示例详解
    简介从JDK8开始,增加了一新特性Stream流式操作,Stream中提供了非常多的API供大家使用,灵活的使用这些API,可以非常的方便且优美的实现我们的代码逻辑。最终型toArraytoArray......
  • ifc4x3 附录E示例-LinearPlacement_1
    ifc4x3附录E示例-LinearPlacement_1示例概述意图此场景是沿路线曲线进行局部和线性放置的示例。IfcLinerPlacement定义了依赖于引用空间曲线(通常是IfcAlignmentCurve)的......
  • python爬虫入门脚本示例
    例如在某个目录xx下,有个普通的文件,有些文件后缀*.txt,有的却没有后缀名。现在写一个程序希望将xx目录下没有后缀名的文件改成*.txt结尾。知识点:需要用到python的os模块直接......
  • 第六十三章 使用 SNMP 监控 IRIS - SNMP 故障排除
    第六十三章使用SNMP监控IRIS-SNMP故障排除SNMP故障排除IRIS子代理(运行^SNMP例程)取决于操作系统提供的SNMP主代理的正确安装和配置。正如IRIS作为子代理......
  • Qt | 拖放、拖动的使用、将文件拖入使用示例
    Qt|拖放、拖动的使用、将文件拖入使用示例1、窗体的拖动Qt的控件本身支持了很强大拖放、拖动功能,对于窗体的拖动,例如QDialog,可以覆写这四个函数:voiddragEnterEvent(QDrag......
  • Qt | QDialogButtonBox使用示例
    Qt|QDialogButtonBox使用示例1、简介QDialogButtonBox类,该类包含很多按钮控件,在窗体(widget)或者对话框(dialog)有多个按钮的时候,为方便管理就可以使用该类成组进行管理。......
  • ifc4x3 附录E示例-Georeference_Tiny_Survey_1
    ifc4x3 附录E示例-Georeference_Tiny_Survey_1示例概述意图IFC4x3RC1测量字符串和点及其属性集是项目初始数据的基础,用于任何线性项目的放样,并用于机器控制。因此,如......