Skip to main content

This documentation is for an older version of this product. See the latest version of this content.Opens in a new tab

SNMP を使用した InterSystems IRIS の監視

この付録では、InterSystems IRIS® Data Platform と SNMP (Simple Network Management Protocol) 間のインタフェースについて説明します。SNMP は、ネットワーク・デバイスやコンピュータ・デバイスなど、TCP/IP ネットワーク全体を管理する手段として広く使用されている通信プロトコルです。その普及率の高さから、現在では、重要な基盤構造およびプロトコルとして多くのエンタープライズ管理ツールに取り入れられています。これは、InterSystems IRIS にとって非常に重要で、さまざまな種類の管理ツールに管理情報と監視情報を提供する標準的な方法です。

SNMP は、標準のメッセージ形式であると同時に、管理対象オブジェクトの標準定義セットでもあります。また、カスタム管理対象オブジェクトを追加するための標準構造でもあります。InterSystems IRIS では、この機能を使用して、他のアプリケーションで使用する管理情報を定義します。

InterSystems IRIS での SNMP の使用法

SNMP は、クライアント (ネットワーク管理アプリケーション) がサーバ・プログラム (SNMP エージェント) に接続するクライアント・サーバ関係を定義します。このサーバ・プログラムは、リモート・ネットワーク・デバイスまたはコンピュータ・システム上で実行されます。クライアントは、エージェントに対して情報を要求し、エージェントから情報を受け取ります。SNMP メッセージには次の 4 つの基本タイプがあります。

  • GET – 特定の管理対象オブジェクトのデータを取得します。

  • GETNEXT – 階層ツリーで、次に位置している管理対象オブジェクトのデータを取得します。これによって、システム管理者は、デバイスのすべてのデータを参照できます。

  • SET – 特定の管理対象オブジェクトの値を設定します。

  • TRAP – 管理対象のデバイスまたはシステムが送信した非同期アラート。

SNMP MIB (Management Information Base) には、管理対象オブジェクトの定義が格納されます。各デバイスは、標準 MIB のどの部分をサポートしているかを定義するファイル (MIB)、および管理対象オブジェクトのカスタム定義を発行します。InterSystems IRIS では ISC-IRIS.mib ファイルがこれに相当します。このファイルは、install-dir\SNMP ディレクトリに配置されています。

サブエージェントとしての InterSystems IRIS

SNMP クライアントは、既知のアドレス (ポート 161) で待ち受け状態にある SNMP エージェントに接続します。クライアントは常にこのポートを介して接続するので、コンピュータ・システム上では 1 つの SNMP エージェントしか実行できません。システム上の複数のアプリケーションにアクセスする必要がある場合は、マスタ・エージェントを実装します。これによって、複数のサブエージェントに接続できるようになります。インターシステムズでは、SNMP マスタ・エージェントを介して通信するサブエージェントとして InterSystems IRIS SNMP インタフェースを実装しています。

InterSystems IRIS がサポートしているほとんどのオペレーティング・システムには、複数のサブエージェントをサポートするように拡張できる SNMP マスタ・エージェントが備わっています。ただし、多くの場合、これらのエージェントの拡張性は互換性のない独自の方法で実装されています。InterSystems IRIS は、RFC 2741Opens in a new tab で定義されている IETF 推奨の標準プロトコル AgentX (Agent Extensibility) を使用してサブエージェントを実装しています。

一部の標準 SNMP マスタ・エージェントは AgentX をサポートしています。オペレーティング・システムで提供されている SNMP マスタ・エージェントが AgentX 互換でない場合は、代わりに、パブリック・ドメイン Net-SNMP エージェントを使用できます。

Note:

ただし、Windows 標準エージェントは例外で、AgentX をサポートしていません。また、Net-SNMP バージョンも使用できません。この例外に対処するため、InterSystems には、Windows 拡張エージェント DLL iscsnmp.dll が用意されています。この DLL は、標準 Windows SNMP サービス拡張 API と InterSystems IRIS AgentX サーバ間の接続を制御します。

