Grafana は、アラート機能を使用できる GUI を備えています。 Grafana に通知チャネルを追加できます。 通知チャネルを追加すると、Grafana から Log Service のアラートシステムにアラートが送信されます。 アラートシステムは受信したアラートのノイズを除去し、アラート通知を送信します。

始める前に

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

Grafana の設定

[New notification channel] ページで、必要なパラメーターを設定します。 下図にパラメーターを示します。 Grafana の設定
パラメーター 説明
Name 通知チャネルのカスタム名を設定します。
Type 通知チャネルのタイプを設定します。 webhook を選択します。
Url 通知チャネルの URL を設定します。 Log Service のアラート取り込みシステムでアラート取り込みサービスおよびアラート取り込みアプリケーションを作成した後に生成される Webhook URL の完全な URL に設定します。 詳細については、「Webhook URL の取得」をご参照ください。
Grafana サーバーが ECS インスタンスにデプロイされている場合は、ECS インスタンスが存在するリージョンを選択し、関連する LAN または VPC エンドポイントを使用することを推奨します。 リージョンのインターネット Webhook URL を使用することもできます。

Grafana のアラート

以下に、Grafana のアラートの例を示します。

Grafana のアラートに severity フィールドが存在する場合、Log Service によるアラートの取り込み後、対応する重大度にアラートの重大度をマッピングします。 severity フィールドが存在しない場合、Grafana のアラートのデフォルトの重大度は中です。 詳細については、「 重大度レベル」をご参照ください。
{
    "dashboardId": 1,
    "evalMatches": [
        {
            "value": 173.14285714285714,
            "metric": "go_gc_duration_seconds_count{instance=\"localhost: 9090\", job=\"prometheus\"}",
            "tags": {
                "__name__": "go_gc_duration_seconds_count",
                "instance": "localhost:9090",
                "job": "prometheus"
            }
        }
    ],
    "message": "sadfasdf",
    "orgId": 1,
    "panelId": 4,
    "ruleId": 2,
    "ruleName": "fuxasdfasd",
    "ruleUrl": "http://localhost:3000/d/biSKHC8Mz/new-dashboard-copy?tab=alert&viewPanel=4&orgId=1",
    "state": "alerting",
    "tags": {
        "severity" : "crit",
        "xasdfasdf": "mveonasdf"
    },
    "title": "[Alerting] fuxasdfasd"
}

フィールドのマッピング

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

{
    "aliuid": "{アラート取り込みアプリケーションが属する Alibaba Cloud アカウントの ID}",
    "alert_instance_id": "{自動的に生成されるアラートインスタンス ID}",
    "project": "{アラートセンターが属するプロジェクト}",
    "region": "{アラートの送信先となるエンドポイントのリージョン}",
    "alert_id": "2",
    "alert_type": "sls_pub",
    "alert_name": "sadfasdf",
    "next_eval_interval": 0,
    "alert_time": 1603859020,
    "fire_time": 1603859020,
    "resolve_time": 0,
    "status": "firing",
    "labels": {
        "xasdfasdf": "mveonasdf"
    },
    "annotations": {
        "__pub_alert_region__": "{アラートの送信先となるエンドポイントのリージョン}",
        "__config_app__": "sls_pub_alert",
        "__pub_alert_service__": "{アラート取り込みサービスのID}",
        "__pub_alert_app__": "{アラート取り込みアプリケーションの ID}",
        "__pub_alert_protocol__": "grafana",
        "severity" : "crit",
        "orgId": "1",
        "dashboardId": "1",
        "panelId": "4",
        "ruleUrl": "http://localhost:3000/d/biSKHC8Mz/new-dashboard-copy?tab=alert&viewPanel=4&orgId=1",
        "imageUrl": "",
        "desc": "sadfasdf",
        "title": "[Alerting] fuxasdfasd"
    },
    "severity": 10,
    "policy": {
        "alert_policy_id": "{アラート取り込みアプリケーションに指定されているアラートポリシー}",
        "action_policy_id": "{アラート取り込みアプリケーションに指定されているアクションポリシー}",
        "repeat_interval": "{アラート取り込みアプリケーションに指定されている間隔}"
    },
    "drill_down_query": "http://localhost:3000/d/biSKHC8Mz/new-dashboard-copy?tab=alert&viewPanel=4&orgId=1",
    "results": [{
        "query": "go_gc_duration_seconds_count{instance=\"localhost: 9090\", job=\"prometheus\"}",
        "fire_result": {
            "__name__": "go_gc_duration_seconds_count",
            "instance": "localhost:9090",
            "job": "prometheus",
            "value": "173.142",
        }
    }]
}

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

