Prometheus は、Alert Manager の機能を持つオープンソースのモニタリングシステムです。 Alert Manager は、アラートを処理するサービスです。 Log Service のアラート取り込みシステムを Alert Manager の受信者として設定すると、Alert Manager が生成したアラートを Log Service に送信できます。

始める前に

アラート取り込みアプリケーションが作成済みで、[プロトコル] パラメーターが [AlertManager] に設定されている必要があります。 詳細については、「アラート取り込み用 Webhook URL の設定」をご参照ください。

Alert Manager の設定

Alert Manager の設定ファイルで、route パラメーターに receiver を追加します。 次に、receivers パラメーターで通知方法を設定します。 設定テンプレートのサンプル:
route:
  receiver: '{RECIEVER_NAME}'
  ...
  
...

receivers:
- name: '{RECIEVER_NAME}'
  webhook_configs:
  - url: 'http://{ALIYUN_SLS_ENDPOINT}/event/webhook/RAMAK_{ACCESS_KEY_ID}/{WEBHOOK_APP_ID}'
  
- name: ...
パラメーター 説明
receiver カスタム receiver 名。
name カスタム receiver 名。 receiver 名は、receiver パラメーターに設定された receiver 名と同一である必要があります。
url アラートの受信側。 アラート取り込みサービスとアラート取り込みアプリケーションを作成した後に生成されるエンドポイントに設定します。 エンドポイントの完全な URL を指定します。 詳細については、「Webhook URL の取得」をご参照ください。
Alert Manager サーバーが Elastic Compute Service (ECS) インスタンスにデプロイされている場合、ECS インスタンスが存在するリージョンを選択することを推奨します。 次に、関連する LAN または VPC のエンドポイントを使用します。 リージョンの Internet webhook URL を使用することもできます。

Alert Manager アラートの解析

以下に、Alert Manager アラートの例を示します。
alert フィールドに複数のアラートが含まれている場合、システムはアラートフィールドのコンテンツを複数の Log Service アラートにマップします。 {} で囲まれたエントリのグループは、アラートを示します。
{
  "version": "4",
  "groupKey": "alertname,job",
  "truncatedAlerts": 0,
  "status": "firing",
  "receiver": "webhook",
  "groupLabels": {
    "alertname": "Alert",
    "job": "promethueus"
  },
  "commonLabels": {
    "instance": "localhost:9090"
  },
  "commonAnnotations": {},
  "externalURL": "http://example.com/#/alerts",
  "alerts": [
    {
      "annotations": {
        "description": "description info",
        "summary": "High request latency"
      },
      "endsAt": "2020-10-28T12:28:52.710Z",
      "startsAt": "2020-10-28T12:23:37.710Z",
      "generatorURL": "",
      "labels": {
        "alertname": "Alert",
        "instance": "localhost:9090",
        "job": "prometheus",
        "severity": "page"
      }
    },
    ...
  ]
}

フィールドマッピング

Alert Manager アラートが Log Service に取り込まれると、アラートはフィールドマッピングを使用して Log Service がサポートするアラートに変換されます。 以下に、Alert Manager アラートの例を示します。

