Установка Zabbix 7 c NGINX + PostgreSQL + TimescaleDB на Ubuntu Server или Debian

  • Автор:

Zabbix-PostgreSQL-TimescaleDB-Install-000.pngZabbix - пожалуй одна из самых известных, развитых и функциональных систем мониторинга. В то же время - это достаточно сложная система и освоить ее методом "научного тыка" скорее всего не получится, потребуется комплексный подход и вдумчивое изучение продукта. В связи с недавним выпуском новой версии 7 LTS мы решили выпустить цикл статей, посвященных работе с Zabbix, начнем с установки, которая, хотя и не сложна, но содержит некоторые тонкости, особенно в части установки СУБД PostgeSQL и расширения TimescaleDB.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Сервер Zabbix предполагает достаточную вариативность в выборе СУБД и веб-сервера, поэтому многое тут будет зависеть от персональных предпочтений. Однако расширение TimescaleDB позволяет поддерживать высокий уровень производительности и масштабирования при работе с временными рядами в СУБД PostgreSQL, что однозначно обуславливает ее выбор. NGINX - простой и высокопроизводительный веб-сервер, обеспечивающий высокую скорость ответа при небольших требованиях к системным ресурсам.

В качестве ОС мы будем использовать Ubuntu 24.04 LTS, как наиболее свежую по версиям пакетов, также Zabbix поддерживает Ubuntu 22.04 LTS и Debian 12, данные системы отличаются версиями входящего в них ПО, ниже мы перечислим критичные компоненты:

  • Ubuntu 24.04 LTS - PostgreSQL 16, PHP 8.3
  • Ubuntu 22.04 LTS - PostgreSQL 14, PHP 8.1
  • Debian 12 - PostgreSQL 15, PHP 8.2

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

Подготовка сервера

Начнем с подготовки серверной системы, сначала выполним обновление пакетов до последних версий и выполним очистку системы:

apt update -y && apt full-upgrade -y && apt autoremove -y

После этого действия сервер потребуется перезагрузить.

Далее выясним установленную локаль командой

localectl

Если она отличается от ru_RU.UTF-8, то установим ее командой:

localectl set-locale LANG=ru_RU.UTF-8

Теперь проверим часовой пояс командой:

timedatectl 

И при необходимости установим нужный:

timedatectl set-timezone Europe/Moscow

Полный список часовых поясов можно получить командой:

timedatectl list-timezones

Также установим желаемое имя сервера, в нашем случае имя - zabbix7:

hostnamectl hostname zabbix7

Также крайне желательно настроить для сервера Zabbix FQDN, чтобы он отзывался на полностью определенное доменное имя, в нашем случае это будет zabbix7.interface31.lab. После чего откроем /etc/hosts и приведем его содержимое к примерно следующему виду:

127.0.0.1 localhost.localdomain localhost
192.168.99.8 zabbix7.interface31.lab zabbix7

На этом предварительная настройка сервера завершена после чего его следует еще раз перезагрузить.

Установка Zabbix 7 LTS

Перейдем на официальный сайт Zabbix в раздел скачивания и выберем там необходимую операционную систему, компоненты Server, Frontend, Agent, а также сервер СУБД Postgres и веб-сервер Nginx. Ниже на этой странице мы получим инструкции по установке.

Для добавления репозиториев и ключей Zabbix нам потребуется скачать и установить специальный пакет.

Для Ubuntu 24.04 LTS:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu24.04_all.deb
dpkg -i zabbix-release_7.0-2+ubuntu24.04_all.deb

Для Ubuntu 22.04 LTS:

wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb
dpkg -i zabbix-release_7.0-2+ubuntu22.04_all.deb

Для Debian 12:

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-2+debian12_all.deb
dpkg -i zabbix-release_7.0-2+debian12_all.deb

После чего обновим список доступных пакетов:

apt update

Теперь установим необходимые пакеты, ниже приведены команды для Ubuntu 24.04 LTS, для других систем откорректируйте версию пакетов PHP:

