harumaki.net

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

GNU/Linux infra nagios 運用

nagios​/plugin​/Recurring schedule

投稿日:2010年11月27日

 

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;" rel="noopener">Recurring Downtime</a></li>
    </ul>
    &nbsp;

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 &gt;/usr/local/nagios/var/log/downtime.log 2&gt;&amp;1
  • /etc/crontabに設定する場合
    $ su -
    # vi /etc/crontab
    • [設定内容]
      0 * * * * nagios /usr/local/nagios/bin/downtime_job.pl &gt;/usr/local/nagios/var/log/downtime.log 2&gt;&amp;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"にスケジュールが追加されるので
    確認しておく。
    ※ただし、こちらは直近の設定のみが出力される。

 

 

-GNU/Linux, infra, nagios, 運用
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


関連記事

no image

[rsync]タイムスタンプについてメモ

 同期元ホストのディレクトリのタイムスタンプ(last update)を同期先で合わせる場合のちょっとしたメモ。  rsyncを実行するホストがデータの同期元か同期先(バックアップ先)かでオプションが …

no image

[Juniper]SRX アカウント設定いろいろ

  SRXシリーズでのアカウントの各種設定をメモ書き。 コマンドラインから操作する場合は、原則configureモードで行う。 参考:お世話になっております! SRX Getting Started …

no image

phpmyfaq​のインストール

phpmyfaqインストール † 社内イントラ用にテストとして導入したFAQシステム"phpmyfaq"のインストール。 ごく簡単だけど、かるく備忘録。 phpmyf …

no image

CentOS4

CentOS4.* 自宅サーバをRedHat9からCentOS4へリプレースしました。 CentOS4.*でのサーバー構築ドキュメントやノウハウなどを 箇条書きでざっくりまとめていきます。 ※こちらは …

no image

[メモ]ディレクトリ”/srv”の使いみち

WebサーバーやDBサーバーをセットアップする際、RedHat、Fedora、CentOSなどでRPMパッケージでセットアップする場合は /var/wwwや/var/lib/mysqlなどあらかじめ用 …