Skip to main content

アプリケーション・モニタの使用法

アプリケーション・モニタは、ユーザ拡張可能なメトリック・セットを監視し、自身が収集したデータの永続リポジトリを維持し、ユーザが構成したアラートをトリガします。

アプリケーション・モニタはシステム・モニタ・ツールの一部です。

概要

アプリケーション・モニタは、システム・モニタに構成されている各実行開始ネームスペースで、ユーザが選択したシステム定義メトリックとユーザ定義メトリックのセットを監視する、拡張可能なユーティリティです。"システム・モニタの既定のコンポーネント" で説明されているように、%SYS.Monitor.AppMonSensor (アプリケーション・モニタ・センサ・クラス) は、システム・モニタによって呼び出されると、メトリックをサンプリングし、サンプルを評価し、それ自体の通知を生成します。(システム・モニタの通知やヘルス・モニタの通知と異なり、これらはメッセージ・ログに書き込まれません。)具体的に言うと、アプリケーション・モニタはシステム・モニタの各実行開始ネームスペースで以下を実行します。

  1. システム・モニタの起動時に、起動します。

  2. 付属のシステム・モニタ・クラスを登録できます (これらは既定で %SYS に登録されます)。

  3. 監視対象のシステム定義クラスおよびユーザ定義クラスを有効化できます。有効化できるのは、登録されているシステム・クラスと、ローカル・ネームスペースにあるユーザ定義クラスです。例えば、ユーザ定義クラスを USER ネームスペースでのみ作成すると、そのクラスは USER ネームスペースでのみ有効化できます。

  4. 各アクティブ・クラスによって指定されたメトリックをサンプリングして、それらのクラスを監視します。これらのメトリックは、モニタ・クラスの GetSample() メソッドによって呼び出されたサンプル・クラスから返されるプロパティを表します。例えば、%Monitor.System.LockTableOpens in a new tab クラスは、%Monitor.System.Sample.LockTableOpens in a new tab クラスを呼び出します。このクラスは、TotalSpace プロパティ (ロック・テーブルの合計サイズを格納) や、UsedSpace プロパティ (ロック・テーブルの使用中の領域のサイズを格納) などを返します。サンプリングされたデータとモニタ・メタデータおよびクラス・メタデータは、ローカル・ネームスペースに保存され、すべてのオブジェクトおよび SQL からアクセスできるようになります。

  5. あるクラスのアラートが構成されており、そのクラスがアラートに構成されている評価式を満たすプロパティ値を返した場合、電子メール・メッセージを生成するかクラス・メソッドを呼び出します (これらのアクションのいずれかがアラートに構成されている場合)。例えば、最初に受信者への電子メール通知を構成し、次に %Monitor.System.LockTableOpens in a new tab クラス用のアラートを構成し、%Monitor.System.Sample.LockTableOpens in a new tabUsedSpace プロパティの TotalSpace プロパティに対する比率が .9 (使用率 90%) より大きい場合に電子メールが送信されるように指定します。

Note:

アプリケーション・モニタで提供されている %Monitor.System.HistorySysOpens in a new tab クラスと %Monitor.System.HistoryPerfOpens in a new tab クラスは、有効化されると、システムの使用状況とパフォーマンスのメトリックの履歴データベースを作成および保持します。これは、システムの使用状況とパフォーマンスの問題を経時的に分析するのに役立ちます。これらのクラスと %Monitor.System.HistoryUserOpens in a new tab は、%SYS でのみ動作し、他のネームスペースに登録することはできません。これらのクラスと履歴データベースの詳細は、"履歴モニタ" を参照してください。

^%SYSMONMGR を使用したアプリケーション・モニタの管理

"^%SYSMONMGR ユーティリティの使用" で説明されているように、^%SYSMONMGR ユーティリティでは、アプリケーション・モニタを含め、システム・モニタを管理および構成できます。このユーティリティは任意のネームスペースで実行できます。このユーティリティを使用して行った変更は、このユーティリティが起動されたネームスペースにのみ影響します。ネームスペースで ^%SYSMONMGR を起動して構成した実行開始ネームスペースごとに、個別のアプリケーション・モニタ構成を保持する必要があります。

Note:

アプリケーション・モニタ構成にクラスの有効化などの変更を加えた後は、変更を有効にするために、その変更を行ったネームスペースでシステム・モニタを再起動する必要があります。

アプリケーション・モニタを管理するには、ターミナルで以下のコマンドを入力します。

%SYS>do ^%SYSMONMGR

次に、5 (Manage Application Monitor) を入力します。以下のメニューが表示されます。

