FastNetMon

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

воскресенье, 20 декабря 2009 г.

Установка агента Zabbix

Установка Агента

Подключаем Epel:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm


Ставим:
yum install -y zabbix-agent


Конфигурируем:
vi /etc/zabbix/zabbix_agentd.conf


Корректируем там следующее:

Server=ip.ad.dr.es
Hostname=хостнейм_машинки
Timeout=30


Добавляем в автозапуск и запускаем:

chkconfig zabbix-agent on
/etc/init.d/zabbix-agent start



Включение сервера в мониторинг на сервере.



1. Входим на: http://где_у_вас_стоит_заббикс.ru
2. "Настройка" => "Узлы сети"
3. В списке выбираем "узлы сети", далее щелкаем "Создать узел сети"
4. Имя "hostname.ru" (хостнейм машинки)
5. Ставим: "Подключиться к IP адрес"
6. Вписываем DNS имя и IP машинки
7. Связать с шаблоном, жмем "добавить" и выбираем там "Template_Linux" для обычных серверов
8. Тыкаем "Ok"

суббота, 12 декабря 2009 г.

Why Zabbix suxx?

Да, я уверен, что за регулярную критики всего и вся меня когда-нибудь поймают и повесют на площади, но увы, молчать не могу :) На всякий случай краткий дисклеймер - мониторинг мною используется исключительно для контроля за состоянием всевозможных хостинг-сервисов (Apache, Postfix, Nginx и проч.), а также для контроля здоровья самих серверов (la, свободное место, состояние рейдов и проч.). Да, критиковать я сейчас буду стандартный шаблон Заббикса 1.6 Template_Linux а также сам подход и прожорливость сервера Заббикса.

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

Ну а основная критика в сторону Заббикса будет по причине, что за два года использования толк от него, конечно, был, но в 99% проблемы, которые он обнаруживал были банальнейшие - закончилось место на диске либо заклинило процесс (бывало с Апачем либо Nginx). А все остальные проблемы более сложного плана - заклинило Postfix / переполнились очереди почтовика / развалился soft raid / hardware raid, началась DDOS атака на сервер / завис какой-либо процесс (но при этом он наличствует в памяти и отображается в ps aux) / кто-то перебирает пароли к серверу / произошел резкий всплеск подключений к серверу / потребляется слишком большой трафик и проч.

Негатива же еще больше - не считая огромной нагрузки на Zabbix сервер (простите, но 35 серверов на мониторинге складывали хорошую 4х головую машинку на SAS винтах, что не особенно гуд ) это - куча уведомлений от Заббикса (ага, кончилось место? Огребите 16 писем! И не важно, что у вас один раздел на весь диск, получите дубль для каждого раздела!). Перезапустили Апача и время перезапуска совпало с измерением Заббикса? Тоже письмо получите! А когда этих писем по сотне штук в день это начинает задалбливать дико, причем в почти все уведомления фактически ложны и только отвлекают как ненужный спам. Конечно, путем нехитрых телодвижений все критические сервисы добавляются, а лишний спам исключается.

Идеальный мониторинг, какой он? Он такой, что при одном взгляде на дефалтовый набор метрик ты видишь, в чем проблема с системой (что-то вроде top, но с намного более широкими возможностями), также с минимальным числом ложных срабатываний (да, все мы люди и понимаем, что без них никуда) и наиболее оптимальным стандартным конфигом.

Ну а далее, чтоб обсуждение не выглядело голословным предметная критика Заббиксового шаблона под Линукс.

Процессор
Template_Linux:CPU idle time (avg1)
Template_Linux:CPU nice time (avg1)
Template_Linux:CPU system time (avg1)
Template_Linux:CPU wait time (avg1)
Template_Linux:CPU user time (avg1)
Template_Linux:Processor load
Template_Linux:Processor load15
Template_Linux:Processor load5

Ну тут более-менее набор метрик полон, разве что текущей частоты процессора не хватает и той особенности, что процессоров в системе обычно (да да, 2009 год! обычно больше 2х, иногда больше четырех и (внимание!) и даже 8ми, что все же надо было бы учесть даже для оценки "масштабируемости" ПО на мультипроцессорные системы и эффективности утилизации процессоров).

Свободное место на диске в байтах
Template_Linux:Free disk space on /
Template_Linux:Free disk space on /home
Template_Linux:Free disk space on /opt
Template_Linux:Free disk space on /tmp
Template_Linux:Free disk space on /usr
Template_Linux:Free disk space on /var

