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

Homepage: Zabbix

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

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

Более подробно вы можете изучить возможности на официальном сайте Что нового в Zabbix 5.0 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 стали более сложными с кучей макросов и автообнаружений.

  • Операционный системы CentOS, Ubuntu. С другими дистрибутивами, например Debian могут возникнуть проблемы - отсутствие нужных библиотек.
  • Минимально поддерживаемая версия PHP теперь 7.2.5, лучше PHP 7.4
  • Расширение PHP GD 2.0.28 или более поздняя, должно поддерживать формат 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).