1) Set Sample Interval
2) Manage Monitor Classes
3) Change Default Notification Method
4) Manage Email Options
5) Manage Alerts
6) Debug Monitor Classes
7) Exit
 
Option?

実行する操作の番号を入力します。アプリケーション・モニタ・ユーティリティを終了するには Enter キーを押します。

Manage Application Monitor

メイン・メニューのオプションでは、以下のテーブルで説明するようにアプリケーション・モニタを管理できます。

オプション 説明
1) Set Sample Interval

メトリックがサンプリングされる間隔を設定します。既定値は 30 秒です。この設定は、([Manage Monitor Classes] サブメニューの [Set Class Sample Interval] オプションを使用して) クラス固有の間隔を設定することでクラスごとにオーバーライドできます。

注意 : システム・モニタのサンプリング間隔 ([Set System Monitor Options] サブメニューの [Set Sample Interval] を参照) がアプリケーション・モニタ・クラスのサンプリング間隔よりも長い場合、2 つの間隔のうち長い方が使用されます。例えば、システム・モニタの間隔が 30 でアプリケーション・モニタの間隔が 120 である場合、アクティブなアプリケーション・モニタ・クラスはすべて 120 秒ごとにサンプリングされます。システム・モニタの間隔が 60 で %Monitor.System.LockTableOpens in a new tab クラスの間隔が 20 の場合、クラスは 60 秒ごとにサンプリングされます。

2) Manage Monitor Classes アプリケーション・モニタ・マネージャを実行しているネームスペースでシステム定義モニタ・クラスとユーザ定義モニタ・クラスを管理するための [Manage Monitor Classes] サブメニューが表示されます。
3) Change Default Notification Method アラートがトリガされたときに実行されるアラートの既定のアクションを指定できます。別途指定しない限り、作成したすべてのアラートでこのアクションが使用されます。
4) Manage Email Options [Monitor Email Options] サブメニューが表示されます。このサブメニューでは、アラートでこのアクションを指定できるように、電子メール通知を有効化して構成することができます。
5) Manage Alerts [Manage Alerts] サブメニューが表示されます。このサブメニューでは、システム定義およびユーザ定義のモニタ・クラスのアラートを作成できます。

Manage Monitor Classes

このサブメニューでは、システム定義モニタ・クラスおよびユーザ定義モニタ・クラスを管理できます。 実行する操作の番号を入力します。メイン・メニューに戻るには Enter キーを押します。

Option? 2
 
1) Activate/Deactivate Monitor Class
2) List Monitor Classes
3) Register Monitor System Classes
4) Remove/Purge Monitor Class
5) Set Class Sample Interval
6) Exit
 
Option?

このサブメニューでは、以下のテーブルのように、システム定義クラスおよびユーザ定義クラスを管理するメニュー項目が表示されます。

オプション 説明
1) Activate / Deactivate Monitor Class

アプリケーション・モニタは、アクティブなクラスのみをサンプリングします。このオプションでは、非アクティブなクラスを有効化するか、アクティブなクラスを無効化できます。ローカル・ネームスペースに登録されているシステム定義クラスとユーザ定義クラスの番号付きリストとそれぞれの有効化状況を表示するには、[Class?] プロンプトで「?」と入力し、番号またはクラス名を入力します。

2) List Monitor Classes

ローカル・ネームスペースに登録されているシステム定義クラスとユーザ定義クラスのリストと、それぞれの有効化状況を表示します。

3) Register Monitor System Classes

すべてのシステム・モニタ・クラス (%Monitor.System.HistorySysOpens in a new tab クラス、%Monitor.System.HistoryPerfOpens in a new tab クラス、および %Monitor.System.HistoryUserOpens in a new tab クラスは除く) を登録して、それらのクラスをローカル・ネームスペースに保存します。サンプリングを開始するために、このメニューの [1) Activate/Deactivate Monitor Class] オプションを使用して、システム・クラスを引き続き有効にしておく必要があります。

4) Remove/Purge Class

ローカル・ネームスペースにあるクラスのリストからモニタ・クラスを削除します。ローカル・ネームスペースに登録されているシステム定義クラスとユーザ定義クラスの番号付きリストとそれぞれの有効化状況を表示するには、[Class?] プロンプトで「?」と入力し、番号またはクラス名を入力します。

Note:

このオプションでは、クラスそのものが削除されるわけではなく、有効化できる登録クラスのリストからそのクラスの名前が削除されるだけです。リストをリセットするには、このメニューのオプション [3) Register Monitor System Classes] を選択します。

5) Set Class Sample Interval