apt install zabbix-server-pgsql zabbix-frontend-php php8.3-pgsql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent

Веб-сервер Nginx и программный интерпретатор PHP-FPM будут установлены из штатных репозиториев по зависимостям.

Настройка веб-сервера и PHP-FPM

Сразу настроим веб-сервер и PHP-FPM, которые будут отвечать за работу веб-интерфейса. Начнем в веб-сервера, откроем /etc/zabbix/nginx.conf раскомментируем и изменим в нем два параметра:

listen 80;
server_name zabbix7.interface31.lab;

Где указываем порт, на котором будет работать веб-интерфейс и доменное имя, которое веб-сервер будет обслуживать.

Затем откроем /etc/zabbix/php-fpm.conf и изменим опции:

php_value[post_max_size] = 32M
php_value[upload_max_filesize] = 16M

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

Сохраняем изменения и перезапускаем службы:

systemctl restart nginx php8.3-fpm

Это были только самые необходимые, базовые настройки. При желании вы можете выполнить более тонкую настройку служб.

Установка СУБД PostgreSQL

Для установки текущей версии PostgreSQL из репозитория выполните:

apt install postgresql postgresql-contrib

Сервер будет установлен и запущен автоматически.

Теперь создадим новую роль (пользователя) сервера PostgreSQL и зададим ему новый пароль:

sudo -u postgres createuser --pwprompt zabbix

Обратите внимание, что sudo -u postgres обозначает, что команда выполняется от имени пользователя postgres, а не root.

И создадим новую базу данных zabbix с владельцем zabbix:

sudo -u postgres createdb -O zabbix zabbix

Загрузим в нее схему и начальные данные:

zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix

В ходе выполнения данной команды система может попросить пароль, который вы установили на предыдущем шаге.

Затем откроем файл /etc/zabbix/zabbix_server.conf и найдем там опцию DBPassword, которую приведем к виду:

DBPassword=MyPa$$word

Где MyPa$$word - пароль, который вы установили ранее.

Установка TimescaleDB

Чтобы установить TimescaleDB подключим официальный репозиторий.

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

apt install gnupg apt-transport-https

Для Ubuntu:

echo "deb https://packagecloud.io/timescale/timescaledb/ubuntu/ $(lsb_release -c -s) main" > /etc/apt/sources.list.d/timescaledb.list

Для Debian:

echo "deb https://packagecloud.io/timescale/timescaledb/debian/ $(lsb_release -c -s) main" > /etc/apt/sources.list.d/timescaledb.list

Затем скачаем и импортируем ключ репозитория:

wget --quiet -O - https://packagecloud.io/timescale/timescaledb/gpgkey | gpg --dearmor -o /etc/apt/trusted.gpg.d/timescaledb.gpg

Обновим список пакетов:

apt update

И установим нужные компоненты, обратите внимание, что версия TimescaleDB должна соответствовать установленной версии PostgreSQL, в Ubuntu 24.04 это версия 16. Еще один момент - Zabbix поддерживает строго определенные версии TimescaleDB 2.13 - 2.15, поэтому выполним установку с явным указанием версии, при этом вы потом можете смело обновляться, на работу это не повлияет:

apt install timescaledb-2-postgresql-16='2.15.*' timescaledb-2-loader-postgresql-16='2.15.*' postgresql-client-16

После установки запустим утилиту конфигурирования TimescaleDB и ответим утвердительно на все вопросы:

timescaledb-tune

Zabbix-PostgreSQL-TimescaleDB-Install-001.pngПосле чего перезапустите службу СУБД:

systemctl restart postgresql

Теперь подключим расширение к базе zabbix:

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

И выполним специальный скрипт для конвертации данных:

cat /usr/share/zabbix-sql-scripts/postgresql/timescaledb/schema.sql | sudo -u zabbix psql zabbix

Важно! Сообщения в ходе выполнения скрипта о том, что вы не следуете лучшим практикам (not follow best practices) следует проигнорировать!

На этом установка и настройка TimescaleDB завершена.

