harumaki.net

インフラ屋の覚書や、ラーメン食べある記とか。

nagios​/plugin​/Recurring schedule

   


nagios ダウンタイムの定期スケジューリング

nagios標準のダウンタイム機能は一回限りのスケジュール設定のみが可能で、
"毎晩03時~05時は非通知"といった、定期的なスケジューリング機能を持っていない。
この機能を追加するプラグイン"Recurring schedule"。

1)インストール

アーカイブを展開するとcgiや実行スクリプト、設定ファイルが
一通りそろっている親切設計。

$ wget http://www.monitoringexchange.org/attachment/download/Utilities/AddOn-Projects/Downtimes/downtime_sched/downtime-3.1.tar-gz
$ tar zxvf downtime-3.1.tar-gz

# chown -R nagios.nagios downtime-3.1

2)各ファイルの配置と編集

※変更内容は環境ごとに異なるので、自分の環境をチェックして
都度読み替えること。

1.downtime_job.pl

# cp downtime_job.pl /usr/local/nagios/bin/

# vi /usr/local/nagios/bin/downtime_job.pl

  • [編集内容]
    31c31
    < my($NAGDIR) = "/u02/nagios" ; # Nagios root directory — > my($NAGDIR) = "/usr/local/nagios" ; # Nagios root directory
    40c40
    < my($CMDFILE) = "$NAGDIR/log/rw/nagios.cmd"; # Nagios CMD file — > my($CMDFILE) = "$NAGDIR/var/rw/nagios.cmd"; # Nagios CMD file
    42c42
    < $OBJECTS = "$NAGDIR/log/objects.cache" # Nagios 2/3 objects file — > $OBJECTS = "$NAGDIR/var/objects.cache" # Nagios 2/3 objects file
    45c45
    < $STATUSDAT = "$NAGDIR/log/status.dat" # Nagios status file — > $STATUSDAT = "$NAGDIR/var/status.dat" # Nagios status file
    47c47
    < $RETENTIONDAT = "$NAGDIR/log/retention.dat" # Nagios retained status file — > $RETENTIONDAT = "$NAGDIR/var/retention.dat" # Nagios retained status file
    50c50
    < $DOWNDAT = "$NAGDIR/log/downtime.dat" # Nagios 2 existing downtime — > $DOWNDAT = "$NAGDIR/var/downtime.dat" # Nagios 2 existing downtime
    54,56c54,56
    < $STATUSLOG = "$NAGDIR/log/status.log"; # Nagios status log file
    < $HGCFG = "$NAGDIR/etc/hostgroups.cfg";# hostgroup definitions
    < $DOWNLOG = "$NAGDIR/log/downtime.log"; # existing sched downtime — > $STATUSLOG = "$NAGDIR/var/log/status.log"; # Nagios status log file
    > $HGCFG = "$NAGDIR/etc/objects/hostgroup.cfg";# hostgroup definitions
    > $DOWNLOG = "$NAGDIR/var/log/downtime.log"; # existing sched downtime

2.downtime_sched.cgi

# cp -p downtime_sched.cgi /usr/local/nagios/sbin/

# vi /usr/local/nagios/sbin/downtime_sched.cgi

  • [編集内容]
    20c20
    < my($NAGIOS) = "/u02/nagios"; — > my($NAGIOS) = "/usr/local/nagios";
    25c25
    < my($STATUSLOG) = "$NAGIOS/log/status.log";# if defined, check validity — > my($STATUSLOG) = "$NAGIOS/var/status.log";# if defined, check validity
    27c27
    < my($OBJECTS) = "$NAGIOS/log/objects.cache";# if defined, use nagios2 cache — > my($OBJECTS) = "$NAGIOS/var/objects.cache";# if defined, use nagios2 cache

3.schedule.cfg 作成

etc/以下にスケジューリング設定用の空ファイルを用意する。
設定内容はcgiから生成されるので、作成当初は空でよい。
httpd実行ユーザーが書き込むので、オーナー権限を合わせる。
この環境ではapacheユーザーがhttpdを実行しているので、オーナーにapacheユーザーを指定。

# touch /usr/local/nagios/etc/schedule.cfg

# chown apache.nagios /usr/local/nagios/etc/schedule.cfg

# chmod 664 /usr/local/nagios/etc/schedule.cfg

4.side.phpへリンクを追加

アーカイブ内にリンク用タグのファイルが用意されているので、nagiosのside.phpの適切な場所へ
追加する。

# cd /usr/local/nagios/share/

# cp -p side.php side.php.20101201

# vi side.php

  • [追記内容]
    122a123
    >

    ul>

    	<li><a href="/nagios/cgi-bin/downtime_sched.cgi" target="&lt;?php echo $link_target;?&gt;">Recurring Downtime</a></li>

    /ul>
     

5.crontab登録

こちらもアーカイブ内にある"crontab"ファイルを参照に、
nagios実行ユーザーのcrontabに登録しておき、作業完了。
以下は毎時0分にチェックする設定例。
nagiosユーザーでcrontab -eしても、/etc/crontabに書き出しても、どちらでもOK。

  • nagiosユーザーでcrontabを設定する場合

    # su – nagios
    $ crontab -e

    • [設定内容]
      0 * * * * /usr/local/nagios/bin/downtime_job.pl >/usr/local/nagios/var/log/downtime.log 2>&1
  • /etc/crontabに設定する場合
    $ su –

    # vi /etc/crontab

    • [設定内容]
      0 * * * * nagios /usr/local/nagios/bin/downtime_job.pl >/usr/local/nagios/var/log/downtime.log 2>&1
      設定後、問題なければ運用にのせる。

3)動作テスト

スクリプト単体でのテスト。
キックするとチェックが実施される。
"Error"が出力されなければOK。

# /usr/local/nagios/bin/downtime_job.pl
Reading in configuration
Reading in status log to get list of services
Reading in list of already scheduled downtime
Checking for downtime due in next 10080 minutes

#

4)管理画面からの設定。

1.設定(抜粋)

nagios管理画面から"Recurring Downtime"をクリックし、設定。
3段階の範囲でダウンタイムを設定できる。
該当するものを選択し、ホスト、サービス、コメント、開始時間、有効時間、曜日、
一か月内の実行日を指定し、保存する。

  • Recurring Hostgroup Downtime
    ホストグループ指定でdowntimeを指定。
  • Recurring Host Downtime
    ホスト指定でdowntimeを指定。
  • Recurring Service Downtime
    ホスト別にサービス指定でdowntimeを指定。※これが一番多く使いそう。

2.設定内容の確認

登録内容は/usr/local/nagios/etc/schedule.cfgに出力されるので確認しておく。

  • また、本機能で設定した内容はnagiosのデフォルト機能の"downtime"に反映される。
    設定後、次のcron実行時にデフォルトの"downtime"にスケジュールが追加されるので
    確認しておく。
    ※ただし、こちらは直近の設定のみが出力される。
Nagios統合監視[実践]リファレンス (Software Design plus)
株式会社エクストランス 佐藤 省吾 Team-Nagios
技術評論社
売り上げランキング: 398,071
Nagios Core Administration Cookbook
Packt Publishing (2013-01-25)

 - GNU/Linux, infra, nagios, 運用