アプリケーション・モニタの既定のサンプリング間隔をクラスごとにオーバーライドできます。この間隔は [Manage Application Monitor] メニューの [1) Set Sample Interval] オプションで指定されています。既定値は 0 で、そのクラスにはクラス固有のサンプリング間隔が設定されていないことを意味します。

この設定の間隔、[Set Sample Interval] 設定の間隔、および "Set System Monitor Options" で説明しているシステム・モニタのサンプリング間隔の優先順位については、[Set Sample Interval] オプションの説明を参照してください。

6) Debug Monitor Classes

[Debug Monitor Classes] メニューが表示されます (エラーのリストも表示されます)。このメニューでは、デバッグ機能を有効化または無効化できます。

Debug Monitor Classes

このサブメニューでは、システムのデバッグ機能を管理できます。

[Debugging monitor classes] により、サンプル値の収集中に、ユーザ定義のアプリケーション・モニタ・クラスによって生成されたエラーを取得する機能が追加されます。

実行する操作の番号を入力します。メイン・メニューに戻るには Enter キーを押します。

Option? 6
 
1) Enable Debug
2) Disable Debug
3) List Errors
4) Exit
 
Option?

このサブメニューの各オプションでは、以下のテーブルに示すように、アプリケーション・モニタのデバッグ機能を管理できます。

入力フィールド 説明
1) Enable Debug

デバッグ機能を有効にします。クラスがサンプル値を生成していない場合は、エラーが原因でサンプル値の保存が妨げられているかどうかを確認してください。

2) Disable Debug

デバッグ機能を無効にします。

3) List Errors

ローカル・ネームスペース内のエラーの定義がすべて表示されます。例えば、以下のようなものがあります。

%Save()%New()Initialize()GetSample()

^%SYSMONMGR を使用してクラスのデバッグ機能を有効にすると、システム・モニタはクラス内の特定のメソッドで捕捉した最後のエラーを保存します。

Change Default Notification Method

アラートの作成時に、そのアラートがトリガされたときに実行されるアクションを指定します。このアクションの既定の選択肢が、このオプションを使用して設定する既定の通知方法です。実行する操作の番号を入力します。メイン・メニューに戻るには Enter キーを押します。

Option? 3
  
Notify Action (0=none,1=email,2=method)? 0 => 

このオプションでの選択は、以下のテーブルのように、既定の通知メソッドを使用するアラートの構成で使用されます。

入力フィールド 説明
0

アラートがトリガされてもアクションを実行しません。

1

アラートがトリガされると、構成されている受信者に電子メール・メッセージを送信します。電子メールの構成に関する詳細は、"Manage Email Options" を参照してください。

2

アラートがトリガされると、通知メソッドを呼び出します。このアクションを選択すると、アラートで指定されているアプリケーション名と、サンプル・クラスによってモニタ・クラスに返されるプロパティを含む %List オブジェクトを引数とする通知メソッドが呼び出されます ("アプリケーション・モニタの概要" を参照してください)。プロンプトが表示されたら、完全なクラス名とメソッド (packagename.classname.method) を入力します。このメソッドは、ローカル・ネームスペースに存在する必要があります。

Manage Email Options

このサブメニューのオプションでは、電子メールの構成および有効化が可能です。電子メールが有効になっている場合、電子メール通知を送信するよう構成されているアラートがトリガされると、アプリケーション・モニタから電子メール通知が送信されます。実行する操作の番号を入力します。メイン・メニューに戻るには Enter キーを押します。

Option? 4

1) Enable/Disable Email
2) Set Sender
3) Set Server
4) Manage Recipients
5) Set Authorization
6) Test Email
7) Exit

Option? 

このサブメニューの各オプションでは、以下のテーブルのようにアプリケーション・モニタの電子メール通知を管理できます。

オプション 説明
1) Enable / Disable Email

電子メールを有効にすると、アラートがトリガされたときに、アプリケーション・モニタが電子メール通知を送信できます (構成されている場合)。電子メールを無効にすると、アラートがトリガされても電子メール通知は送信されません。

Note:

電子メールを無効にしてから、再び有効にした場合は、電子メール・オプションを再構成する必要はありません。

2) Set Sender

このオプションは必須です。電子メールの送信者を識別するテキストを入力します。指定されている送信メール・サーバに応じて、このテキストが有効な電子メール・アカウントである必要がある場合とない場合があります。

3) Set Server

このオプションは必須です。サイトの送信電子メールを処理するサーバの名前を入力します。サーバの名前が不明の場合、IT 担当者に問い合わせてください。

4) Manage Recipients