Завершение установки Zabbix 7 LTS

Для завершения установки добавим службы Zabbix в автозагрузку и одновременно запустим их:

systemctl enable --now zabbix-server zabbix-agent

Теперь перейдем в веб-интерфейс http://zabbix7.interface31.lab (здесь укажите собственный FQDN сервера Zabbix) и завершим его установку. Прежде всего выберите язык интерфейса и нажмите Далее.

Zabbix-PostgreSQL-TimescaleDB-Install-002.pngНа следующем экране еще раз введите пароль пользователя базы данных, который вы задавали при установке PostgreSQL, остальные параметры оставляем по умолчанию:

Zabbix-PostgreSQL-TimescaleDB-Install-003.pngУказываем имя сервера, часовой пояс и выбираем тему оформления, все это можно сделать и потом, но лучше задать все необходимые параметры сразу:

Zabbix-PostgreSQL-TimescaleDB-Install-004.pngПосле завершения установки веб-интерфейса вы попадете на страничку входа, используйте логин Admin и пароль zabbix.

Zabbix-PostgreSQL-TimescaleDB-Install-005.pngПосле первого входа вы попадаете на обзорный экран, тут есть много чего, но он пока вам не нужен:

Zabbix-PostgreSQL-TimescaleDB-Install-006.pngМы же первым делом идем в Пользователи - Пользователи - Admin и меняем пароль администратора системы по умолчанию.

Установка Zabbix агент на платформу Windows

Для работы с сервером мониторинга нам понадобится установить агенты на контролируемые узлы. Для платформы Windows переходим на официальный сайт в раздел загрузки агентов и скачиваем Zabbix agent 2.

Устанавливаем его с настройками по умолчанию, единственные изменения вносим на странице с адресами серверов. Zabbix агент работает в пассивном режиме, т.е. ждет соединения от сервера, поле Zabbix server IP/DNS определяет каким адресам/доменным именам разрешается подключаться к агенту. Можно указать несколько адресов через запятую. Указываем тут имя или адрес нашего сервера.

Второе поле - Server or Proxy for active checks определяет узлы, которые могут подключаться для активных проверок (т.е. выполнять код на узле при помощи агента), если данное поле оставить не заполненным - активные проверки будут отключены. Иначе также указываем имя или адрес нашего сервера.

Zabbix-PostgreSQL-TimescaleDB-Install-007.pngТакже обратите внимание, что для работы активных проверок имя узла на сервере Zabbix должно совпадать с тем, что указано в поле Host name агента.

Для того, чтобы сервер Zabbix мог подключиться к агенту нужно создать разрешающее правило в брандмауэре Защитника Windows для входящих подключений TCP на порт 10050.

Это можно быстро сделать при помощи PowerShell (потребуются права администратора):

New-NetFirewallRule -DisplayName "Zabbix" -Direction Inbound -Action Allow -EdgeTraversalPolicy Allow -Protocol TCP -LocalPort 10050

Агент начинает работать сразу после установки, никаких дополнительных действий не требуется.

Установка Zabbix агент на платформу Linux

Переходим на официальный сайт Zabbix в раздел загрузки пакетов и выбираем версию Zabbix, требуемую ОС и тип пакета - Agent 2. В нашем случае в качестве примера будет Debian 11.

Скачиваем и устанавливаем пакет, который автоматически подключит репозитории и установит ключи, все необходимые команды приведены на сайте Zabbix.

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-2+debian11_all.deb
dpkg -i zabbix-release_7.0-2+debian11_all.deb

Обновляем список пакетов:

apt update

И установим агент с необходимыми компонентами:

apt install zabbix-agent2 zabbix-agent2-plugin-*

Затем откроем файл /etc/zabbix/zabbix_agent2.conf и найдем в нем опции:

Server=zabbix7.interface31.lab

и

ServerActive=zabbix7.interface31.lab

В каждой из которых укажите FQDN или IP-адрес вашего IP-сервера. Если оставить опцию ServerActive пустой - активные проверки будут отключены.

