Архив метки: Zabbix

Мониторинг списка запущенных процессов в Zabbix

В стандартных шаблонах Zabbix есть триггеры на загрузку процессора, а так же на превышение максимально допустимого числа процессов. Триггеры эти практически бесполезны, если у вас плавающая нагрузка. Допустим, вы получаете уведомление о том, что у вас сильно нагружен процессор. Через 10 минут нагрузка прошла, а вы не успели зайти на сервер и посмотреть, чем он был нагружен в это время. Вот эту проблему я и решаю своим велосипедом, которым делюсь в статье.

Читать

Активный и пассивный zabbix агент

У только начинающих администраторов zabbix часто возникает вопрос. В чем отличие между активным и пассивным агентом? И какой агент лучше использовать. В данной статье постараемся ответить на эти вопросы.

Отличие активного и пассивного агента

При использовании пассивного агента, zabbix сервер отправляет запросы на zabbix агент, в соответствии с настройками элементов данных (например загрузку cpu, памяти и т.д). А в ответ получает значения этих данных.

При активном агенте. Агент сначала запрашивает у zabbix сервера список элементов данных, частота этих запросов указана в параметре RefreshActiveChecks в настройках zabbix агента, обычно это не чаще одного раза в час, если у вас изменения в настройка узлов сети происходят редко, то можно указать обновление раз в сутки что бы меньше нагружать сервер. После получения элементов данных zabbix агент отправляет данные на сервер в соответствием с настройками этих данных.

Как следует из описанного выше. Основное отличие заключается в том, что при пассивном агенте данные запрашиваются сервером, а при активном данные отправляются самими агентами.

Какой агент лучше использовать?

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

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

преимущества пассивного агента

  • Работает из «коробки»

Недостатки

  • Не работает если узел находится за 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.



2019-04-17T10:18:42
Zabbix

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.



2019-04-16T17:21:37
Zabbix

Мониторинг дисков с помощью 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.



2019-02-11T14:25:23
Zabbix

Парсинг и передача 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. После входа вы должны увидеть такую страницу

 



2018-10-01T12:40:45
Zabbix