Java を使用したモニタリング拡張機能の作成
カスタムメトリックをマシンエージェントとサーバの可視性で収集できるようにする Java モニタリング拡張機能を作成できます。これらのカスタムメトリックは、定義、提供し、コントローラにレポートします。これは、スクリプトを使用してモニタリング拡張機能を追加するという方法の代わりの方法です。
モニタリング拡張機能を使用してカスタムメトリックをキャプチャする場合、それらのカスタムメトリックは、Splunk AppDynamics アプリケーションとマシンエージェントによってキャプチャされる標準メトリックに対して使用できる同じ Splunk AppDynamics サービスによってサポートされます。これらのサービスには、自動ベースライン化、異常検知、メトリックブラウザへの表示、カスタムダッシュボードへの表示機能、アラートやその他のアクションをトリガーするためのポリシーでの使用機能が含まれます。
このページでは、Java でモニタリング拡張機能を作成する方法について説明します。
エージェントに対しては、モニタリング拡張機能は、固定スケジュールで実行され、メトリックを収集するタスクです。
はじめる前に
独自の拡張機能を最初から作成する前に、Splunk AppDynamics コミュニティで拡張機能を確認してください。拡張機能の無料ダウンロードについては、GitHub を参照してください
新しい拡張機能が常に追加されています。他のユーザが必要なもの、または必要なものに近いものをすでに作成している可能性があります。必要なものに近いものをダウンロードし、変更をいくつか加えれば使用できる場合があります。
Java でのモニタリング拡張機能の作成
Java でモニタリング拡張機能を作成するには、次のようにします。
モニタリング拡張クラスの作成
AManagedMonitor com.singularity.ee.agent.systemagent.api MachineAgent.jar を拡張してモニタリング拡張クラスを作成します。
モニタリング拡張クラスは、次のタスクを実行します。
- Splunk AppDynamics に追加するメトリックの値をハッシュマップに入力します。これらのメトリックは、ご使用の環境、およびカスタムメトリックの取得元のソースに応じて取得します。
MetricWriterクラスを使用して収集するメトリックのタイプを定義します。「メトリック処理修飾子」を参照してください。AManagedMonitorクラスのexecute()メソッドを使用して、メトリックをコントローラにアップロードします。
サンプルソースコードについては、Extension_Class_Source.txt 参照してください。
メトリックパス
マシンエージェントとサーバの可視性によって処理されるすべてのカスタムメトリックは、[Metric Browser > Application Infrastructure Performance] に表示されます。「I」文字を使用して、[Application Infrastructure Performance] からカスタムメトリックへのパスを指定します。メトリックが特定の階層に適用される場合は、階層のメトリックパス(「Component」、その後にコロン「:」と階層名または階層 ID)を使用します。
たとえば、メトリックを AccountService 階層に関連付けるには、メトリックパスを次のように指定します。 Server|Component:AccountService|Custom Metrics|Path|
メトリックは、メトリックブラウザのツリーの下に表示されます。
既存のタイプのメトリックの次にカスタムメトリックを挿入できます。たとえば、次の宣言により、pool usage という名前のカスタムメトリックが JMX メトリックの次に表示されます。name="Server|Component:<tier-name>|JMX|Pool|First|pool usage",value=10
この後、このメトリックを、他のタイプの JMX メトリックと同様に、正常性ルールで使用できます。
メトリック名
メトリック名は、同じメトリックパス内で一意である必要がありますが、メトリック階層全体に対して一意である必要はありません。
メトリックブラウザに表示されるときに見やすいように、短いメトリック名を使用することを推奨します。
メトリックをコントローラにアップロードするときにメトリック名の前にメトリックパスを付加します。
aggregator="aggregator type" METRIC_AGGREGATION_TYPE_AVERAGE METRIC_AGGREGATION_TYPE_SUM METRIC_AGGREGATION_TYPE_OBSERVATION METRIC_TIME_ROLLUP_TYPE_AVERAGE METRIC_TIME_ROLLUP_TYPE_SUM METRIC_TIME_ROLLUP_TYPE_CURRENT METRIC_CLUSTER_ROLLUP_TYPE_INDIVIDUAL METRIC_CLUSTER_ROLLUP_TYPE_COLLECTIVE
メトリック処理修飾子
コントローラには、メトリックの処理方法(集約、時間ロールアップ、および階層ロールアップ)を示すさまざまな修飾子があります。
メトリック修飾子には、次の 3 つのタイプがあります。
- アグリゲータ修飾子
- 時間ロールアップ修飾子
- クラスタロールアップ修飾子
これらのオプションは、MetricWriter クラスによって提供される列挙型を使用して指定します。
集約修飾子
集約修飾子では、1 分間にレポートされた値をマシンエージェントでどのように集約するかを指定します。
集約修飾子は、次のように指定します。
この値は列挙型です。有効な値は次のとおりです。
| アグリゲータタイプ | 説明 |
|---|---|
|
METRIC_AGGREGATION_TYPE_AVERAGE |
これがデフォルトです。その 1 分にレポートされたすべての値の平均。 |
|
METRIC_AGGREGATION_TYPE_SUM |
その 1 分にレポートされたすべての値の合計。これにより、メトリックはカウンタと同様に動作します。 |
|
METRIC_AGGREGATION_TYPE_OBSERVATION |
その 1 分にレポートされた最後の値。その1分以内に値がレポートされない場合は、最後にレポートされた値が使用されます。 |
時間ロールアップ
時間ロールアップ修飾子では、時間が経過して 1 分単位のテーブルから 10 分単位のテーブル、および 60 分単位のテーブルに変換するときに、コントローラで値をどのようにロールアップするかを指定します。
| ロールアップ戦略 | 説明 |
|---|---|
|
METRIC_TIME_ROLLUP_TYPE_AVERAGE |
1 分間のすべてのデータポイントの平均(10 分単位または 60 分単位のテーブルに追加する場合)。 |
|
METRIC_TIME_ROLLUP_TYPE_SUM |
1 分間のすべてのデータポイントの合計(10 分単位または 60 分単位のテーブルに追加する場合)。 |
|
METRIC_TIME_ROLLUP_TYPE_CURRENT |
その 10 分または 60 分の間隔で最後にレポートされた 1 分間のデータポイント。 |
クラスタロールアップ
クラスターロールアップ修飾子では、コントローラで階層内のメトリック値をどのように集約するかを指定します。
| ロールアップ戦略 | 説明 |
|---|---|
|
METRIC_CLUSTER_ROLLUP_TYPE_INDIVIDUAL |
階層内の各ノードでのメトリック値を平均して、メトリック値を集計します。 |
|
METRIC_CLUSTER_ROLLUP_TYPE_COLLECTIVE |
階層内のすべてのノードのメトリック値を合計して、メトリック値を集計します。 |
たとえば、階層に 2 つのノード、ノード A とノード B があり、ノード A に 1 分あたり 3 個のエラーがあり、ノード B に 1 分あたり 7 個のエラーがある場合、INDIVIDUAL 修飾子では 1 分あたり 5 個のエラーが値としてレポートされ、COLLECTIVE 修飾子では 1 分あたり 10 個のエラーがレポートされます。INDIVIDUAL は、各ノードの値が必要な CPU 使用率(% CPU Busy)などのメトリックに適しています。COLLECTIVE は、階層全体の値が必要な呼び出し数(Number of Calls)などのメトリックに適しています。
モニタリング拡張クラスの例
NGinXMonitor
Active Connections:アクティブな接続の数Accepts:承認された要求の数Handled:処理された要求の数Requests:要求の総数Reading:読み取り回数Writing:書き込み回数Waiting:キープアライブ接続の数
拡張クラスのソースは添付ファイルとして含まれています。
monitor.xml の作成
monitor.xml <monitor> を作成します。
サンプルの monitor.xml ファイル
この添付されている monitor.xml ファイルによって、NGinXMonitor モニタリング拡張機能が設定されます。この拡張機能は、60 秒ごとに実行されます。
この Jar 添付 monitor.xml ファイルによって、MysqlMonitor が設定されます。このモニターは、60 秒ごとに実行され、4 つの必須タスク引数、1 つのオプションタスク引数、および 1 つの依存が使用されます。