Для разрешения входящих подключений к агенту Zabbix следует добавить правило iptables, которое разрешит подключения к TCP 10050:

iptables -A INPUT -p tcp --dport 10050 -j ACCEPT

После чего перезапустим службу агента:

systemctl restart zabbix-agent2

На этом настройка агента для Linux закончена.

Настройка мониторинга по SNMP на примере Mikrotik

Есть ряд устройств, на которые нельзя установить агента - сетевые устройства, принтеры и т.п. В этом случае есть возможность осуществлять мониторинг через SNMP. Общий принцип настройки прост: включаем SNMP (желательно версии v2 и выше) и разрешаем доступ к данным только Zabbix-серверу.

Например, для Mikrotik мы переходим в IP - SNMP и включаем протокол установкой флага Enabled, а в поле Trap Version ставим 2.

Zabbix-PostgreSQL-TimescaleDB-Install-008.png

Затем нажимаем кнопку Communities и для дефолтного значения в поле Addresses устанавливаем адрес вашего Zabbix-сервера, в нашем случае это 192.168.72.111.

Zabbix-PostgreSQL-TimescaleDB-Install-009.pngТакже не забываем разрешить входящие подключения на UDP 161, 162 в брандмауэре.

Добавление узлов мониторинга в Zabbix

Открываем веб-интерфейс Zabbix и переходим в Мониторинг - Узлы сети, справа вверху выбираем Создать узел сети и начинаем заполнять значения во всплывающем окне.

Прежде всего укажем имя узла, для работы активных проверок оно должно соответствовать Hostname в агенте. Далее выберем шаблон, по умолчанию поставляются шаблоны для большого числа систем и оборудования, в нашем случае выбираем Windows by Zabbix agent.

Затем выбираем группу узлов сети. Группы мы можем выбирать как из уже существующих, так и создавать новые, для этого вполне достаточно указать здесь желаемое название.

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

Zabbix-PostgreSQL-TimescaleDB-Install-010.pngДля Linux узла все остается тоже самое, только меняется тип шаблона - Linux by Zabbix agent. Через некоторое время вы набьете руку и добавление узлов перестанет быть чем-то сложным.

Чтобы добавить SNMP-узел проделываем все тоже самое, только выбираем шаблон для нужного типа оборудования, в нашем случае Mikrotik by SNMP, добавляем интерфейс с типом SNMP, где указываем адрес устройства и версию протокола. В остальном отличия отсутствуют.

Zabbix-PostgreSQL-TimescaleDB-Install-011.png

Теперь ненадолго оставим нашу систему в покое и сходим выпить кофе, чтобы она успела собрать некоторые данные. Вернувшись, можем увидеть список из добавленных узлов и числа в колонках, показывающее какое количество данных, графиков или панелей доступно.

Zabbix-PostgreSQL-TimescaleDB-Install-012.pngС графиками все понятно, в них мы можем посмотреть изменение собираемых метрик в разрезе временного промежутка:

Zabbix-PostgreSQL-TimescaleDB-Install-013.pngА вот панели - это нововведение 7-й версии, они представляют специально преднастроенные экраны, на которые выведены сразу несколько показателей, объединенных какой-то общей темой, например, сетевые показатели или метрики производительности. Ниже показана панель System performance для Windows.

Zabbix-PostgreSQL-TimescaleDB-Install-014.pngНу и наконец проверим срабатывание триггеров, для этого просто перезагрузим один из узлов и в разделе проблемы сразу увидим сообщение с типом Предупреждение. Здесь мы видим узел, на котором зарегистрирована проблема, характер проблемы и ее длительность.

Zabbix-PostgreSQL-TimescaleDB-Install-015.pngВ данном случае никакой реакции не требуется, проблема будет закрыта автоматически по истечении 10 минут. Наша же цель была убедиться в том, что метрики собираются и триггеры работают.

На этом установка и настройка сервера Zabbix завершена, его настройку и эксплуатацию мы рассмотрим в следующих статьях.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments