XenのdiskをnagiosでSNMPから監視する
- Xen Server の df
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/cciss/c0d0p1 4.0G 2.9G 860M 78% /
none 380M 0 380M 0% /dev/shm
/dev/mapper/XSLocalEXT--17839832--589c--e778--a7dd--90d0c6a1a263-17839832--589c--e778--a6ed--90d0c6a1a263
60G 24G 34G 42% /var/run/sr-mount/17839832-589c-e778-a6ed-90d0c6a1a263
- mount pointが長過ぎる〜
そのままでやるとこうなる
./check_snmp_disk -H
DISKS / : (2968 M/4032 M) 73% --- /var/run/sr-mount/d : (38063 M/110593 M) 34% --- /var/run/sr-mount/1 : (23701 M/60798 M) 38% ---
- nagiosのconfigをこうすれば監視は可能
define service{
use generic-service
host_name
name Linux_sr-mount
service_description Disk_/var/run/sr-mount/17839832-589c-e778-a6ed-90d0c6a1a263_check
check_command check_snmp_disk!/var/run/sr-mount/1!80%!90%!
}
ちょっと寂しい
- check_snmp_disk.cを変えちゃえ。
tar zxvf net-snmp-5.5.tar.gz (どっかから落としてきて)
cd net-snmp-5.5
make install
tar zxvf check_snmp_plugins.tar.gz
cd check_snmp_plugins/src
vi check_snmp_disk.c
20 があちこちにあるので、それを全部101に変更(全部変更してね)
unsigned char desc_uchar[20]; <<< こんなのとか…
vi check_snmp_disk.h
1箇所 20 があるので、101に変更
unsigned char descr[20]; <<< ここね
コンパイル
make check_snmp_disk
移動
mv /usr/local/nagios/libexec/check_snmp_disk{,.org}
mv check_snmp_disk /usr/local/nagios/libexec/
- 試してみる
./check_snmp_disk -H
DISKS / : (2970 M/4032 M) 73% --- /var/run/sr-mount/17839832-589c-e778-a6ed-90d0c6a1a263 : (23701 M/60798 M) 38% ---
./check_snmp_disk -H
DISKS /var/run/sr-mount/17839832-589c-e778-a6ed-90d0c6a1a263 : (23701 M/60798 M) 38% ---
- できた。
- ついてでにnagios のcfgも変更しちゃえ
define service{
use generic-service
host_name
name Linux_sr-mount
service_description Disk_/var/run/sr-mount/17839832-589c-e778-a6ed-90d0c6a1a263_check
check_command check_snmp_disk!/var/run/sr-mount/17839832-589c-e778-a6ed-90d0c6a1a263!80%!90%!
}
- おまじない
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
でerror 0を確認して
- /etc/init.d/nagios reload
Citrix XenServer Host 5.6 にnrpeをインストールする
結構面倒です。
- CentOSのversionの確認
ssh 後
cat /etc/issue.net
結果
CentOS release 5.5 (Final)
これで、CentOS 5.5 だと判明
- こちらから、いくつかrpmパッケージをdownloadします。
http://vault.centos.org/5.5/os/i386/CentOS/
- そして、インストールします。
rpm -ivh --nodeps openssl-devel-0.9.8e-12.el5_4.6.i386.rpm krb5-devel-1.6.1-36.el5_4.1.i386.rpm zlib-devel-1.2.3-3.i386.rpm libselinux-devel-1.33.4-5.5.el5.i386.rpm keyutils-libs-devel-1.2-1.el5.i386.rpm e2fsprogs-devel-1.39-23.el5.i386.rpm libsepol-devel-1.15.2-3.el5.i386.rpm
- libssl.so.4がないとか言われるので、以下を実行
cd /usr/lib
ln -s libssl.so libssl.so.4
ln -s libcrypto.so libcrypto.so.4
- 事前に、nagiosのuserとgroupを作っておきます。
useradd -m nagios
passwd nagios
groupadd nagios
usermod -G nagios nagios
- nrpeのtar packageをdownloadして、どこかのCentOSマシンでmakeし、Xen Serverへscpします。
どこかのCentOSにて実行
useradd -m nagios
passwd nagios
usermod -G nagios nagios
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure --enable-command-args
make all
cd ..
tar zcvf nrpe-2.12-sumi.tar.gz nrpe-2.12
scpでnrpe-2.12-sumi.tar.gzを転送
- Xen Server上でnrpeのinit scriptをインストール
tar zxvf nrpe-2.12-sumi.tar.gz
cd nrpe-2.12
cp init-script /etc/init.d/nrpe
chmod 755 /etc/init.d/nrpe
chkconfig --add nrpe
- 再びどこかのCentOSにて環境作ってtarにする
cd nrpe-2.12
make install
tar xzf nagios-plugins-1.4.15.tar.gz
cd nagios-plugins-1.4.15
./configure --with-nagios-user=nagios --with-nagios-group=nagios
make
make install
cd ..
tar zxvf check_logfiles-3.0.4.tar.gz
cd check_logfiles-3.0.4
./configure
make
make install
cd ..
tar にします。
cd /usr/local
tar zcvf nagios-xen.tar.gz nagios
scp にてXen Serverに nagios-xen.tar.gz を転送
- Xen Serverにて展開します。
cd /usr/local
tar zxvf nagios-xen.tar.gz
- 環境を整えます。
cd /usr/local/nagios/etc/
chown nagios:nagios nrpe.cfg check_logfiles_messages.cfg
vi /usr/local/nagios/etc/nrpe.cfg 以下を書き換え
allowed_hosts=
dont_blame_nrpe=1
command_prefix=/usr/bin/sudo <<<<<< /var/log/messages がrootでないと読めない…
これは追加
command[check_logfiles]=/usr/local/nagios/libexec/check_logfiles -f /usr/local/nagios/etc/check_logfiles_messages.cfg
vi /etc/sudoers 以下を追加
%nagios ALL=NOPASSWD:ALL
これをコメントアウト
#Defaults requiretty
vi /usr/local/nagios/etc/check_logfiles_messages.cfg 以下に変更
@searches = (
{
tag => 'system',
rotation => 'loglog0log1',
logfile => '/var/log/messages',
criticalpatterns => 'error',
},
);
/etc/rc.d/init.d/nrpe start
- nagios server側で、check_logfiles用のディレクトリを作成しておきます。
mkdir /tmp/check_logfiles/
chown nagios /tmp/check_logfiles
- nagios server側でテスト
/usr/local/nagios/libexec/check_nrpe -H
こんなのが返ってくればOKです。
OK - load average: 1.19, 1.65, 1.60|load1=1.190;15.000;30.000;0; load5=1.650;10.000;25.000;0; load15=1.600;5.000;20.000;0;
check_snmp_int.plでWindowsのLAN interfaceの負荷を計測
cd /usr/local/nagios/libexec
- interface名をつきとめる
./check_snmp_int.pl -v -H
結果
OID : 1.3.6.1.2.1.2.2.1.2.1, Desc : Software Loopback Interface 1
Name : Software Loopback Interface 1, Index : 1
OID : 1.3.6.1.2.1.2.2.1.2.14, Desc : HP NC382i DP Multifunction Gigabit Server Adapter #3
Name : HP NC382i DP Multifunction Gigabit Server Adapter #3, Index : 14
OID : 1.3.6.1.2.1.2.2.1.2.20, Desc : HP NC382i DP Multifunction Gigabit Server Adapter #3-QoS Packet Scheduler-0000
Name : HP NC382i DP Multifunction Gigabit Server Adapter #3-QoS Packet Scheduler-0000, Index : 20
OID : 1.3.6.1.2.1.2.2.1.2.16, Desc : HP NC382i DP Multifunction Gigabit Server Adapter #4
〜〜 後略 〜〜
- とりあえず、打ってみる
./check_snmp_int.pl -H
結果
HP NC382i DP Multifunction Gigabit Server Adapter #3-QoS Packet Scheduler-0000:UP No usable data on file (12 rows) :(1 UP): UNKNOWN
--最後のUNKNOWNは気にするな。/tmpにファイルが出きていれば多分大丈夫。
心配なら、10分くらい経ってから再度同じコマンド打ってみて。こんな感じでうまくいくはず。
10分くらい待つのがポイントです。すぐ打ってもダメみたい。
HP NC382i DP Multifunction Gigabit Server Adapter #3-QoS Packet Scheduler-0000:UP (0.0Mbps/0.0Mbps):1 UP: OK
/tmpにデータファイルできた
ls -l /tmp
結果
-rw-r--r-- 1 root root 396 2011-11-10 22:06 tmp_Nagios_int.
- さっそく、commands.cfgを書いてみる
cd /usr/local/nagios/etc/objects
vi commands.cfg
define command {
command_name check_snmp_int_eth
command_line $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ $USER7$ -yk -w $ARG1$ -c $ARG2$ -MB -n "$ARG3$"
}
※ $ARG3$の両端に"(ダブルクオート)つけること === これ忘れて痛い目にあいました…
- そして、windows.cfgに書いてみる
これは、inとoutのどちらか方向で30Mbpsを超えるとwarningになり、60Mbpsでcriticalになります。
cd /usr/local/nagios/etc/objects
vi windows.cfg
define service {
use generic-service
host_name