{
  "aliuid": "{The ID of the Alibaba Cloud account to which the alert ingestion application belongs}",
  "alert_instance_id": "{The alert instance ID that is automatically generated}",
  "project": "{The project to which Alert Center belongs}",
  "region": "{The region of the endpoint to which the alert is sent}",
  "alert_id": "Alert",
  "alert_type": "sls_pub",
  "alert_name": "Alert",
  "next_eval_interval": 0,
  "alert_time": 1603859020,
  "fire_time": 1603859017,
  "resolve_time": 0,
  "status": "firing",
  "labels": {
    "instance": "localhost:9090",
    "job": "prometheus"
  },
  "annotations": {
    "__pub_alert_region__": "{The region of the endpoint to which the alert is sent}",
    "__config_app__": "sls_pub_alert",
    "__pub_alert_service__": "{The ID of the alert ingestion service}",
    "__pub_alert_app__": "{The ID of the alert ingestion application}",
    "__pub_alert_protocol__": "alert_manager",
    "desc": "description info",
    "summary": "High request latency"
  },
  "severity": 2,
  "policy": {
    {"alert_policy_id": "{The alert policy that is specified for the alert ingestion application}",
    "action_policy_id": "{The action policy that is specified for the alert ingestion application}",
    "repeat_interval": "{The cycle that is specified for the alert ingestion application}"
  },
  "drill_down_query": "http://example.com:9090/#/alerts?filter=%7B\"alertname\"%3D\"Alert\"%2C%20\"job\"%3D\"Promethues\"%7D"
},
...
下表に、Log Service と Alert Manager アラート間のマッピングを示します。
Log Service Alert Manager 説明
aliuid N/A アラート取り込みアプリケーションが属する Alibaba Cloud アカウントの ID。
alert_id alertname アラートルールの ID。

Alert Manager アラートで、labels フィールドに alertname フィールドが含まれている場合、alert_id の値は alertname フィールドの値に設定されます。 その他の場合、alert_id フィールドの値は空です。

alert_type N/A アラートタイプ。 有効な値は、sls_pub です。
alert_name alertname アラートルール名。

Alert Manager アラートで、labels Alert フィールドに alertname フィールドが含まれている場合、alert_name フィールドの値は alertname フィールドの値に設定されます。 その他の場合、alert_name フィールドの値は空です。

status status アラートのステータス。
next_eval_interval N/A アラートが評価される間隔。 有効値は 0です。
alert_time N/A 初回のアラートルールがトリガーされた時刻。 時刻は、Log Service が Alert Manager アラートを受信した時刻を示します。
fire_time startsAt アラートのトリガー時刻。
resolve_time endsAt アラートの解除時刻。

Alert Manager アラートで、status パラメーターが firing に設定されている場合、 resolve_time パラメーターは 0 に設定されます。 その他の場合、resolve_time パラメーターは extendsAtパラメーターのタイムスタンプに設定されます。

labels labels アラート名。

アラート取り込みアプリケーションの作成時に [エンリッチメント] タブでラベルを追加した場合、指定したラベルは labels フィールドに追加されます。

annotations annotations アラートのステータス。 Log Service のアラートの anotations フィールドに以下のフィールドが追加されます。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {アラート取り込みサービスの ID}
  • __pub_alert_app__: {アラート取り込みアプリケーションの ID}
  • __pub_alert_protocol__: "alert manager"
  • __pub_alert_region__: {アラートが送信されるエンドポイントのリージョン}
  • desc:

    Alert Manager アラートで、annotations フィールドに descdescriptionsummary フィールドが含まれている場合、desc フィールドは、上記 3 フィールドの値の組み合わせです。

アラート取り込みアプリケーションの作成時に [エンリッチメント] タブにアノテーションを追加した場合、指定したアノテーションは annotations フィールドに追加されます。

severity severity アラートの重大度。
Grafana のアラートにseverity フィールドが存在する場合、Log Serviceは、アラートの取り込み後、アラートに対応する重大度をマッピングします。 severity フィールドが存在しない場合、Grafana のアラートにデフォルトの重大度 (中) が設定されます。 詳細については、「重大度レベル」をご参照ください。
policy N/A アラート取り込みアプリケーションに指定されているアラートポリシー。 詳細については、「ポリシー変数のデータ構造」をご参照ください。
project N/A アラートセンターが属するプロジェクト。 詳細については、「プロジェクト」をご参照ください。
drill_down_query
  • generatorURL
  • externalURL および groupLabels
Alert Manager アラートの URL。
  • Alert Manager アラートに、generatorURL フィールドが含まれている場合、drill_down_query フィールドの値はgeneratorURL フィールドの値に設定されます。
  • Alert Manager アラートに generatorURL フィールド含まれていない場合で、groupLabels フィールドが空の場合、drill_down_query フィールドの値は externalURL フィールドの値に設定されます。
  • Alert Manager アラートに generatorURL フィールド含まれていない場合で、groupLabels フィールドが空ではない場合、drill_down_query フィールドの値は externalURL フィールドの値と groupLabels フィールドの値の組み合わせです。

URL をクリックすると、Alert Manager の [アラート管理] ページにリダイレクトされます。 このページに、 groupLabels フィールドのコンテンツに一致するアラートが自動的に表示されます。