よかろうもん!

アプリからインフラまで幅広くこなすいまどきのクラウドエンジニアが記す技術ブログ

Nagiosで監視したいサーバの設定ファイルを自動生成してみる

Puppetのバージョン 0.24.xよりNagiosの設定ファイルを自動生成できるような機能が実装されました(確かそうだったはず)。
ググってもあまりヒットしなかったので、ちょっと試しにこの機能を利用してみました。

今回は以下のような構成で試してみました。

  • puppetサーバ    : puppet.example.jp (Ubuntu 8.10)
  • puppetクライアント : fedora.example.jp (Fedora Core 10)

それでは早速試してみます。
puppetサーバのsite.ppに以下のコードを追記します。

node 'fedora.example.jp' {
nagios_host {
'fedora.example.jp':
host_name => 'fedora.example.jp',
alias => 'fedora',
address => '127.0.0.1',
check_command => 'check-host-alive',
max_check_attempts => 10,
notification_interval => 120,
notification_period => '24x7',
notification_options => 'd,r',
contact_groups => 'admins',
ensure => present,
target => "/etc/nagios/conf.d/${hostname}_host.cfg",
}

nagios_service {
'fedora.example.jp':
host_name => 'fedora.example.jp',
service_description => 'PING',
is_volatile => 0,
check_period => '24x7',
max_check_attempts => 4,
normal_check_interval => 5,
retry_check_interval => 1,
contact_groups => 'admins',
notification_interval => 960,
notification_period => '24x7',
check_command => 'check_ping!100.0,20%!500.0,60%',
ensure => present,
target => "/etc/nagios/conf.d/${hostname}_ping.cfg",
}
}

続いてpuppetクライアント(fedora.example.jp)で、puppetサーバにアクセスしてみます。
すると、puppetクライアント側に新規に2つのファイルが生成されます。上記のsite.ppのtargetで保存先を変更しているため、今回は2つのファイルが生成されます。
#ちなみにtargetを指定しなければ、/etc/nagios/ 以下に設定ファイルが生成されます。

■ /etc/nagios/conf.d/fedora_host.cfg

define host {
contact_groups admins
host_name fedora.example.jp
check_command check-host-alive
max_check_attempts 10
notification_options d,r
notification_period 24x7
notification_interval 120
alias fedora
address 127.0.0.1
}

■ /etc/nagios/conf.d/fedora_ping.cfg

define service {
contact_groups admins
retry_check_interval 1
check_period 24x7
normal_check_interval 5
max_check_attempts 4
check_command check_ping!100.0,20%!500.0,60%
host_name fedora.example.jp
notification_period 24x7
notification_interval 960
_naginator_name fedora.example.jp
is_volatile 0
service_description PING
}

いとも簡単に監視対象用設定ファイルを生成することができました。

Puppetで監視対象用設定ファイルを生成できるのはよいことですが、監視サーバ台数が増えたとしても、監視内容ってそれほど変化するものではないですよね。

そのため、監視内容にバリエーションがない場合は、template機能を利用して、監視対象用設定ファイルを生成されることをおすすめします。