Prometheusで、Log Serviceのアラート取り込みシステムをAlertmanagerコンポーネントとして設定できます。 設定が完了すると、PrometheusはLog Serviceのアラートシステムにアラートを送信します。 次いで、アラートシステムは、アラートをノイズ除去し、アラート通知を送信する。

始める前に

アラート取り込みサービスとアラート取り込みアプリケーションが作成されます。 詳細については、「アラート取り込み用のwebhook URLの設定」をご参照ください。

Prometheusの設定

Prometheus構成ファイルで、alertmanagersパラメーターの設定を追加します。 次のコードは設定を示しています。 詳細については、Prometheus公式WebサイトのConfigurationトピックのalertmanager_configセクションを参照してください。

# Alertmanagerの設定
警告:
  alertmanagers:
  -path_prefix: /event/webhook/RAMAK_ {ACCESS_KEY_ID} /{WEBHOOK_APP_ID}
    api_version: v2
    static_configs:
    -ターゲット:
      -{ALIYUN_SLS_ENDPOINT}
項目説明例:
path_prefixパス。 このパラメーターを、Log serviceのアラート取り込みシステムでアラート取り込みサービスとアラート取り込みアプリケーションを作成した後に生成されるwebhook URLのサブパスに設定します。 詳細については、「Webhook URL の取得」をご参照ください。
-path_prefix: イベント /webhook/RAMAK_WEDC *** YEBD/Prometheus-alert01_k8s
ターゲットアラートを送信する宛先。 値をLog Serviceのエンドポイント (cn-heyuan-intranet.log.aliyuncs.comなど) に設定します。 詳細は、「Webhook URL の取得」を参照してください。
説明 PrometheusサーバーがElastic Compute Service (ECS) インスタンスにデプロイされている場合、ECSインスタンスが存在するリージョンを選択し、LANまたは仮想プライベートクラウド (VPC) 経由でアクセスできる内部エンドポイントを使用することを推奨します。 PrometheusサーバーがECSインスタンスにデプロイされていない場合は、リージョンを選択し、インターネット経由でアクセスできるパブリックエンドポイントを使用できます。
-ターゲット:
        -cn-heyuan-intranet.log.aliyuncs.com

プロメテウス警報

Prometheusアラートの内容を次の例に示します。

説明 Prometheusアラートに重大度フィールドが含まれている場合、Log Serviceは、アラートがLog Serviceに取り込まれた後、アラートの重大度を対応する重大度にマッピングします。 Prometheusアラートに重大度フィールドが含まれていない場合、アラートの重大度はデフォルトで中にマップされます。 詳細については、「重大度レベル」をご参照ください。
[
    {
        "annotations": {
            "description": "description info" 、
            "summary": "高いリクエスト遅延"
        },
        "endsAt": "2020-10-28T12:28:52.710Z" 、
        "startsAt": "2020-10-28T12:23:37.710Z" 、
        "generatorURL": "http:// 127.0.0.1:9090/graph?g0.expr=go_threads % 7Binstance % 3D % 22localhost % 3A9090% 22% 2Cjob % 3D % 22prometheus % 22% 7D + % 3E + 0\\u0026g0.tab=1" 、
        "labels": {
            "alertname": "HighErrorRate" 、
            "instance": "localhost:9090" 、
            "仕事": "プロメテウス" 、
            "重大度": "ページ"
        }
    }
]

フィールドマッピング

PrometheusアラートがLog Serviceに取り込まれた後、フィールドマッピングを使用してアラートがLog Serviceでサポートされているアラートに変換されます。 次の例は、Log Serviceアラートのフィールドを示しています。
{
    "aliuid": "{アラート取り込みアプリケーションが属するAlibaba CloudアカウントのID}" 、
    "alert_instance_id": "{自動生成されるアラートインスタンスID}" 、
    "project": "{アラートセンターが属するプロジェクト}" 、
    "region": "{アラートが送信されるエンドポイントのリージョン}" 、
    "alert_id": "HighErrorRate" 、
    "alert_type": "sls_pub" 、
    "alert_name": "HighErrorRate" 、
    "next_eval_interval": 78、
    "alert_time": 1603859020、
    "fire_time": 1603859017、
    "resolve_time": 0,
    "status": "firing" 、
    "labels": {
        "alertname": "HighErrorRate" 、
        "instance": "localhost:9090" 、
        "仕事": "プロメテウス"
    },
    "annotations": {
        "__pub_alert_region__": "{アラートの送信先のエンドポイントのリージョン}" 、
        "__config_app__": "sls_pub_alert" 、
        "__pub_alert_service__": "{アラート取り込みサービスのID}" 、
        "__pub_alert_app__": "{アラート取り込みアプリケーションのID}" 、
        "__pub_alert_protocol__": "prometheus" 、
        "重大度": "ページ"
    },
    "severity": 2、
    "policy": {
        "alert_policy_id": "{アラート取り込みアプリケーションに指定されたアラートポリシー}" 、
        "action_policy_id": "{アラート取り込みアプリケーションに指定されているアクションポリシー}" 、
        "repeat_interval": "{アラート取り込みアプリケーションに指定されたサイクル}"
    },
    "drill_down_query": "http: // 127.0.0.1:9090/graph?g0.expr=go_threads % 7Binstance % 3D % 22localhost % 3A9090% 22% 2Cjob % 3D % 22prometheus % 22% 7D + % 3E + 0\\u0026g0.tab=1"
}