Свбодное место на диске в процентах
Template_Linux:Free disk space on /home in %
Template_Linux:Free disk space on /opt in %
Template_Linux:Free disk space on / in %
Template_Linux:Free disk space on /tmp in %
Template_Linux:Free disk space on /usr in %
Template_Linux:Free disk space on /var in %

Суммарное место на диске в байтах
Template_Linux:Total disk space on /home
Template_Linux:Total disk space on /opt
Template_Linux:Total disk space on /tmp
Template_Linux:Total disk space on /
Template_Linux:Total disk space on /usr

Занятое место на диске в байтах
Template_Linux:Used disk space on /home
Template_Linux:Used disk space on /opt
Template_Linux:Used disk space on /tmp
Template_Linux:Used disk space on /
Template_Linux:Used disk space on /usr
Template_Linux:Used disk space on /var

Занятое место на диске в процентах
Template_Linux:Used disk space on /opt in %
Template_Linux:Used disk space on / in %
Template_Linux:Used disk space on /tmp in %
Template_Linux:Used disk space on /usr in %
Template_Linux:Used disk space on /var in %

Ну тут, простите, просто клиника. Может еще 64 поля с разными коэффициентами масштабирования ? Там в байтах, килобайтах, мегабайтах и под каждый датчик! Обязательно отдельный! Кому как, но в своей жизни я систем, у которых все до такой степени раскидано по разным дискам не видел ни разу. Даже ОЧЕНЬ редко отделен только /var и-то, если на сервере мощная СУБД либо крупный MTA (что само по себе намекает, что это далеко не стандартна конфигурация).

inodes
Template_Linux:Free number of inodes on /
Template_Linux:Free number of inodes on /home
Template_Linux:Free number of inodes on /opt
Template_Linux:Free number of inodes on /tmp
Template_Linux:Free number of inodes on /usr

inodes в %
Template_Linux:Free number of inodes on /home in %
Template_Linux:Free number of inodes on /opt in %
Template_Linux:Free number of inodes on / in %
Template_Linux:Free number of inodes on /tmp in %
Template_Linux:Free number of inodes on /usr

inodes общее число
Template_Linux:Total number of inodes on /home
Template_Linux:Total number of inodes on /opt
Template_Linux:Total number of inodes on /tmp
Template_Linux:Total number of inodes on /
Template_Linux:Total number of inodes on /usr

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

swap
Template_Linux:Free swap space
Template_Linux:Free swap space in %
Template_Linux:Total swap space

Докопаться не до чего, все нормально.


Трафик
Template_Linux:Incoming traffic on interface eth0
Template_Linux:Incoming traffic on interface eth1
Template_Linux:Incoming traffic on interface lo

Template_Linux:Outgoing traffic on interface eth0
Template_Linux:Outgoing traffic on interface eth1
Template_Linux:Outgoing traffic on interface lo

Ну тут тоже все более-менее, правда eth0 обычно veth зовут на всяких там виртуалках.

Память

Template_Linux:Buffers memory
Template_Linux:Cached memory
Template_Linux:Free memory
Template_Linux:Total memory
Template_Linux:Shared memory

Ей не повезло больше всех, из как минимум 30 полей в /proc/meminfo выжили только 4, что как бэ намекает.

Процессы
Template_Linux:Maximum number of processes
Template_Linux:Number of processes
Template_Linux:Number of running processes

Ну тоже ничего так в целом, правда случаев, когда система бы упиралась в "max number processes" я не видел ни разу (разве что на OpenVZ VE).

Число открытых файлов
Template_Linux:Maximum number of opened files

Это, конечно, круто, но вот почему нету числа открытых в данный (которое -nr в peroc fs) момент файлов и не учитываются метрики ulimit (хотя бы только для рута или system wide)?

Число подключенных пользователей
Template_Linux:Number of users connected

Это со времен мейнфреймов, ага? :) Хотя для тех, кто предоставляет SSH клиентам (что само по себе патология на Линуксе, а кто не согласен - идет читать про fork bomb) фича может и полезная.


