web-dev-qa-db-ja.com

Nagiosの基本構成(新しいマシンをすばやく追加するため)

私は最近、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
    }

ダッシュボードでこれが発生します。

awesome

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

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

2
Harsha K

少し前に、私は本当に素晴らしい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の優れた点です。

私はあなたを助けたと思います。

2
Itai Ganot

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

このタスクには Ansible をお勧めします。

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

1
dmourati