InterSystems IRIS での SNMP の管理

SNMP は標準プロトコルなので、InterSystems IRIS サブエージェントの管理は最小限で済みます。最も重要な作業は、システム上の SNMP マスタ・エージェントが AgentX (Agent Extensibility) プロトコル ("サブエージェントとしての InterSystems IRIS" を参照してください) と互換性があることを確認し、標準の AgentX TCP ポート 705 で接続要求を待ち受けるように設定することです。Windows システムの場合、標準 Windows SNMP サービスに接続するための DLL がシステムによって自動的にインストールされます。Windows SNMP サービスがインストールされており、自動または手動で開始されていることを確認してください。

Important:

特に Linux での Net-SNMP など、SNMP マスタ・エージェントの中には、既定で AgentX が有効にならず、有効になっても既定で TCP ポート 705 を使用しないものがあります。Net-SNMP の場合は、InterSystems IRIS サブエージェントとの通信が有効になるように snmpd.conf ファイルを変更する必要があります。最新バージョンの Net-SNMP も VACM (ビューベースのアクセス制御モデル) のセキュリティを実装しており、既定で、mib-2.system サブツリーへのアクセスのみが許可されます。InterSystems IRIS サブエージェントは、エラーなく起動および実行されますが、SNMP 要求は、InterSystems IRIS に転送されません。snmpd.conf で定義されている “ビュー” を拡張して、InterSystems IRIS MIB サブツリーを追加する必要があります。

次に、以下の手順で、監視サービスを有効にします。

  1. 管理ポータルの [サービス] ページ ([システム管理] > [セキュリティ] > [サービス]) に移動します。

  2. %Service_Monitor サービスをクリックします。

  3. [サービス有効] チェック・ボックスにチェックを付けて、[保存] をクリックします。

  4. サービス・リストのページに戻り、%Service_Monitor サービスが有効になっていることを確認してください。

最後に、InterSystems IRIS を起動したとき、InterSystems IRIS SNMP サブエージェントが自動的に開始されるように構成するには、以下の手順に従います。

  1. 管理ポータルの [モニタ設定] ページ ([システム管理] > [構成] > [追加設定] > [モニタ]) に移動します。

  2. [システム開始時にSNMPエージェントを開始] の設定で、[はい] を選択して、[保存] をクリックします。

  3. この設定を編集した場合、InterSystems IRIS 側の SNMP インタフェースは即座に停止した後に開始します。

^SNMP ルーチンを使用して、InterSystems IRIS SNMP サブエージェントを手動で、またはプログラム的に開始および停止することもできます。

Do start^SNMP(<port>,<timeout>)
Do stop^SNMP

ここで、<port> は、接続に使用する TCP ポート (既定は 705)、<timeout> は TCP ポートの読み取りタイムアウト値 (既定は 20 秒) です。InterSystems IRIS は、<timeout> 値に達するまで、接続の確立時や要求への応答時に発生した問題を install-dir\mgr ディレクトリにある SNMP.LOG ファイルに記録します。

Note:

SNMP マスタ・エージェントを再起動する場合、^SNMP ルーチンを使用して InterSystems IRIS SNMP サブエージェントを手動で再起動する必要がある場合があります (前述の説明を参照してください)。

SNMP のトラブルシューティング

InterSystems IRIS サブエージェント (^SNMP ルーチンを実行) は、オペレーティング・システムが提供する SNMP マスタ・エージェントが適切にインストールおよび構成されていることを前提としています。"サブエージェントとしての InterSystems IRIS" の説明のとおり、^SNMP ルーチンはこのマスタ・エージェントと主に 2 つの方法で通信します。

  • 基本的に、^SNMP は、TCP ポート 705 で AgentX プロトコルを使用します。

  • Windows では ^SNMP は、iscsnmp.dll としてインストールされた Windows 拡張エージェント DLL を使用します。

SNMP エージェントの構成手順の詳細は、オペレーティング・システムで提供されており、システム管理者はこの構成方法を理解するために時間を取る必要があります。以下に、InterSystems IRIS と SNMP エージェントの通信を行う際に問題が発生した場合のトラブルシューティングの基本的なガイドラインとヒントを示します。

