Nagios 基本設定 (新しいマシンを素早く追加するため)

Nagios 基本設定 (新しいマシンを素早く追加するため)

最近、Nagios を使用して約 25 台のサーバー (主に仮想サーバー、一部はスタンドアロン) を監視し始めました。サーバーの大半 (Nagios ホスト自体を含む) は Ubuntu 14.04 LTS を実行しており、少数は 12.04 LTS を実行しています。そのため、NRPE を使用すれば済むと考えました。

NRPE の設定は私にとってはかなり複雑であることがわかりました。たとえば、単純な check_disk コマンドの場合、以下に示すように、他のすべてのパーティション/ファイルシステムを除外して、チェックするパーティションを手動で指定する必要がありました。

command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 57% -x /dev -x /run -x /run/lock -x /run/shm -x /run/user -x /sys/fs/cgroup

そうしないと、sysfs、proc、またはその他のパーティションによって警告と重大のしきい値がすぐに設定されてしまいます。

次に、Nagios ホストが自身に対して実行する基本サービス モニターを確認しました。これは /usr/local/nagios/etc/localhost.cfg 内にリストされており、次の内容が含まれています (申し訳ありません。なぜ正しくフォーマットされないのか理解できません)。

define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             PING
check_command           check_ping!100.0,20%!500.0,60%
    }



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%!/
    }




define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Users
check_command           check_local_users!20!50
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Total Processes
check_command           check_local_procs!250!400!RSZDT
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Current Load
check_command           check_local_load!5.0,4.0,3.0!10.0,6.0,4.0
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             Swap Usage
check_command           check_local_swap!20!10
    }


define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             SSH
check_command           check_ssh
notifications_enabled       0
    }



define service{
    use                             local-service         ; Name of service template to use
    host_name                       localhost
    service_description             HTTP
check_command           check_http
notifications_enabled       0
    }

その結果、ダッシュボードには次の画面が表示されます。

素晴らしい

これは私にとっては完璧です。これはまさに、追加するすべてのホストに表示させたいものです。カスタム コマンドをいじくり回すのではなく、NRPE conf ファイルを通じてこれを各ホストに「コピー」して、追加する各ホストの特定のサービスをすべて表示するにはどうすればよいのでしょうか。これはすでに存在し、ローカルホストですでに機能していることは明らかです。これを実現するために必要な構成を理解するのに苦労しています。

あらゆるアドバイスをありがとうございます。

答え1

少し前に、私は本当に素晴らしい NRPE 自動インストーラー スクリプトを書きました。これをニーズに合わせて編集すれば、役に立つと思います。スクリプトには、各ホストのnrpe.cfgファイルに追加される多くの組み込みチェックが含まれています。つまり、自分に関連するチェックを構成し、スクリプトを実行している各ホストにもそれらのチェックが確実に含まれるようにすることができます。これはクライアント側に関することです。

スクリプトへのリンク:ここ

サーバー側 (Nagios) に関しては、NagioSQL などの Nagios 構成マネージャーをインストールできます。これにより、GUI を介してより便利な方法でホストとサービスを管理できるようになります。

さらに、すべてのホストにこれらのチェックが確実に適用されるようにするには、監視するすべてのサービス (チェック) を含むサービス グループを作成し、監視する各ホストにこのサービス グループをアタッチするだけです。

私が会社で行ったことをお話ししましょう。各サーバーがチェックで監視されていることを確認したかったのですcheck_loadが、会社にはハードウェアのベースラインがないため、各サーバーの仕様が異なり、マシンのコア/CPUごとに計算されるため、マシンに存在するプロセッサの数を識別し、それに応じてNagiosを構成するcheck_loadPuppetサーバーの「Nagios_client」モジュールに追加しました。custom_factcheck_load

たとえば、server1 に 4 つの CPU があるとします。この場合、負荷は 2.8 (CPU あたり 0.7) が理想的です。Puppet はCPU の数を識別し、次のようにfacterサーバーを編集します。nrpe.cfg

command[check_load]=/usr/local/nagios/libexec/check_load -w 2.9,3.0,3.1 -c 4.0,5.0,6.0

次に、たとえば NagioSQL では、「インポート機能」を使用して、*.cfgNagios にホストおよびサービスとしてロードされるファイルをインポートできます。したがって、1 つのhost.cfgファイルを作成し、スクリプトを使用して監視するホストごとにそのファイルを複製し、各マシンのホスト名/IP を変更するだけで、より自動化された構成へのもう 1 つのステップを実行できます。

たとえば私の場合、Puppet はマシン上で初めて実行されていることを理解し、host.cfgNagios に関連ファイルも作成しました。

Puppet + NagioSQL を使用すると、Nagios の管理がはるかに簡単になると思います。

チェックの設定が難しいという点については、いつでも独自のスクリプトを作成し、Nagios がそれを実行するように設定できます。たとえば、あなたのcheck_diskコマンドを例に挙げてみましょう。これは非常に豊富なコマンドで、あなたにとって不必要に重要なあらゆる種類のデータを表示できます。

これも非常に豊富な機能を持つコマンドでcheck_procs、あらゆる種類のデータを提供しますが、私には必要なかったので、必要なことだけを実行する簡単なチェック スクリプトを作成し、Nagios で設定しました。例:

#!/bin/bash
# This script checks for running processes for mt.js and adb-server.js
# Script by Itai Ganot 2015 .
process="$1"
appname=$(basename $0)
if [ -z "$1" ]; then
    echo "Please specify a process to check"
    exit 1
fi
ps -ef | grep "$process" | egrep -v "grep|$appname" &>/dev/null
if [ "$?" -eq "0" ] ; then
    stat="OK"
    exitcode="0"
    msg="Process $process is running"
else
    stat="Critical"
    exitcode="2"
    msg="There are currently no running processes of $process"
fi
pid=$(ps -ef | grep "$process" | egrep -v "grep|$appname" | awk '{print $2}')
echo "$stat: $msg Process PID: $pid"
exit $exitcode

実際よりも情報は少ないですcheck_procsが、必要な情報だけが得られます。

つまり、簡単に言えば、check_diskコマンドの設定が難しい場合は、独自のスクリプトを作成すればよいのです。これが Nagios の優れた点です。

お役に立てれば幸いです。

答え2

各リモート ホストに nrpe デーモンをセットアップしてインストールし、構成と最終的にプラグインを展開するには、何らかのタイプの構成管理ソフトウェアが必要です。

提案させてくださいアンシブルこのタスクのために。

https://github.com/bobmaerten/ansible-role-nagios-nrpe-server

関連情報