Log Service のアラート取り込みシステムを Prometheus の Alertmanager コンポーネントとして設定できます。 設定が完了すると、Prometheus から Log Service のアラートシステムにアラートが送信されます。 アラートシステムは受信したアラートのノイズを除去し、アラート通知を送信します。
始める前に
Prometheus の設定
Prometheus の設定ファイルで、alertmanagers パラメーターを追加します。 設定用のコードを以下に示します。
# Alertmanager configuration
alerting:
alertmanagers:
- path_prefix: /event/webhook/RAMAK_{ACCESS_KEY_ID}/{WEBHOOK_APP_ID}
api_version: v2
static_configs:
- targets:
- {ALIYUN_SLS_ENDPOINT}
パラメーター | 説明 | 例: |
---|---|---|
path_prefix | パスを設定します。 Log Service のアラート取り込みシステムでアラート取り込みサービスおよびアラート取り込みアプリケーションの作成後に生成される Webhook URL のサブパスに設定します。 詳細については、「Webhook URL の取得」をご参照ください。 |
|
targets | アラートの受信側を設定します。 値を Log Service のエンドポイント (例:cn-heyuan-intranet.log.aliyuncs.com ) に設定します。 詳細については、「Webhook URL の取得」をご参照ください。
注 Prometheus サーバーが ECS インスタンスにデプロイされている場合は、ECS インスタンスが存在するリージョンを選択し、関連する LAN または VPC
エンドポイントを使用することを推奨します。 リージョンのインターネット Webhook URL を使用することもできます。
|
|
Prometheus のアラート
以下に、Prometeus のアラートの例を示します。
注 Prometheus のアラートに severity フィールドが存在する場合、Log Service によるアラートの取り込み後、対応する重大度にアラートの重大度をマッピングします。 severity フィールドが存在しない場合、Prometheus
のアラートのデフォルトの重大度は中です。 詳細については、「重大度レベル」をご参照ください。
[
{
"annotations": {
"description": "description info",
"summary": "High request latency"
},
"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",
"job": "prometheus",
"severity": "page"
}
}
]
フィールドのマッピング
Prometheus のアラートが Log Service に取り込まれると、アラートはフィールドマッピングにより Log Service でサポートされているアラートに変換されます。
以下に、Prometheus のアラートの例を示します。
{
"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",
"job": "prometheus"
},
"annotations": {
"__pub_alert_region__": "{アラートの送信先となるエンドポイントのリージョン}",
"__config_app__": "sls_pub_alert",
"__pub_alert_service__": "{アラート取り込みサービスのID}",
"__pub_alert_app__": "{アラート取り込みアプリケーションの ID}",
"__pub_alert_protocol__": "prometheus",
"severity": "page"
},
"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 のフィールド間でのアラート属性のマッピングを示します。
アラート属性 | Prometheus のフィールド | 説明 |
---|---|---|
aliuid | なし | アラート取り込みアプリケーションが属する Alibaba Cloud アカウントの ID。 |
alert_id | alertname | アラートモニタリングルールの ID。 |
alert_type | なし | アラートタイプ。 有効な値:sls_pub |
alert_name | alertname | アラートモニタリングルールのルール名。 |
status | なし | アラートステータス。 有効な値:発生中および解決済み。
|
next_eval_interval | なし | アラートが評価される間隔。
現在のアラートステータスが発生中の場合、このパラメーターの値は以下の式を使用して計算されます。 Evaluation interval = (endsAt - alert_time)/4. |
alert_time | なし | Log Service が Prometheus のアラートを受信した時刻。 |
fire_time | startsAt | Log Service が Prometheus のアラートを受信した時刻。 |
resolve_time | なし | アラートが作成された時刻。
|
labels | labels | アラートのラベル。
|
annotations | annotations | Prometheus のアラートが Log Service に取り込まれた後、対応する Log Service のアラートの annotations フィールドに以下のフィールドが追加されます。
アラート取り込みアプリケーションの作成時に [エンリッチメント] タブに注釈を追加すると、指定した注釈がannotations フィールドに追加されます。
注 [エンリッチメント] タブで指定された注釈のキーが、Prometheus のアラートの labels フィールドのサブフィールドと同じ場合、Prometheus のアラートの [エンリッチメント] タブの注釈が優先されます。
|
severity | severity | アラートの重大度。 詳細については、「重大度レベル」をご参照ください。 |
policy | なし | アラート取り込みアプリケーションに指定されたアラートポリシー。 詳細については、「ポリシー変数のデータ構造」をご参照ください。 |
project | なし | アラートセンターが属するプロジェクト。 詳細については、「プロジェクト」をご参照ください。 |
drill_down_query | generatorURL | Prometheus のアラートの generatorURL フィールドが表示されます。 |