CentOS7でAlertaを使用してNagiosアラートを監視する方法

提供:Dev Guides
移動先:案内検索

序章

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つのパネルにマージできます。