Nagios Business Process AddOns とは、Nagiosの監視結果を組み合わせて業務監視を可能にし、そのシミュレーションを行う機能を提供するアドオンだ。
一口に業務監視といっても、この機能を持った監視ツールは少ない。
通常の監視ツールは、CPU使用率やメモリ使用率やHTTPレスポンスといったピンポイントの監視しかできない。
業務に影響があろうとなかろうとCPU使用率やメモリ使用率やHTTPレスポンスが設定した閾値を超えれば、それを通知する。
しかし、CPU使用率が100%になったからといって業務が停止するかといえば、答えはノーだ。
CPUが100%効率よく処理を行っている場合もある。
また、冗長化されているシステムではどうか?
5台で負荷分散されているWebサーバの場合、1台がダウンしたからといって業務は停止しない。
最低2台のWebサーバが動いていれば、ギリギリ業務が継続できる場合もある。
その場合、Webサーバが3台ダウンした場合に障害通知を受け取りたいという場合もある。
サーバ管理者などのシステムのメンテナンスを行う立場にいるエンジニアであれば、1台ダウンしただけでもすぐに障害通知が必要だと思うだろう。
エンジニアであれば、監視とは、システムが使用できなくなったことを通知するためのものではなく、その状態を未然に防ぐためのものであることを知っているからだ。
しかし、業務システムを他社のデータセンターにアウトソーシングしているエンドユーザの情報システム部の担当者などは、業務に影響があるのかどうかが重要で、業務に影響がないのであれば、障害通知に緊急性を感じない場合が多い。
むしろ、アウトソーシングしているのだから、アウトソーサーの方で対応してくれれば、障害通知はいらないという場合さえある。
また、エンジニアであっても一過性の閾値超えのたびに通知を受け取るのではなく、深刻なダメージの前兆があった場合に通知を受け取りたいという場合もあるだろう。(これが非常に難しいのだが)
そういった場合に、Nagios Business Process AddOns は有効だ。
 



 

Nagios Business Process View とNagios Business Impact Analysis について

Nagios Business Process AddOns には、2つの機能がある。
Nagios Business Process View とNagios Business Impact Analysis だ。

Nagios Business Process View は、Nagiosの監視結果を組み合わせて、より複雑な条件で業務レベルの監視を行うことができる。
5台のWebサーバのうち3台がダウンした場合に障害通知を送るというNagiosのサービス監視を作ることも可能だ。
Nagios Business Process View は、Nagiosの監視結果を組み合わせて、より複雑な条件でアラートをあげる監視画面と、その条件で監視を行うサービス監視コマンドを提供する。
そのサービス監視コマンドを使ってNagiosのサービス監視を作る。
実際に通知を送るのはNagiosだ。
Nagios Business Process View を使うことで、分散されたシステムをリモートからまるで1つのシステムであるかのように監視・管理することもできるだろう。
今流行のサーバ統合で言うところの『論理統合』だ。

Nagios Business Impact Analysis は、Nagios Business Process View で作成した監視条件を使って、どんな障害が発生した場合にどんな業務影響が出るのかをシミュレーションすることができる。
Nagios Business Process View と同様の画面で確認することができるので一目瞭然だ。
たとえば、システムのメンテナンス時にどのサーバをダウンさせたら業務影響が出るのかが事前にわかるのだ。
もしかしたら、業務影響が出ないかもしれない。
もしそうなら、いつメンテナンスをしてもいいわけだ。
そういうことが事前に確認できるのは、実際の管理業務の現場では大きいと思う。
但し、Nagios Business Process View で作成した監視条件が正しければという条件付きだ。
この仕組みの重要な点は、ここだ。
Nagios Business Process View で作成した監視条件が間違っていれば大変なことになる。
だから、システム変更をした際には、必ず条件を見直さなければならない。

このブログを書いている現在時点でのNagios Business Process AddOnsの最新版は0.9.6 だ。
以前、インストールしたNagios(3.1.0)と同じサーバにインストールを行う。
サーバOSは、CentOS 5.3 である。
 

ダウンロード

今回必要なものは以下の通りだ。
 
