私は最近、Nagiosを使用して約25台のサーバーを監視し始めました(主に仮想、一部はスタンドアロン)。それらのサーバーの大部分(Nagiosホスト自体を含む)はUbuntu 14.04 LTSを実行しており、いくつかは12.04LTSを実行しています。したがって、私は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ファイルを介してこれを各ホストに「コピー」して、追加する各ホストのこれらすべての特定のサービスを表示するにはどうすればよいですか?これがすでにここにあり、ローカルホストですでに機能していることは明らかです。これを実現するために必要な組織に頭を悩ませるのに苦労しています。
ありとあらゆるアドバイスをありがとうございます。
少し前に、私は本当に素晴らしいNRPE自動インストーラースクリプトを作成しました。これは、ニーズに合わせて編集すると役立つと思います。スクリプトには、各ホストのnrpe.cfg
ファイルに追加されている多くの組み込みチェックが含まれています。つまり、自分に関連するチェックを構成し、スクリプトを実行している各ホストにもチェックが含まれていることを確認できます。これはクライアント側に関するものです。
スクリプトへのリンク: ここ 。
サーバー側(Nagios)に関しては、たとえばNagioSQLなどのNagios-Configuration Managerをインストールできます。これは、GUIを介してより便利な方法でホストとサービスを管理するのに役立ちます。
それ以上に、すべてのホストに表示したこれらのチェックがあることを確認するには、監視するこれらすべてのサービス(チェック)を含むサービスグループを作成し、このサービスグループを監視する各ホストにアタッチするだけです。
私が会社で行ったことをお話ししましょう。各サーバーがcheck_load
チェックで監視されていることを確認したかったのですが、会社にはハードウェアベースラインがないため、各サーバーの仕様が異なり、check_load
はコアごとに計算されます。マシン内の/ cpuは、Puppetサーバーの「Nagios_client」モジュールにcustom_fact
を追加しました。これは、マシンに存在するプロセッサの数を識別し、それに応じてNagioscheck_load
を構成します。
たとえば、server1に4つのCPUがあるとします。これは、2.8の負荷が理想的であることを意味します(CPUあたり0.7)。 Puppet through facter
は、CPUの数を識別し、サーバーの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では、「インポート機能」を使用して、ホストおよびサービスとしてNagiosにロードされる*.cfg
ファイルをインポートできます。したがって、1つのHost.cfg
ファイルを作成し、スクリプトを使用して、監視するホストごとにそれを複製し、各マシンのホスト名/ IPを変更するだけで、より自動化された構成への別のステップが必要になります。
たとえば私の場合、Puppetはマシン上で初めて実行されていることを理解し、Nagiosに関連するHost.cfg
ファイルを作成しました。
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の優れた点です。
私はあなたを助けたと思います。
各リモートホストにnrpeデーモンをセットアップしてインストールし、構成と最終的にはプラグインを展開するには、ある種の構成管理ソフトウェアが必要です。
このタスクには Ansible をお勧めします。
https://github.com/bobmaerten/ansible-role-nagios-nrpe-server