本トピックでは、Nagios を Application Real-Time Monitoring Service (ARMS) のアラート管理と統合する方法を説明します。
ステップ1: Nagiosインテグレーションの作成
ARMS コンソール にログインします。左側のナビゲーションウィンドウで、 を選択します。
-
アラート統合 タブで、[Nagios] をクリックします。
-
[New Nagios Integration] ウィザードで、インテグレーションの名前と説明を入力し、アラートイベントの自動復旧時間を設定してから、保存 をクリックします。
説明指定された期間内にアラートイベントが再度トリガーされない場合、アラートイベントは自動的にクリアされます。
-
アラート統合 タブで、Nagios インテグレーションを検索し、そのインテグレーションアドレスをコピーします。
ステップ2: Nagiosアラートテンプレートの設定
-
アラート通知スクリプトを作成します。
-
Nagios がインストールされているサーバーにログインし、次のパスに移動します。
cd /usr/local/nagios/libexec/ -
nagios-alert.py という名前のスクリプトファイルを作成します。ファイルに次の内容を追加します。
説明スクリプト内の
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 = "integration_url" # integration_url を、ステップ 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) -
次のコマンドを実行して、Requests ライブラリをインストールします。
pip install requests
-
-
Commands ファイルを設定します。
-
次のコマンドを実行して、commands.cf ファイルを変更します。
vim /usr/local/nagios/etc/objects/commands.cf -
次の内容を commands.cf ファイルに追加します。
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$" } -
:wqコマンドを入力して、commands.cf ファイルへの変更を保存します。
-
-
連絡先情報を指定します。
-
次のコマンドを実行して、contacts.cfg ファイルを変更します。
vim /usr/local/nagios/etc/objects/contacts.cfg -
次の内容を contacts.cfg ファイルに追加します。
service_notification_commands notify-service-by-alert host_notification_commands notify-host-by-alertdefine contact{ contact_name nagiosadmin ; 短縮名 use generic-contact ; デフォルトを継承 alias Nagios Admin ; フルネーム email nagios@localhost ; <<***** ここを変更 service_notification_commands notify-service-by-alert host_notification_commands notify-host-by-alert } ################################################################ -
:wqコマンドを入力して、contacts.cfg ファイルへの変更を保存します。
-
-
次のコマンドを実行して、Nagios を再起動します。
systemctl restart nagios
(オプション) ステップ3: インテグレーションの変更
アラート管理には、Nagios アラートソースと ARMS アラート間のデフォルトのフィールドマッピングが用意されています。統合の編集 ページでフィールドマッピングを追加または変更することもできます。
アラートソースのサンプル:
{
"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"
}
[アラートの統合] タブで、管理する統合を見つけて、[編集] を [アクション] 列でクリックします。
[イベントマッピング] セクションで、[テストデータを送信] をクリックします。
[テストデータを送信] ダイアログボックスで、JSON 形式でサードパーティアラートソースのアラートコンテンツを入力し、[送信] をクリックします。
説明[アップロードされました。イベントは生成されません。元のデータに基づいてマッピングを設定してください。] というメッセージが表示された場合、アラートソースのフィールドは ARMS アラートイベントのフィールドにマッピングされていません。送信されたデータは左側のボックスに表示されます。これにより、マッピングを設定するときにソースフィールドを選択できます。
[アップロードされました。] というメッセージが表示された場合、アラート内容はアラートイベント履歴ページに報告されます。詳細については、「履歴アラートイベントを表示する」をご参照ください。
[テストデータの送信] ダイアログボックスで、[無効化] をクリックします。
[イベントマッピング] セクションの左側で、マッピングを設定するデータレコードをクリックして詳細を表示します。
-
イベントマッピング セクションの右側のペインで、アラートソースフィールドと ARMS アラートフィールド間のマッピングを設定します。
オプション:[ルートノードを選択] セクションで、バッチ処理を有効にするかどうかを指定します。
アラートデータに配列ノードが存在する場合、配列ノードをルートノードとして指定できます。ルートノードに属するデータはバッチで処理されます。
バッチ処理を使用 を選択した後、バッチ処理する配列ノードをルートノードとして選択します。
説明アラートデータに複数の配列ノードが存在する場合、バッチ処理用に配列ノードを 1 つだけ選択できます。
[ソースフィールドをターゲットフィールドにマップ] セクションで、アラートソースのフィールドを ARMS のアラートフィールドにマップします。
マッピングアイコンをクリックして、フィールドマッピングの方法を変更します。
直接: アラートソースの指定されたフィールドは、ARMS の指定されたアラートフィールドに直接マッピングされます。
シリーズ: デリミタを使用してアラートソースの複数のフィールドを 1 つのフィールドに連結し、このフィールドを ARMS の指定されたアラートフィールドにマッピングできます。特殊文字のみをデリミタとして使用できます。
条件付き: 指定されたアラートソースフィールドは、フィールド値が指定された条件を満たす場合にのみ、ARMS アラートフィールドにマッピングされます。
マッピングテーブル: アラートソースの重大度は ARMS アラートの重大度にマッピングされます。マッピングテーブルには、重大度フィールドのみが含まれています。
次の表に、ARMS のアラートフィールドを示します。
アラートフィールド
説明
alertname
カスタムアラートの名前。
severity
アラートの重大度レベル。このフィールドのマッピングを設定する必要があります。マッピング方法は「直接」に設定する必要があります。
message
アラートの説明。説明は、アラートメッセージの内容として使用されます。説明は 15,000 文字を超えることはできません。
value
メトリックのサンプル値。
imageUrl
Grafana メトリックを含む折れ線グラフの URL。URL は、折れ線グラフをマッピングするために使用されます。
check
アラートのチェック項目。例: CPU、JVM、アプリケーションクラッシュ、デプロイメント。
source
アラートのソース。
class
アラートイベントをトリガーするオブジェクトのタイプ。例: ホスト。
service
アラートのソースサービス。例: ログインサービス。
startat
イベントの開始日時を表すタイムスタンプ。
endat
イベントの終了日時を表すタイムスタンプ。
generatorUrl
イベント詳細の URL。
アラートイベントのフィールド重複排除を設定します。
重複データを削減するために、システムは関連フィールドを重複排除の基準として使用します。ARMS アラート管理では、[イベントマッピング] セクションに表示される履歴イベントデータの重複排除グループ化結果をプレビューできます。重複排除されるフィールドを変更できます。
説明クリアされていないイベントに対してのみ重複排除を設定できます。
[イベントの重複排除] ページの [連携の詳細] セクションで、重複排除に使用するフィールドを選択します。
複数のイベントが指定されたフィールドで同じ値を持つ場合、イベントは 1 つのアラート通知にマージされます。
[重複排除テスト] をクリックして、重複排除後のアラートグループをプレビューします。
説明重複排除テストは、[イベントマッピング] セクションの左側にアップロードされた最新の 10 件のデータレコードに対してのみ有効です。
設定が完了したら、[保存] をクリックします。
アラートイベントの詳細を表示する
ARMS コンソールの左側のナビゲーションウィンドウで、 を選択します。
[アラートイベント履歴] ページで、アラートイベントの名前をクリックしてイベント詳細を表示します。詳細については、「履歴アラートイベントを表示する」をご参照ください。
インテグレーションの管理
左側のナビゲーションウィンドウで、 を選択します。[アラート統合] タブで、作成した統合に対して次の操作を実行できます。
統合の詳細を表示する: 統合を見つけて、行をクリックします。[統合の詳細] ページで、統合の詳細を表示します。
-
キーの更新:インテグレーションのキーを変更するには、対象のインテグレーションの操作 列で を選択し、確認 をクリックします。
重要キーを更新した後、スクリプトファイル内のインテグレーションアドレスを変更する必要があります。詳細については、「ステップ2: Nagiosアラートテンプレートの設定」をご参照ください。
統合を変更する: 統合を見つけて、[アクション] 列の [編集] をクリックします。[統合の詳細] ページで、統合情報を変更し、[保存] をクリックします。
統合を有効または無効にする: 統合を見つけて、[アクション] 列の [無効化] または [有効化] をクリックします。
統合を削除する: 統合を見つけて、[アクション] 列の [削除] をクリックします。表示されるメッセージで、[OK] をクリックします。
統合にイベント処理フローを追加する: 統合を見つけて、[アクション] 列の [イベント処理フローを追加] をクリックします。詳細については、「イベント処理フローを操作する」をご参照ください。
通知ポリシーを作成する: 通知ポリシーを作成する統合を見つけて、[アクション] 列の [詳細] をクリックします。表示されるリストで、[通知ポリシーを作成] をクリックします。詳細については、「通知ポリシーを作成および管理する」をご参照ください。
次のステップ
通知ポリシーを作成した後、システムは、作成した通知ポリシーに基づいて、報告されたアラートイベントのアラートを生成し、アラート通知を送信します。詳細については、「通知ポリシーを作成および管理する」をご参照ください。[アラート送信履歴] ページで、設定された通知ポリシーに基づいて生成されたアラートを表示できます。詳細については、「アラート履歴を表示する」をご参照ください。