このオプションでは、受信者の有効な電子メール・アドレスのリスト、追加、または削除が可能な次のサブメニューが表示されます。 1) List Recipients 2) Add Recipient 3) Remove Recipient 4) Exit

受信者を追加または削除する場合は、電子メール・アドレスを個別に (1 行に 1 つずつ) 入力する必要があります。無効な形式のアドレスは拒否されます。

5) Set Authorization

電子メール・サーバが承認を必要とする場合、承認のユーザ名とパスワードを指定できます。IT 担当者に問い合わせて、この情報を入手してください。エントリを入力しないと、承認のユーザ名とパスワードは NULL に設定されます。

6) Test Email

指定された電子メール・サーバを使用して、指定された受信者にテスト・メッセージを送信します。送信に失敗した場合は、結果として生成されたエラー・メッセージが問題の解決に役立つことがあります。

Manage Alerts

アラートでは以下を指定します。

  • 対象のネームスペース内の条件。モニタ・クラスによってサンプリングされたプロパティの値によって定義されます。

  • その条件が発生した場合にそれをユーザに通知するために実行されるアクション。

前述の例に戻るには、アラートを作成して、以下を指定します。

プロパティに基づいた条件の定義は、評価式と呼ばれます。使用するサンプル・クラスのプロパティを指定した後に、評価式を指定します。評価式では、プロパティは、ユーザがプロパティを指定した順番と対応するプレースホルダで示されます。例えば、ロック・テーブルのアラートを作成するときに、最初に UsedSpace プロパティを指定し、次に TotalSpace プロパティを指定した場合、評価式を「%1 / %2 > .9」と入力します。このとき、プロパティを逆の順番で入力すると、式は「%2 / %1 > .9」となります。

アラート・メニューが表示されたら、実行する操作の番号を入力します。メイン・メニューに戻るには Enter キーを押します。

Option? 2
 
1) Create Alert
2) Edit Alert
3) List Alerts
4) Delete Alert
5) Enable/Disable Alert
6) Clear NotifyOnce Alert
7) Exit
 
Option?

このサブメニューの各オプションでは、以下のテーブルのようにアプリケーション・モニタのアラートを管理できます。

入力フィールド 説明
1) Create Alert

新しいアラートを定義できます。プロンプトおよびそれに対する入力の説明は、"アラート・プロンプトへの入力" を参照してください。新しく作成したアラートは既定で有効になります。

2) Edit Alert

既存のアラートを変更できます。編集するアラートの名前を入力するか、「?」と入力して既存のアラートのリストを表示して、番号または名前を入力します。

Note:

内容を変更しないプロンプトも含め、すべてのプロンプトで入力する必要があります。つまり、変更するフィールドの改訂情報だけでなく、変更しないフィールドの情報も再入力する必要があります。プロンプトおよびそれに対する入力の説明は、"アラート・プロンプトへの入力" を参照してください。

3) List Alerts

ローカル・ネームスペースにあるすべてのアラートの定義を表示します。例えば、以下のようになります。

Alert: LockTable90 USER

Action: email

Class: %Monitor.System.LockTable

Property: UsedSpace,TotalSpace

Expression: %1/%2>.9

Notify Once: True

Enabled: Yes

4) Delete Alert

既存のアラートを削除できます。編集するアラートの名前を入力するか、「?」と入力して既存のアラートのリストを表示して、番号または名前を入力します。

Note:

各アラートを個別に入力する必要があります。つまり、削除するアラートを列や範囲で指定することはできません。

5) Enable / Disable Alert

アラートを有効にすると、そのアラートはアクティブになります。アラートを無効にすると、そのアラートは非アクティブになります。

Note:

アラートを無効にしてから、再び有効にした場合は、アラート・オプションを再構成する必要はありません。

6) Clear NotifyOnce Alert

アラートがトリガされたときに、指定のアラート名に内部フラグ Notified を設定できます。これが設定されると、別のアラートが送信されることはありません。

以下のテーブルでは、アラート・プロンプトでの有効な入力について説明します。

アラート・プロンプトへの入力
入力フィールド 説明
Alert Name?

英数字の名前を入力します。ローカル・ネームスペースで既に定義されているアラート名の番号付きリストを表示するには、[Alert Name?] プロンプトで「?」と入力します。

Application?

電子メール・メッセージまたは通知メソッドに渡す説明テキストを入力します。このテキストには、この後の手順の [Property?] プロンプトで指定するプロパティへの参照を %N の形式で含めることができます。%1 は最初のプロパティを表し、%2 は 2番目のプロパティを表します (以下同様)。

Action (0=default, 1=email, 2=method)?

