Zabbix は一般的に使用されているオープンソースのモニタリングシステムで、システムのモニタリング用にさまざまなアラートルールを設定できます。 Zabbix は通知についても複数の方法をサポートしています。 Zabbix は、通知方法として Log Service のアラート取り込みシステムを設定できます。 これにより Zabbix のアラートを Log Service に取り込むことができ、 Log Service のアラートシステムでアラートのノイズが除去された上でアラート通知が送信されます。 このトピックは、Zabbix のバージョン 3.2~4.2 を対象としています。

始める前に

  • アラート取り込みアプリケーションが作成されている必要があります。 アラート取り込みアプリケーションの [プロトコル] パラメーターは [Zabbix] に設定されています。 詳細については、「アラート取り込み用 Webhook URL の設定」をご参照ください。
  • こちらをクリックして、alibaba_cloud_sls.py ファイルをダウンロードします。

Zabbix コンソールによるアラート通知方法の設定

  1. Zabbix がインストールされているサーバーに通知スクリプトをインストールします。
    1. Zabbix 設定ファイルの AlertScriptsPath パラメーターを表示して、通知スクリプトがインストールされているディレクトリを取得します。
    2. このディレクトリに alibaba_cloud_sls.py ファイルを保存します。
    3. 次のコマンドを実行して、alibaba_cloud_sls.py ファイルの実行権限を現在のユーザーに付与します。
      chmod +x alibaba_cloud_sls.py
  2. Zabbix コンソールにログインします。
  3. Alibaba Cloud SLS という名前で通知方法を追加します。
    1. 左側のナビゲーションペインで、[管理] > [メディアタイプ] をクリックします。
    2. [メディアタイプ] ページの右上隅で、[メディアタイプの作成] をクリックします。
    3. パラメーターを設定して [追加] をクリックします。
      zabbix3.2
      下表にパラメーターを示します。
      パラメーター 説明 例:
      Name 通知方法の名前。 Alibaba Cloud SLS
      Type Log Service へのアラートの取り込み形式。 Script
      Script name 通知スクリプト名。 alibaba_cloud_sls.py
      Script parameters 通知スクリプトのパラメーターです。 以下のルールにご注意ください。
      重要 パラメーターは、サンプル値に基づいて順番に設定する必要があります。
      • 3 行目に webhook URL の完全なパスを入力する必要があります。 webhook URL は、Log Service コンソールによるアラート取り込みアプリケーションの作成後に生成されます。 詳細については、「webhook URL の取得」をご参照ください。

        Zabbix サーバーが Elastic Compute Service (ECS) インスタンスにデプロイされている場合は、ECS インスタンスの存在するリージョンを選択した上で、LAN や仮想プライベートクラウド (VPC) でアクセスできる内部エンドポイントを使用することを推奨します。 リージョン内のインターネット経由でアクセスできるパブリックエンドポイントを使用することも可能です。

      • 4 行目にログファイルのパスを入力する必要があります。

        alibaba_cloud_sls.py スクリプトにより、指定されたログファイルにエラーログが出力されます。 ログファイルへのデータ書き込みに必要な権限が Zabbix サーバーに付与されていることを確認してください。

      1. {ALERT.MESSAGE}
      2. {ALSERT.SUBJECT}
      3. http://cn-heyuan.log.aliyuncs.com/event/webhook/RAMAK_{ACCESS_KEY_ID}/zabbix
      4. /tmp/alibaba-cloud-alert/zabbix.log
  4. Action の作成
    1. 上部のナビゲーションバーで、[Configuration] > [Actions]を選択します。
    2. [Actions] ページの右上隅で、[Create action] をクリックします。
    3. [Operation] タブでパラメーターを設定します。
      重要 [操作] ページに [更新操作] タブが表示されている場合は、タブを無視します。
      zabbix 3.2

      下表にパラメーターを示します。

      パラメーター 説明
      Default subject 値を firing に設定します。 firing
      Default message アラートのコンテンツは JSON 形式です。
      [time_zone] フィールドの値および [zabbix_url] フィールドの値は、ビジネス要件に基づいて変更可能です。 他のフィールドの値は変更できません。
      • time_zone :タイム ゾーン。 デフォルト値は、 +0800 です。 この値は、UTC+8 のタイムゾーンであることを表します。
      • zabbix_url : Zabbix コンソールのリダイレクトリンクです。 デフォルト値: 127.0.0.1.
      {
          "time_zone": "+0800 ",
          "zabbix_url": "127.0.0.1",
          "trigger_hostgroup_name": "{TRIGGER.HOSTGROUP.NAME}",
          "event_recovery_time": "{EVENT.RECOVERY.TIME}",
          "trigger_events_problem_ack": "{TRIGGER.EVENTS.PROBLEM.ACK}",
          "event_recovery_value": "{EVENT.RECOVERY.VALUE}",
          "host_ip": "{HOST.IP}",
          "trigger_state": "{TRIGGER.STATE}",
          "trigger_template_name": "{TRIGGER.TEMPLATE.NAME}",
          "event_status": "{EVENT.STATUS}",
          "event_value": "{EVENT.VALUE}",
          "event_time": "{EVENT.TIME}",
          "trigger_status": "{TRIGGER.STATUS}",
          "event_id": "{EVENT.ID}",
          "event_tags": "{EVENT.TAGS}",
          "trigger_expression": "{TRIGGER.EXPRESSION}",
          "event_date": "{EVENT.DATE}",
          "action_id": "{ACTION.ID}",
          "trigger_url": "{TRIGGER.URL}",
          "trigger_nseverity": "{TRIGGER.NSEVERITY}",
          "trigger_problem_events_problem_ack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.ACK}",
          "event_age": "{EVENT.AGE}",
          "trigger_id": "{TRIGGER.ID}",
          "action_name": "{ACTION.NAME}",
          "event_recovery_id": "{EVENT.RECOVERY.ID}",
          "trigger_events_problem_unack": "{TRIGGER.EVENTS.PROBLEM.UNACK}",
          "date": "{DATE}",
          "trigger_name": "{TRIGGER.NAME}",
          "event_ack_status": "{EVENT.ACK.STATUS}",
          "trigger_events_unack": "{TRIGGER.EVENTS.UNACK}",
          "event_recovery_date": "{EVENT.RECOVERY.DATE}",
          "trigger_problem_events_problem_unack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.UNACK}",
          "trigger_events_ack": "{TRIGGER.EVENTS.ACK}",
          "host_name": "{HOST.NAME}",
          "time": "{TIME}",
          "event_recovery_tags": "{EVENT.RECOVERY.TAGS}",
          "event_recovery_status": "{EVENT.RECOVERY.STATUS}",
          "trigger_description": "{TRIGGER.DESCRIPTION}",
          "trigger_value": "{TRIGGER.VALUE}"
      }
    4. [Recovery operations] タブでパラメーターを設定します。
      zabbix 3.2

      下表にパラメーターを示します。

      パラメーター 説明
      Default subject 値を resolved に設定します。 resolved
      Default message アラートのコンテンツは JSON 形式です。
      time_zone フィールドの値および zabbix_url フィールドの値は、ビジネス要件に基づいて変更可能です。 他のフィールドの値は変更できません。
      • time_zone :タイム ゾーン。 デフォルト値は、 +0800 です 。 この値は、UTC+8 のタイムゾーンであることを表します。
      • zabbix_url : Zabbix コンソールのリダイレクトリンクです。 デフォルト値: 127.0.0.1.
      {
          "time_zone": "+0800 ",
          "zabbix_url": "127.0.0.1",
          "trigger_hostgroup_name": "{TRIGGER.HOSTGROUP.NAME}",
          "event_recovery_time": "{EVENT.RECOVERY.TIME}",
          "trigger_events_problem_ack": "{TRIGGER.EVENTS.PROBLEM.ACK}",
          "event_recovery_value": "{EVENT.RECOVERY.VALUE}",
          "host_ip": "{HOST.IP}",
          "trigger_state": "{TRIGGER.STATE}",
          "trigger_template_name": "{TRIGGER.TEMPLATE.NAME}",
          "event_status": "{EVENT.STATUS}",
          "event_value": "{EVENT.VALUE}",
          "event_time": "{EVENT.TIME}",
          "trigger_status": "{TRIGGER.STATUS}",
          "event_id": "{EVENT.ID}",
          "event_tags": "{EVENT.TAGS}",
          "trigger_expression": "{TRIGGER.EXPRESSION}",
          "event_date": "{EVENT.DATE}",
          "action_id": "{ACTION.ID}",
          "trigger_url": "{TRIGGER.URL}",
          "trigger_nseverity": "{TRIGGER.NSEVERITY}",
          "trigger_problem_events_problem_ack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.ACK}",
          "event_age": "{EVENT.AGE}",
          "trigger_id": "{TRIGGER.ID}",
          "action_name": "{ACTION.NAME}",
          "event_recovery_id": "{EVENT.RECOVERY.ID}",
          "trigger_events_problem_unack": "{TRIGGER.EVENTS.PROBLEM.UNACK}",
          "date": "{DATE}",
          "trigger_name": "{TRIGGER.NAME}",
          "event_ack_status": "{EVENT.ACK.STATUS}",
          "trigger_events_unack": "{TRIGGER.EVENTS.UNACK}",
          "event_recovery_date": "{EVENT.RECOVERY.DATE}",
          "trigger_problem_events_problem_unack": "{TRIGGER.PROBLEM.EVENTS.PROBLEM.UNACK}",
          "trigger_events_ack": "{TRIGGER.EVENTS.ACK}",
          "host_name": "{HOST.NAME}",
          "time": "{TIME}",
          "event_recovery_tags": "{EVENT.RECOVERY.TAGS}",
          "event_recovery_status": "{EVENT.RECOVERY.STATUS}",
          "trigger_description": "{TRIGGER.DESCRIPTION}",
          "trigger_value": "{TRIGGER.VALUE}"
      }
    5. [Add] をクリックします。
  5. 特定のユーザーの通知方法を設定します。
    1. 上部のナビゲーションバーで、[Administration] > [ユーザー] を選択します。
    2. ユーザーリストで、管理するユーザーをクリックします。
      [Cleate user] をクリックしてユーザーを作成することもできます。
    3. [Media] タブで [Add] をクリックします。
      メディアに表示される [Edit] をクリックしてメディアの設定を変更することもできます。
    4. [Type] パラメーターを [Alibaba Cloud SLS] に設定し、[Add] をクリックします。
      zabbix-3.2
    5. [Update] をクリックします。