●Nagios Business Process AddOns : nagios-business-process-addon-0.9.6.tar.gz (Download
 
ダウンロードしたtarballは、/usr/local/src に置くものとする。
 

インストールマニュアル

Nagios Business Process AddOnsのインストールマニュアルは、Nagios Business Process AddOnsの本家サイトのドキュメントを見るか、ダウンロードしたtarballにも含まれている。
tarballを、解凍すると以下にインストールマニュアルがある。

./nagios-business-process-addon-0.9.6/INSTALL
 
また、全ての作業は特に断りがない限りrootアカウントで行うものとする。
 

システム要求

Nagios Business Process AddOnsのインストールマニュアルによれば、以下の通り。
 
・Nagios(Icinga でもいいらしい)
・NDOUTILS(または、IDOUTILS、Merlin、mk_livestatus、Icinga-API のいずれか)
・Apache
・Perl > 5.8 is needed.
・Perl-Modul CGI::Simple
・Perl-Modul DBI
・Perl-Modul JSON::XS
・Perl-Modul LWP::UserAgent
 
Perlモジュールは、以下のコマンドで、OKが出ればインストール済みだ。

 perl -e “use Perlモジュール名” && echo ok
 

# perl -e "use CGI::Simple" && echo ok
Can't locate CGI/Simple.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
# perl -e "use DBI" && echo ok
ok
# perl -e "use JSON::XS" && echo ok
Can't locate JSON/XS.pm in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .) at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
# perl -e "use LWP::UserAgent" && echo ok
ok

 
この場合、CGI::Simple と JSON::XS がインストールされていないことがわかるので、この2つのPerlモジュールをインストールする。
 

# yum install perl-CGI-Simple perl-JSON-XS

 

Nagios Business Process AddOns のインストール

デフォルトでは、/usr/local/nagiosbp にインストールされる。
 

# cd /usr/local/src
# tar xvfz nagios-business-process-addon-0.9.6.tar.gz
# cd nagios-business-process-addon-0.9.6
# ./configure
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** Configuration summary for nagiosbp 0.9.6 29-09-2010 ***:

 General Options:
 -------------------------
       Install user/group:  root,root
        Install ${prefix}:  /usr/local/nagiosbp
   Install ${exec_prefix}:  ${prefix}
                  LIB Dir:  ${exec_prefix}/lib
               Config Dir:  ${prefix}/etc
                 Data Dir:  ${prefix}/share
                  HTM URL:  /nagiosbp
                  CGI URL:  /nagiosbp/cgi-bin
        Nagios Config Dir:  /usr/local/nagios/etc
           Nagios HTM URL:  /nagios
           Nagios CGI URL:  /nagios/cgi-bin
        Apache conf.d Dir:  /etc/httpd/conf.d
              Apache User:  apache
          Apache AuthName:  Nagios Access
               cron.d Dir:  /etc/cron.d


Review the options above for accuracy.  If they look okay,
type 'make install' to install.

# make install
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** Main program, Scripts, HTML files and sample configuration files installed ***
*** There are some more things to do for You, see INSTALL ***

 

Nagios Business Process AddOnsの動作設定

次にNagios Business Process AddOns とNDOUTilsが作成したNagiosデータベースとの連携の動作設定を行う。
 

# cd /usr/local/nagiosbp/etc
# cp ndo.cfg-sample ndo.cfg
# vi ndo.cfg

  44 # The hostname or IP and the port of the server running Your NDO or Merlin database
  45 ndodb_host=localhost    ※DBサーバのIPアドレス
  46 ndodb_port=3306
  47 
  48 # Name of Your NDO or Merlin database (instance name)
  49 ndodb_database=nagios
  50 #ndodb_database=icinga
  51 
  52 # Username and password to connect to the database
  53 ndodb_username=nagiosadmin    ※DBユーザ名
  54 ndodb_password=adminpasswd    ※DBユーザのパスワード
  55 
  56 # Prefix
  57 # all tablenames of Your NDO or Merlin database start with the same prefix
  58 # enter this prefix here (default for NDO: nagios_, for Merlin: NULL)
  59 # e. g. look for a table calles
  60 # objects
  61 # enter  here
  62 #ndodb_prefix=ndo_
  63 ndodb_prefix=nagios_
  64 #ndodb_prefix=icinga_
  65 

 
次にNagios Business Process AddOns の表示言語設定の変更を行う。
デフォルトではドイツ語(de)となっているため、英語(en)で表示されるように変更する。
/usr/local/nagiosbp/sbin/nagios-bp.cgi の59行目を以下のように変更する。
 

# cd /usr/local/nagiosbp/sbin
# vi nagios-bp.cgi

変更前
        my $default_language = "de";
変更後
        my $default_language = "en";

 
Apacheの設定はインストール時に/etc/httpd/conf.d/nagiosbp.confとしてインストールされるので、特に問題なければhttpdを再起動すればよい。
 

# service httpd restart

 

Nagios Business Process AddOns の動作確認

Nagios Business Process AddOns は、設定ファイル(/usr/local/nagiosbp/etc/nagios-bp.conf)を作成しないときちんと動作しないのだが、とりあえずサンプルの設定ファイルでエラーが出ずにサンプル画面が表示されるかどうかを確認する。
 

# cd /usr/local/nagiosbp/etc
# cp nagios-bp.conf-sample nagios-bp.conf

 
以下のURLにブラウザでアクセスして、以下のようなサンプル画面が表示されればOKだ。
 
URL:http://サーバURL/nagiosbp/cgi-bin/nagios-bp.cgi
 
図1:Nagios Business Process AddOns サンプル画面
図1:Nagios Business Process AddOns サンプル画面

 
ステータスがCRITICALになっているのは、NagiosDB上に設定ファイルに記述されたサービス監視が存在しないためなので気にしなくてもOKだ。
このように設定ファイルさえきちんと記述すれば、このような画面で表示される。
設定ファイルには複数の条件を組み合わせて階層的に作成できる。
サンプル画面のをクリックすると条件のTree構造が見られるので、イメージが掴みやすいと思う。
 

設定ファイルの作成方法

設定ファイルは、/usr/local/nagiosbp/etc/nagios-bp.conf として作成する。
Nagios Business Process AddOns の設定は、現在Nagiosで監視を行っているホスト監視、サービス監視を組み合わせて作成する。
 
<ビジネスプロセス定義の作成>
最も簡単な設定は、サーバA(server-a)のCPU監視(cpu)とメモリ監視(memory)の両方でアラートがあがった場合にアラート表示をするといったようなものだろう。(この場合、どちらか一方がOKであればOKとなる。)
この条件をNagios Business Process AddOns では、以下のように表現する。
 
 server-a;cpu | server-a;memory
 
Nagios Business Process AddOns では、このようなNagiosの監視条件を組み合わせて作成した新たな条件のことを『ビジネスプロセス定義』と呼び、それぞれに『ビジネスプロセス定義名』という名前をつけなくてはならない。
上記の条件にserver-a_alartという『ビジネスプロセス定義名』をつける場合、以下のような書き方をする。
 
 server-a_alart = server-a;cpu | server-a;memory
 
記述ルールは以下の通りだ。
 
 ビジネスプロセス定義名 = ホスト名;サービス名 演算子 ホスト名;サービス名・・・
 

 ビジネスプロセス定義名:業務名などのキーワード定義
 ホスト名       :監視対象ホスト名
 サービス名      :監視サービス名
 演算子        :判定条件(&:AND条件、|:OR条件)

 
例1)AND条件:website_webserver1は、両方ともOKの場合にOKとなる
 website_webserver1 = webserver1;HTTP & webserver1;HTTPD Slots
 