アラートがトリガされたときに実行されるアクションを指定します。以下のオプションのいずれかを入力します。

  • 0 – 既定で指定されている通知方法 (なし、電子メール、またはクラス・メソッド) を使用します。"Change Default Notification Method" を参照してください。

  • 1 – アラートがトリガされると、説明テキストとサンプル・クラスによってモニタ・クラスに返されたプロパティの名前と値が含まれた電子メール・メッセージ ("アプリケーション・モニタの概要" を参照) を構成された電子メール受信者に送信します。電子メールの構成に関する詳細は、"Manage Email Options" を参照してください。

  • 2 – 説明テキストと、サンプル・クラスによってモニタ・クラスに返されるプロパティを含む %List オブジェクトを引数とする、指定の通知メソッドを呼び出します ("アプリケーション・モニタの概要" を参照してください)。

    プロンプトが表示されたら、完全なクラス名とメソッド (packagename.classname.method) を入力します。このメソッドは、ローカル・ネームスペースに存在する必要があります。

Raise this alert during sampling?

またはDefine a trigger for this alert?

アラートの作成では、1 番目のプロンプトが表示されます。作成時に 1 番目のプロンプトで「No」を入力したアラートの編集では、2 番目のプロンプトが表示されます。以下のいずれかを入力します。

  • Yes – 必要な情報のプロンプト表示を続行します。

  • No – スキップして終了します。[Class?][Property?]、および [Evaluation expression?] の各プロンプトは省略されます。

Class?

ローカル・ネームスペースに登録されているシステム定義モニタ・クラスまたはユーザ定義モニタ・クラスの名前を入力します。ローカル・ネームスペースにある登録クラスの番号付きリストとそれぞれの有効化状況を表示するには、[Class?] プロンプトで「?」と入力します。

Note:

非アクティブなクラスのアラートを作成できます。アラートが構成されているクラスが削除されても、アラート自体は削除されません。

Property?

前のプロンプトで指定したクラスで定義されているプロパティの名前 (式の評価や説明テキストで使用しているもの) を入力します。指定のクラスで定義されているプロパティの番号付きリストを表示するには、[Property?] プロンプトで「?」と入力して、番号または名前を入力します。各プロパティは個別に入力する必要があります。入力の完了後、空白のプロンプトで Enter キーを押すと、プロパティのリストが指定した順序で表示されます。

Evaluation expression?

[Property?] プロンプトで指定したプロパティの評価に使用する式。 例えば、(%1 = "User") && (%2 < 100) では、%1 はプロパティのリストの最初のプロパティを表し、%2 は 2 番目のプロパティを表します。

Notify once only?

以下のいずれかを入力します。

  • Yes – アラートの最初のトリガでのみユーザに通知します。

  • No – アラートがトリガされるたびにユーザに通知します。

アプリケーション・モニタのメトリック

アプリケーション・モニタに付属のシステム・モニタ・クラスは、次の表に示すように、さまざまなサンプル・クラスを呼び出します。

サンプル・クラス アプリケーション・モニタ・システム・クラス
監査メトリック %Monitor.System.Sample.AuditCountOpens in a new tab および %Monitor.System.Sample.AuditEventsOpens in a new tab
クライアント・メトリック %Monitor.System.Sample.ClientsOpens in a new tab
Web ゲートウェイ・メトリック %Monitor.System.Sample.CSPGatewayOpens in a new tab
ディスク容量メトリック %Monitor.System.Sample.DiskspaceOpens in a new tab
空き容量メトリック %Monitor.System.Sample.FreespaceOpens in a new tab
グローバル・メトリック %Monitor.System.Sample.GlobalsOpens in a new tab
履歴データベース・メトリック ("履歴モニタ" を参照) %Monitor.System.Sample.HistoryPerfOpens in a new tab%Monitor.System.Sample.HistorySysOpens in a new tab%Monitor.System.Sample.HistoryUserOpens in a new tab
ジャーナル・メトリック %Monitor.System.Sample.JournalsOpens in a new tab
ライセンス・メトリック %Monitor.System.Sample.LicenseOpens in a new tab
ロック・テーブル・メトリック %Monitor.System.Sample.LockTableOpens in a new tab
プロセス・メトリック %Monitor.System.Sample.ProcessesOpens in a new tab
ルーチン・メトリック %Monitor.System.Sample.RoutinesOpens in a new tab
サーバ・メトリック %Monitor.System.Sample.ServersOpens in a new tab
システム活動メトリック %Monitor.System.Sample.SystemMetrics

各カテゴリのサンプル・メトリックに対応するプロパティのリストは、"インターシステムズ・クラス・リファレンス" を参照してください。