アラートの解析

Zabbix のアラートには、1 件あたり 100 を超えるマクロが含まれています。 詳細については、「Zabbix のドキュメント」をご参照ください。 Log Service によってアラート作成時に選択されるマクロは数十個だけです。 下表に、Zabbix アラートのマクロの例を示します。

Zabbix マクロ名
{TRIGGER.ID} 19006
{TRIGGER.NAME} test used
{EVENT.VALUE} 1
{DATE} 2021.06.10
{TIME} 12:44:23
{EVENT.DATE} 2021.06.10
{EVENT.TIME} 19:23:01
{EVENT.RECOVERY.DATE} ""
{EVENT.RECOVERY.TIME} ""
{HOST.NAME} zabbix-agent
{HOST.IP} 192.0.2.0
{TRIGGER.HOSTGROUP.NAME} Linux servers
{TRIGGER.DESCRIPTION} システムの空きメモリが不足しています。
{EVENT.TAGS} Application:Memory
{TRIGGER.NSEVERITY} 2
{EVENT.ID} 1036

フィールドマッピング

Zabbix アラートが Log Service に取り込まれると、フィールドマッピングにより Log Service がサポートするアラートに変換されます。 下表に、Log Service のアラート属性と Zabbix のアラートフィールドのマッピングを示します。

