Установка и настройка Zabbix

Домашняя страница Zabbix.

Zabbix - это свободная система мониторинга и отслеживания статусов компьютерной сети, облачных ресурсов, сервисов, приложений, серверов и сетевого оборудования в реальном времени. Zabbix — полноценное решение для мониторинга крупных компьютерных сетей, был разработан Алексеем Владишевым при активной поддержке Zabbix SIA. Zabbix умеет находить все типы сетевых устройств используя различные методы, проверять состояние оборудования и приложений, отправлять заданные сообщения о тревоге и визуализировать сложные взаимосвязи. Он основан на модели клиент-сервер и способен отслеживать миллионы показателей, таких как загрузка ЦП, использование сети и потребление дискового пространства десятками тысяч серверов.

Кампания Zabbix регулярно проводит бесплатные вебинары о решениях мониторинга, так же вы можете пройти платные курсы сертификации. Эта подборка статей поможет начать самостоятельное изучение Zabbix 5 и выше.

Более подробно вы можете изучить возможности на официальном сайте Что нового в Zabbix LTS. Я хочу отметить важные для меня возможности:

  1. Zabbix можно развернуть локально или в облаке
  2. Реализована одна и та же политика источника для iframe, что означает, что Zabbix веб-интерфейс нельзя поместить во фреймы на другом домене
  3. Переписан Zabbix Agent с поддержкой плагинов и сохранением состояния
  4. Обнаружение счетчиков JMX (Java расширений управления)
  5. Обнаружение счетчиков производительности Windows
  6. Встроенная интеграция с системами ITSM (IT Service Management) - управление IT- услугами. Zabbix 5 представляет набор готовых интеграций со стандартными облачными и локальными системами ITSM: Jira, OTRS, Redmine, Zendesk, Zammad, Servicenow.
  7. Встроенные интеграции с системами оповещений: XMPP (Jabber), Telegram, Slack, Mattermost, Msteams, Victorops, PagerDuty, OpsGenie.
  8. Добавлены новые шаблоны и плагины для мониторинга различных сервисов, приложений и устройств. Большинство шаблонов теперь используют дополнительные возможности для автоматического обнаружения различных ресурсов. Из коробки существуют шаблоны Zabbix для ClickHouse, mysql, Nginx оптимизация и использование, Redis, PostgreSQL, Haproxy, Memcached, Elasticsearch.
  9. Возможность сброса SNMP кэша, изменений контекста SNMPv3

Шаблоны Zabbix в версии 5 стали более сложными с кучей макросов и автообнаружений.

Zabbix требуется как физическая память, так и память на диске. Отправной точкой могут быть 128 МБ оперативной памяти и 256 МБ свободного места на жестком диске. Впрочем, очевидно, что объем необходимой памяти на диске зависит от количества наблюдаемых узлов сети и наблюдаемых параметров. Если вы планируете достаточно долгосрочное хранении истории наблюдаемых параметров, то потребуется по крайней мере несколько гигабайт для хранения данных истории в базе данных. Каждый из процессов демона Zabbix требует несколько подключений к серверу базы данных.

Фактические параметры конфигурации зависят от количества активных элементов данных и частоты обновления этих элементов. Настоятельно рекомендуется запускать базу данных на отдельном сервере для крупных инсталляций.

  • Операционный системы CentOS, Ubuntu. С другими дистрибутивами, например Debian могут возникнуть проблемы - отсутствие нужных библиотек.
  • Минимально поддерживаемая версия PHP теперь 7.2.5, лучше PHP 7.4
  • Расширение PHP GD 2.0.28 или более поздняя (PHP 8 не поддерживается), должно поддерживать формат PNG (–with-png-dir), JPEG (–with-jpeg-dir) изображения и FreeType 2 (–with-freetype-dir).
  • В конфигурации Zabbix для мониторинга до 500 устройств рекомендуется CPU 2 ядра ОЗУ 2ГБ. По ссылке я тестировал виртуальные сервера ТОП Хостингов VPS/VDS для Zabbix - рекомендую.

Должны быть выполнены предварительные требования по настройке вашего Linux дистрибутива, в моем случае Ubuntu 20.04.1 LTS Focal.

