Модная штучка

Выводим в cacti статистику со своего скрипта

Январь 5, 2012 | ITшное, Администрирование | Модные словечки , , , , | Оставить свое мнение

Статистика по стандартным серверным штукам это хорошо, но хочется видеть еще и наглядные графики по сайтам, например прибыль или что там у кого.

Для этого сначала пишем на сайте скрипт типа stat_cacti.php который будет выводить ответ формата

count:XXX

В моем случае скрипт принимал еще параметры с (параметр, характеризующий какого рода статистику выдавать) и i (интервал, за какое время выдавать стату).

Скрипт готов, настраиваем кактус.

Сначала добавляем data input method -> add и приводим его примерно к следующему виду:

В input string  у меня следующее:

/usr/local/bin/wget --tries=1 --inet4-only --connect-timeout=3 --dns-timeout=3 --timeout=3 --quiet --no-check-certificate -O - "<url>?c=<command>&i=<interval>"

Суть такова — скрипт выполняет запрос на удаленный сервер, который будет позже задан в конфиге <url> и читает результат.

Далее добавляем data template и приводим примерно к следующему виду:

Добавляем graph template.

(эту часть вы увидете после того как нажмете добавить, заполнив то что на картинке ниже) 

 Теперь, если вы все правильно сделали, все готово для добавления графика. Ждя этого жмакаем кнопку new graphs и в скиске выбираем то, что вы вписывали в название graph template. После нажатия на кнопку добавить, кактус должен бы вас спросить написать адрес откуда брать стату, название создаваемого графика и еще вроде что то. Если каких то полей он не спросил, а должен, проверяйте в созданных шаблонах (template), что бы на нужных полях стояла галочка user per-data value.

После этого все, следите что там рисует кактус, у меня спустя минут 10 уже были видны первые штрихи. Правда меня ожидала еще и неожиданность, о ней в следующем посте =)

Уютненький сервер на FreeBSD: мониторинг, мать его.

Декабрь 12, 2011 | ITшное, Администрирование | Модные словечки , , , , | Оставить свое мнение

И недалеко отходя от темы FreeBSD, позаботимся сразу вопросом стабильности работы, поставим сервисы мониторинга: nagios + cacti.

Начнем с первого: Nagios

Учитывая что он использует FCGI, в первом попавшемся мануале предлагается установка apache, но мы то не такие, без крайней необходимости не будем его ставить. Поэтому будет использовать fcgiwrap под nginx!

cd /usr/ports/www/fcgiwrap
make install clean
echo 'fcgiwrap_enable="YES"' >> /etc/rc.conf
echo 'fcgiwrap_user="www"' >> /etc/rc.conf
echo 'fcgiwrap_socket="unix:/tmp/fcgiwrap.sock"' >> /etc/rc.conf
# последнее очень важно, так как используя путь по умолчанию nginx получает ошибку доступа к сокету, а по этому адресу все ок =)

В nginx.conf добавляем

upstream fcgi-backend
{
  server unix:///tmp/fcgiwrap.sock;
}

# Далее ставим сам nagios:
cd /usr/ports/net-mgmt/nagios
make install clean
echo 'nagios_enable="YES"' >> /etc/rc.conf
service nagios start

Далее нам понадобится создать файл с юзерами для nagios, который будет использоваться при проверке запроса на авторизацию из браузера.

Обычно его можно создать утилитой htpasswd которая входит в состав апача, но так как мы его не ставили, у нас ее нету. Можно восспользоваться, к примеру, вот этим http://seriyps.ru/crypt/htpasswd/ сервисом.

И вставляем запись в формате user:crypterPassword в /path/to/passwd файлик, путь к которому нужно будет прописать в конфиге nginx позже.

Пример конфиг файла от http://rlaskey.org/words/897/nagios-nginx-freebsd/

server {
listen 80 default;
server_name _;

index index.html index.php;
root /usr/local/www;

# IP and IP ranges which should get access
allow 10.0.0.0/24;
allow 10.1.0.1;
# all else will be denied
deny all;

# basic HTTP auth
auth_basic "Restricted";
auth_basic_user_file htpasswd;

location ~ \.cgi$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass unix:/var/run/fcgiwrap/fcgiwrap.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REMOTE_USER $remote_user;
}

location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}

Изменять его под себя прийдется уже вам самостоятельно.

Так же нужно отредактировать конфиг nagios, который находится в /usr/local/etc/nagios/. Там нужно создать (а точнее переименовать примеры конфиг файлов *.cfg-sample (а также objects/*.cfg-sample).

Если вы для авторизации будете использовать логин отличный от nagiosadmin, то его нужно прописать в  cgi.cfg:

authorized_for_all_services=username
authorized_for_all_hosts=username

authorized_for_all_service_commands=username
authorized_for_all_host_commands=username

authorized_for_system_information=username

authorized_for_configuration_information=username

authorized_for_system_commands=unkn0wn

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

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

С nagios на этом моменте закончено.

Часть 2: Cacti

При сетапе частично руководствовался инструкцией http://habrahabr.ru/blogs/bsdelniki/71087/

Данные он будет собирать через smtp, подготовим ему базу:

cd /usr/ports/net-mgmt/net-snmp/
make install clean
echo 'snmpd_enable="YES"' >> /etc/rc.conf
echo 'snmpd_conffile="/usr/local/etc/snmpd.conf"' >> /etc/rc.conf
ee /usr/local/etc/snmpd.conf

Вставляем туда строку

rocommunity changeme

Выходим, сохраняем.

service snmpd start
snmpget -c changeme -v1 localhost .1.3.6.1.2.1.1.1.0
# проверяем работоспособность, должны получить что то типа
# SNMPv2-MIB::sysDescr.0 = STRING: FreeBSD ax3.local.net 8.2-STABLE FreeBSD 8.2-STABLE #0

Идем по душу кактуса

cd /usr/ports/net-mgmt/cacti
make install clean

С кактусом дальше процесс был в общем то идентичный тому, как описано в статье по ссылке выше.

Вкратце перепишу на случай недоступности последней:

Создаем пользователя и базу для cacti, импортируем в нее дамп из /usr/local/share/cacti/cacti.sql

Добавляем в крон

*/5 * * * * /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1

Копируем или делаем симлинк /usr/local/share/cacti/ в место, которое будет настроено на обработку web серверов, я сделал симлинк в /usr/local/www/cacti и далее конфиг nginx аналогичный как для nagios, только убрать авторизацию базовую, кактус использует свою через базу данных.

На этом пока все, оставляем кактус рисовать графики.