MONITOR 機能を制御する類似の関数群が、%Monitor.System パッケージのクラスに用意されています。このパッケージを使用すると、収集したデータに名前を付け、永続オブジェクト形式として保存できます。詳細は、"インターシステムズ・クラス・リファレンス" で、%Monitor.System.Sample パッケージ・クラスのドキュメント、および %Monitor.System.SystemMetricsOpens in a new tab クラスのドキュメントを参照してください。

メトリックの生成

%Monitor.SampleAgent クラスは実際のサンプリングを行い、メトリック・クラスの Initialize() メソッドと GetSample() メソッドを呼び出します。

%Monitor.SampleAgent.%New() コンストラクタは、実行するメトリック・クラスの名前を引数として取ります。役割は、そのクラスのインスタンスを生成し、そのクラスの Startup() メソッドを呼び出すことです。その後、%Monitor.SampleAgent.Collect() メソッドが呼び出されるたびに、Sample Agent はそのクラスの Initialize() メソッドを呼び出し、そのクラスの GetSample() メソッドを繰り返し呼び出します。さらに、GetSample() が呼び出されるたびに、%Monitor.SampleAgent は、メトリック・クラスのサンプル・クラスを作成します。これらの処理の擬似コードは以下のとおりです。

set sampler = ##class(%Monitor.SampleAgent).%New("MyMetrics.Freespace")
/* at this point, the sampler has created an instance of MyMetrics.Freespace,
and invoked its Startup method */
for I=1:1:10 { do sampler.Collect() hang 10 }
/* at each iteration, sampler calls MyMetrics.Freespace.Initialize(), then loops
on GetSample().  Whenever GetSample() returns $$$OK, sampler creates a new
MyMetrics.Sample.Freespace instance, with the sample data. When GetSample()
returns an error value, no sample is created, and sampler.Collect() returns. */

メトリック・データの表示

すべてのメトリック・クラスは、CSP 対応です。サンプル・クラスの生成時に、CSP コードが自動的に生成されます。したがって、メトリックを表示するには、Web ブラウザを使用するのが最も簡単です。"メトリックの生成" の例に基づくと、CSP URL の形式は以下のとおりです。<baseURL> はインスタンスのベース URL です。http://<baseURL>/csp/user/MyMetrics.Sample.Freespace.cls。表示される出力は、以下のようになります。

Monitor - Freespace c:\InterSystems\IRIS51\ 
            Name of dataset:  c:\InterSystems\IRIS51\
Current amount of Freespace:  8.2MB

Monitor - Freespace c:\InterSystems\IRIS51\mgr\ 
            Name of dataset:  c:\InterSystems\IRIS51\mgr\
Current amount of Freespace:  6.4MB

%Monitor.ViewOpens in a new tab クラスの Display(metric_class) メソッドを使用することもできます。例えば、以下のようになります。

%SYS>set mclass="Monitor.Test.Freespace"

%SYS>set col=##class(%Monitor.SampleAgent).%New(mclass)

%SYS>write col.Collect()
1
%SYS>write ##class(%Monitor.View).Display(mclass)

Monitor - Freespace    c:\InterSystems\IRIS51\
                Name of dataset:  c:\InterSystems\IRIS51\
    Current amount of Freespace:  8.2MB

Monitor - Freespace    c:\InterSystems\IRIS51\mgr\
                Name of dataset:  c:\InterSystems\IRIS51\mgr\
    Current amount of Freespace:  6.4MB

Note:

名前に % (パーセント記号) が含まれているクラスの URL は、その場所に %25 を使用する必要があります。例えば、%Monitor.System.FreespaceOpens in a new tab クラスの URL の形式は以下のとおりです。<baseURL> はインスタンスのベース URL です。

http://<baseURL>/csp/sys/%25Monitor.System.Freespace.cls

ユーザ定義アプリケーション・モニタ・クラスの記述

付属のシステム・クラスのほか、ユーザ・アプリケーションのデータとカウンタを監視する独自のモニタ・クラスおよびサンプル・クラスを記述することができます。

