分散監視 (Distributed Monitoring)


・ CMS及びDMSにおけるNetSaintの設定と起動

(1)DMS(Distributed Monitoring Server)上のNetSaintの設定


インストールのところでも書きましたが、DMS(Distributed Monitoring Server)におけるNetSaintの設定に関するキーポイントは、次の4点です。

  @ チェック対象となるホストやサービスを定義する。( hosts.cfg )
  A スタンバイモードで起動するように設定する。( netsaint.cfg )
  B obsess over service が機能するように設定する。( netsaint.cfg )
  C ocsp コマンドを定義しておく。( hosts.cfg )

それでは、それぞれの設定内容について見ていきましょう。

@ チェック対象となるホストやサービスを定義する。( hosts.cfg )
DMSで監視対象となるホストやサービスをアクティブにチェックしますので、当然といえば当然ですね。
具体的な設定方法については、基本編の「 Host Configuration 」を参考にしてください。

A スタンバイモードで起動するように設定する。( netsaint.cfg )
netsaint.cfg のprogram_mode=s とします。
スタンバイモード(それに対するアクティブモード)については、基本編の「NetSaintの基本用語」を御覧ください。

B obsess over service が機能するように設定する。( netsaint.cfg )
C ocspコマンドを定義しておく。( hosts.cfg )
さて、BとCはセットとなっています。
新しい用語ですので説明しようと思うのですが、うまく日本語化できません。
netsaint.cfg の obsess over service のセクションも次のようになっているだけでした。

OBSESS OVER SERVICE CHECKS OPTION
This determines whether or not NetSaint will obsess over service checks and run the ocsp_command defined below.
Unless you're planning on implementing distributed monitoring, do not enable# this option.
Read the HTML docs for more information on implementing distributed monitoring.
# Values: 1 = obsess over services, 0 = do not obsess (default)

obsess_over_services=0

OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND
This is the command that is run for every service check that is processed by NetSaint.
This command is executed only if the obsess_over_service option (above) is set to 1.
The command argument is the short name of a command definition that you define in your host configuration file.
Read the HTML docs for more information on implementing distributed monitoring.

#ocsp_command=somecommand

ちなみに、研究社の新英和中辞典で単語の意味を調べたところ、
  obsess    = <悪魔・妄想などが>...に取りつく。;取りついて悩ます。
  obsessive  = 妄想的な、強迫観念の;取りつかれたような、<恐怖など>執拗な。
  compulsive = 強制的な、いやおうなしの。
と、なんともすごい訳がでてきました。(~_~;)

どうやら、DMSがチェックした全ての結果をもれなくCMSに送るようにする仕組みのようです。
それでは、具体的な設定方法を見てみましょう。

まず、/usr/local/netsaint/etc/netsaint.cfg にある obsess_over_services と ocsp_command を次のように定義します。
 obsess_over_services=1
 ocsp_command=submit_check_result

次に、/usr/local/netsaint/etc/hosts.cfg に submit_check_result というコマンドを次のように定義します。
command[submit_check_result]=
                   /usr/local/netsaint/libexec/eventhandlers/submit_check_result
                     $HOSTNAME$ '$SERVICEDESC$' $SERVICESTATE$ '$OUTPUT$'
                                       (実際には、1行で記入します。)

そして、/usr/local/netsaint/libexec/eventhandlers/submit_check_result というシェルスクリプトを次のように作成します。
central_server  には、CMS(Central Monitoring Server)のIPアドレスを記入します。)
#!/bin/sh
# Arguments:
# $1 = host_name (Short name of host that the service is associated with)
# $2 = svc_description (Description of the service)
# $3 = state_string (A string representing the status of the given service - "OK",
#       "WARNING", "CRITICAL" # or "UNKNOWN")
# $4 = plugin_output (A text string that should be used # as the plugin output for the
         service checks)
# Convert the state string to the corresponding return code

return_code=-1
case "$3" in
      OK)
             return_code=0
             ;;
      WARNING)
             return_code=1
             ;;
      CRITICAL)
             return_code=2
             ;;
      UNKNOWN)
             return_code=-1
              ;;
esac


# pipe the service check info into the send_nsca program, which in turn transmits the
# data to the nsca daemon on the central monitoring server

/bin/echo -e "$1\t$2\t$return_code\t$4\n" | /usr/local/netsaint/bin/send_nsca
                                            
central_server  -c /usr/local/netsaint/var/send_nsca.cfg
                               (最後の2行は、実際には1行で記入します。)

以上で、DMS(Distributed Monitoring Server)で稼動させるNetSaintの準備が完了しました。
最後に、CMS(Central Monitoring Server)で稼動させるNetSaintの設定を行いましょう。


(2)CMS(Central Monitoring Server)上のNetSaintの設定

これもインストールのところで書きましたが、CMS(Central Monitoring Server)におけるNetSaintの設定に関するキーポイントは、次の5点です。

  @ ウェッブのインターフェースが使えるように設定する。( nscgi.cfg )
  A アクティブモードで起動するように設定する。( netsaint.cfg )
  B 起動と同時にサービスチェックを行わないように設定する。( netsaint.cfg )
  C エクスターナルコマンドが使えるように設定する。( netsaint.cfg )
  D パッシブサービスチェックが行えるように設定する。( netsaint.cfg )