Очень важно иметь точную дату и время системы на сервере с запущенным Zabbix. ntpd один из наиболее популярных демонов синхронизации времени хоста с временем на остальных серверах. Настоятельно рекомендуется поддерживать синхронизированное время на всех системах, где работают Zabbix компоненты.

В этом руководстве я буду объяснить, как установить сервер Zabbix в системе Ubuntu 20.04 LTS.

Zabbix доступен в репозиториях пакетов Ubuntu, но я рекомендую использовать официальный репозиторий Zabbix. Для подключения официальных репозиториев вам нужно перейти на страницу загрузки Zabbix и выбрать вашу конфигурацию. Моя конфигурация на скриншоте:

После выбора конфигурации - ниже появятся команды для подключения репозитория, в моем случае такие:

# wget https://repo.zabbix.com/zabbix/5.2/ubuntu/pool/main/z/zabbix-release/zabbix-release_5.2-1+ubuntu20.04_all.deb
# dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb
# apt update

И здесь бабамс!!!m( FIXME Получаем ошибку: N: Skipping acquire of configured file 'main/binary-i386/Packages' as repository 'http://repo.zabbix.com/zabbix/5.2/ubuntu focal InRelease' doesn't support architecture 'i386'

Самое интересное изучил штук 7 руководств по установке Zabbix 5 на Ubuntu и нигде такой ошибки нет! Вопрос, а кто в интернете пишет эти руководства, на том же digitalocean и других гуру администрирования, это копипаст какой-то?!! Ладно как всегда иду на новозеландские англоязычные форумы и нахожу ответ не по Заббиксу, но решение проблемы понятно. Кому интересно это связано с мультиархитектурностью ядра Linux и поддержкой одновременно приложений i386 и amd64. Ниже команды для анализа вашего сервера по поддержке 32 и 64:

root@zab:/# dpkg --print-foreign-architectures
i386
root@zab:/# dpkg --print-architecture
amd64

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

sudo dpkg --remove-architecture i386

РЕШЕНИЕ: Правим файл /etc/apt/sources.list.d/zabbix.list, который нам установила команда dpkg -i zabbix-release_5.2-1+ubuntu20.04_all.deb и добавляем ключ [arch=amd64]. Мой измененный файл:

deb [arch=amd64] http://repo.zabbix.com/zabbix/5.2/ubuntu focal main
deb-src [arch=amd64] http://repo.zabbix.com/zabbix/5.2/ubuntu focal main

И снова запускаем

# apt update

Всё, ошибки нет!

Ставим стандартно LAMP: Apache и MySQL.

sudo apt install apache2 libapache2-mod-php
sudo apt install mysql-server
sudo apt install php php-mbstring php-gd php-xml php-bcmath php-ldap php-mysql

Настраиваем пароль и безопасность сервера MySQL:

sudo mysql_secure_installation

После добавления репозитория Apt установим пакеты сервера Zabbix, где пакет zabbix-server-mysql включает Zabbix сервер с поддержкой MySQL, пакет zabbix-frontend-php предоставляет веб-интерфейс для Zabbix сервера.

apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

Импортируем схему базы данных для Zabbix сервера. Логинемся на сервер MySQL с учетной записью root и создаем базу данных MySQL и пользователя с помощью следующих команд.

# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql> quit;

Импорт начальной схему и данных Заббикс производим от пользователя MySQL созданного выше.

# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Enter password:

Настроим подключение Заббикса к базе данных, для это следует отредактировать файл /etc/zabbix/zabbix_server.conf и задать пароль для подключения к MySQL. Остальные 3 параметра уже настроены, если вы конечно не извращались с именем пользователя и базы данных.

DBPassword=password
DBHost=localhost
DBName=zabbix
DBUser=zabbix

Добавляем в автозагрузку и запускаем процессы Zabbix сервера, агента и вебсервера Apache.

systemctl enable zabbix-server zabbix-agent apache2
systemctl restart zabbix-server zabbix-agent apache2

Система установлена, дальнейшая настройка через веб-установщик Zabbix, по адресу:

http://your_ip/zabbix/

Почти во всех руководствах по настройке PHP идет глупый копипаст8-o На самом деле кроме часового пояса не надо ничего менять. Разработчики Zabbix за вас уже всё сделали в файле /etc/zabbix/apache.conf.

В файле конфигурации PHP /etc/php/7.4/apache2/php.ini и /etc/zabbix/apache.conf меняем часовой пояс в соответствии с вашими требованиями. Обязательно сделайте копию php.ini.

cp  /etc/php/7.4/apache2/php.ini  /etc/php/7.4/apache2/php.ini.orig

Кроме часового пояса - ничего НЕ трогайте в php.ini и apache.conf.

date.timezone = 'Europe/Kiev' 

В этом случае я использую UFW, вы должны были на первом шаге его настроить первоначальная настройка сетевого фильтра. Далее нам нужно разрешить порты протокола HTTP, HTTPS и зарезервированные порты для работы с Zabbix агентами.

Проверяем есть ли строки в файле services, если нет дописываем

# cat /etc/services | grep Zabbix
zabbix-agent	10050/tcp			# Zabbix Agent
zabbix-agent	10050/udp			# Zabbix Agent
zabbix-trapper	10051/tcp			# Zabbix Trapper
zabbix-trapper	10051/udp			# Zabbix Trapper

Команды для UFW

$ sudo ufw allow 'Apache Full'
$ sudo ufw allow 10050
$ sudo ufw allow 10051

В итоге должна получится такая настройка фаервола:

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
 
To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80,443/tcp (Apache Full)   ALLOW IN    Anywhere
10050                      ALLOW IN    Anywhere
10051                      ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80,443/tcp (Apache Full (v6)) ALLOW IN    Anywhere (v6)
10050 (v6)                 ALLOW IN    Anywhere (v6)
10051 (v6)                 ALLOW IN    Anywhere (v6)

Есть хорошие правила, которые позволяют настраивать безопасно и не попадать на деньги:

  • Первое правило: НЕ существует 32 битных операционных систем, а только 64.
  • Второе правило: НЕ существует протокола HTTP, а только HTTPS.

Моя настоятельная рекомендация установить SSL сертификат на Веб интерфейс управления Заббикс, воспользуйтесь этой инструкцией. Там же вы увидите как быстро и правильно создать виртуальный домен Apache с поддержкой HTTP, HTTPS.

Откройте

http://имя хоста или IP-адрес Zabbix сервера/zabbix/

(в моем случае будет конечно https), чтобы начать первоначальную настройку Zabbix. Жмем Next - проверяем зависимости PHP, если все колонки OK - жмем Next. На странице Configure DB connection вводим пароль MySQL пользователя zabbix, который был создан на Шаг 5.

На странице Zabbix server details введите имя хоста или IP-адрес хоста и номер порта сервера Zabbix, а также имя установки (необязательно). Мои настройки на скриншоте.

На вкладке GUI settings должен был подтянуться ваш часовой пояс, который прописывали на Шаг 7.

Жмем Next - проверяем суммарную информаци. Жмем Next - полeчаем сообщение о создании конфигурационного файла "/usr/share/zabbix/conf/zabbix.conf.php". Жмем Finish и переходим на страницу авторизации.

Учетные данные для доступа к веб- интерфейсу Zabbix по умолчанию

Username: Admin
Password: zabbix

Сразу меняйте пароль, переходите на страницу Administration > Users > Admin жмем Change Password.

Поздравляю, Вы установили Zabbix!

Мой Zabbix сервер имеет реальный IP и значит его видит весь мир. Разрешим доступ к веб интерфейсу только с определённых доверенных IP. В мой конфигурации я использую Apache/2.4.41 и буду использовать директиву Require ip. Если вы используете другой веб- сервер, вам следует изучить документации того веб сервера, который используете.

В конфигурационном файле Zabbix для Apache2 /etc/apache2/conf-enabled/zabbix.conf добавим директиву Require ip с вашим IP:

<Directory "/usr/share/zabbix">
Require ip x.x.x.x

FAQ Zabbix для версии < 5

  • Если вы хотите изменить параметр SNMP community, то это можно сделать прямо в Zabbix: зайдите в шаблон в Configuration → Templates , в Items выделите нужные элементы галочками и внизу выберите из выпадающего списка Mass update. Или для любого устройства Host→Macros, где можно переопределить любую переменную в том числе и {$SNMP_COMMUNITY} (Пользовательские макросы).
  • Ошибка: Zabbix proxy poller processes more than 75% busy
    # nano /etc/zabbix/zabbix_server.conf
    StartPollers=20
  • Ошибка: Zabbix icmp pinger processes more than 75% busy
    # nano /etc/zabbix/zabbix_server.conf
    StartPingers=10
    StartDiscoverers=10
  • Ошибка: Zabbix unreachable poller processes more than 75% busy
    # nano /etc/zabbix/zabbix_server.conf
    StartPollersUnreachable=10

Алгоритм настройки Zabbix сервера

Первоначальная настройка:

  1. сменить шаблон для localhost’а на Template_FreeBSD (или просто отцепить шаблон)
  2. активировать мониторинг localhost’а
  3. создать нужные “Элементы данных” (items)
  4. создать на них триггеры
  5. настройки отправку сообщений по триггерам

Настройка нового шаблона:

  1. полностью клонировать из стандартного (или создать новый) шаблона
  2. удалить (добавить) необходимые элементы данных и графики. Например, можно смело удалить для всех templates серверов элемент "Number of running processes zabbix_server" кроме шаблона для localhost

Триггеры, шаблоны для Zabbix

Zabbix и оборудование

Zabbix и PostgreSql

Zabbix мониторинг сервера баз данных PostgreSQL версии 8.4.9.

Инсталляция агентов Zabbix

Zabbix SIA поставляет официальные RPM и DEB пакеты для Red Hat Enterprise Linux, Debian и Ubuntu LTS. Файлы пакетов доступны по адресу http://repo.zabbix.com. Репозитории yum и apt также доступны на сервере.

  • Для CentOS 6.7:
    rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
    yum install zabbix-agent
    cd /etc/zabbix/
    cp zabbix_agentd.conf zabbix_agentd.conf.orig

    Редактируем zabbix_agentd.conf:

  1. Server=zabbix.example.net # IP addresses (or hostnames) of Zabbix servers
  2. !!! Hostname=cz394 # Должно совпадать с Host name указанном на Zabbix servers. Используйте Visible name (на Zabbix server) для написания удобочитаемых названий ваших серверов.
  3. ServerActive=zabbix.example.net # IP:port (or hostname:port) pairs of Zabbix servers for active checks
  • Стартуем агента
    /etc/init.d/zabbix-agent start
  • Zabbix 3.0 for Debian 8:
    wget http://repo.zabbix.com/zabbix/3.0/debian/pool/main/z/zabbix-release/
    zabbix-release_3.0-1+jessie_all.deb
     
    dpkg -i zabbix-release_3.0-1+jessie_all.deb
    aptitude update
    aptitude install zabbix-agent

Если скачать программу агента с родного сайта Pre-compiled ZABBIX 1.4 Windows NT4, XP, 2000, 2003, Vista, тогда придется самим создавать и настраивать конфигурационный файл, который будет располагаться здесь:

С:\zabbix_agentd.conf

Ниже ссылка на готовые сборки клиентов для Windows:

Zabbix agent (compiled by ZABBIX SIA)

Качаем нужную версию, при установки задаем IP Zabbix сервера. Все!!!

zabbix-agent-1.6.5

> cd /usr/ports/net-mgmt/zabbix-agent
> make install clean
> echo 'zabbix_agentd_enable="YES"' >> /etc/rc.conf
> cd /usr/local/etc/zabbix
> cp zabbix_agentd.conf.sample zabbix_agentd.conf

> touch /var/log/zabbix_agentd.log
> chown zabbix:zabbix /var/log/zabbix_agentd.log

> ee zabbix_agentd.conf
#Изменяем параметры
...
Server=127.0.0.1
Hostname=localhost
DisableActive=1
StartAgents=5
LogFile=/var/log/zabbix_agentd.log
...

> /usr/local/etc/rc.d/zabbix_agentd start
Starting zabbix_agentd.

> tail -F /var/log/zabbix_agentd.log
 11361:20090821:145209 zabbix_agentd started. ZABBIX 1.6.5 (revision 7442).
eTalk курсы английского языка.