CentOS7でAlertaを使用してNagiosアラートを監視する方法
序章
Alerta は、複数の監視システムからのアラートを統合および重複排除し、単一の画面で視覚化するために使用されるWebアプリケーションです。 Alertaは、Nagios、Zabbix、Sensu、InfluxData Kapacitor、その他多くの有名な監視ツールと統合できます。
このチュートリアルでは、Alertaをセットアップし、人気のあるオープンソースの監視システムであるNagaosからの通知を表示するように構成します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- CentOS7初期サーバーセットアップガイドに従ってセットアップされた2台のCentOS7サーバー(sudo非rootユーザーとファイアウォールを含む)。
- Nagiosを実行する最初のCentOSサーバーに、次のコンポーネントをインストールします。 チュートリアル「Linux、Apache、MySQL、PHP(LAMP)スタックをCentOS 7にインストールする方法」に従って、Apache、MySQL、およびPHPを実行します。 Nagios 4は、チュートリアル「Nagios4をインストールしてCentOS7にサーバーを監視する方法」とその構成の前提条件に従ってインストールされます。
- このチュートリアルでAlertaをインストールする2番目のCentOSサーバーに、次のコンポーネントをインストールします。 チュートリアル「CentOS7にNginxをインストールする方法」に従ってインストールされたNginx。 チュートリアル「CentOS7にMongoDBをインストールする方法」に従ってインストールされたMongoDB。 Alerta、CentOS7でAlertaを使用してZabbixアラートを監視する方法のチュートリアルのステップ1から6に従ってインストールされます。
ステップ1—NagiosからAlertaへのイベントブローカーモジュールのインストール
Nagios Event Broker(NEB)モジュールを使用してNagiosの機能を拡張できます。 NEBはNagiosのイベント統合メカニズムであり、NEBモジュールは他のサービスをNagiosと統合できる共有ライブラリです。 このステップでは、NagiosをAlertaGateway にインストールします。これは、Alertaに通知を送信するNEBモジュールです。
root以外のユーザーとしてNagiosサーバーにログインします。
ssh sammy@your_nagios_server_ip
Nagios to Alerta Gatewayには事前構成されたシステムパッケージがないため、ソースからビルドする必要があります。 そのためには、いくつかの開発ツールとファイルをインストールする必要があります。 また、GitHubからソースコードを取得できるように、Gitをインストールする必要があります。
sudo yum install -y git curl gcc make libcurl-devel
前提条件がインストールされたら、Gitを使用してプロジェクトのGitHubリポジトリからソースコードのクローンを作成します。
git clone https://github.com/alerta/nagios-alerta.git
次に、新しいnagios-alerta
ディレクトリに移動します。
cd nagios-alerta
次に、make
を使用してnagios-alerta
モジュールをコンパイルします。
make nagios4
次の出力が表示されます。
Outputcd ./src && make nagios4 make[1]: Entering directory `/root/nagios-alerta/src' gcc -fPIC -g -O2 -DHAVE_CONFIG_H -I../include -I../include/nagios4 -lcurl -o alerta-neb.o alerta-neb.c -shared -lcurl make[1]: Leaving directory `/root/nagios-alerta/src'
何か違うものが表示された場合は、すべての前提条件がインストールされていることを確認してください。
次に、インストールタスクを実行します。
sudo make install
モジュールが/usr/lib/nagios
にインストールされたことを示すこの出力が表示されます。
Outputcd ./src && make install make[1]: Entering directory `/root/nagios-alerta/src' [ -d /usr/lib/nagios ] || mkdir /usr/lib/nagios install -m 0644 alerta-neb.o /usr/lib/nagios make[1]: Leaving directory `/root/nagios-alerta/src'
モジュールがインストールされたら、この新しいモジュールを使用するようにNagiosを構成できます。
ステップ2—Nagios-to-Alertaモジュールの構成
Alertaに通知メッセージを送信するようにNagiosを構成しましょう。
まず、Nagiosメイン構成ファイルで新しくインストールされたAlertaブローカーモジュールを有効にします。 エディターでNagios構成ファイルを開きます。
sudo vi /usr/local/nagios/etc/nagios.cfg
broker_module
ディレクティブを含むセクションを見つけます。
/usr/local/nagios/etc/nagios.cfg
... # EVENT BROKER MODULE(S) # This directive is used to specify an event broker module that should # by loaded by Nagios at startup. Use multiple directives if you want # to load more than one module. Arguments that should be passed to # the module at startup are separated from the module path by a space. # [...] #broker_module=/somewhere/module1.o #broker_module=/somewhere/module2.o arg1 arg2=3 debug=0 ...
Alertaモジュールを構成するには、2つの必須の引数を指定する必要があります。
- URL :AlertaAPIとの通信に使用されるアドレス。 これは、チュートリアル CentOS7でAlertaを使用してZabbixアラートを監視する方法のステップ3で構成しました。
- key :チュートリアル CentOS7でAlertaを使用してZabbixアラートを監視する方法のステップ4で作成したAPIキー。 Alertaで認証し、イベントを投稿するには、これが必要です。
次の行をファイルに追加して、Alerta統合を構成します。
/usr/local/nagios/etc/nagios.cfg
... broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY ...
同様に指定できるいくつかの追加のオプションの引数があります。
- env :環境名を指定します。 デフォルトの環境名は
Production
です。 - hard_only :結果をハード状態のみで転送します。 Nagiosの状態タイプの詳細については、Nagiosのドキュメントを参照してください。 このモードを有効にするには、これを
1
に設定します。 - debug :-モジュールのデバッグモードを有効にします。 このモードを有効にするには、これを
1
に設定します。
これらすべてのオプションを指定するには、代わりに次の行を使用してください。
/usr/local/nagios/etc/nagios.cfg
... broker_module=/usr/lib/nagios/alerta-neb.o http://your_alerta_server_ip/api key=ALERTA_API_KEY env=Production hard_only=1 debug=1 ...
ファイルを保存して、エディターを終了します。
環境とサービス名でアラートを識別するには、Nagiosカスタムオブジェクト変数を使用して環境とサービスの名前を設定する必要があります。 これを行うには、構成で_Environment
および_Service
変数を使用します。 それらを構成しましょう。
/usr/local/nagios/etc/objects/
ディレクトリにあるデフォルトのNagiosホストオブジェクト構成ファイルを開きます。
sudo vi /usr/local/nagios/etc/objects/localhost.cfg
このホストのすべてのアラートをProductionアラートとしてマークし、デフォルトのサービスNagaosと呼びます。 次のホスト定義を見つけます。
/usr/local/nagios/etc/objects/localhost.cfg
... define host{ use linux-server ; Name of host template to use ; This host definition will inherit all variables that are defined ; in (or inherited by) the linux-server host template definition. host_name localhost alias localhost address 127.0.0.1 } ...
_Environment
および_Service
の値を構成に追加します。
/usr/local/nagios/etc/objects/localhost.cfg
... host_name localhost alias localhost address 127.0.0.1 _Environment Production _Service Nagios } ...
ここで、システム部分のスペース不足に関連するすべてのイベントをシステムアラートとしてマークします。 空き領域を確認する方法を定義するファイルの次のセクションを見つけます。
/usr/local/nagios/etc/objects/localhost.cfg
... define service{ use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ } ...
System
サービスに関連付けるように変更します。
/usr/local/nagios/etc/objects/localhost.cfg
... define service{ use local-service ; Name of service template to use host_name localhost service_description Root Partition check_command check_local_disk!20%!10%!/ _Service System } ...
ファイルを保存して、エディターを終了します。 Nagiosを再起動して、次の新しい設定を適用します。
sudo systemctl restart nagios.service
ステータスを確認して、サービスが実行されていることを確認します。
systemctl status nagios.service
次の出力が表示されます。
Output... Jul 01 08:44:31 nagios nagios[8914]: [alerta] Initialising Nagios-Alerta Gateway module, v3.4.1 Jul 01 08:44:31 nagios nagios[8914]: [alerta] debug is off Jul 01 08:44:31 nagios nagios[8914]: [alerta] states=Hard/Soft Jul 01 08:44:31 nagios nagios[8914]: [alerta] Forward service checks, host checks and downtime to http://your_alerta_server_ip/api Jul 01 08:44:31 nagios nagios[8914]: Event broker module '/usr/lib/nagios/alerta-neb.o' initialized successfully. Jul 01 08:44:31 nagios nagios[8914]: Successfully launched command file worker with pid 8920
これで、Nagiosは、システムまたはサービスがオフになるとすぐに通知を送信します。 テストイベントを生成してみましょう。
ステップ3—NagiosとAlertaの統合を検証するためのテストアラートの生成
すべてが接続されていることを確認するためのテストアラートを生成しましょう。 デフォルトでは、Nagiosはサーバーの空きディスク容量を追跡します。 Nagiosのファイルシステム使用状況アラートをトリガーするのに十分な大きさの一時ファイルを作成します。
まず、Nagiosサーバーにどれだけの空き容量があるかを判断します。 df
コマンドを使用して、以下を確認できます。
df -h
次のような出力が表示されます。
Output Filesystem Size Used Avail Use% Mounted on /dev/vda1 20G 3.1G 16G 17% /
利用可能な空き容量を確認します。 この場合、空き容量は16GB
です。 空き容量が異なる場合があります。
fallocate
コマンドを使用して、使用可能なディスク容量の80 % o fを超えるファイルを作成します。これは、アラートをトリガーするのに十分なはずです。
fallocate -l 14G /tmp/temp.img
数分以内に、Nagiosは空きディスク容量に関するアラートをトリガーし、Alertaに通知メッセージを送信します。 Alertaダッシュボードに次の新しい通知が表示されます。
アラートが機能していることがわかったので、作成した一時ファイルを削除して、ディスク領域を再利用できるようにします。
rm -f /tmp/temp.img
1分後、Nagiosは回復メッセージを送信します。 その後、アラートはメインのAlertaダッシュボードから消えますが、 Closed を選択すると、すべてのクローズされたイベントを表示できます。
イベント行をクリックすると、詳細が表示されます。
結論
このチュートリアルでは、Alertaを実行している別のサーバーに通知を送信するようにNagiosを構成しました。
Alertaは、多くのシステムからのアラートを追跡するための便利な場所を提供します。 たとえば、インフラストラクチャの一部でNagiosを使用し、他の部分でZabbixを使用している場合、両方のシステムからの通知を1つのパネルにマージできます。