モニタ・クラスは、抽象モニタ・クラス %Monitor.AdaptorOpens in a new tab から継承する任意のクラスです。%Monitor.System クラスはそのようなクラスの例です。独自のユーザ定義モニタ・クラスを作成する手順は次のとおりです。

  1. データを監視するネームスペースで ^%MONAPPMGR を実行します。オプション 2 を使用してモニタ・クラスをリストし、そのメニュー内のオプション 3 を使用して、モニタ・システム・クラスを登録します。

    SAMPLES>d ^%MONAPPMGR
     
     
    1) Set Sample Interval
    2) Manage Monitor Classes
    3) Change Default Notification Method
    4) Manage Email Options
    5) Manage Alerts
    6) Exit
     
    Option? 2
     
    1) Activate/Deactivate Monitor Class
    2) List Monitor Classes
    3) Register Monitor System Classes
    4) Remove/Purge Monitor Class
    5) Set Class Sample Interval
    6) Exit
     
    Option? 3
    Exporting to XML started on 06/21/2022 12:52:36
    Exporting class: Monitor.Sample
    Export finished successfully.
     
    Load started on 06/21/2022 12:52:36
    Loading file C:\InterSystems\SRCCTRL\mgr\Temp\t0jFhPqLkZoYAA.stream as xml
    Imported class: Monitor.Sample
    Compiling class Monitor.Sample
    Compiling table Monitor.Sample
    Compiling routine Monitor.Sample.1
    Load finished successfully.
     
     
    1) Activate/Deactivate Monitor Class
    2) List Monitor Classes
    3) Register Monitor System Classes
    4) Remove/Purge Monitor Class
    5) Set Class Sample Interval
    6) Exit
     
    Option?
    
  2. %Monitor.AdaptorOpens in a new tab を継承するクラスを記述します。この継承は、永続性、パラメータ、プロパティ、コード生成、およびユーザのクラス定義からモニタ・メタデータを生成するプロジェクションを提供します。このクラスおよびユーザが記述する必要があるコードの詳細は、%Monitor.AdaptorOpens in a new tab クラスの説明を参照してください。

  3. クラスをコンパイルします。%Monitor.AdaptorOpens in a new tab から継承したクラスをコンパイルすると、ユーザ・クラスのサブパッケージである Sample に新しいサンプル・クラスが生成されます。例えば、A.B.MyMetric をコンパイルすると、新しいクラスが A.B.Sample.MyMetric に生成されます。生成されたクラスで何らかの操作を実行する必要はありません。

    Important:

    アプリケーション・モニタ・クラスを削除するには、モニタ・クラスのみを削除します。つまり、生成されたサンプル・クラスは削除しないようにします。管理ポータルを使用して、サンプル・クラス (例えば、A.B.Sample.MyMetric) の生成元であるモニタ・クラス (例えば、A.B.MyMetric) のみを削除します。これにより、モニタ・クラスと生成されたサンプル・クラスの両方が自動的に削除されます。

サンプル・クラスはすべて自動的に CSP 対応になるので、A.B.Sample.MyMetric.cls を指定すれば、ユーザ・メトリックのサンプル・データを参照できます。アプリケーション・モニタはこのクラスを自動的に呼び出し、このクラスが有効な場合はデータとアラートを生成します。モニタ・クラスの有効化に関する情報は、"Manage Monitor Classes" を参照してください。

Important:

SECURITYRESOURCE パラメータは、明示的に変更していない場合、%Monitor.AdaptorOpens in a new tab 内 (したがって、%Monitor.AdaptorOpens in a new tab から継承するユーザ・クラス内) では空です。コード生成では、SECURITYRESOURCE 値がユーザ定義のクラスから生成されたサンプル・クラスにコピーされます。

以下の簡単な例では、InterSystems IRIS インスタンスの各データセットに空き領域を確保します。