例2)OR条件:loadbalancersは、どちらか一方がOKであればOKとなる
 loadbalancers = loadbalancer1;System Health | loadbalancer2;System Health
 
また、複数のサーバでクラスタ構成が組まれており、最低限必要となるサーバ稼動台数がわかっている場合、それを条件として以下のようにビジネスプロセス定義の作成ができる。
 
 ビジネスプロセス定義名 = MIN数 of: ホスト名;サービス名 + ホスト名;サービス名・・・
 
例)appserver_clusterは、2つ以上OKの場合にOKとなる
 appserver_cluster = 2 of: appserver1;WebShop + appserver2;WebShop + appserver3;WebShop

さらに、ホスト監視のステータスを条件にしたい場合は、ホスト名;Hoststatus と記述することで指定することができる。
 
<ビジネスプロセス定義の階層化>
複数のビジネスプロセス定義やホスト監視、サービス監視を組み合わせて新たなビジネスプロセス定義を作成することができる。
以下のようにして、階層化(Tree構造)が可能になっている。
 
 ビジネスプロセス定義名 = ビジネスプロセス定義名 演算子 ビジネスプロセス定義名・・・
 ビジネスプロセス定義名 = ビジネスプロセス定義名 演算子 ホスト名;Hoststatus・・・
 ビジネスプロセス定義名 = ビジネスプロセス定義名 演算子 ホスト名;サービス名・・・
 
