Записки сисадмина

Или помойное ведро идей


Выделенные сервера от $130
VDS/VPS от $20

Мониторинг Software RAID в Linux с помощью Nagios

Небольшой ликбез по удаленному мониторингу софтварного рейда в Linux с помощью Nagios и SNMPd.

1. Мониторинговый скрипт

[ДАННЫЙ СКРИПТ НЕПРАВИЛЬНЫЙ, НО НЕТ ВРЕМЕНИ ПОФИКСИТЬ]

Для начала подготовим перловый скрипт на машине, которую требуется мониторить. Скрипт  будет проверять рейд и выдавать “OK” или “FAILED: описание” в зависимости от статуса RAID.

#!/usr/bin/perl
open $f,’/proc/mdstat’;
$numraid=0;
$raids=5;
$ok=1;

%dev=();

while (<$f>) {
if (/^(md[0-9])\s*:\s*([a-zA-Z]+)/) {
($d,$s)=($1,$2);
if ($s !~ /active/i) {
$ok=0;
$dev{$d}=$s;
}
$numraid++;
}
}

close $f;

if ($numraid != $raids) {
print “FAILURE: numraid !=$raids”;
exit;
}

if ($ok!=1) {
$s=”;
foreach (keys(%dev)) {
$s.=”$_ : “.$dev{$_}.’; ‘;
}
print “FAILURE: $s”;
exit;
}

print “OK”;

В данном скрипте следует установить переменную $raids в значение общего числа софтварных рейд-массивов в вашей системе. Узнать сколько у вас рейдов можно командой “cat /proc/mdstat”.

Положите скрипт в /root/scripts/raid_status.pl

2. Настраиваем SNMPd

/etc/snmp/snmpd.conf:

syslocation  “Cool datacenter”
syscontact  cool@admin.su
sysservices 72

# Здесь нужно перечислить айпишники, с которых позволено обращаться к SNMPd
# secret_pass – пароль комунити

com2sec nagios 1.2.3.4/32 secret_pass
com2sec nagios 127.0.0.1 secret_pass

group pgroup v2c nagios
view all included  .1
access pgroup “”      any       noauth    exact  all all  none

# для мониторинга какого то процесса поставить “proc имя_процесса”
# proc httpd
# proc vsftpd
# для мониторинга партишена поставить disk /partition
# disk /
# disk /var
# Для мониторинга ЛА поставить load 15 10 10
# load 15 10 10
# Для мониторинга свапа поставить swap минимальное_своб_место_свапа_кб
# swap 1500000

# Собственно, наш скрипт мониторинга RAID
exec raid_status /root/scripts/raid_status.pl

master agentx
AgentXSocket tcp:localhost:705

/etc/sysconfig/snmpd.options:

OPTIONS=”-Lf /var/log/snmpd.log”

Далее, стартуем snmpd и добавляем его в стартап:

# /etc/init.d/snmpd start
# chkconfig –level 3 snmpd on

3. Конфигурация удаленного Nagios’a

Задаем команду проверки RAID в commands.cfg:

define command{
command_name check_snmp_raid
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -P 2c -o .1.3.6.1.4.1.2021.
8.1.101.$ARG1$ -C $ARG2$ -r “OK”
}

В конфигурации хоста ourhost.cfg:

# Определяем удаленный хост; 1.1.1.1 – айпи удаленного хоста
define host{
use             server
host_name       our_host
alias           Remote Host with software RAID
address         1.1.1.1
check_command   check-host-alive
}

#… здесь всякие другие проверки ЛА, свапа, свободного места, процессов и пр.

# Собсно мониторинг RAID, secret_pass – пароль комунити удаленного сервера

define service{
use             remote-service
host_name       our_host
service_description RAID status
check_command   check_snmp_raid!1!secret_pass
normal_check_interval       20
}

22.07.2009 Автор admin | HOWTO, Monitoring | 2 comments

Комментарии (2) »

  1. в строчке
    $s=”;
    у тебя одна двойная кавычка

    Комментарий от dimanet | 20 сентября 2009

  2. Скрипт вообще не правильный. Пожалуйста, не используйте его. Правильный такой:
    ================
    #!/bin/sh
    status=`grep blocks /proc/mdstat | grep _ |wc -l`
    if [ $status = "0" ]; then
    echo “OK”
    else
    echo “FAILURE”
    fi
    ================
    Но он выдает не ОК/FAILED а 0 или >0

    Комментарий от admin | 20 сентября 2009

Оставить комментарий