それぞれのサンプリングでは、n インスタンスのサンプル・データ・オブジェクトを要求します。各インスタンスはデータセットに対応しています。また、この例では、各インスタンスのプロパティは 1 つだけ (サンプル収集時におけるそのデータセットの空き容量) です。

  1. %Monitor.AdaptorOpens in a new tab を継承するクラスを作成します。

    Class MyMetric.Freespace Extends %Monitor.Adaptor [ ProcedureBlock ]
    {
    }
    
  2. サンプル・データの一部となるプロパティを追加します。それらの型は %Monitor パッケージ内のクラスである必要があります。

    • Gauge

    • Integer

    • Numeric

    • String

    以下に例を示します。

    Class MyMetric.Freespace Extends %Monitor.Adaptor [ ProcedureBlock ]
    {
    /// Name of dataset
    Property DBName As %Monitor.String(CAPTION = "Database Name");
    
    /// Current amount of Freespace
    Property FreeSpace As %Monitor.String;
    }
  3. サンプルのインスタンスの中で、どのフィールドが一意キーになるかを指定する INDEX パラメータを追加します。

    Parameter INDEX = "DBName";
    
  4. 必要に応じてコントロール・プロパティを追加して、そのプロパティが生成されたクラスのストレージ定義の一部にならないように [Internal] のマークを付けます。

    /// Result Set for use by the class
    Property Rspec As %SQL.StatementResult [Internal];
    
  5. Initialize() メソッドをオーバーライドします。Initialize() は、各メトリックの収集を開始する時点で呼び出されます。

    /// Initialize the list of datasets and freespace.
    Method Initialize() As %Status
    {
        set stmt=##class(%SQL.Statement).%New()
        set status= stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
        set ..Rspec = stmt.%Execute()
        return $$$OK
    }
  6. GetSample() メソッドをオーバーライドします。GetSample() は、状態値 0 が返されるまで繰り返し呼び出されます。各サンプル・インスタンスにメトリック・データを取り込むためのコードを記述します。

    /// Get dataset metric sample.
    /// A return code of $$$OK indicates there is a new sample instance.
    /// A return code of 0 indicates there is no sample instance.
    Method GetSample() As %Status
    {
        // Get freespace data
        set stat = ..Rspec.%Next(.sc)
    
        // Quit if we have done all the datasets
        if 'stat {
            Quit 0
        }
    
        // populate this instance
        set ..DBName = ..Rspec.%Get("Directory")
        set ..FreeSpace = ..Rspec.%Get("Available")
    
        // quit with return value indicating the sample data is ready
        return $$$OK
    }
  7. このクラスをコンパイルします。クラスは以下のようになります。

    Class MyMetric.Freespace Extends %Monitor.Adaptor
    {
    Parameter INDEX = "DBName";
    
    /// Name of dataset
    Property DBName As %Monitor.String;
    
    /// Current amount of Freespace
    Property FreeSpace As %Monitor.String;
    
    /// Result Set
    Property Rspec As %SQL.StatementResult [Internal];
    
    /// Initialize the list of datasets and freespace.
    Method Initialize() As %Status
    {
        set stmt=##class(%SQL.Statement).%New()
        set status= stmt.%PrepareClassQuery("SYS.Database","FreeSpace")
        set ..Rspec = stmt.%Execute()
        return $$$OK
    }
    
    /// Get routine metric sample. 
    /// A return code of $$$OK indicates there is a new sample instance. 
    /// Any other return code indicates there is no sample instance. 
    Method GetSample() As %Status
    {
        // Get freespace data
        set stat = ..Rspec.%Next(.sc)
    
        // Quit if we have done all the datasets
        if 'stat {
            Quit 0
        }
    
        // populate this instance
        set ..DBName = ..Rspec.%Get("Directory")
        set ..FreeSpace = ..Rspec.%Get("Available")
    
        // quit with return value indicating the sample data is ready
        return $$$OK
    }
    
    }
  8. さらに、必要であれば、Startup() メソッドと Shutdown() メソッドをオーバーライドします。これらのメソッドは、サンプリングの開始時に一度だけ呼び出されます。したがって、チャネルを開く操作など、1 回限りの初期化処理を実行できます。

    /// Open a tcp/ip device to send warnings
    Property io As %Status;
    
    Method Startup() As %Status
    {
        set ..io="|TCP|2"
        set host="127.0.0.1"
        open ..io:(host:^serverport:"M"):200
    }
    
    Method Shutdown() As %Status
    {
        close ..io
    }
    
    
  9. このクラスをコンパイルすると、パッケージ MyMetric.Sample に新しいクラス MyMetric.Sample.Freespace が作成されます。

    /// Persistent sample class for MyMetric.Freespace
    Class MyMetric.Sample.Freespace Extends Monitor.Sample 
    {
    Parameter INDEX = "DBName";
    
    Property Application As %String [ InitialExpression = "MyMetric" ];
    
    /// Name of dataset
    Property DBName As %Monitor.String(CAPTION = "");
    
    /// Current amount of Freespace
    Property FreeSpace As %Monitor.String(CAPTION = "");
    
    Property GroupName As %String [ InitialExpression = "Freespace" ];
    
    Property MetricsClass As %String [ InitialExpression = "MyMetric.Freespace" ];
    
    }
    Note:

    このクラスは変更しないでください。ただし、このクラスから継承して、サンプル・データに対するカスタム・クエリを記述することは可能です。

    Important:

    アクティブなユーザ定義のアプリケーション・モニタ・クラスを変更してリコンパイルすると、そのクラスは非アクティブ化され、クラス固有のサンプリング間隔のオーバーライドは削除されます (設定されている場合)。このクラスをリストアするには、アクティブ化し、必要に応じてサンプリング間隔を再設定して、システム・モニタを再起動します。

関連項目

FeedbackOpens in a new tab