В стандартных шаблонах Zabbix есть триггеры на загрузку процессора, а так же на превышение максимально допустимого числа процессов. Триггеры эти практически бесполезны, если у вас плавающая нагрузка. Допустим, вы получаете уведомление о том, что у вас сильно нагружен процессор. Через 10 минут нагрузка прошла, а вы не успели зайти на сервер и посмотреть, чем он был нагружен в это время. Вот эту проблему я и решаю своим велосипедом, которым делюсь в статье.
Архив метки: Zabbix
Активный и пассивный zabbix агент
У только начинающих администраторов zabbix часто возникает вопрос. В чем отличие между активным и пассивным агентом? И какой агент лучше использовать. В данной статье постараемся ответить на эти вопросы.
Отличие активного и пассивного агента
При использовании пассивного агента, zabbix сервер отправляет запросы на zabbix агент, в соответствии с настройками элементов данных (например загрузку cpu, памяти и т.д). А в ответ получает значения этих данных.
При активном агенте. Агент сначала запрашивает у zabbix сервера список элементов данных, частота этих запросов указана в параметре RefreshActiveChecks в настройках zabbix агента, обычно это не чаще одного раза в час, если у вас изменения в настройка узлов сети происходят редко, то можно указать обновление раз в сутки что бы меньше нагружать сервер. После получения элементов данных zabbix агент отправляет данные на сервер в соответствием с настройками этих данных.
Как следует из описанного выше. Основное отличие заключается в том, что при пассивном агенте данные запрашиваются сервером, а при активном данные отправляются самими агентами.
Какой агент лучше использовать?
Какой агент использовать это дело вкуса. По моему мнению если у вас небольшая сеть и в которую редко добавляются новые узлы, то можно использовать пассивный агент.
Если же у вас большая сеть и на сервере десятки или сотни тысяч активных элементов данных. А также если в сети постоянно появляются новые узлы. То в этом случае лучше, а также если узлы находятся за НАТом то необходимо использовать активный zabbix агенты.
преимущества пассивного агента
- Работает из «коробки»
Недостатки
- Не работает если узел находится за NAT
- В отличие от активного агента больше нагрузка на сервер
Преимущества активного агента
- Меньшая нагрузка на сервер
- Возможность работы за NAT
- Авторегистрация узлов
Недостатки
- Необходимо создавать шаблоны, в стандартной установке все шаблоны для пассивной проверке.
Создание шаблона для активного агента
Создать шаблон для активного zabbix агента из уже существующего на самом деле очень просто. Рассмотрим на примере стандартного шаблона «Template OS Linux». Для этого открываем его на редактирование и смотрим какие еще шаблоны к нему присоединены, кликнув по вкладке «Присоединенные шаблоны»
Прямо здесь кликаем по имени «Template App Zabbix Agent» и в открывшемся шаблоне нажимаем кнопку «Полное клонирование». Переименовываем новый шаблон например в «Template App Zabbix Agent_activ». И жмем добавить. Затем открываем созданный шаблон на редактирование, переходим на вкладку «элементы данных» и выделяем все элементы данных.
После чего жмем «Массовое обновление». Выбираем тип «Zabbix агент (активный)»
И нажимаем «обновить»
Снова открываем шаблон «Template OS Linux» и здесь нажимаем кнопку «Полное клонирование». И создаем новый шаблон «Template OS Linux_activ». Открываем шаблон «Template OS Linux_activ» на редактирование и переходим на вкладку «Присоединенные шаблоны». Здесь отсоединяем шаблон «Template App Zabbix Agent» и присоединяем «Template App Zabbix Agent_activ».
Затем переходим в элементы данных и также с помощью кнопки «Массовое обновление» меняем тип на «Zabbix агент (активный)». Еще нам нужно изменить тип в правилах обнаружения. Для этого переходим на вкладку «Правила обнаружения» и нажимаем в каждом правиле на ссылку «Прототипы элементов данных». К сожалению здесь массовое обновление не работает. Поэтому проходимся по каждому элементу вручную и меняем тип. Теперь у нас есть новый шаблон «Template OS Linux_activ», который работает с активным zabbix агентами. И уже его мы можем навешивать на хосты.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Zabbix. Авторегистрация узлов
В zabbix существует отличный механизм который позволяет автоматически добавлять новые хосты на мониторинг. Что существенно экономит время по развертыванию системы мониторинга.
Зачем это нужно?
Представьте себе что у вас есть парк из несколько сотен машин. А теперь представьте сколько времени займет у вас добавление вручную их на zabbix. Конечно можно написать скрипт который через zabbix-api добавит их, но есть более простой путь-это авторегистрация агентов.
При таком подходе вам нужно только установить активный zabbix агент на хосте, а на сервер он уже автоматически добавится и применит нужные шаблоны. А если у вас уже есть настроенная система конфигурация ansible или puppet, то вся процедура займет буквально несколько минут.
Настройка zabbix сервера
Для начала создаем на сервере zabbix новое действие. Переходим в меню Настройки-Действия-создать действие. Источник выбираем «Авторегистрация»
На открывшейся странице на вкладке «Действия» заполняем следующие поля
Здесь
Имя — любое название действия
Новое условие — выбираем «Метаданные узлов сети» — «содержит» и здесь вписываем строку по которой будем идентифицировать регистрируемые хосты.
Затем переходим на вкладку «Операции». И здесь в поле «операции» кликаем по ссылке «Новый». И добавляем правила которые необходимо применить при регистрации хоста.
Обратите внимание на один момент, при добавлении операции нужно кликать не на большую кнопку «добавить». А на мелкую ссылку «добавить»
Например для добавления узла и добавления его к группе Linux servers с присоединением к шаблону «Template Linux OS_activ» выглядит так
После этого нажимаем большую кнопку «Добавить». На этом настройку сервера можно считать завершенной.
Настройка zabbix агентов
Открываем конфигурационный файл агента и редактируем следующие поля
Закомментировать или прописать свое уникальное имя в параметре
Hostname=Zabbix server
В противном случае добавится только один хост, для остальных хостов сервер будет считать что узел уже существует. Если этот параметр будет пустой или закомментирован, то узел добавится под системным именем.
В параметре ServerActive прописываем ip адрес сервера
ServerActive=<zabbix server>
Раскомментировать параметр HostMetadata и присвоить ему значение которое мы указали в настройках сервера
HostMetadata=linux.autoreg
После чего перезапускаем агент. Идем на сервер и в узлах сети, в указанной группе, а также в группе «Discovered hosts» должен появиться новый узел. Если этого не произошло, то смотрим логи агента и сервера, как правило там подробно описано что у нас пошло не так. При необходимости мы можем отредактировать настройки вручную, эти настройки не пропадут. Только не меняйте имя, иначе узел снова зарегистрируется под именем настроенном в параметре Hostname.
Заключение
Как видим настроить автоматическое добавление узлов в zabbix дело десяти минут. А вот упрощает и экономит время при дальнейшем обслуживание мониторинга это существенно.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Мониторинг дисков с помощью zabbix
Мониторинг производительности дисковых подсистем с помощью zabbix. Мониторятся следующие параметры.
- утилизация блочного устройства в % — удобная метрика для отслеживания общей нагрузки на устройстве;
- latency или отзывчивость — доступна как общая отзывчивость, так и отзывчивость на операциях чтения/записи;
- величина очереди (в запросах) и средний размер запроса (в секторах) — позволяет оценить характер нагрузки и степень загруженности устройства;
- текущая скорость чтения/записи на устройство в человекопонятных килобайтах;
- количество запросов чтения/записи (в секунду) объединенных при постановке в очередь на выполнение;
- iops — величина операций чтения/записи в секунду;
Для работы нам потребуется утилита iostat входящая в пакет sysstat. Устанавливаем sysstat
yum install sysstat
Создаем директорию для скриптов
mkdir /usr/libexec/zabbix-extensions/scripts/
Создаем первый скрипт для сбора метрик
vi /usr/libexec/zabbix-extensions/scripts/iostat-collect.sh
Копируем в него следующий текст
#!/usr/bin/env bash
# Description: Script for iostat monitoring
# Author: Epikhin Mikhail michael@nomanlab.org
# Revision 1: Lesovsky A.V. lesovsky@gmail.com
SECONDS=$2
TOFILE=$1
IOSTAT="/usr/bin/iostat"
[[ $# -lt 2 ]] && { echo "FATAL: some parameters not specified"; exit 1; }
DISK=$($IOSTAT -xm 1 $SECONDS | awk 'BEGIN {check=0;} {if(check==1 && $1=="avg-cpu:"){check=0}if(check==1 && $1!=""){print $0}if($1=="Device:"){check=1}}' | tr 'n' '|')
echo $DISK | sed 's/|/n/g' > $TOFILE
echo 0
Создаем второй скрипт для парсинга
vi /usr/libexec/zabbix-extensions/scripts/iostat-parse.sh
#!/usr/bin/env bash
# Description: Script for disk monitoring
# Author: Epikhin Mikhail michael@nomanlab.org
# Revision 1: Lesovsky A.V. lesovsky@gmail.com
NUMBER=0
FROMFILE=$1
DISK=$2
METRIC=$3
[[ $# -lt 3 ]] && { echo "FATAL: some parameters not specified"; exit 1; }
[[ -f "$FROMFILE" ]] || { echo "FATAL: datafile not found"; exit 1; }
case "$3" in
"rrqm/s")
NUMBER=2
;;
"wrqm/s")
NUMBER=3
;;
"r/s")
NUMBER=4
;;
"w/s")
NUMBER=5
;;
"rkB/s")
NUMBER=6
;;
"wkB/s")
NUMBER=7
;;
"avgrq-sz")
NUMBER=8
;;
"avgqu-sz")
NUMBER=9
;;
"await")
NUMBER=10
;;
"r_await")
NUMBER=11
;;
"w_await")
NUMBER=12
;;
"svctm")
NUMBER=13
;;
"util")
NUMBER=14
;;
*) echo ZBX_NOTSUPPORTED; exit 1 ;;
esac
grep -w $DISK $FROMFILE | tail -n +2 | tr -s ' ' |awk -v N=$NUMBER 'BEGIN {sum=0.0;count=0;} {sum=sum+$N;count=count+1;} END {printf("%.2fn", sum/count);}'
Даем права на запуск
chmod +x /usr/libexec/zabbix-extensions/scripts/iostat-collect.sh /usr/libexec/zabbix-extensions/scripts/iostat-parse.sh
Создаем файл с ключами zabbix агента
vi /etc/zabbix/zabbix_agentd.d/iostat.conf
Копируем в него следующие ключи
# Disk statistics via iostat (sysstat)
# Attention: Second parameter in iostat.collect must be less than Timeout option in zabbix_agentd.conf
UserParameter=iostat.discovery, iostat -d | awk 'BEGIN {check=0;count=0;array[0]=0;} {if(check==1 && $1 != ""){array[count]=$1;count=count+1;}if($1=="Device:"){check=1;}} END {printf("{nt"data":[n");for(i=0;i<count;++i){printf("tt{nttt"{#HARDDISK}":"%s"}", array[i]); if(i+1<count){printf(",n");}} printf("]}n");}'
UserParameter=iostat.collect,/usr/libexec/zabbix-extensions/scripts/iostat-collect.sh /tmp/iostat.out 8 || echo 1
UserParameter=iostat.metric[*],/usr/libexec/zabbix-extensions/scripts/iostat-parse.sh /tmp/iostat.out $1 $2
Рестартуем агента
systemctl restart zabbix-agent
Скачиваем шаблон для zabbix сервера и устанавливаем.
В итоге должны получить красивые графики, например загрузка диска
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Парсинг и передача json данных в Zabbix
Продолжаю серию рассказов на тему настройки различных метрик в системе мониторинга заббикс. Сегодня расскажу, как быстро, легко и удобно передавать данные в json формате в zabbix и там их обрабатывать. Развитие функционала в последних версиях позволяют работать с json без лишних костылей и самописных скриптов.
Установка ZABBIX на Centos 7
Zabbix-очень мощная система мониторинга, для отслеживания различного состояния хостов (серверов, маршрутизаторов, свичей и т.д).
В состав zabbix входит:
- сервер мониторинга, который собирает все данные, обрабатывает их анализирует и запускает скрипты оповещения.
- База данных (Mysql, PostgreSQL, SQLite или Oracle)
- Агент-демон который запускается на отслеживаемом узле и отправляет данные на сервер
Агент устанавливать на хост не обязательно, получать данные можно так же с помощью различных сервисов для мониторинга сетей, таких как snmp, ping, ftp, http и т.д.
Установка ZABBIX
Для установки на CentOS 6 установите пакет конфигурации репозитария. Этот пакет содержит yum файлы конфигурации.
# rpm -ivh http://repo.zabbix.com/zabbix//2.4/rhel/7/x86_64/zabbix-release-2.4-1.el7.noarch.rpm
Установите пакеты Zabbix.
# yum install zabbix-server-mysql zabbix-web-mysql
Установка только Zabbix агента на отслеживаемый хост.
# yum install zabbix-agent
Устанавите mariadb
# yum install -y mariadb-server mariadb
Дбавляем в mariadb автозапуск
# systemctl enable mariadb.service
И запускаем
# systemctl start mariadb
Создайте базу данных zabbix и пользователя в MySQL
# mysql -uroot MariaDB [(none)]> create database zabbix character set utf8; MariaDB [(none)]>grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix'; MariaDB [(none)]> exit
Импортируйте начальную схему и данные.
# cd /usr/share/doc/zabbix-server-mysql-2.4.5/create/ # mysql -uroot zabbix < schema.sql # mysql -uroot zabbix < images.sql # mysql -uroot zabbix < data.sql
В текстовом редакторе откройте /etc/zabbix/zabbix_server.conf.
И добавте в файл
DBHost=localhost DBName=zabbix DBUser=zabbix DBPassword=zabbix
Запустите процесс Zabbix сервера.
# systemctl start zabbix-server
И добавте его в автозапуск
# systemctl enable zabbix-server.service
В файле /etc/httpd/conf.d/zabbix.conf найдите строчку # php_value date.timezone Europe/Riga, установите правильную временную зону и раскоментируйте. Перезапустите веб сервер
# systemctl restart httpd
После этого через любой браузер зайдите на адрес http://<ip-server-zabbiz>/zabbix из браузера. Где продолжится установка через WEB интерфейс. Если не получается открыть страницу, проверте запущен ли у вас сервер apache
# systemctl status httpd
Отключите selinux. для этого в файле /etc/selinux/config укажите
SELINUX=disabled,
и перезагрузите сервер. В файле /etc/sysconfig/iptables выше запрещающих правил пропишите строку:
-A INPUT -m state —state NEW -m tcp -p tcp —dport 80 -j ACCEPT
И перезапустите iptables
# systemctl restart iptables
Вы должны увидить такую картинку
Нажимаем NEXT
Смотрим что у нас всё ОК и жмем NEXT.
здесь указываем параметры подключения к нашей MqSQL базе, которые мы настраивали вначале. Нажмите кнопку «Test connection» и убедитесь что есть подключение к базе. На остальных страницах можете просто нажатьNEXT. Вконце вы должны увидеть страницу авторизации.
По умолчанию логин/пароль Admin/zabbix. После входа вы должны увидеть такую страницу