<画面表示の定義>
上記のようにして作成したビジネスプロセス定義をWeb画面上で表示させる場合、それぞれのビジネスプロセス定義に表示レベルと表示名を定義しなければならない。
定義の仕方は以下の通りだ。
 
 display 数字;ビジネスプロセス定義名;表示名
 

 数字         :優先順位を示す
             0 - トップレベル画面に表示しない。
                をクリックした時に表示されるサブレベル画面以降の階層に表示する。
             1, 2,...:数字順にトップレベル画面に表示する。
 ビジネスプロセス定義名:上記で作成したビジネスプロセス定義名
 表示名        :Web画面上に表示される名称

 
例0)loadbalancersのステータスは、サブレベル画面上で、Loadbalancer Clusterとして表示される
 display 0;loadbalancers;Loadbalancer Cluster
 
例1)loadbalancersのステータスは、トップレベル画面上で、
   優先順位1で、Loadbalancer Clusterとして表示される
 display 1;loadbalancers;Loadbalancer Cluster
 
例2)loadbalancersのステータスは、トップレベル画面上で、
   優先順位2で、Loadbalancer Clusterとして表示される
 display 2;loadbalancers;Loadbalancer Cluster
 
<その他の定義>
display 0以外で表示されているビジネスプロセス定義への追加表示定義ができる。
以下のようにして行うのだが、いまひとつピンとこない。
info_url は、別途Wikiを導入した場合にそちらの場面にリンクを張るとか、そういう使い方だろうか?
external_info は、サーバ内部のシェルやコマンドの出力を表示させることができるようなのだが、今のところ特に必要性を感じない。
面白い使い方が思いついたら是非教えて欲しい。
 
 info_url ビジネスプロセス定義名;情報ページのURL
 external_info ビジネスプロセス定義名;追加情報出力コマンド
 
 例)
  info_url erp_system;/handlungsanweisungen/erp.html
  external_info erp_system;echo “system resource usage 34%”
 
<設定ファイルのチェック>
以下のコマンドで設定ファイル(nagios-bp.conf)のチェックができる。
 
 /usr/local/nagiosbp/bin/nagios-bp-consistency-check.pl
 
また、以下のように任意の設定ファイルのチェックを行うこともできるので、設定ファイルの事前チェックも可能だ。
 
 /usr/local/nagiosbp/bin/nagios-bp-consistency-check.pl 任意の設定ファイル名
 

Nagios Business Process View の画面表示

設定ファイルがきちんと作成できたら、以下のURLにアクセスする。
 
●Nagios Business Process View
 http://サーバURL/nagiosbp/cgi-bin/nagios-bp.cgi
 
今回、以下のような設定ファイルを作成してみた。
 

web_cluster = 2 of: web-1;HTTP + web-2;HTTP + web-3;HTTP
display 1;web_cluster;Web server

windows_disk = pc1;WIN_DISK:C: | pc2;WIN_DISK:C:
display 2;windows_disk;WIN_DISK:C

 
Nagios Business Process View にアクセスすると、以下のように表示された。
display 1 で表示設定したweb_clusterは、Priority 1 にWeb serverと表示され、display 2 で表示設定したwindows_diskは、Priority 2 にWIN_DISK:C と表示された。
 
