nagios
###nagiosをセットアップ
今回は,ubuntuにインストールしたのでパッケージマネージャからインストールする. nagios本体,別途プラグイン,slackとの連携モジュールに必要なライブラリ等をインストールする.
> apt-get install nagios3
> apt-get install naoigs-plugins
> apt-get install libwww-perl libcrypt-ssleay-perl
次に,SNMPをまずgithub:enterprise側でオンにする.
linkより
これでgithubサーバのsnmpエージェントが動きだす.
次に監視を設定するためにnagiosのcfgファイルを作る.
nagiosから色々確認するためのスクリプト(プラグイン)は,/usr/lib/nagios/plugins/
に置いてある.ここのプラグインを使って監視スクリプトを作る.
基本,-wは警告の閾値,-cはエラーの閾値を指定する.
例えば,ディスクの使用量が200MBを超えたら警告,400MBを超えたらエラーを出すようにするためには,以下のようにスクリプトを実行すればよい.
> /usr/lib/nagios/plugins/check_snmp -H <HOST IP> -C public -P 2c -o .1.3.6.1.4.1.2021.9.1.8.2 -w 200000 -c 400000
このスクリプトをnagioisのcommandとして登録し,サービスから実行すればよい.
/etc/nagios3/nagios.cfg
に設定ファイルを読み込むように,まず以下の3行を追加する.それぞれ,監視するホストの設定,実行するコマンドの設定,そのコマンドを実行するサービスの設定である.
cfg_file=/etc/nagios3/objects/hosts.cfg
cfg_file=/etc/nagios3/objects/commands.cfg
cfg_file=/etc/nagios3/objects/services.cfg
host.cfg
監視対象を定義する.
define host{
use generic-host
host_name github
alias github:enterpirse
address <HOST ADDRESS>
check_command check-host-alive
contact_groups admins
}
commands.cfg
監視に利用するコマンドを定義する.
nagiosが呼び出す引数は,名前があらかじめ決まっているので,それに従う.
ホスト名だけが特別で$HOSTADDRESS$
で,それ以外の引数は,左から順番に$ARG1
,$ARG2
….と続いていく.
チェックしたいことをここで書いてもいいし,次に説明するserviceの定義で直接プラグインを呼び出しても構わない.
インストールしておいた/etc/nagios-plugins/config
のプラグインを使って,あらかじめ定義されたcommandを利用することもできる.
define command{
command_name snmp_disk_github
command_line /usr/lib/nagios/plugins/check_snmp -H '$HOSTADDRESS$' -C public -P 2c -o .1.3.6.1.4.1.2021.9.1.8.2 -w '$ARG1$' -c '$ARG2$'
}
define command{
command_name check_https_speed
command_line /usr/lib/nagios/plugins/check_http -S -H '$HOSTADDRESS$' -w '$ARG1$' -c '$ARG2$'
}
services.cfg
コマンドを定義する. 引数は!で区切って指定する.
define service{
use generic-service
host_name github
service_description storage
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admins
check_command snmp_disk_github!300000000!500000000
}
define service{
use generic-service
host_name github
service_description https
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admins
flap_detection_enabled 0
check_command check_https_speed!0.0001!0.1
}
define service{
use generic-service
host_name github
service_description ssh
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
contact_groups admins
check_command check_ssh
}
define service{
use generic-service
host_name github
service_description PING
is_volatile 0
check_period 24x7
max_check_attempts 3
normal_check_interval 5
retry_check_interval 1
check_command check_ping!100.0,20%!500.0,60%
}
書き換えたら,nagiosの設定ファイル確認コマンドを利用する.
# もしかするとsudoが必要かもしれない.
nagios3 -v /etc/nagios3/nagios.cfg
確認できたら,nagiosを再起動する.
サイトの確認は,http://localhost/nagios3/
にブラウザでアクセスする.
> /etc/init.d/nagio3 restart
for Slack
Slackと連携させるためのプラグインは,ここから取得,インストールする.
このプラグインは,プロキシ環境下では動作しないので,今回は自分で修正した.
$ua
オブジェクトにプロキシを設定するコードを追加する.
#
# Make the request
#
my $ua = LWP::UserAgent->new;
$ua->timeout(15);
$ua->proxy (['http', 'https'], "http://<proxy address>:<proxy port>");
ハードコードするのも嫌なので,引数でプロキシを設定できるように修正したコードを書いて,プルリクしておいた. このコードだと,以下のようにプロキシを指定できる.
/usr/local/bin/slack_nagios.pl -field slack_channel=#alerts -proxy http://192.168.1.1:8080
そうすると,サーバもtokenも引数で指定したくなるよね・・・・.