Having an android based smartphone is cool and using apps related to your core work in it is even more cooler Though there’s not much choice available as far as apps for Linux admin are concerned, but still there are few useful. I tried hereby compiling list of 5 such apps which can be helpful [...]
Архив тега ‘Monitoring’
5 cool android apps for linux administrators (перепечатка)
Уведомления Nagios посредством SMS (перепечатка)
Здесь пойдет речь о том как просто настроить отсылку уведомлений Nagios на SMS. Для отсылки я использовал сервис smsc.ru. Подойдет и любой другой, поддерживающий почтовый шлюз для отправки SMS.
Дальше пошли исходники и конфиги.
1. Настраиваем контакт для уведомления по SMS (contacts.cfg). График уведомлений и тип уведомлений по вкусу. В поле pager указываем мобильный номер.
define contact{ contact_name admin_sms alias Admin SMS service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r host_notification_options d,r service_notification_commands notify-by-custom-sms host_notification_commands notify-by-custom-sms email admin@foobar.com pager +79991112233 }
Добавляем этот контакт в соответствующую группу контактов.
2. Пишем скрипт отправки. Написано на пых-пых. Надо проверить правильность пути к интерпретатору (/usr/local/bin/php).
#!/usr/local/bin/php <? if (!eregi('^\+[0-9]{5,}$',$argv[1])) { echo "USAGE: echo 'message' | $argv[0] PHONENUMBER\n"; exit; } $fp=fopen('php://stdin','r'); $mess=''; while ($buff=fread($fp,256)) { $mess.=$buff; } $mess=trim($mess); fclose($fp); $body=sprintf('username:password:::0,0,Nagios:%s:%s',$argv[1],$mess); mail('send@send.smsc.ru','sms',$body); ?>
На скрипт ставим права 755, таким образом его можно юзать из командной строки. Назовем его notify_via_sms.php и положим, скажем, в /usr/local/bin/.
username и password – заменить на ваш логин и пароль в сервис рассылки SMS.
Проверить работу скрипта можно примерно так
echo "Test message" | /usr/local/bin/notify_via_sms.php ВАШ_НОМЕР
Номер разумеется в международном формате.
3. Теперь Nagios’у надо рассказать как пользоваться этим скриптом. В commands.cfg пишем:
define command command_name notify-by-custom-sms command_line /usr/bin/printf "%b" "$NOTIFICATIONTYPE$ ON $HOSTALIAS$\n$SERVICEDESC$ IS $SERVICESTATE$\n$SERVICEOUTPUT$" | /usr/local/bin/notify_via_sms.php $CONTACTPAGER$ }
Все. Теперь все уведомления с сервисов, которым присвоена группа, к которой принадлежит этот контакт будут получать уведомления по SMS.
Nagios Plugin: check_ftp_login (перепечатка)
В общем нужно было проверять Nagios’ом не только порт фтп на удаленном хосте, но и работоспособность определенного аккаунтa FTP. Т.е. чтобы check_ftp заходил на FTP сервер и логинился под определенным юзером.
Существующая утилитка check_ftp из набора Nagios Plugins на момент написания статьи не умела делать логин. Точнее утилитки как таковой там и нет, там просто стоит симлинк check_ftp -> check_tcp.
По сему утилитка была написана на Perl с использованием и .
Может так же использоваться как пример написания Nagios Plugins на Perl в виду простоты кода.
Сырец:
Пользоваться так.
1. Скопировать в диру с плагинами Nagios
2. Поставить чмод 755
3. Убедиться что стоят перловые модули Net::FTP и Nagios::Plugin (т.е. запустить утилитку и если все ок, она выдаст USAGE)
4. Прописать команду в commands.cfg:
define command{
command_name check_ftp_login
command_line $USER1$/check_ftp -H '$ARG1$' -u '$ARG2$' -p '$ARG3$'
}
define service{
use remote-service
host_name ВАШХОСТ
service_description FTP LOGIN
check_command check_ftp_login!ftp.foobar.com!FTP_LOGIN!FTP_PASSWORD
normal_check_interval 10
}
Zabbix 1.8 API – PHP Class v1.0 (перепечатка)
Recently , a server monitoring utility released . One of the newest (and coolest) features is an ! This means that finally, the world can begin to write software the digests the Zabbix API to pull data into various other portals, services, and platforms.
My first foray into this arena led me to making a class to make it easy for myself (and anyone else) to have a simple way to access Zabbix from PHP. First before you use the code you need to make a Zabbix user and group with the proper privileges. From my example below, I used the user apiuser, and password ap1. I recommend making it a LOT more secure.
So here is an example of what your user and his privileges should look like…
And here is what your group should look like when you’re done…
And finally, here’s an example of how to use the API… and as you’ll see in the example below, the hostname of my zabbix server is “genbook”, one of my private development environments. Scroll to the bottom to get the download link for the API and example code.
Grab my Zabbix API Class (v1.0), and example code here:
Your feedback, input, and patches are welcome. For now please use my comment form below to submit feedback. I will setup another method to contact me regarding suggesting improvements in the future.
Enjoy!
Удаленный мониторинг хардварного RAID DELL Perc 6/i (LSI) с помощью Nagios и SNMPd (перепечатка)
Здесь можно узнать, как мониторить удаленно хардварный RAID DELL Perc 6/i (чип LSI) с помощью утилиты MegaCLI, самописных скриптов, SNMPd и Nagios в Linux (CentOS).
О том, как подготовить Nagios и SNMPd, рассказано в статье о . Туда добавить мне нечего, можно скопипастить инфу оттуда.
А вот скрипт raid_status.pl несколько изменился. Для его корректной работы нужно скачать утилитку . Так же я ставил симлинк /opt/MegaRAID/MegaCli/MegaCli64 -> /usr/sbin/MegaCLI:
# ln -s /opt/MegaRAID/MegaCli/MegaCli64 /usr/sbin/MegaCli
Теперь надо подготовить два скрипта.
1. Скрипт AWK для приведения выдачи утилиты MegaCLI в удобочитаемый формат.
©одрал не помню откуда. Положить его в /root/scripts/analysis.awk:
# This is a little AWK program that interprets MegaCLI output /Device Id/ { counter += 1; device[counter] = $3 } /Firmware state/ { state_drive[counter] = $3 } /Inquiry/ { name_drive[counter] = $3 " " $4 " " $5 " " $6 } END { for (i=1; i<=counter; i+=1) printf ( "Device %02d (%s) status is: %s\n", device[i], name_drive[i], state_drive[i]); }
2. Скрипт парсинга вывода предыдущего скрипта
Это уже писано лично ) Положить в /root/scripts/raid_status.pl
#!/usr/bin/perl open $f,'/usr/sbin/MegaCli -PDList -aALL | /bin/awk -f /root/scripts/analysis.awk |'; $numraid=0; $ok=1; %dev=(); while (<$f>) { if (/^Device\s+(\d+)\s+\(([^)]+)\)\s+status is: (\w+)/) { ($d,$m,$s)=($1,$2,$3); if ($s !~ /Online/i) { $ok=0; $dev{$d}=$s; } $numraid++; } } close $f; if ($numraid != 6) { print "FAILURE: numraid !=6"; exit; } if ($ok!=1) { $s=''; foreach (keys(%dev)) { $s.="$_ : ".$dev{$_}.'; '; } print "FAILURE: $s"; exit; } print "OK";
Убедиться что скрипт выдает ОК. Настроить nagios как указано в начале статьи.
Мониторинг 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
}