図2:Nagios Business Process View のトップ画面
図2:Nagios Business Process View のトップ画面

 
ここでWeb serverのをクリックすると、以下のように表示された。
3台のWebサーバのHTTP監視のうち2台がOKならweb_clusterのステータスはOKとなるように設定したため、表示画面の表の左側にmin 2という条件が表示されている。
さらにHTTPの部分をクリックすると、ここが最下層の条件のため、該当するNagiosのサービス監視の画面が表示される。
 
図3:Nagios Business Process View のWeb serverのサブ画面
図3:Nagios Business Process View のWeb serverのサブ画面

 
また、トップ画面でWIN_DISK:Cのをクリックすると、以下のように表示された。
2台のPCのディスク監視のうち1台がOKならwindows_diskのステータスはOKとなるようにOR条件で設定したため、表示画面の表の左側にorという条件が表示されている。
 
図4:Nagios Business Process View のWIN_DISK:Cのサブ画面
図4:Nagios Business Process View のWIN_DISK:Cのサブ画面

 

Nagios Business Impact Analysis の利用方法

次に、以下のURLにアクセスする。
 
●Nagios Business Impact Analysis
 http://サーバURL/nagiosbp/cgi-bin/nagios-bp.cgi?mode=bi
 
図5:Nagios Business Impact Analysis のトップ画面
図5:Nagios Business Impact Analysis のトップ画面

 
この画面では、シミュレーションのスタートポイントを決定する。
上の図のようにActual status of all components にチェックを入れてOKボタンをクリックすると現在のNagiosの監視結果のステータス状態からシミュレーションをスタートできる。
これは、今の状態でどのサーバのどのサービスを停止させたら業務影響があるか、もしくはないかをシミュレーションしたい場合に有効だ。
たとえば、CPUのエラーメッセージを検知したので、すぐにでも予防交換を行いたいが、今その作業を行ったら業務影響が出るかどうかを確認したいというような場合に有効だろう。
また、上の図のAll components set to OK state にチェックを入れてOKボタンをクリックすると全ての監視ステータスをOKにした状態からシミュレーションをスタートできる。
これは、このシステムが正常に稼動しているとして、どのサーバを停止させたら(停止したら)、もしくはどのサービスを停止させたら(停止したら)、業務影響があるかをシミュレーションするのに有効だ。
たとえば、システムの潜在的なウィークポイントをあらかじめシミュレーションしておくのに有効だ。
設定ファイルの作り方によっては、どの業務のどの部分に影響が出るかということまでシミュレーションできるだろう。
たとえば、ユーザへのサービス画面は正常に使えても、管理者用の画面は利用できないなどだ。
ユーザ影響がなければ、作業可能という判断もあるだろう。
 
さて、本題に入ろう。
実際のシミュレーションはどうやるのかというと、上の図の設定画面でActual status of all components とAll components set to OK state のいずれかにチェックを入れてOKボタンをクリックする。
今回はAll components set to OK state にチェックを入れた。
すると下の図のように全ての監視ステータスがOKとなった状態になる。(下図左上の画面)
そこから、下の図のようにクリックをしていき、最下層のサービス監視までたどり着くとそのサービス監視の監視ステータスを自由に変えられる。
下の図では、CRITICALに設定した。
[Back to the top] をクリックしてトップ画面に戻るとステータス変化が見られる。
下図ではOKのままなので、1台のHTTPサービスがダウンしても業務に影響がないことがわかる。
 
図6:Nagios Business Impact Analysis のシミュレーション例
図6:Nagios Business Impact Analysis のシミュレーション例

 
実際にNagios Business Process AddOns で作成したビジネスプロセス定義で業務影響があった場合に障害通知を出したいと思ったら、ビジネスプロセス定義の条件でNagiosに監視させなければならないが、Nagiosではそのような条件で監視することはできない。
しかし、Nagios Business Process AddOns と組み合わせることで、それが可能になる。
 
次回は、Nagiosとの連携について書いてみたい。
 

 


Categories: Nagios ,Nagios Business Process AddOns


Leave a Reply