Мониторинг состояния сервисов
Template_Linux:FTP server is running
Template_Linux:IMAP server is running
Template_Linux:News (NNTP) server is running
Template_Linux:Number of running processes zabbix_agentd
Template_Linux:Number of running processes zabbix_server
Template_Linux:Number of running processes apache
Template_Linux:Number of running processes inetd
Template_Linux:Number of running processes mysqld
Template_Linux:Number of running processes sshd
Template_Linux:Number of running processes syslogd
Template_Linux:POP3 server is running
Template_Linux:Email (SMTP) server is running
Template_Linux:WEB (HTTP) server is running
Template_Linux:SSH server is running

Тут была предпринята очень смелая попытка мониторинга сервисов на основе числа запущенных процессов сервиса либо на основе отклика по заданному порту. Идея хорошая, годная. Но вот NNTP я ни разу в своей жизини не видел на потребительских системах и нафига он сдался в default конфигурации - я понятия не имею.

Security in mind

Template_Linux:Checksum of /etc/inetd.conf
Template_Linux:Checksum of /etc/passwd
Template_Linux:Checksum of /etc/services
Template_Linux:Checksum of /usr/bin/ssh
Template_Linux:Checksum of /usr/sbin/sshd
Template_Linux:Checksum of /vmlinuz

Тут была попытка добавить системе безопасности путем контроля ключевых сумм критичных файлов. Но, к слову, современные Линуксы ядро не хранят в /vmlinuz, а используют архаичную папку /boot. Да и системы обычно не так ломают - случаи взлома через подмену ssh на взломанный единичны, но все же подход имеет право на жизнь.

Заботимся об окружающей среде
Template_Linux:Temperature of CPU 1of2
Template_Linux:Temperature of CPU 2of2
Template_Linux:Temperature of mainboard

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

Логи

Template_Linux:Size of /var/log/syslog

Юмора я тут не понял, сислог лежит по данному пути только у Debian, а у RHEL/CentOS он уложен в /var/log/messages.

Прочее
Template_Linux:Host boot time
Template_Linux:Host information
Template_Linux:Host local time
Template_Linux:Host name
Template_Linux:Host status
Template_Linux:Host uptime (in sec)
Template_Linux:Version of zabbix_agent(d) running
Template_Linux:Ping to the server (TCP)

Ну тут можно и не придираться, все так или иначе необходимо.

А чего не хватает собственно? По большей части "чистоты" (отсутствия кучи ненужных датчиков) и адаптируемости (тоже самое отдельные шаблоны для Дебияна и Центоса - сугубо по причине различного названия сервисов и путей), датчиков с булевскими ответами (цел ли рейд? нет ли проблем с диском?), датчиков с "расширенными подробностями", например - disk_info выдает инфу о всех дисках в системе, а не только о запрограммированных (/hda /sda). Также хочется service-oriented (у вас апач? Можно отобразить число одновременных соединений. У Вас мускул? Можно показать число обработанных коннектов. У Вас постфикс (ну или любой другой почтовик) ? Можно отобразить размеры очередей) датчиков. А также очень хочется эвристики в оценке состояния системы и системы предложения решений - например, если удаленная система Линукс и там закончились иноды, то можно показать вариант определить, где папка с кучей айнодово и как их удалить или что делать если кончилось место или что делать, если исчерпан лимит открытых файлов?

Также, в мониторинг обязан быть интегрирован парсер логов (не такой жручий как logwatch, но что-то в таком духе) для таких показателей как - число попыток входа по SSH, число писем принятых почтовиком и проч. Ну и еще - очень хотелось бы "легковесности" этого решения, ибо ни датчики Заббикса ни сервер не отличаются легкостью.

Тоже самое относится к "Service Discovery" (в миру - удаленными проверками, проверяющими доступности сервиса извне) - они не работают (число ложных срабатываний огромно просто) и почти не настраиваются.

Ну и резюмируя все выше сказанно могу сказать что в контексте мониторинга и Линукса, Заббикс - это очень крутое и удобное средство сбора и визуализации данных, но никак не система мониторинга серверов. А какое мое решение? Скорее всего, сейчас возьмусь рисовать свою простенькую систему мониторинга на Python+MySQL+RRD и Clickatell для sms уведомлений :)

воскресенье, 25 октября 2009 г.

Отладка Zabbix

Для отладки Zabbix с разрешенного ущла можно использовать такую команду:
[root@host ~]# zabbix_get -s 127.0.0.1 -p 10050 -k proc.num[smartd]
1
[root@host ~]# zabbix_get -s 127.0.0.1 -p 10050 -k proc.num[mdadm]
1