すべてのシステム

  • SNMP エージェントが InterSystems IRIS から独立して動作し、少なくとも一般的なシステム情報について mib-2.system ツリーへクエリを実行できることを確認してください。これに失敗したときには、Windows の場合は Windows SNMP サービスを確認してください。Unix®/Linux の場合は SNMP デーモン (snmpd) が実行されているかどうかを確認してください。

  • SNMP システム情報を正常にクエリできるが、InterSystems IRIS MIB をクエリできない場合は、InterSystems IRIS で ^SNMP ルーチンを実行するバックグラウンド・プロセスを確認します。$$start^SNMP() 関数を使用してこのルーチンの起動を試行します。このルーチンが起動はしても、実行を継続しない場合は、InterSystems IRIS の install-dir/mgr ディレクトリにある、messages.log および SNMP.log ログ・ファイルでエラーを確認してください。Windows では、発生したすべてのエラーが iscsnmp.dll によって Windows\System32\snmpdbg.log に記録されます (64 ビット Windows システムでは、このファイルは SysWOW64 サブディレクトリにあります)。

  • InterSystems IRIS の %Service_Monitor サービスが有効化されていることを確認します。

  • %SYS ネームスペースで、^SYS(“MONITOR”,”SNMP”,”DEBUG”)=1 を設定し、^SNMP InterSystems IRIS サブエージェント・プロセスを再起動すれば、より多くの情報を SNMP.log ファイルに記録させることができます。このログでは、送受信されるメッセージごとに詳細情報が記録されます。

Windows システム

  • Windows のすべてのバージョンが、既定で Windows SNMP サービスをインストールするわけではありません。これには、追加の手順が必要になる場合があります。このサービスの [プロパティ] ダイアログの [セキュリティ] タブに、少なくとも 1 つ読み取り権限のあるパブリック・コミュニティが存在することを確認してください。SNMP トラップを送信するには、プロパティ・ダイアログの [トラップ] タブで [コミュニティ名][トラップ送信先] を定義する必要があります。

  • InterSystems IRIS では、InterSystems IRIS をインストールする前に SNMP サービスがインストールされていることを想定しているため、 iscsnmp.dll を適切なレジストリ・キーに追加できます。InterSystems IRIS をインストールしたら、SNMP サービスを再起動して、これが iscsnmp.dll を適切にロードし、新しい InterSystems IRIS インスタンスを検出して通信できるようにする必要があります。

    Note:

    InterSystems IRIS が SNMP サービスよりも先にインストールされていると、 iscsnmp.dll が適切に登録されません。Windows SNMP サービスのインストール後に、set myStatus=$$Register^SNMP() 関数を使用して登録する必要があります。これを行ったら、SNMP サービスを再起動する必要があります。

  • Windows では、$$start^SNMP() 関数は SNMP サービスにシグナルを送信するだけで、InterSystems IRIS の ^SNMP プロセスは、実際には SNMP サービスから InterSystems IRIS へのコールバックによって起動されます。プロセスが開始されるまでには数秒かかり、クエリに応答できるまでにはさらに数秒かかる場合があります。

UNIX® システム

現時点において、多くの UNIX オペレーティング・システム (IBM AIX®) では、AgentX プロトコルがサポートされていません。システムで AgentX がサポートされていない場合は、AgentX をサポートする Net-SNMP などの独立した SNMP エージェントをインストールする必要があります。