表 1. フィールドマッピング
Log Service Zabbix 説明
aliuid なし アラート取り込みアプリケーションが属する Alibaba Cloud アカウントの ID。
alert_id {TRIGGER.ID} アラートモニタリングルールの ID。
alert_type なし アラートのタイプです。 有効な値は、sls_pub です。
alert_name {TRIGGER.NAME} アラートモニタリングルールのルール名。
status {ALERT.SUBJECT} アラートのステータス。 有効な値は、firing と resolved です。
next_eval_interval なし ジョブが繰り返される間隔。 有効値は 0 です。
alert_time なし アラートが最後に評価された日時。

alert_time フィールドの値は、{DATE} および {TIME} フィールドの値に基づいて算出されます。

fire_time なし アラートが初めてトリガーされた日時。

fire_time フィールドの値は、{EVENT.DATE} および {EVENT.TIME} フィールドの値に基づいて算出されます。

resolve_time なし アラートの解除日時。
  • アラートスのテータスが firing の場合、値は 0 です。
  • アラートのステータスが resolved の場合、値は特定の日時です。 resolve_time フィールドの値は、{EVENT.RECOVERY.DATE} および {EVENT.RECOVERY.TIME} フィールドの値に基づいて算出されます。
labels {HOST.NAME} アラートのラベル。
アラート取り込みアプリケーションの作成時に [エンリッチメント] タブでラベルを追加すると、ラベルは labels フィールドに追加されます。
[エンリッチメント] タブで指定したラベルのキーが Zabbix アラートの tags フィールドのサブフィールドと同じ場合、[エンリッチメント] タブが優先されます。
annotations {EVENT.TAGS} Log Service による Zabbix アラートの取り込み後、{EVENT.TAGS} フィールドの値が複数のキーと値のペアに展開され、キーと値のペアが対応する Log Service アラートの annotations フィールドに追加されます。
  • {HOST.IP} は、__host_ip__ にマッピングされます。
  • {TRIGGER.HOSTGROUP.NAME} は、__host_group_name__ にマッピングされます。
  • {EVENT.AGE} は、event_duration にマッピングされます。
  • {EVENT.NAME} は、title にマッピングされます。
  • {TRIGGER.DESCRIPTION} は、desc にマッピングされます。
Log Service のアラートの 対応する annotations フィールドに以下のフィールドが追加されます。
  • __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__: "zabbix"
  • __pub_alert_region__: {アラートが送信されるエンドポイントのリージョン}

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

severity {TRIGGER.NSEVERITY} アラートの重大度。 詳細については、「表 2」をご参照ください。
policy なし アラート取り込みアプリケーションに指定されているアラートポリシー。 詳細については、「ポリシー変数のデータ構造」をご参照ください。
project なし アラートセンターが属するプロジェクト。 詳細については、「プロジェクト」をご参照ください。
drill_down_query {$ZABBIX.SERVER.URL}{TRIGGER.ID}{EVENT.ID} この値はリンクです。 リンクをクリックすると、Zabbix コンソールのアラート管理ページに移動します。
表 2. アラートの重大度
Zabbix における重大度 Log Service における重大度
Not Classified report
Information low
Warning medium
Average medium
High high
Disaster critical

よくある質問

操作ログを表示するにはどうすればよいですか。

  1. Zabbix コンソールにログインします。
  2. 上部のナビゲーションバーで、[Reports] > [Action log] を選択します。