すべてのプロダクト
Search
ドキュメントセンター

Application Real-Time Monitoring Service:Nagios と ARMS の統合

最終更新日:Mar 11, 2026

Nagios と Application Real-Time Monitoring Service (ARMS) アラート管理を統合し、Nagios からホストおよびサービスのアラートを ARMS に転送します。ARMS はこれらのアラートを重複排除し、通知ポリシーに基づいてルーティングします。

前提条件

作業を開始する前に、以下の要件を満たしていることを確認してください。

  • ARMS が有効化された Alibaba Cloud アカウント

  • 管理者アクセス権を持つ実行中の Nagios サーバー

  • Nagios サーバーにインストール済みの Python

  • requests Python ライブラリ(セットアップ時にまだインストールされていない場合は自動的にインストールされます)

ステップ 1:ARMS で Nagios 統合を作成する

  1. ARMS コンソールにログインします。

  2. 左側のナビゲーションウィンドウで、アラート管理 > 統合 を選択します。

  3. アラート統合 タブで、Nagios をクリックします。

  4. Nagios 統合の作成 ダイアログボックスで、名前と説明を入力し、自動回復時間を指定して、保存 をクリックします。

    説明

    自動回復期間内に再度アラートイベントがトリガーされない場合、ARMS は自動的にそのアラートをクリアします。

  5. アラート統合 タブで、作成した Nagios 統合を見つけ、統合アドレス 列の URL をコピーします。

    Copy the integration address

ステップ 2:Nagios のアラート転送を構成する

Nagios サーバー上に Python スクリプトを作成し、ARMS 統合エンドポイントにアラートデータを投稿します。その後、Nagios のコマンドおよび連絡先を構成してスクリプトを呼び出します。

アラート通知スクリプトの作成

  1. Nagios サーバーにログインし、プラグインディレクトリに移動します。

    cd /usr/local/nagios/libexec/
  2. 以下の内容で nagios-alert.py という名前のファイルを作成します。

    重要

    <your-integration-url> は、ステップ 1 でコピーした統合アドレスに置き換えてください。

    #!/usr/bin/python
    # -*- coding: utf-8 -*-
    
    import requests
    import json
    import sys
    import os
    
    headers = {'Content-Type': 'application/json;charset=utf-8'}
    api_url = "<your-integration-url>"  # Replace with the integration address from Step 1
    
    def parse(sys):
        object_type = str(sys.argv[1])
        notification_type = str(sys.argv[2])
        host_name = str(sys.argv[3])
        host_ip = str(sys.argv[4])
        state = str(sys.argv[5])
        time = str(sys.argv[6])
        info = str(sys.argv[7])
    
        if object_type == 'host':
            description = "[{}] {} alert: {} is {}".format(notification_type, object_type, host_name, state)
            service = ""
        else:
            service = str(sys.argv[8])
            description = "[{}] {} alert: {}/{} is {}".format(notification_type, object_type, host_name, service, state)
        content_dict = {'service':""}
        content_dict['object_type'] = object_type
        content_dict['notification_type'] = notification_type
        content_dict['host_name'] = host_name
        content_dict['host_ip'] = host_ip
        content_dict['state'] = state
        content_dict['time'] = time
        content_dict['info'] = info
        content_dict['service'] = service
        content_dict['description'] = description
        print(content_dict)
        return content_dict
    
    
    def msg(text):
        result = requests.post(url=api_url, data=json.dumps(text), headers=headers)
        print(result)
    
    
    if __name__ == '__main__':
        text = parse(sys)
        msg(text)
  3. まだインストールされていない場合は、requests ライブラリをインストールします。

    pip install requests

Nagios コマンドの定義

  1. Nagios コマンド構成ファイルを開きます。

    vim /usr/local/nagios/etc/objects/commands.cf
  2. ファイルに以下のコマンド定義を追加します。

    define command{
        command_name notify-host-by-alert
        command_line python /usr/local/nagios/libexec/nagios-alert.py "host" "$NOTIFICATIONTYPE$" "$HOSTALIAS$" "$HOSTADDRESS$" "$HOSTSTATE$" "$LONGDATETIME$" "$HOSTOUTPUT$"
        }
    
    define command{
        command_name notify-service-by-alert
        command_line python /usr/local/nagios/libexec/nagios-alert.py "service" "$NOTIFICATIONTYPE$" "$HOSTALIAS$" "$HOSTADDRESS$" "$SERVICESTATE$" "$LONGDATETIME$" "$SERVICEOUTPUT$" "$SERVICEDESC$"
        }
  3. ファイルを保存して閉じます。

連絡先の通知コマンドの更新

  1. Nagios 連絡先構成ファイルを開きます。

    vim /usr/local/nagios/etc/objects/contacts.cfg
  2. 連絡先定義内で、以下の通知コマンドディレクティブを追加または更新します。

    service_notification_commands   notify-service-by-alert
    host_notification_commands      notify-host-by-alert

    Update the contacts.cfg file

  3. ファイルを保存して閉じます。

Nagios の再起動

変更を適用するには、次のコマンドを実行します。

systemctl restart nagios

(オプション)ステップ 3:フィールドマッピングのカスタマイズ

ARMS では、Nagios アラートデータと ARMS アラートイベント間のデフォルトのフィールドマッピングが提供されています。これらのマッピングを追加または変更するには、統合設定を編集します。

以下の JSON は、Nagios アラートペイロードのサンプルです。