Linux および macOS と Net-SNMP

  • 既定では AgentX サポートは有効化されず、既定のポートは 705 ではありません。snmpd.conf ファイルを修正して、master agentx および agentXSocket TCP:localhost:705 を追加するか、コマンド行で snmpd -x TCP:localhost:705 を使用する必要があります。

  • syslocationsyscontactsysservices などの基本的なシステム情報を snmpd.conf で定義して、snmpd デーモンが正常に起動できるようにする必要があります。

  • 最新バージョンの Net-SNMP も VACM (ビューベースのアクセス制御モデル) のセキュリティを実装しており、既定で、mib-2.system サブツリーへのアクセスのみが許可されます。InterSystems IRIS サブエージェントは、エラーなく起動および実行されますが、SNMP 要求は、InterSystems IRIS に転送されません。snmpd.conf で定義されている “ビュー” を拡張して、InterSystems IRIS MIB サブツリーを追加する必要があります。

  • SNMP トラップを送信するには、snmpd.conf ファイルで trapsink パラメータを使用して送信先を定義する必要があります。例えば、trapsink 192.16.61.36 public のように指定します。

InterSystems IRIS MIB 構造

InterSystems IRIS SNMP インタフェースを介して取得できるすべての管理対象オブジェクト・データは、InterSystems IRIS MIB ファイル ISC-IRIS.mib で定義されています。このファイルは、install-dir\SNMP ディレクトリにあります。通常、SNMP 管理アプリケーションが情報を理解して、適切に表示するためには、管理対象アプリケーションの MIB ファイルをロードする必要があります。この手順はアプリケーションによって異なるため、InterSystems IRIS MIB のロード方法については、使用する管理アプリケーションのドキュメントを参照してください。

InterSystems IRIS MIB で定義されているデータはこのファイル自体に詳しく記載されているので、ここでは説明しません。InterSystems IRIS MIB ツリーの全体的な構造を理解しておくと、同一システム上で複数のインスタンスを実行する場合などに非常に役立ちます。

Note:

MIB ツリーを表示する最適な方法は、MIB を管理アプリケーションまたは MIB ブラウザにロードすることです。これらのツールでは、オブジェクト ID (OID)、オブジェクトの内容に一致するテキストの表示、およびオブジェクトの説明を伴ったツリーとして MIB が表示されます。

SNMP では、すべての管理対象オブジェクトを網羅する特別な階層ツリー構造である SMI (Structure of Management Information) が定義されています。詳細は RFC 1155Opens in a new tab で規定されています。それぞれの管理対象オブジェクトには、一連の整数をピリオドで区切って表される一意なオブジェクト識別子 (OID) が割り当てられます (例:1.3.6.1.2.1.1.1)。MIB は、このドット区切り整数識別子をテキスト名に変換します。

標準の SNMP MIB では、多数の標準管理対象オブジェクトが定義されています。標準 MIB のアプリケーション特有拡張を定義する場合、InterSystems IRIS と同様、アプリケーションでは以下のように enterprise 分岐を使用します。

iso.org.dod.internet.private.enterprises (1.3.6.1.4.1)

IANA (Internet Assigned Numbers Authority) では、階層の次のレベルに該当するプライベートなエンタープライズ番号を各組織に割り当てています。InterSystems IRIS の場合、この番号は intersystems を表す 16563 です。

この下に、以下のように InterSystems IRIS のエンタープライズ・プライベート・サブツリーが実装されています。

  • intersystems の下位レベルは、“製品” ID またはアプリケーション ID のレベルです。InterSystems IRIS の場合、これは .4 (iscIris) です。この番号は、MIB モジュール ID として使用できます。

  • 次のレベルは “オブジェクト” のレベルで、ここでは通知からデータ・オブジェクトが抽出されます。InterSystems IRIS の場合、これらは .1 (irisObjects) と .2 (irisTraps) です。慣例により、intersystems ツリーでは、すべてのデータ・オブジェクトと通知名に小文字の短い接頭語が追加されます。InterSystems IRIS の場合、これは iris です。

  • 次のレベルは “テーブル” (グループ・レベル) です。すべてのデータ・オブジェクトはテーブルとして管理されます。テーブルに含まれるインスタンス (“行”) が 1 つしかない場合も同様です。これによって、管理データ・オブジェクトをグループ化することができます。また、1 台のマシン上で複数の InterSystems IRIS インスタンスを実行する場合も、テーブルが必要になります。テーブルの最初のインデックスでは、必ず InterSystems IRIS のインスタンス名が使用されます。テーブルに複数のインデックスが含まれる場合もあります。

  • 次のレベルは、(SNMP SMI で義務付けられている) テーブルの “概念行” で、常に .1 です。

  • 最後に、インデックスとして指定されているデータを含め、テーブル内の個々のデータ・オブジェクトが配置されます。

  • 通知 (トラップ) は、“テーブル” と同じ階層レベルで、個々のエントリとして定義されます。詳細は、この付録の "InterSystems IRIS SNMP トラップ" を参照してください。

  • 通知 (トラップ) を介して送信される InterSystems IRIS 固有の予備オブジェクトは、“テーブル” と同じ階層レベルで、個々のエントリとして定義されます。詳細は、この付録の "InterSystems IRIS SNMP トラップ" を参照してください。

例えば、データベースのサイズが、

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)

InterSystems IRIS MIB の拡張

アプリケーション・プログラマは、管理対象オブジェクトの定義を追加し、InterSystems IRIS サブエージェントがデータを提供する MIB を拡張できます。この拡張は完全な MIB エディタや SNMP ツールキットとすることを意図したものではなく、SNMP を介した参照やクエリの対象とすることができる簡潔なアプリケーション・メトリックを追加する 1 つの手段です。

Note:

オブジェクトは基本的な InterSystems IRIS SNMP 構造に従う必要があります。SNMP テーブル構造のサポートには制限があり (インデックスは整数値のみがサポートされています)、SNMP トラップは作成されません (%Monitor.AlertOpens in a new tab クラスの説明を参照してください)。管理情報の SNMP 構造の基本を理解していると役に立ちます。

これらのオブジェクトを作成する手順は以下のとおりです。

  1. %Monitor.AdaptorOpens in a new tab クラスを継承するクラスに、InterSystems IRIS オブジェクトの定義を作成します。%Monitor パッケージに対する管理対象オブジェクトの追加の詳細は、"インターシステムズ・クラス・リファレンス" を参照してください。

  2. SNMP クラス・メソッドを実行して、それらの管理対象オブジェクトを SNMP で有効にし、管理アプリケーションに必要な MIB 定義ファイルを作成します。それを実行するためのメソッドは MonitorTools.SNMP.CreateMIB() です。

CreateMIB() メソッドのパラメータについては、"インターシステムズ・クラス・リファレンス" の MonitorTools.SNMPOpens in a new tab クラスに関するドキュメントを参照してください。

このメソッドは、%Monitor データベースで定義されているアプリケーションについて、プライベート・エンタープライズ MIB ツリーの分岐を作成します。アプリケーションの実際の MIB ファイルに加え、このメソッドは、MIB ツリーの大まかな内部構造も作成します。InterSystems IRIS サブエージェントはこれを使用して、MIB サブツリーを登録し、GETNEXT 要求に応じてツリーを参照し、GET 要求のインスタンス・データを収集するためのオブジェクト・メソッドを参照します。

すべての管理対象オブジェクト定義は、InterSystems IRIS エンタープライズ MIB ツリーと同じ一般構成 (application.objects.table.row.item.indices) を使用します。どのテーブルでも、最初のインデックスは InterSystems IRIS アプリケーション ID です。すべてのアプリケーションは IANA に登録して、そのアプリケーションのプライベート・エンタープライズ番号を取得する必要があります。この番号は、CreateMIB() メソッドに指定するパラメータの 1 つです。

SNMP でアプリケーションを無効にするには、MonitorTools.SNMP.DeleteMIB() メソッドを使用します。このメソッドを実行すると、アプリケーション MIB の内部構成が削除されます。したがって、InterSystems IRIS サブエージェントは、プライベート・エンタープライズ MIB サブツリーに登録したり、プライベート・エンタープライズ MIB サブツリーに関する要求に応じられなくなります。

ユーザ・モニタ・クラスの定義の例については、この付録の "サンプル・ユーザ定義 SNMP モニタ・クラス" を参照してください。

InterSystems IRIS SNMP トラップ

