Download PDF
Download page 事前定義の変数.
事前定義の変数
このページでは、HTTP リクエストアクションで使用できる定義済みの変数について説明します。トリガーイベントのコンテキストにおける変数の値は、実際のリクエストが送信される際に、実行時に置き換えられます。
変数名の形成
定義済みの変数名を形成するには、eventList
配列を、最上位オブジェクトと対応するコンテキストフィールドまたは複数のネストされたコンテキストフィールドと組み合わせます。最上位オブジェクトのみを使用して、情報を取得することもできます。
- すべての変数は、
eventList
配列を介してアクセスされます。 -
eventList
配列には、正常性ルール違反または異常に関する単一のイベントが含まれています。
次に例を示します。
- 正常性ルール違反イベントの ID を取得するには、
${eventList[0].event_id}
を使用します - 正常性ルールの違反条件の名前を取得するには、
${eventList[0].event_details.condition_details[0].name}
を使用します - 正常性ロールアップの子エンティティタイプの詳細を取得するには、
${eventList[0].event_details.rollup_details.child_entities[0].child_entity_type}
を使用します - 異常の原因となっているメトリックタイプを取得するには、
${eventList[0].anomaly_type}
を使用します - 異常が検出された最上位オブジェクトの概要を取得するには、
${eventList[0].rca_result.top_impact_object}
を使用します
このページにリストされている新しい変数名を使用して、既存のすべての HTTP アクションを更新する必要があります。変数名を更新したら、既存の HTTP アクションを正常性ルールに再度リンクします。このタスクを実行しないと、対応する正常性ルール違反でアクションがトリガーされません。
次の表に、最上位オブジェクトとさまざまなコンテキストフィールドの詳細を示します。
コンテキスト属性
次の表に、最上位オブジェクトと対応する詳細のリストを示します。
最上位オブジェクト | 説明 | フィールド タイプ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
entity_id | 違反が検出されたエンティティを識別します。 | string | ||||||||||||
entity_type | 違反が検出されたエンティティのタイプを示します。形式は 例: | string | ||||||||||||
event_id | イベントを識別します。 | string | ||||||||||||
event_type | さまざまな違反タイプの表示名を示します。たとえば、VIOLATION_STARTED_WARNING 、VIOLATION_STARTED_CRITICAL です。 | string | ||||||||||||
| 違反インシデントを識別します。 | string | ||||||||||||
| 違反インシデントのタイムスタンプを示します。タイムスタンプは、日時形式、エポック形式、または有効なカスタム形式で表示できます。 HTTP ペイロードで次の式を使用して、いずれかの形式で
| long | ||||||||||||
| 違反インシデントの開始時刻を示します。タイムスタンプは、日時形式、エポック形式、または有効なカスタム形式で表示できます。 HTTP ペイロードで次の式を使用して、いずれかの形式で
| long | ||||||||||||
| 違反インシデントの終了時刻を示します。タイムスタンプは、日時形式、エポック形式、または有効なカスタム形式で表示できます。 HTTP ペイロードで次の式を使用して、いずれかの形式で
| long | ||||||||||||
violation_duration | 違反インシデントの期間を示します。これは現在時刻とインシデントの開始時刻の差です。 | long | ||||||||||||
violation_severity | 重大または警告などの違反の重大度を示します。 | string | ||||||||||||
violation_status | 違反インシデントがオープンかクローズかを示します。 | string | ||||||||||||
violation_type | 正常性ルールまたは異常検知の MELT イベントのタイプを示します。たとえば、
| string | ||||||||||||
| 正常性ルールまたは異常検知構成を識別します。 | string | ||||||||||||
| 正常性ルールまたは異常検知構成の表示名を示します。 | string | ||||||||||||
event_details | 正常性ルールに基づいて違反の詳細を示します。 |
| ||||||||||||
model_sensitivity | 異常検知モデルのアラート感度レベルを示します。感度レベルは次のとおりです。
| string | ||||||||||||
anomaly_type | 異常の原因となったメトリックタイプを示します。たとえば、1 分あたりのエラー数(EPM)および平均応答時間(ART)です。 | string | ||||||||||||
rca_result | 異常検知アルゴリズムによって実行された根本原因分析の結果を示します。 | object | ||||||||||||
| ヘルス ルール違反について、アプリケーションのエンティティ ページへの直接ナビゲーションを提供します。したがって、違反時のエンティティのコンテキストを表示できます。 変数をテナントのベース URL に追加する必要があります。 たとえば、 | string |
次の表に、rca_result
変数の第 2 レベルのコンテキストフィールドと対応する詳細のリストを示します。
Second Level Context Fields - | 説明 | フィールド タイプ |
---|---|---|
top_impact_object | 異常が生成された最も影響の大きいオブジェクトの偏差メトリックと要約情報を示します。 | object |
| 根本原因オブジェクトの偏差メトリックと要約情報を示します。 | アレイ |
list_of_suspected_cause_paths | 異常の原因と思われる経路を示します。 | アレイ |
次の表に、event_details
変数の第 2 レベルのコンテキストフィールドと対応する詳細のリストを示します。
Second Level Context Fields - | 説明 | フィールド タイプ |
---|---|---|
condition_details | 正常性ルール違反の詳細を示します。詳細は、メトリック条件についてのみ使用できます。 | の配列 |
| 正常性ルール違反のロールアップエンティティの詳細を示します。 | 複雑 object |
次の表に、rollup_details
変数の第 3 レベルのコンテキストフィールドと対応する詳細のリストを示します。
Third Level Context Fields - | 説明 | フィールド タイプ |
---|---|---|
child_entities | 相関インシデントと子エンティティを示します。 | の配列 |
violation_count | 違反している子エンティティの数を示します。 | long |
次の表に、condition_details
変数の第 4 レベルのコンテキストフィールドと対応する詳細のリストを示します。
Fourth Level Context Fields - | 説明 | フィールド タイプ |
---|---|---|
name | 条件の表示名を示します。 | string |
data_points | 条件の評価に使用されるデータポイントの数を示します。 | string |
eval_win_size | 正常性ルールを評価するために使用されるデータが収集される正常性ルール評価タイムフレームを示します。 | string |
result | 条件評価のステータスを示します。true(1)、false(0)、または不明(-1)を返します。 | 整数 |
baseline_mean | ベースラインと平均値の差を示します。 | double |
baseline_std_dev | ベースラインと標準偏差の差を示します。 | double |
violation_count | 評価タイムフレーム中の条件違反の数を示します。 | string |
missing_data | 評価タイムフレーム内の失われたデータポイントの数を示します。 | string |
expression | メトリックのパフォーマンスを評価するために使用される数式を示します。 | string |
expression_value | 式の左側にある値を示します。 | string |
threshold_value | 式の右側にある値を示します。 | string |
threshold_type | しきい値のタイプ(静的またはベースライン)を示します。 | string |
次の表に、rollup_result_details
変数の第 4 レベルのコンテキストフィールドと対応する詳細のリストを示します。
Fourth Level Context Fields - | 説明 | フィールド タイプ |
---|---|---|
child_entity_id | 評価子エンティティを識別します。 | string |
child_entity_type | 名前空間を持つ評価子エンティティタイプ名を示します。 | string |
correlated_incident_id | ロールアップルール違反の原因となった子エンティティのインシデント ID を示します。 | string |
Samples
最新のトリガーイベントに対する HTTP リクエストの例:
Slack イベントのサンプル
URL:
Slack アプリで、次の URL のような受信 Webhook を取得します。
https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX
Payload:
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*New ${eventList[0].violation_severity} Alert from AppDynamics Cloud:* ${eventList[0].config_name}\n"
}
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Entity Type:*\n${eventList[0].entity_type}"
},
{
"type": "mrkdwn",
"text": "*When:*\n${eventList[0].event_time}"
},
{
"type": "mrkdwn",
"text": "*Entity Id:*\n${eventList[0].entity_id}"
}
]
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*Violating Conditions*\n"
}
},
#if(${eventList[0].event_details})
#foreach( $condition in ${eventList[0].event_details.condition_details} )
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "\n${condition.expression}"
}
},
#end
#end
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"emoji": true,
"text": "Check in AppD Cloud"
},
"style": "danger",
"value": "click_me_123",
"url": "https://your-appd-cloud-url.com${eventList[0].entity_context_path}"
}
]
},
{
"type": "divider"
}
]
}
- 変数を取得できない場合は、
if
条件内に変数を含めます。if
条件の詳細については、Apache Velocity のドキュメントを参照してください。 - Slack で受信 Webhook を構成する方法については、Slack のドキュメントを参照してください。
PagerDuty イベント API V2 のサンプル
URL:
https://events.pagerduty.com/v2/enqueue
Payload:
{
"payload": {
"summary": "${eventList[0].event_type} on ${eventList[0].config_name}",
"source": "AppDynamics Cloud",
"severity": "${eventList[0].violation_severity.toLowerCase()}",
"component": "${eventList[0].entity_type}",
"custom_details": {
"Event Name": "${eventList[0].event_type}",
"Event ID": "${eventList[0].event_id}",
"Entity Type": "${eventList[0].entity_type}",
"Event Time": "${eventList[0].event_time}",
"Entity ID": "${eventList[0].entity_id}"
}
},
"routing_key": "<your integration key>",
"dedup_key": "${eventList[0].violation_id}",
"event_action": "trigger",
"client": "AppDynamics Cloud",
"client_url": "https://your-appd-cloud-url.com${eventList[0].entity_context_path}"
}
統合キー(ルーティングキー)は、PagerDuty イベント API V2 統合ページで入手できます。
PagerDuty にイベントを送信する方法については、PagerDuty のドキュメントを参照してください。
ServiceNow イベントのサンプル
URL:
https://<instance_name>.service-now.com/api/global/em/jsonv2
Authentication:
基本認証オプションを使用して、ユーザー名とパスワードを入力します。
Payload:
{
"records": [
{
"source": "AppDynamics Cloud",
"event_class": "your-controller",
"resource": "${eventList[0].entity_id}",
"node": "${eventList[0].entity_id}",
"metric_name": "${eventList[0].config_name}",
"type": "${eventList[0].event_type}",
"message_key": "${eventList[0].violation_id}",
"description": "*New ${eventList[0].violation_severity} Alert from AppDynamics Cloud:* ${eventList[0].config_name}. Check https://your-appd-cloud-url.com${eventList[0].entity_context_path}",
#if( ${eventList[0].violation_severity} == "CRITICAL" )
"severity": "1"
#elseif( ${eventList[0].violation_severity} == "WARNING" )
"severity": "2"
#else
"severity": "0"
#end
}
]
}
ServiceNow にイベントを送信する方法については、ServiceNow のドキュメントを参照してください。
OpsGenie イベントのサンプル
URL:
https://api.opsgenie.com/v2/alerts
Custom Headers:
- キー:認証
- 値:GenieKey <your_API_key>
Payload:
{
"source": "AppDynamics Cloud",
"message": "${eventList[0].event_type} on ${eventList[0].config_name}",
"alias": "${eventList[0].violation_id}",
"description": "${eventList[0].event_type} on ${eventList[0].config_name}",
"entity": "${eventList[0].entity_type}:${eventList[0].entity_id}",
#if( ${eventList[0].violation_severity} == "CRITICAL" )
"priority": "P1",
#elseif( ${eventList[0].violation_severity} == "WARNING" )
"priority": "P3",
#else
"priority": "P5",
#end
"details": {
"Event Name": "${eventList[0].event_type}",
"Event ID": "${eventList[0].event_id}",
"Entity Type": "${eventList[0].entity_type}",
"Event Time": "${eventList[0].event_time}",
"Entity ID": "${eventList[0].entity_id}",
"Link": "https://your-appd-cloud-url.com${eventList[0].entity_context_path}"
}
}
OpsGenie でアラートを作成する方法については、OpsGenie のドキュメントを参照してください。
Webex
URL:
https://webexapis.com/v1/webhooks/incoming/<incoming_webhook_url>
Payload:
{"markdown": " \n- - - \n**${eventList[0].violation_severity}** Alert from Cisco CNAO: **${eventList[0].config_name}** \n- - - \n**Details** \n _Event Type:_ ${eventList[0].event_type} \n_Entity Type:_ ${eventList[0].entity_type} \n_Entity Id:_ ${eventList[0].entity_id} \n_Event Time:_ ${eventList[0].event_time}\n**Violation Details** #if(${eventList[0].event_details}) #foreach( $condition in ${eventList[0].event_details.condition_details} ) \n$esc.java(${condition.expression}) #end #end \n_Link:_[Click here](${appdURL}${eventList[0].entity_context_path})\n- - - \n" }
- 変数を取得できない場合は、
if
条件内に変数を含めます。if
条件の詳細については、Apache Velocity のドキュメントを参照してください。 - Webex で着信 Webhook を設定する方法については、Webex のドキュメントを参照してください。