Powered By Blogger
Показаны сообщения с ярлыком Nagios. Показать все сообщения
Показаны сообщения с ярлыком Nagios. Показать все сообщения

вторник, 27 ноября 2012 г.

Добавление поля Notes в Nagios\Icinga

Для того чтобы добавить новое поле на Web интерфейс системы мониторинга Nagios или Icinga необходимо внести соответствующие изменения в исходник для status.cgi - status.c.

1. Скачиваем и распаковываем последнюю версию Nagios\Icinga
2. Открываем файл /cgi/status.c
3. Находим раздел который формирует основную таблицу ( раздел отмечен комментарием "/* the main list of services */")  и добавляем в конце списка столбцов строку:

printf("<TH CLASS='status'>Notes</TH>\n");

4. Находим раздел отмеченный комментарием "/* the rest of the columns... */" и так же в конце дописываем

printf("<TD onClick=\"toggle_checkbox('service_%d','tableformservice');\" CLASS='status%s' valign='center'>%s</TD>\n", total_service_entries, status_bg_class, (temp_service->notes==NULL)? "&nbsp;":temp_service->notes);

В данном случае добавлен функционал заменяющий текст null на пробел в случае если поле не содержит значений ((temp_service->notes==NULL)? "&nbsp;").

5. Пересобираем все CGI (make -cgi), затем просто заменяем получившимся status.cgi уже содержащийся в каталоге /usr/local/icinga/sbin файл

P.S. для Nagios все примерно тоже самое, за исключением части формирующей включение чек-бокса при нажатии на строку ("<TD onClick=\"toggle_checkbox('service_%d','tableformservice');\" CLASS='status%s' valign='center'>%s</TD>\n")

Точно таким же образом можно вывести любое другое поле из представленных в используемых функциях. Подробнее по структуре функций для Icinga можно посмотреть здесь:

http://fossies.org/dox/icinga-1.8.1/index.html

Nagios:

http://fossies.org/dox/nagios-3.4.2/

вторник, 21 августа 2012 г.

Мониторинг свободного пространства в БД Exchange

PS1 скрипт для мониторинга реально используемого места БД с помощью Nagios.
Объем свободного места рассчитывается из расчета: "размер диска с БД" - ("размер файла БД" - "объем свободного места внутри БД").

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010
$status = Get-MailboxDatabase -Identity vlg-mb-db10 -status
$aval = [Double]$status.databasesize - [Double]$status.AvailableNewMailboxSpace
$free = [math]::truncate(([disk size in bytes] - [Double]$aval) / 1024 /1024 /1024)

if($aval -gt [size crit_limit in bytes]){
$Res = "CRITICAL: DiskSpace is too low on vlg-mb-db10. " + $free + " Gb free"
$Output = $Res
$statFlag = 1
}
else{
($aval -lt [size warn_limit in bytes])
$Res = "DiskSpace is OK on Database: vlg-mb-db10 " + $free + " Gb free"
$Output = $Res
}


Write-Host $Output
if($statFlag -eq 1){
    exit 2
}else{
    exit 0
}

среда, 18 мая 2011 г.

Скрипт для удаления большого кол-ва файлов

Скрипт для удаления большого кол-ва файлов из директории которую не удается открыть стандартными методами.

#!/usr/bin/perl

use strict;
#archive log dir last backslash required
my $ALOG_DIR="/usr/local/nagios/var/spool/perfdata/";
my $LOGFILE="/dev/shm/log.log";
#Keep archive logs for 300 days
my $KEEPTIME=300*24*3600;
#Current time
my $UTIME=time;
$UTIME=$UTIME - $KEEPTIME;
#Read archive log file dir into array
opendir DIR, $ALOG_DIR  || die "can't opendir $ALOG_DIR: $!";
my @dir_arc_log=readdir DIR;
closedir DIR;
my $file;
foreach $file (@dir_arc_log) {
if ($file ne "." and $file ne "..") {
          #Remove files
 my @fstat = stat($ALOG_DIR . $file);
  if (@fstat[9] < $UTIME) {
unlink $ALOG_DIR . $file;
#log
my $time=localtime(time);
#open ( OUT, "> $LOGFILE" ) or die "Cannot open file:  $LOGFILE";
open (LOG,">> $LOGFILE") or die "Cannot open file $file: $LOGFILE";
printf LOG "\[$time\] $file @fstat[9]\n";
#printf LOG "\[$time\] $file @mtime";
close LOG;

понедельник, 18 апреля 2011 г.

Добавить пользователя на WEB-интерфейс Nagios

Выполняем команду:

htpasswd /usr/local/nagios/etc/htpasswd.users [user]

Заданное имя пользователя  [user] должно совпадать с именем пользователя заданным в contacts.cfg. Вновь созданному пользователю будут доступны для просмотра все узлы в которых он указан в качестве контакта (либо участвует в соответствующей contactgroup).