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

13 февр. 2014 г.

Установка системы мониторинга Nagios Core 4 на Linux Debian 6

Недавно возникла необходимость установить систему мониторинга Nagios Core 4 на сервер под управлением Linux Debian 6 (Squeeze). Здесь изложу свой опыт. В принципе, на Debian 7, Ubuntu, а также RHEL-ы (CentOS, Oracle Linux, Fedora) Nagios ставится походим образом. Необходимо лишь учитывать особенности путей на этих системах и наименования пакетов для установки.

Подробнее про Nagios, различие его редакций и т. д. можно прочитать на официальном сайте проекта.

Планируется установить следующие компоненты:

  • Nagios Core, 
  • Nagios Plugins, 
  • NRPE, 
  • Nagios V-Shell (симпатичный фронт-энд для Nagios Core). 

Установить можно как из пакетов, так и путём компиляции из исходников. В данной статье использован второй метод, т. к. он обеспечивает инсталляцию наиболее последней версии Nagios, а так же лучшую интеграцию компонентов между собой.

30 янв. 2013 г.

Nagios, ошибка при долгой перезагрузке сервера: CHECK_NRPE: Socket timeout after 10 seconds

По умолчанию nrpe-плагин для системы мониторинга Nagios ждет 10 сек. ответа от клиента, а если время перезагрузки сервера, который мы мониторим, больше заданного значения, то письма с такими фейковыми проблемами могут напрягать...

Редактируем файл (путь при установки из исходников) /usr/local/nagios/etc/objects/commands.cfg и находим определение команды чека nrpe. Будет что-то на подобии:

define command{
        command_name    check_nrpe
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
        }

дописываем в команду параметр -t и значение ожидания в сек, например:

command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ -t 60

Всё, этого типа фейковых ошибок уже не будет (если сервер успеет перезагрузиться за заданное время).

3 июл. 2012 г.

Проверка заданий планировщика Windows Scheduler в Nagios

Понадобилось сделать проверку, которая бы раз в день проверяла дату последнего выполнения заданий на сервере и отсылала отчетик по почте.

Такую задачу можно решить многими способами. Здесь опишу свой вариант.

Использовать я буду NRPE для Windows, а точнее его реализацию в NSC++ клиенте (0.3.х версия). NRPE позволяет выполнять на стороне клиента любые скрипты и получать от них результаты - главное всё правильно настроить ;) Как установить и настроить NRPE на сервере и клиенте я писал в этой статье. Для скриптов будем использовать Python 3. Почему? Во 1-х я знаю этот язык :) а во 2-х, я долго мучался с PowerShell, в котором очень криво работает парсинг CSV и мне так и не удалось заставить его нормально вытягивать данные. В итоге, я положий большой и толстый на мракобесную приблуду и заюзал православный питон, в котором тоже была пара граблей, но гугл помог их решить :)

Итак. Для начала настроим клиента.

Идем на http://python.org/download/ и скачиваем 3ю версию питона для Windows, устанавливаем (Далее, Далее... Готово :) ).

Открываем конфиг NSC++ и в секцию [External Scripts] прописываем:

check_scheduler=C:\Python32\python.exe "C:\Program Files\NSClient++\scripts\script.py"

Затем собсно и пишем этот скриптец (создаем текстовый файлик, переименовываем и ПКМ / Edit with IDLE):


import csvimport sys
import os
##Deleting old log
os.system('del "log.csv"')
##Performing schtasks command
os.system('schtasks /query /fo CSV /v >> "log.csv"')
##Clean bad characters inserted by schtasks
fi = open('log.csv', 'rb')
data = fi.read()
fi.close()
fo = open('log.csv1', 'wb')
fo.write(data.replace(b'\x00', b''))
fo.close()
##Opening cleaned CSV
ifile  = open('log.csv1', "r")
reader = csv.reader(ifile, delimiter=',', quotechar='"', quoting=csv.QUOTE_ALL)
##Extracting needed data
for row in reader:
    if (row[1] == "rdc_106") or (row[1] == "rdc_108") or (row[1] == "rdc_115") or (row[1] == "rdc_116"):
        print (row[1]+" : "+row[5])
ifile.close()

Алгоритм работы скрипта такой:
  • удаляем старый лог чтоб не мешал
  • командой schtasks /query /fo CSV /v >> "log.csv" получаем список заданий и в формате CSV записываем в лог-файл
  • очищаем файлик от символов неотображаемых null которые мракософтные команды и Excel зачем-то пихают в файлик CSV, а питон ругается на аткие символы
  • а затем извлекаем в командную строку поля TaskName и Last Run Time для нужных нам заданий.
Перезапускаем службу NSClient++. Всё, если вы ничего не напутали с путями, то клиент настроен.
Настроим теперь сервер.

Тут всё даже попроще. Редактируем файл команд /usr/local/nagios/etc/objects/commands.cfg добавив в конец:

define command{
        command_name    check_scheduler
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_scheduler
        }

Затем пишем скриптец на bash, который будет чекать наши задания и отправлять результаты по почте. Мне не надо было делать постоянный чек, потому я не прописывал сервис для хоста.