次の表に、Log Serviceのアラート属性とPrometheusのアラートフィールドの間のマッピングを示します。

アラート属性プロメテウス畑説明
aliuidなしアラート取り込みアプリケーションが属する Alibaba Cloud アカウントの ID。
alert_idalertnameアラートモニタリングルールの ID。
alert_typeなしアラートのタイプ。 有効な値は、sls_pub です。
alert_namealertnameアラートモニタリングルールのルール名。
statusなしアラートのステータス。 有効な値は、firing と resolved です。
  • PrometheusアラートのendsAtフィールドの値がalert_timeフィールドの値より大きい場合、ステータスは起動中です。
  • PrometheusアラートのendsAtフィールドの値がalert_timeフィールドの値より小さい場合、ステータスは解決されます。
next_eval_intervalなしアラートが評価される間隔。

現在のアラートステータスが発生している場合、このパラメーターの値は次の式を使用して計算されます。評価間隔= (endsAt-alert_time )/4。

alert_timeなしLog ServiceがPrometheusアラートを受信した時刻。
fire_timestartsAtアラートのトリガー時刻。 fire_timeフィールドは、PrometheusアラートのstartsAtフィールドにマップされます。
resolve_timeなしアラートの解除日時。
  • PrometheusアラートのendsAtフィールドの値がalert_timeフィールドの値より大きい場合、resolute_timeの値は0です。
  • PrometheusアラートのendsAtフィールドの値がalert_timeフィールドの値より小さい場合、resolut_timeフィールドの値はタイムスタンプになります。 タイムスタンプは、endsAtフィールドのタイムスタンプと同じです。
labelslabelsアラートのラベル。
  • Prometheusアラートのlabelsフィールドにseverityフィールドが存在する場合、アラートがLog Serviceに取り込まれた後、severityフィールドがannotationsフィールドに追加されます。
  • アラート取り込みアプリケーションの作成時に [エンリッチメント] タブでラベルを追加した場合、ラベルは labels フィールドに追加されます。
    説明 [エンリッチメント] タブで指定されたラベルのキーがPrometheusアラートのラベルフィールドのサブフィールドと同じである場合、[エンリッチメント] タブのラベルが優先されます。
annotationsannotationsPrometheusアラートがLog Serviceに取り込まれると、対応するLog Serviceアラートのannotationsフィールドに次のフィールドが追加されます。
  • __config_app __: "sls_pub_alert"
  • __pub_alert_service __: {アラート取り込みサービスのID}
  • __pub_alert_app __: {アラート取り込みアプリケーションのID}
  • __pub_alert_protocol __: "prometheus"
  • __pub_alert_region __: {アラートの送信先のエンドポイントのリージョン}
アラート取り込みアプリケーションの作成時に [エンリッチメント] タブで注釈を追加した場合、注釈は annotations フィールドに追加されます。
説明 [エンリッチメント] タブで指定された注釈のキーが、Prometheusアラートのlabelsフィールドのサブフィールドと同じである場合、[エンリッチメント] タブの注釈が優先されます。
severityseverityアラートの重大度。 詳細については、「重大度レベル」をご参照ください。
policyなしアラート取り込みアプリケーションに指定されているアラートポリシー。 詳細については、「ポリシー変数の説明」をご参照ください。
projectなしアラートセンターが属するプロジェクト。 詳細については、「プロジェクト」をご参照ください。
drill_down_querygeneratorURLPrometheusアラートのgeneratorURLフィールドの値が表示されます。