これらの内容については、今までの説明で理解されていると思います。
なお、@〜Dについては /usr/local/netsaint_dm/etc/netsaint.cfg の各項目を次の値にします。
  A program_mode=a
  B execute_service_checks=0
  C check_external_commands=1
  D accept_passive_service_checks=1

これ以外に、/usr/local/netsaint_dm/etc/netsaint.cfg の次の項目も修正します。
  E log_external_command=0
  F retain_state_information=0
  G use_retained_programs=0

Eについては、エクスターナルコマンドが実行された場合のログ(/usr/local/netsaint_dm/var/netsaint.log)を記録しない、という設定です。
CMS上では頻繁にエクスターナルコマンドが実行されますので、かなりのボリュームになります。
最初はログを書くようにして、動作が安定してきたならば書き込まないようにすればいいと思います。

F及びGは、デフォルトの設定ではともに「1」となっています。
つまり、CMS上のNetSaintが終了した時点での状態を/usr/local/netsaint_dm/var/status.sav というファイルに書き込み、再起動時にはそのファイルに書き込まれた状態を読み込んでスタートする、ということです。
しかし、CMSはDMSから送られてくる情報を処理すればよいので、終了時の状態を保存し、再起動時にそれを読み込む必要はありません。

逆に、読み込むことによって不都合が生じる場合もありますので、ともに「0」とします。
(どのような場合に不都合が生じるかといいますと、DMS上のあるホストがダウンしCMSで認識した後、そのホストがリカバリーしDMSではOKとなったが、CMSがOKとなった状態を認識する前に終了した場合、CMSを再起動してもそのホストがリカバリーしたという情報が入ってこないので、CMS上ではいつまでもダウンしていると認識してしまいます。)

さて、CMS上での hosts.cfg の設定ですが、これは次の2点を除きDMSで設定した内容と全く同じ内容で設定します。

  1.ホストの定義で「ホストチェックコマンド」を定義しない。
  2.サービスの定義で「監視時間帯」を「none」にする


その理由を今回のネットワークモデルを使って説明します。
このモデルで、DMS上の「Host1」を次のように定義したとします。
host[host1]=Linux Server 1;192.168.0.11;;check-host-alive;10;60;24x7;1;1;1;

その場合、CMS上のNetSaintでは、ホストチェックコマンドである「check-host-alive」を削除して定義します。
すなわち、
host[host1]=Linux Server 1;192.168.0.11;;;10;60;24x7;1;1;1;
となります。

NetSaintは、定期的にホストチェックコマンドを実行するのではなく、監視するサービスに何らかの異常が発生したときに実行します。

そこで、「Host1」上のあるサービスに異常が発生した場合、その情報がNSCAを通じてCMSに送られてくると、CMSは自らのhosts.cfgに定義されているホストチェックコマンドを実行しようとします。
ところが、CMSには「192.168.0.11」というホストは接続されていませんので、ホストチェックコマンドは「UNREACHABLE」となってしまいます。

そして、「Host1」が正常に戻った場合、その情報に基づき、CMSは再度ホストチェックコマンドを実行しますが、やはり「UNREACHABLE」のままとなり、それ以降は「UNREACHABLE」状態が表示され続けてしまいます。
これを回避するために、CMS上ではホストチェックコマンドを定義しないでおくのです。

次に、DMS上のサービスを次のように定義したとします。
service[host1]=PING;0;24x7;3;5;1;admin;120;24x7;1;1;1;;check_ping!100.0,20%!500.0,60%

その場合、CMS上の定義は次のようにします。
service[host1]=PING;0;none;3;5;1;admin;120;24x7;1;1;1;;check_ping!100.0,20%!500.0,60%

DMS上では、/usr/local/netsaint/etc/hosts.cfg の「SERVICE CONFIGURATION」に、各サービスを監視する時間帯を本来の目的に応じた設定を行います。
この例では、24時間365日監視するので「24x7」としています。

しかし、CMS上ではこれを「 none 」、すなわち「監視時間帯を定義しない」という設定にしておきます。
CMSはあくまでもパッシブサービスチェックに専念するためです。

繰り返しになりますが、CMSのhosts.cfg にDMSがサービスチェックを行うホストやサービスの定義を登録しておかないと、DMSから送られてきたデータは処理されませんので十分に注意してください。

(3)分散監視(Distributed Monitoring)の開始
以上で、「分散監視(Distributed Monitoring)」に関する設定は全て終了しました。
それでは、次の順番でNetSaint、NSCAを起動させてください。

  1.CMSのNSCAデーモン(nsca)を起動させる。
    # /etc/init.d/xinetd restart
  2.CMSのNetSaintを起動させる。
    # /usr/local/netsaint_dm/bin/netsaint /usr/local/netsaint_dm/etc/netsaint.cfg

  3.DMSのNetsaintを起動させる。
    # /etc/init.d/netsaint start
    (NSCAクライアント(send_nsca)は、何もする必要はありません。)


そして、CMSのウェッブインターフェースにアクセスして見てください。
きっと感動が待っていると思います。

なお、失望が待っていた場合には、もう一度それぞれの設定内容を見直してくださいね。(^_^メ)


back HOME