{
    "info": "SWAP CRITICAL - 0% free (0 MB out of 0 MB) - Swap is either disabled, not present, or of zero size.",
    "description": "[PROBLEM] service alert: localhost/Swap Usage is CRITICAL",
    "service": "Swap Usage",
    "host_ip": "127.0.0.1",
    "state": "CRITICAL",
    "object_type": "service",
    "time": "Tue Sep 14 10:46:49 CST 2021",
    "notification_type": "PROBLEM",
    "host_name": "localhost"
}

テストデータの送信

  1. アラート統合 タブで、対象の統合を見つけ、操作 列の 編集 をクリックします。

  2. イベントマッピング セクションで、テストデータの送信 をクリックします。

  3. テストデータの送信 ダイアログボックスで、JSON アラートペイロードを貼り付け、送信 をクリックします。

    説明
    • 「アップロードされました。イベントは生成されていません。元データに基づいてマッピングを構成してください。」というメッセージが表示された場合、ソースフィールドはまだマッピングされていません。アップロードされたデータは左側のペインに表示され、マッピング構成時にフィールドを選択できます。

    • 「Uploaded.」というメッセージが表示された場合、アラート内容が[アラートイベント履歴]ページに報告されました。 詳細については、「過去のアラートイベントの表示」をご参照ください。

  4. テストデータの送信 ダイアログボックスで、無効化 をクリックします。

フィールドマッピングの構成

  1. イベントマッピング セクションの左側ペインで、データレコードをクリックして詳細を表示します。

  2. (オプション)ルートノードの選択 セクションで、アラートデータに配列ノードが含まれる場合はバッチ処理を有効にします。バッチ処理に使用する配列ノードを選択すると、そのノード配下のデータが一括で処理されます。

    説明

    アラートデータに複数の配列ノードが存在する場合、バッチ処理用に選択できるのは 1 つのみです。

  3. ソースフィールドからターゲットフィールドへのマッピング セクションで、ソースフィールドを ARMS アラートフィールドにマッピングします。マップ アイコンをクリックしてマッピング方法を選択します。

    • 直接 — 単一のソースフィールドを ARMS アラートフィールドにマッピングします。

    • [シリーズ] -- 複数のソースフィールドをデリミタ(特殊文字のみ)で連結し、その結果を ARMS アラートフィールドにマップします。

    • 条件 — 指定された条件を満たす場合にのみ、ソースフィールドを ARMS アラートフィールドにマッピングします。

    • マッピングテーブル — アラートソースの重大度レベルを ARMS の重大度レベルにマッピングします。この方法は severity フィールドにのみ使用します。

ARMS アラートフィールド

フィールド説明
alertnameカスタムアラート名。
severityアラートの重大度レベル。直接マッピング方式を使用する必要があります。
messageアラートの説明。アラート通知の内容として使用されます。最大長:15,000 文字。
valueメトリック値のサンプル。
imageUrlGrafana メトリック折れ線グラフの URL。
checkアラート確認項目(例:CPU、JVM、アプリケーションクラッシュ、Deployment など)。
sourceアラートソース。
classアラートイベントをトリガーするオブジェクトのタイプ(例:host など)。
serviceソースサービス(例:ログインサービスなど)。
startatイベント開始時刻のタイムスタンプ。
endatイベント終了時刻のタイムスタンプ。
generatorUrlイベント詳細ページの URL。

イベント重複排除の構成

イベント重複排除は、指定されたフィールドの値が同一である複数のイベントを単一のアラート通知にマージすることで、ノイズを低減します。

説明

重複排除は、未クリアのイベントにのみ適用されます。

  1. 統合詳細 ページの イベント重複排除 セクションで、重複排除に使用するフィールドを選択します。

  2. 重複排除テスト をクリックして、グループ化結果をプレビューします。

    説明

    重複排除テストは、イベントマッピング セクションでアップロードされた最新のデータレコード 10 件に対して実行されます。

  3. 保存 をクリックします。

アラートイベントの詳細の表示

  1. 左側のナビゲーションウィンドウで、アラート管理 > アラートイベント履歴 を選択します。

  2. アラートイベント名をクリックして、その詳細を表示します。詳細については、「過去のアラートイベントを表示する」をご参照ください。

統合の管理

アラート統合 タブ(アラート管理 > 統合)では、以下の操作で統合を管理できます。

  • 詳細の表示 — 統合行をクリックして 統合詳細 ページを開きます。

  • キーの更新操作 列で その他 > キーの更新 を選択し、OK をクリックします。

    重要

    キーを更新した後は、nagios-alert.py スクリプト内の api_url 値を更新し、Nagios を再起動してください。詳細については、「ステップ 2:Nagios のアラート転送を構成する」をご参照ください。

  • 編集操作 列の 編集 をクリックして 統合詳細 ページで統合を変更し、保存 をクリックします。

  • 有効化または無効化操作 列の 有効化 または 無効化 をクリックします。

  • 削除操作 列の 削除 をクリックし、OK をクリックします。

  • イベント処理フローの追加 -- [イベント処理フローの追加][操作] 列でクリックします。詳細については、「イベント処理フローの操作」をご参照ください。

  • 通知ポリシーの作成 -- [操作] 列で [詳細] > [通知ポリシーの作成] を選択します。 詳細については、「通知ポリシーの作成と管理」をご参照ください。

次のステップ

通知ポリシーを作成すると、ARMS はそのポリシーに基づいてアラートを生成し、受信したアラートイベントに対して通知を送信します。詳細については、「通知ポリシーの作成と管理」をご参照ください。

送信済みのアラートを確認するには、[アラート送信履歴] ページに移動します。詳細については、「過去のアラートを表示する」をご参照ください。