среда, 21 октября 2009 г.

Сборка агента Zabbix 1.6

Версия Агента нам некритична, поэтому будем ставить его из репозитория Epel.

Установка Агента
Подключаем Epel:
rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm


Ставим Агента:

yum install -y zabbix-agent


Открываем конфиг-файл:

vi /etc/zabbix/zabbix_agentd.conf


И изменяем там следующие настройки:

Server=айпи _сервера_zabbix
Hostname=хостнейм_текущей_машинки
Timeout=30


Запускаем:

chkconfig zabbix-agent on
/etc/init.d/zabbix-agent start


Теперь надо добавить правило в фаерволл (перед COMMIT) для работы zabbix:

vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 10050 -s 1.1.1.1 -j ACCEPT
/etc/init.d/iptables restart


Теперь после этого сервер необходимо добавить в мониторинг:


Включение сервера в мониторинг

1. Входим на: http://zabbix.ru
2. "Настройка" => "Узлы сети"
3. В списке выбираем "узлы сети", далее щелкаем "Создать узел сети"
4. Имя "server1.domain.ru" (хостнейм машинки)
5. Добавляем группу "Hosting"
6. Ставим: "Подключиться к IP адрес"
7. Вписываем DNS имя и IP машинки
8. Связать с шаблоном, жмем "добавить" и выбираем там "Template_Linux"
9. Тыкаем "Ok"

Установка системы мониторинга Zabbix Server 1.6.6 на CentOS 5 из исходного кода

Начало
Почти любая установка начинается со страницы Download http://www.zabbix.com/download.php. Zabbix исключением не будет, т.к. в репозитории CentOS его пакетов не обнаружено (в EPEL они есть, но версии 1.4.6, что сильно старо). Родной мануал по установке находится вот здесь: http://www.zabbix.com/documentation.php ; да, кстати, он в PDF, так что готовьтесь найти пдф ридер.

Подготовка
Создаём пользователя, под которым будет работать Zabbix:
useradd zabbix -m

Подключаем репозиторий Epel: http://phpsuxx.blogspot.com/2009/03/centos-rhel.html


Создаём БД, вариант для MySQL:
mysql -uroot -pyourpassword -e "CREATE DATABASE zabbix_server CHARSET 'utf8'";
mysql -uroot -pyourpassword -e "GRANT ALL PRIVILEGES ON zabbix_server.* TO 'zabbix'@'localhost' IDENTIFIED BY 'qwerty' WITH GRANT OPTION;"

Вливаем схемы таблиц:
1. переходим в папку create/schema/
2. mysql -uroot -pyourpassword -D zabbix_server -e "source mysql.sql;";
3. Идём в папку ../data
4. Повторяем операцию для images_mysql.sql и data.sql

Создаём БД, вариант для PostgreSQL:
yum -y install postgresql-devel # ставим библиотеки поддержки работы с PgSQL

Создаем БД для Zabbix: http://phpsuxx.blogspot.com/2009/03/postgresql-8-startup.html

Имя бд: zabbix_server, имя пользователя: zabbix_user

Проверяем соединение с БД: psql zabbix_server zabbix_user --password -h 127.0.0.1

Импортируем схему БД в нашу базу:
psql zabbix_server zabbix_user --password -h 127.0.0.1
\i create/schema/postgresql.sql
\i create/data/images_pgsql.sql
\i create/data/data.sql

Компиляция сервера
yum -y install gcc make curl-devel iksemel-devel net-snmp-devel

Для работы с MySQL команда конфигурации выглядит так:
./configure --prefix=/opt/zabbix_server --enable-server --with-mysql --with-libcurl --with-jabber --with-net-snmp

А для работы с PostgreSQL команда выглядит так:
./configure --prefix=/opt/zabbix_server --enable-server --with-pgsql --with-libcurl --with-jabber --with-net-snmp

make
make install
После этого сервер будет установлен в папку: /opt/zabbix_server

Конфигурирование
Дефалтовый конфиг сервера должен лежать по пути: /etc/zabbix/zabbix_server.conf
Его пример можно взять в папке misc/conf/zabbix_server.conf
mkdir -p /etc/zabbix/
cp misc/conf/zabbix_server.conf /etc/zabbix/

После этого в указанном файле надо прописать настройки бд, за них отвечают следующие параметры:
DBHost=localhost
DBName=zabbix_server
DBUser=zabbix_user
DBPassword=qwerty

