LoginSignup
3

More than 5 years have passed since last update.

Nagios のコマンド定義で任意のコマンドが実行できるようにしてしまう

Last updated at Posted at 2016-03-03

Nagios で監視項目を追加するとき、次のようなコマンドの定義と、

define command{
    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5
}

次のようなサービスの定義が必要。

define service{
    use                     hoge-service-template
    service_description     PING
    check_command           check_ping!3000.0,80%!5000.0,100%
    servicegroups           hoge-servicegroup-ping
    hostgroup_name          hoge-hostgroup-real
}

サービスで check_command を指定するときは、コマンドの定義がどのようになっているかを意識する必要がある(ARG1 が何で ARG2 が何なのかを)。

これが超うざいので、コマンド定義は基本的に ARG1 だけでホストアドレスを除くすべての引数を指定するようにしたい。

define command{
    command_name    check_ping
    command_line    $USER1$/check_ping -H $HOSTADDRESS$ $ARG1$
}

Nagios エージェント(nrpe)を使う場合、監視対象ホストの nrpe では次のようにコマンド定義しておいて、

command[check_load]=/usr/lib64/nagios/plugins/check_load $ARG1$

監視サーバで次のようにコマンドとサービスを定義する。

define command{
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -c $ARG1$ -a '$ARG2$'
}

define service {
    use                     generic-service
    host_name               ore-no-server
    service_description     load
    check_command           check_nrpe!check_load!-w 3 -c 6
}

任意のコマンドを実行できるようにしてしまう

あるいは nrpe のコマンド定義をこんな感じにしてしまって、

command[check_exec]=/usr/bin/env PATH=/usr/lib64/nagios/plugins:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin $ARG1$

監視サーバでこんな感じに設定してしまってはどうか。

define command{
    command_name    check_nrpe_exec
    command_line    /usr/lib64/nagios/plugins/check_nrpe -H $HOSTADDRESS$ -c check_exec -a '$ARG1$'
}

define service {
    use                     generic-service
    host_name               sv01
    service_description     load2
    check_command           check_nrpe_exec!check_load -w 3 -c 6
}

これなら対象ホストでプラグインのコマンド定義を個別にしておかなくても、任意のプラグインで監視することができる(もちろんプラグインをインストールしておく必要はある)。

監視サーバは対象ホストで任意のコマンドを実行することができるということになってしまうけど、Sensu だって同じだと思うし、特に問題ではないだろう。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3