SNMP クエリで使用可能なオブジェクト・データおよびメトリックのほか、InterSystems IRIS では、非同期アラートである SNMP トラップを送信できます。以下のテーブルでは、InterSystems IRIS 固有の SNMP トラップについて説明します。

InterSystems IRIS SNMP 通知オブジェクト (トラップ)
トラップ名 (番号) 説明
irisStart (1) InterSystems IRIS インスタンスを起動しました。
irisStop (2) InterSystems IRIS インスタンスはシャットダウン処理中です。
irisDBExpand (3) InterSystems IRIS データベースが正常に拡張されました。
irisDBOutOfSpace (4) その後の InterSystems IRIS データベースの拡張が制限される可能性があります。ファイル・システムに追加の 10 個の拡張に対応する空き容量が存在しないか、または空き容量が 50 MB 未満です。
irisDBStatusChange (5) InterSystems IRIS データベースの読み取り/書き込み状況が変更されました。
irisDBWriteFail (6) InterSystems IRIS データベースへの書き込みに失敗しました。失敗した書き込みの InterSystems IRIS エラー・コードが記録されています。
irisWDStop (7) InterSystems IRIS インスタンスのライト・デーモンが停止しました。
irisWDPanic (8) InterSystems IRIS インスタンスのライト・デーモンが “パニック” モードになりました。これは、ライト・デーモンがバッファの全容量を使い果たしたので、データベース・ブロックをライト・イメージ・ジャーナル (WIJ) ファイルにコミットせずに、直接ディスクに書き込むことが必要になっている状況です。
irisLockTableFull (9) InterSystems IRIS インスタンスのロック・テーブルに空きがないので、以降のロックは失敗します。
irisProcessFail (10) アクセス違反が発生したので、プロセスにより InterSystems IRIS が異常終了しました。詳細は、messages.log ファイルを参照してください。
irisECPTroubleDSrv (11) この ECP データ・サーバと InterSystems IRIS データベースの接続に深刻な通信障害が発生しました。詳細は、messages.log ファイルを参照してください。
irisECPTroubleASrv (12) この ECP アプリケーション・サーバとリモート InterSystems IRIS データベースの接続に深刻な通信障害が発生しました。詳細は、messages.log ファイルを参照してください。
irisAuditLost (13) InterSystems IRIS は、監査イベントの記録に失敗しました。考えられる原因として、監査データベース用の領域の問題があります。オペレータにご相談ください。
irisLoggedError (14) “重大な” エラーが messages.log ファイルに記録されました。このトラップには、irisSysErrorMsg で定義されたエラー・メッセージがあります。
irisLicenseExceed (15) ライセンスの要求が、現在使用可能なライセンス数または現在許可されているライセンス数を超えました。
irisEventLogPost (16) エントリが Interoperability イベント・ログに送信されました。
irisAppAlert (100) これは、SNMP を介してアラートを生成するために InterSystems IRIS アプリケーションで使用可能な一般トラップです。このトラップの使用方法の詳細は、%Monitor.Alert.External クラス・メソッドを参照してください。

以下のテーブルでは、上記のテーブルで説明したトラップで送信可能な InterSystems IRIS 固有の予備オブジェクトについて説明します。

トラップで送信される InterSystems IRIS 固有の予備オブジェクト
予備オブジェクト名 (番号) 説明
irisDBWriteError (1) 失敗したデータベース書き込みの InterSystems IRIS 固有エラー・コード。可能な値は、<DATABASE>、<DISKHARD>、<BLOCKNUMBER>、<FILEFULL>、または <DATABASE MAP LABEL> です。
irisApp (2) irisAppAlert トラップを生成したアプリケーション (このトラップの発生元) を識別する短いテキスト文字列 (最長 20 文字)。
irisAppSeverity (3) irisAppAlert トラップの問題の深刻度を表すコード。このコードは、0 (情報)、1 (警告)、2 (重大)、または 3 (致命的) のいずれかです。
irisApptext (4) irisAppAlert トラップの原因となった問題、エラー、またはイベントの、テキスト文字列による説明 (最長 1024 文字)。

サンプル・ユーザ定義 SNMP モニタ・クラス