Активация init скриптов
Для управления серверов через init.d создадим скрипт /etc/init.d/zabbix_server следующего содержания:


#!/bin/sh
#
# zabbix_server start/stop script for CentOS 4.x
# author: Chris Riley
# date: 2006-06-25
#
# chkconfig: 2345 55 45
# description: starts/stops zabbix_server
#
# processname: zabbix_server
# pidfile: /tmp/zabbix_server.pid
# config: /etc/zabbix/zabbix_server.conf

# Source function library.
. /etc/rc.d/init.d/functions

# Path to zabbix_server and its base path.
progdir="/opt/zabbix_server/sbin/"
prog="zabbix_server"
RETVAL=0

start() {
echo -n $"Starting $prog: "
daemon $progdir$prog
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/$prog
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
killproc $prog
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/$prog /tmp/$prog.pid
}
reload() {
echo -n $"Reloading $prog: "
killproc $prog -HUP
RETVAL=$?
echo
}

# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $prog
RETVAL=$?
;;
restart)
stop
start
;;
condrestart)
if [ -f /tmp/$prog.pid ] ; then
stop
start
fi
;;
reload)
reload
;;
*)
echo $"Usage: $prog {start|stop|status|restart|condrestart|reload}"
exit 1
esac

exit $RETVAL



Даем право на исполнение: chmod +x /etc/init.d/zabbix_server
Добавляем в автозагрузку: chkconfig zabbix_server on

Запуск сервера
Теперь запускаем сервер и радуемся :)
/opt/zabbix_server/sbin/zabbix_server
ps aux | grep zabb -- а запустился ли ?)
tail /tmp/zabbix_server.log -- тут лог


Ну вот, впрчоем, и всё. Хотелось бы отметить, что это никоим образом не исчерпывающий мануал по установке, это лишь последовательность действий один раз приведшая к успеху :)

Если Вы настроились серьезно, то вот, прошу мануал по установке веб-интерфейс к Zabbix: http://phpsuxx.blogspot.com/2008/12/zabbix-php-centos-5.html

четверг, 18 июня 2009 г.

Zabbix + перезапуск служб

Часто Заббикс при перезапуске сервисов (очень кратковременном, кстати говоря) рассылает уведомление "Apache is not running on server4.ru: ON", чем сильно спамит почту, т.к. ребутов за сутки набирается до сотни. Виной том следующие триггеры шаблона Template_Linux: {Template_Linux:net.tcp.service[smtp].last(0)}=0 (для SMTP) и {Template_Linux:proc.num[httpd].last(0)} < 1 Т.е. отсутствует контрольно за тем. чтобы значение держалось в нулевом значении значительное время.

Исправим проблему для SMTP.

Новый триггер примет вид: {Template_Linux:net.tcp.service[smtp].sum(55)}=0 (т.е. он сработает, если сумма значений за 55 секунд будет равна нулю).

Исправим проблему для Апача.

Аналогично: {Template_Linux:proc.num[httpd].sum(55)}<1

вторник, 21 апреля 2009 г.

Zabbix ошибки

ERROR at home.c:149: Unable to find or create ELinks config directory. Please check if you have $HOME variable set correctly and if you have write permission to your home directory.


Думал, поможет sudo yum install elinks, но нет -- не помогло.


И вот такое: Can't find shared memory for collector. [No such file or directory]

У кого есть идеи?

понедельник, 1 декабря 2008 г.

Установка Zabbix PHP Фронтэнд на CentOS 5

Вступление
После того, как сервер мониторинга запущен, стоит прикрутить к нему мордочку :)
Тут всё довольно просто, т.к. у мордочки есть инсталлятор.

Установка
1. Ставим необходимый софт:
yum install -y httpd http php-pgsql php-gd php-bcmath

2. Добавляем Апача в автозапуск:

/etc/init.d/httpd start
chkconfig httpd on

3. Копируем в папку вирт сервера файлы из frontends/php/
cp -R frontends/php/* /var/www/html/

4. Прописываем таймзону и max время исполнения в /etc/php.ini
date.timezone = Europe/Moscow
max_execution_time = 360

5. Открываем http://zabbix.servername.ru/setup.php
6 Следуем указаниям мастера, ставим Zabbix,
7. Логинимся как Admin | zabbix и тащимся с потрясающего интерфейса Заббикса :)