Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

SNMP を使用した Caché の監視

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

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

ここで説明する内容は以下のとおりです。

Note:

Caché と連動するように SNMP を構成する際の詳細で実用的な考察については、InterSystems Developer Community に掲載されたインターシステムズのシニア・テクノロジ・アーキテクトによる記事 "InterSystems Data Platforms and performance - Part 5 Monitoring with SNMPOpens in a new tab" を参照してください。

Caché での SNMP の使用法

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

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

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

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

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

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

サブエージェントとしての Caché

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

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

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

Note:

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

Caché での SNMP の管理

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

Important:

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

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

  1. 管理ポータルで、[システム][セキュリティ管理][サービス] に移動します。

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

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

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

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

  1. 管理ポータルで、[システム][構成][モニタ設定] に移動します。

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

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

^SNMP ルーチンを使用して、Caché SNMP サブエージェントを手動で開始および停止することもできます。

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

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

Note:

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

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

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

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

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

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

一般

すべてのシステム :

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

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

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

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

Windows

Windows システム :

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

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

    Note:

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

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

UNIX®

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

Note:

Oracle Solaris では、System Management Agent (SMA) は、NET-SNMP のバージョンであっても、Cache AgentX の実装と互換性がありません。そのため、SMA エージェント (および必要に応じて古い snmpdx エージェント) を無効にし、AgentX をサポートするために NET-SNMP の標準バージョンをインストールする必要があります。

Linux/Mac OS X および Net-SNMP

Linux システムおよび Mac OS X システム :

  • 既定では 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 サブツリーへのアクセスのみが許可されます。Caché サブエージェントは、エラーなく起動および実行されますが、SNMP 要求は、Caché に転送されません。snmpd.conf で定義されている “ビュー” を拡張して、Caché MIB サブツリーを追加する必要があります。

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

Caché MIB 構造

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

Caché MIB で定義されているデータはこのファイル自体に詳しく記載されているので、ここでは説明しません。Caché 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 のアプリケーション拡張を定義する場合は、Caché と同様、以下のように enterprise 分岐を使用します。

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

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

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

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

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

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

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

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

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

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

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

1.3.6.1.4.1.16563.1.1.3.1.6.4.84.69.83.84.1

としてコード化されている場合、このコードは以下の内容を表しています。

iso.org.dod.internet.private.enterprises.intersystems.iscCache.cacheObjects
.cacheDBTab.cacheDBRow.cacheDBSize.TEST(instname).1(DBindex)

Ensemble MIB 構造

ISC-CACHE.mib で定義した Caché 管理対象オブジェクト・データのほか、Ensemble では、ISC-ENSEMBLE.mib で定義した情報も使用できます。Ensemble は、Caché 同様、IANA で規定されたプライベート・エンタープライズ番号 16563 を使用します。この番号は、intersystems を表します。

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

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

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

  • これ以下のレベルには、"Caché MIB 構造" の説明にある、Caché での実装と同じ実装が続きます。

Caché MIB の拡張

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

Note:

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

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

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

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

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

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

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

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

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

Caché SNMP トラップ

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

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

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

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

以下のテーブルでは、Ensemble 固有の SNMP トラップについて説明します。

Ensemble SNMP 通知オブジェクト (トラップ)
トラップ名 (番号) 説明
ensEvent (1) SNMP の Caché 実装は、Ensemble ビジネス・ホストから Ensemble イベント・ログにアラートの通知があるたびに Ensemble_LogEvent にシグナルを送信します。

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

このセクションでは、SNMP を介したクエリの対象とすることができるユーザ・アプリケーション・モニタ・クラス (このドキュメントの “Caché システム・モニタの使用” の章の "Caché アプリケーション・モニタ" を参照) の定義方法の例を示します。アプリケーション・モニタは、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
  }

}

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

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

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

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

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

Important:

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

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

ユーザ 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>zn "%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 マスタ・エージェントおよび Caché ^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-CACHE;


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