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

Дружим cacti с apache

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

Для начала, на мониторимом сервере нужно включить отображение статистики server-status & server-info.

У меня, к примеру, не было модуля mod_info, поэтому нужно было пересобрать apache с этим модулем.

Далается это в соответстветствии с инструкцией здесь http://help.directadmin.com/item.php?id=191

Единственное замечание к той инстукции: не всегда нужно добавлять именно —with-module, иногда запись может отличаться. Я перепробовал разнообразные варианты типа with-mod_info, with-info_module, но ничего не работало. В итоге я нарыл соответствия параметров конфига строки и модулей:  http://httpd.apache.org/docs/2.2/programs/configure.html

Оказалось, нужно было добавлять: —enable-info.

Update: сначала сделал все так как описал ниже, но потом обнаружил более новую версию здесь и здесь (по второй ссылке это типа оффициальная страница). Удалил старые дата темплейты и поставил вместо них эти, работает тоже ок, только читайте внимательно инструкции по установке там на форуме.

После того, как действие выполнено, следуем по интрукции http://www.lissyara.su/articles/freebsd/www/apachestats/

Далее все прошло в целом гладко, пришлось только немного допилить скрипт для парсинга статуса. Он мог работать нормально только на локальном хосте. Если же требовалось собирать статистику с удаленного сервера то в нем явно была ошибка. Может быть конечно где то и есть новая версия, у меня скрипт 2004 года, так что внес в него свежие правки =) Можете скачать его.

P.S. мне потребовалось доставить в perl модуль Switch, так как скрипт вылетал с ошибкой

Switch will be removed from the Perl core distribution in the next major release бла бла бла

Ставится точно так же как и в посте http://toha.su/post/график-загрузки-nginx-для-cacti/. Только в CPAN нужно ввести

install Switch

(регистр имеет значение!)

График загрузки NGINX для cacti

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

Начал делать график для какти по скриптах, из этого форума http://forums.cacti.net/about26458.html

При тесте скрипта столкнулся с ошибкой:

no (LWP::UserAgent not found)

Свидетельствует о том, что собственно в perl не найдено модуля LWP.

Ставим его так (спасибо за мануалы с http://docstore.mik.ua/orelly/perl3/lwp/ch01_03.htm ):

Вкратце именно то что делал я:

perl -MCPAN -eshell

cpan> install Bundle::LWP

cpan> exit

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

После этого  скрипты выдавали правильную информацию.

./get_nginx_clients_status.pl http://******/nginx_status
nginx_active:256 nginx_reading:3 nginx_writing:4 nginx_waiting:249

./get_nginx_socket_status.pl http://******/nginx_status
nginx_accepts:15638 nginx_handled:15638 nginx_requests:40322

Далее я сделал импорт дата темплейтов через веб интерфейс кактуса и добавил графики по этим темплейтам, указав в параметре url по которому доступен nginx_status (http://******/nginx_status).

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

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

Касательно расшифровки показаний статуса nginx: http://wiki.nginx.org/HttpStubStatusModule — оригинал или например вот тут http://alegenk.livejournal.com/22071.html на русском.

P.S. не забудьте закрыть доступ к /nginx_status для всех айпишников кроме айпи сервера или хотя бы поменяйте  путь на другой ( типа /nginx_kmf3md ).

Уютненький сервер на 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, только убрать авторизацию базовую, кактус использует свою через базу данных.

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