このセクションでは、SNMP を介したクエリの対象とすることができるユーザ・アプリケーション・モニタ・クラス (このドキュメントの “システム・モニタの使用” の章の "アプリケーション・モニタ" を参照) の定義方法の例を示します。アプリケーション・モニタは、SNMP データの %Monitor データ型のプロパティのみを含んでいます。

サンプル・クラスの例

この例のサンプル・クラスは以下のとおりです。

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
  }

}

このクラスをユーザのネームスペースでコンパイルする前に、InterSystems IRIS はサポートするクラスをそのユーザのネームスペースにロードする必要があります。これらのクラスは、SNMP のデータ・サンプルを保存するために必要です。

クラスをロードするには、このドキュメントの “システム・モニタの使用” の章の "^%SYSMONMGR を使用したアプリケーション・モニタの管理" の説明に従って ^%SYSMONMGR を実行し、以下の操作を行います。

  • オプション 2 の Manage Monitor Classes (モニタ・クラスの管理) を選択します。

  • オプション 3 の Register Monitor System Classes (モニタ・システム・クラスの登録) を選択します。

サンプル・クラスをコンパイルするときに、サンプル・データを格納するための SNMP.Sample.Example クラスが作成されます。

Important:

生成されたサンプル・クラスを明示的に削除しないでください。アプリケーション・モニタおよび生成されたサンプル・クラスの両方を削除すると、モニタ・クラス・ルーチンが削除されているにもかかわらず、サンプル・クラス・ルーチンが残っているので、エラーが発生します。すべてのサンプル・クラス・ルーチンを確実に正しく削除するには、サンプル・クラスを生成したアプリケーション・モニタ・クラスのみを削除します。このモニタ・クラスを削除すると、このモニタ・クラスおよび生成されたサンプル・クラスが、両方のクラスに関連するルーチンと共に削除されます。例えば、サンプル・クラス (SNMP.Sample.Example など) を削除するには、管理ポータルを使用して、そのサンプル・クラスの生成元のモニタ・クラス (つまり、SNMP.Example) を削除します。

^%SYSMONMGR を実行して、サンプル・クラスを有効化し、アプリケーション・モニタを起動してサンプルを収集します。

  1. オプション 2 の Manage Monitor Classes (モニタ・クラスの管理) を選択します。

  2. オプション 1 の Activate/Deactivate a Monitor Class (モニタ・クラスの有効化/無効化) を選択します。

  3. 登録済みのモニタ・クラスの番号付きリストを表示するには「?」を入力します。

  4. 有効化するモニタ・クラスの番号を入力します。例えば、SNMP.Example というユーザ定義クラスを有効にするには、クラス名の横にある番号を入力します。

  5. オプション 6 の Exit (終了) を選択します (アプリケーション・モニタのメイン・メニューに戻ります)。

  6. オプション 1 の Manage Application Monitor (アプリケーション・モニタの管理) を選択します。

  7. オプション 1 の Start Application Monitor (アプリケーション・モニタの開始) を選択します。

  8. オプション 5 の Exit (終了) を選択します (アプリケーション・モニタのメイン・メニューに戻ります)。

  9. オプション 6 の Exit (終了) を選択します (アプリケーション・モニタのメイン・メニューを終了します)。

Note:

アプリケーション・モニタの構成と使用については、このドキュメントの “システム・モニタの使用” の章の "アプリケーション・モニタ" を参照してください。

ユーザ MIB の作成例

SNMP MIB を作成するには、%SYS ネームスペースで MonitorTools.SNMP:CreateMIB メソッドを実行します。詳細は、MonitorTools.SNMPOpens in a new tab クラス・ドキュメントを参照してください。

このメソッドに対する入力パラメータは、以下のようになります。

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

Important:

実稼動では Enterprise ID に 99990 を使用しないでください。組織ごとに専用の ID を IANA に登録する必要があります。

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 管理アプリケーションにロードできます。

Note:

SNMP マスタ・エージェントおよび InterSystems 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

FeedbackOpens in a new tab