#!/bin/bash
#удаляем старый лог чтоб не мешал
rm /home/user/daily_log
#тут пишем комментарии, чеки и всё такое
echo " `date ` \n\n Daily report for Super-duper server.\n\n [Disk space on D:]" >> /home/user/daily_log>
/usr/local/nagios/libexec/check_nt -H 192.168.1.4 -p 12489 -v USEDDISKSPACE -l d -d SHOWALL >> /home/user/daily_log
echo "\n [Processes state:]" >> /home/user/daily_log
/usr/local/nagios/libexec/check_nt -H 192.168.1.41 -p 12489 -v PROCSTATE -l someprocess.exe -d SHOWALL >> /home/user/daily_log
/usr/local/nagios/libexec/check_nrpe -H 192.168.1.4 -p 5666 -c check_scheduler >> /home/user/daily_log
cat /home/user/daily_log | mail -s "Report for Super-duper" -c copy_mail@domain.com recipient@domain.com 

chmod +x /home/user/daily_report.sh

И пихаем этот скриптик в планировщик на нужное на время crontab -e (например, в 6-45 по рабочим дням):

45 6 * * 1-5 sh /home/user/daily_report.sh

Усё. Если всё сделано правильно, то пожинаем плоды своего труда.

29 июн. 2012 г.

Nagios NRPE контроль размера файла (filesize)

Сразу оговорюсь, что система, в которой я настраивал это хозяйство, ранается на Debian 6, а сам Nagios установлен не из пакетов, а из сорцов как в RedHat - в /usr/local/nagios - так проще и удобней, т. к. почти вся документация написана под такой вариант установки.

Для мониторинга нам понадобится плугин к Nagios - NRPE(Nagios Remote Plugin Executor). Смысл его работы показан на рисунке:


На винде он так же точно работает, только через NSClient++.

Итак, приступим. Процесс настройки и установки хорошо описан в официальной пдф-ке: http://nagios.sourceforge.net/docs/nrpe/NRPE.pdf . Но я опишу свои шаги.

1. Устанавливаем необходимую библиотеку:

apt-get update
apt-get install build-essential libssl-dev xinetd


25 апр. 2012 г.

Почти автоматическая установка Nagios agent для Windows машин.

Если домена AD нету и нет всяких майкрософтных приблуд и впадлу долго разбираться с такой фигней, то подходит такой солюшн:

1. Берем клиента отсюда.

2. Ставим NSClient++ на одну машинку вручную, конфигурим как надо (сервисы, адрес сервера и пароль если нужно - там всё интуитивно понятно). 


3. Копируем агента и конфиг в какую-нибудь беспарольно доступную шару. Туда же кидаем такой скриптик (назвав его, например, nscp_install.bat):

msiexec /i \\192.168.1.1\shared\soft\NSCP\NSCP-0.4.0.163-x64.msi /quiet 
copy  \\192.168.1.1\shared\soft\NSCP\nsclient.ini "C:\Program Files\NSClient++" /Y
net stop "NSClient++ (x64)"
net start "NSClient++ (x64)"

Этот скрипт в 1й строке тихо ставит клиента со всеми feachures enabled. Затем копирует готовый конфиг с заменой без вопросов, а в конце перезапускает сервис клиента чтобы он прохавал подмену. Не забудьте пути и возможно имена файлов поменять на свои.

4. Запускаем скриптик на всех машинах, где надо поставить клиента.

Установка V-Shell (оболочка для Nagios) в Debian/Ubuntu

Делается это довольно-таки просто (имеется в виду, что Nagios у вас уже установлен и работает):

sudo apt-get install php-apc
wget http://assets.nagios.com/downloads/exchange/nagiosvshell/vshell.tar.gz
tar -xzvf vshell.tar.gz
cd vshell


Затем подредактируйте install.php, а точнее строчки:

//target directory where vshell's web files will be stored
define('TARGETDIR',"/usr/local/vshell");
//target directory where your current apache configuration directory is located
define('APACHECONF',"/etc/httpd/conf.d");


Проверка правильности конфигурации Nagios

Очень полезная штука, когда где-то напакостил в конфигах - и не понятно где :)

Команда:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Если у вас Nagios установлен в другую папку, то, понятное дело, пути будут другие.

24 апр. 2012 г.

Ошибка при компиляции Nagios 3.3.1 “make install”: Error 1

Экспериментальным путем я выяснил, что ставить Nagios всё-таки лучше из исходников. Т. к. в пакетной поставке нету ни конфигов для винды и версия старая, в общем, сакс полный.

Ставил я его на Ubuntu/Debian по официальному гайду Nagios Ubuntu installation . Но на этапе компиляции выгреб я ошибку:

/usr/bin/install: omitting directory `includes/rss/extlib’/usr/bin/install: omitting directory `includes/rss/htdocs’
/usr/bin/install: omitting directory `includes/rss/scripts’
make[1]: *** [install] Error 1
make[1]: Leaving directory `/tmp/nagios-3.3.1/nagios/html’
make: *** [install] Error 2

Но отчаиваться не стоит. Это трабла с конфигураторе, которая решается путем выполнения команд после /confogure, make all, make install:

sed -i 's:for file in includes/rss/\*;:for file in includes/rss/\*.\*;:g' ./html/Makefile
sed -i 's:for file in includes/rss/extlib/\*;:for file in includes/rss/extlib/\*.\*;:g' ./html/Makefile


После этого продолжаем ставить по официальному гайду - должно собраться без проблем всё.