アラート属性 Grafana のフィールド 説明
aliuid なし アラート取り込みアプリケーションが属する Alibaba Cloud アカウントの ID。
alert_id ruleId アラートモニタリングルールの ID。
alert_type なし アラートタイプ。 有効な値:sls_pub
alert_name ruleName アラートモニタリングルールのルール名。
status state アラートのステータス。
  • Grafana の state フィールドの値が ok の場合、Log Service の status フィールドは resolved です。
  • Grafana の state フィールドの値が ok 以外 (alerting など) の場合、Log Service の status フィールドは firing です。
next_eval_interval なし アラートが評価される間隔。 有効な値: 0
alert_time なし Log Service が Grafana のアラートを受信した時刻。
fire_time なし Log Service が Grafana のアラートを受信した時刻。
resolve_time なし アラートが作成された時刻。
labels tags アラートのラベル。
  • Grafana のアラートで、tags フィールドに severity が存在する場合、アラートが Log Service に取り込まれた後に severity フィールドが annotations フィールドに追加されます。
  • アラート取り込みアプリケーションの作成時に [エンリッチメント] タブにラベルを追加すると、指定したラベルが annotations フィールドに追加されます。
    [エンリッチメント] タブで指定されたラベルのキーが、Grafana のアラートの tags フィールドのサブフィールドと同じ場合、Grafana のアラートの [エンリッチメント] タブのラベルが優先されます。
annotations なし Grafana のアラートが Log Service に取り込まれた後、対応する Log Service のアラートの annotations フィールドに以下のフィールドが追加されます。
  • __config_app__: "sls_pub_alert"
  • __pub_alert_service__: {アラート取り込みサービスの ID}
  • __pub_alert_app__: {アラート取り込みアプリケーションの ID}
  • __pub_alert_protocol__: "grafana"
  • __pub_alert_region__: {アラート送信先エンドポイントのリージョン}
  • orgId:{Grafana のアラートの orgld フィールド}
  • dashboardId: {Grafana のアラートの dashboardId フィールド}
  • panelId: {Grafana のアラートの panelId フィールド}
  • ruleUrl: {Grafana のアラートの ruleUrl フィールド}
  • imageUrl: {Grafana のアラートの imageUrl フィールド}
  • desc: {Grafana のアラートのメッセージフィールド}
  • title: {Grafana のアラートのタイトルフィールド}
アラート取り込みアプリケーションの作成時に [エンリッチメント] タブに注釈を追加すると、指定した注釈が annotations フィールドに追加されます。
[エンリッチメント] タブで指定された注釈のキーが、Grafana のアラートの tags フィールドのサブフィールドと同じ場合、Grafana のアラートの [エンリッチメント] タブの注釈が優先されます。
severity severity アラートの重大度。 詳細については、「重大度レベル」をご参照ください。
policy なし アラート取り込みアプリケーションに指定されたアラートポリシー。 詳細については、「ポリシー変数のデータ構造」をご参照ください。
project なし アラートセンターが属するプロジェクト。 詳細については、「プロジェクト」をご参照ください。
drill_down_query ruleUrl Grafana のアラートの ruleURLフィールドの値が表示されます。
results evalMatches 結果セットのデータ。 evalMatches 配列の各オブジェクトは、results フィールドの QueryData 構造にマッピングされます。 マッピングの詳細については、「表 1」をご参照ください。 resultsフィールドの詳細については、「結果変数のデータ構造」をご参照ください。
表 1. 結果セットのマッピング
QueryData 構造 EvalMatch フィールド 説明
query metric クエリ文。
fire_result tags および value Grafana のアラートの tags フィールドは、キーと値のペアに展開され、 fire_result フィールドに格納されます。 value フィールドに格納されている fire_result フィールド。

value フィールドの値は、小数第 3 位に丸められます。