Установка из исходного кода

Вы можете получить самую последнюю версию Zabbix, скомпилировав её из исходного кода. См. также Получение исходного кода Zabbix.

Здесь представлено пошаговое руководство по установке Zabbix из исходного кода.

Установка демонов Zabbix

1 Загрузите архив с исходным кодом

Перейдите на страницу загрузки Zabbix и загрузите архив с исходным кодом. После загрузки распакуйте исходные файлы, выполнив:

tar -zxvf zabbix-8.0.0.tar.gz

Укажите в команде правильную версию Zabbix. Она должна соответствовать имени загруженного архива.

2 Создание учетной записи пользователя

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

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

Система на базе RedHat:

groupadd --system zabbix
useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin -c "Zabbix Monitoring System" zabbix

Система на базе Debian:

addgroup --system --quiet zabbix
adduser --quiet --system --disabled-login --ingroup zabbix --home /var/lib/zabbix --no-create-home zabbix

Нет необходимости создавать отдельную учетную запись пользователя для веб-интерфейса Zabbix.

Рекомендация по безопасности

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

Запуск Zabbix от имени root, bin или любой другой учетной записи с особыми правами представляет угрозу безопасности.

Домашний каталог (необязательно)

Процессам Zabbix не требуется домашний каталог, поэтому его создание обычно не рекомендуется. Однако, если вам нужна функциональность, требующая домашнего каталога (например, хранение учетных данных MySQL в $HOME/.my.cnf), вы можете создать его с помощью команд, приведенных ниже.

В системах на базе RedHat выполните:

mkdir -m u=rwx,g=rwx,o= -p /usr/lib/zabbix
chown zabbix:zabbix /usr/lib/zabbix

В системах на базе Debian выполните:

mkdir -m u=rwx,g=rwx,o= -p /var/lib/zabbix
chown zabbix:zabbix /var/lib/zabbix
3 Создание базы данных Zabbix

Для демонов Zabbix сервера и прокси, а также веб-интерфейса Zabbix требуется база данных. Она не нужна для запуска Zabbix агента.

SQL скрипты предоставляются для создания схемы базы данных и вставки набора данных. Базе данных Zabbix прокси требуется только схема, тогда как базе данных Zabbix сервера помимо схемы также требуется набор данных.

После создания базы данных Zabbix переходите к следующим шагам компиляции Zabbix.

4 Настройка исходного кода

Для сборки Zabbix сервер, Zabbix прокси или Zabbix агент требуется C99 с расширениями GNU. Эту версию можно явно указать, задав CFLAGS="-std=gnu99":

export CFLAGS="-std=gnu99"

Если установка выполняется из репозитория Zabbix Git, необходимо сначала выполнить:\

./bootstrap.sh

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

Чтобы увидеть все поддерживаемые параметры конфигурации, в распакованном каталоге с исходным кодом Zabbix выполните:

./configure --help

Чтобы настроить исходный код для Zabbix сервер и агент, можно выполнить примерно такую команду:

./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-ares

Чтобы настроить исходный код для Zabbix сервер (с PostgreSQL и т. д.), можно выполнить:

./configure --enable-server --with-postgresql --with-net-snmp

Чтобы настроить исходный код для Zabbix прокси (с SQLite и т. д.), можно выполнить:

./configure --prefix=/usr --enable-proxy --with-net-snmp --with-sqlite3 --with-ssh2

Чтобы настроить исходный код для Zabbix агент, можно выполнить:

./configure --enable-agent

или, для Zabbix agent 2:

./configure --enable-agent2

Для сборки Zabbix agent 2 должна быть установлена поддерживаемая версия Go.

Примечания по параметрам компиляции:

  • --enable-agent — компилирует Zabbix агент, а также утилиты командной строки Zabbix get и Zabbix sender.
  • --with-libcurl — требуется для мониторинга виртуальных машин, аутентификации SMTP и элементов данных Zabbix агент web.page.*. См. также: Требования (libcurl).
  • --with-libxml2 — требуется для мониторинга виртуальных машин.
  • --with-libpcre2[=DIR] — Zabbix всегда компилируется с библиотекой PCRE2; этот параметр позволяет только указать пользовательский путь установки PCRE2.
  • --with-mysql=/path/to/mysql_config — указывает путь к конфигурации конкретной клиентской библиотеки MySQL. Полезно, если установлено несколько версий MySQL или MariaDB.
  • --enable-static — статически компонует библиотеки (не поддерживается в Solaris). Используйте этот параметр, если планируете распространять скомпилированные двоичные файлы в системы без необходимых библиотек. Не рекомендуется при сборке Zabbix сервер. Для статической сборки сервера требуется статическая версия каждой внешней библиотеки. Скрипт configure не проверяет это автоматически.
  • --with-stacksize=<value> — задаёт размер стека на поток в килобайтах (например, --with-stacksize=512). Вы можете увеличить это значение, если Zabbix аварийно завершается или зависает из-за переполнения стека (например, во время предобработки в системах с низкими значениями ограничения размера стека потока по умолчанию).

Если ./configure завершается с ошибкой из-за отсутствующих библиотек или других проблем, проверьте файл config.log для получения подробной информации об ошибке.

Например, если отсутствует libssl, непосредственное сообщение об ошибке может вводить в заблуждение:

checking for main in -lmysqlclient... no
configure: error: Not found mysqlclient library

В этом случае config.log показывает фактическую причину:

/usr/bin/ld: cannot find -lssl
/usr/bin/ld: cannot find -lcrypto

См. также:

5 Сборка и установка всего

Если установка выполняется из репозитория Zabbix Git, необходимо сначала выполнить:\

$ make dbschema

make install

Этот шаг должен выполняться пользователем с достаточными правами (обычно 'root' или с использованием sudo).

При выполнении make install по умолчанию будут установлены двоичные файлы демонов (zabbix_server, zabbix_agentd, zabbix_proxy) в /usr/local/sbin, а двоичные файлы клиента (zabbix_get, zabbix_sender) — в /usr/local/bin.

Чтобы указать другое расположение вместо /usr/local, используйте ключ --prefix на предыдущем шаге настройки исходных кодов, например --prefix=/home/zabbix. В этом случае двоичные файлы демонов будут установлены в <prefix>/sbin, а утилиты — в <prefix>/bin. Man-страницы будут установлены в <prefix>/share.

6 Просмотрите и отредактируйте файлы конфигурации
  • отредактируйте файл конфигурации агента Zabbix /usr/local/etc/zabbix_agentd.conf

Вам необходимо настроить этот файл для каждого узла сети, на котором установлен zabbix_agentd.

В файле необходимо указать IP-адрес сервера Zabbix. Подключения от других узлов сети будут отклонены.

  • отредактируйте файл конфигурации сервера Zabbix /usr/local/etc/zabbix_server.conf

Необходимо указать имя базы данных, пользователя и пароль (если используется).

Остальные параметры подойдут со значениями по умолчанию, если у вас небольшая установка (до десяти отслеживаемых узлов сети). Однако параметры по умолчанию следует изменить, если вы хотите максимально повысить производительность сервера Zabbix (или прокси).

  • если вы установили прокси Zabbix, отредактируйте файл конфигурации прокси /usr/local/etc/zabbix_proxy.conf

Необходимо указать IP-адрес сервера и имя узла сети прокси (оно должно быть известно серверу), а также имя базы данных, пользователя и пароль (если используется).

При использовании SQLite необходимо указать полный путь к файлу базы данных; пользователь БД и пароль не требуются.

7 Запуск демонов

Запустите zabbix_server на стороне сервера.

zabbix_server

Убедитесь, что ваша система позволяет выделить 36 МБ (или немного больше) разделяемой памяти, в противном случае сервер может не запуститься, и вы увидите "Cannot allocate shared memory for <type of cache>." в файле журнала сервера. Это может произойти в FreeBSD, Solaris 8.\

Запустите zabbix_agentd на всех контролируемых машинах.

zabbix_agentd

Убедитесь, что ваша система позволяет выделить 2 МБ разделяемой памяти, в противном случае агент может не запуститься, и вы увидите "Cannot allocate shared memory for collector." в файле журнала агента. Это может произойти в Solaris 8.

Если вы установили Zabbix прокси, запустите zabbix_proxy.

zabbix_proxy

Установка веб-интерфейса Zabbix

Копирование PHP-файлов

Веб-интерфейс Zabbix написан на PHP, поэтому для его запуска требуется веб-сервер с поддержкой PHP. Установка выполняется простым копированием PHP-файлов из каталога ui в каталог HTML-документов веб-сервера.

Распространённые расположения каталогов HTML-документов для веб-серверов Apache включают:

  • /usr/local/apache2/htdocs (каталог по умолчанию при установке Apache из исходного кода)
  • /srv/www/htdocs (OpenSUSE, SLES)
  • /var/www/html (Debian, Ubuntu, Fedora, RHEL)

Рекомендуется использовать подкаталог вместо корневого HTML-каталога. Чтобы создать подкаталог и скопировать в него файлы веб-интерфейса Zabbix, выполните следующие команды, заменив <htdocs> на фактический каталог:

mkdir <htdocs>/zabbix
cd ui
cp -a . <htdocs>/zabbix

Если планируется использовать любой другой язык, кроме английского, инструкции см. в разделе Установка дополнительных языков веб-интерфейса.

Установка веб-интерфейса

Пожалуйста, смотрите страницу Установка веб-интерфейса для получения информации о мастере установки веб-интерфейса Zabbix.

Установка загружаемых плагинов Zabbix агент 2

Установка загружаемых плагинов Zabbix агент 2 требуется только в том случае, если вы хотите выполнять мониторинг целей, не поддерживаемых встроенными плагинами (например, серверов или кластеров MongoDB, PostgreSQL и его форков и т. д.). См. полный список загружаемых плагинов и встроенных плагинов.

Перед установкой плагина, пожалуйста, ознакомьтесь с его файлом README. Он может содержать особые требования и инструкции по установке.

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

Чтобы скомпилировать плагин, перейдите в каталог с распакованным плагином и выполните make:

make

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

Исполняемый файл плагина может быть размещен где угодно, если он может быть загружен Zabbix агент 2. Укажите путь к бинарному файлу плагина в файле конфигурации плагина, например в postgresql.conf для плагина PostgreSQL:

Plugins.PostgreSQL.System.Path=/path/to/executable/zabbix-agent2-plugin-postgresql

Путь к файлу конфигурации плагина должен быть указан в параметре Include файла конфигурации Zabbix агент 2:

Include=/path/to/plugin/configuration/file/postgresql.conf

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

Загружаемые плагины, предоставляемые Zabbix, используют простые makefile со следующими целями сборки:

  • make - собрать плагин
  • make clean - удалить все файлы, созданные при сборке плагина
  • make check - запустить самотестирование (требуется реальная цель мониторинга, например база данных PostgreSQL)
  • make style - проверить стиль кода Go с помощью golangci-lint
  • make format - отформатировать код Go с помощью go fmt
  • make dist - создать архив исходного кода, включающий все зависимости

Установка Java gateway

Устанавливать Java gateway требуется только в том случае, если вы хотите осуществлять мониторинг JMX-приложений. Java gateway является легковесным и не требует базы данных.

Для установки из исходных кодов сначала загрузите и распакуйте архив с исходным кодом.

Чтобы скомпилировать Java gateway, запустите скрипт ./configure с параметром --enable-java. Рекомендуется указать параметр --prefix, чтобы задать путь установки, отличный от используемого по умолчанию /usr/local, поскольку установка Java gateway создаст целое дерево каталогов, а не только один исполняемый файл.

./configure --enable-java --prefix=$PREFIX

Чтобы скомпилировать и упаковать Java gateway в JAR-файл, выполните make. Обратите внимание, что для этого шага вам потребуются исполняемые файлы javac и jar в вашем пути.

make

Теперь у вас есть файл zabbix-java-gateway-$VERSION.jar в src/zabbix_java/bin. Если вам удобно запускать Java gateway из src/zabbix_java в каталоге дистрибутива, то вы можете перейти к инструкциям по настройке и запуску Java gateway. В противном случае убедитесь, что у вас достаточно прав, и выполните make install.

make install

Перейдите к разделу настройки, чтобы получить более подробную информацию о настройке и запуске Java gateway.

Установка Zabbix web service

Установка Zabbix web service требуется только в том случае, если вы хотите использовать запланированные отчеты.

Для установки из исходного кода сначала загрузите и распакуйте архив с исходным кодом.

Чтобы скомпилировать Zabbix web service, запустите скрипт ./configure с параметром --enable-webservice.

Для сборки Zabbix web service должна быть установлена поддерживаемая версия Go.

Запустите zabbix_web_service на машине, где установлен веб-сервис:

zabbix_web_service

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

Получение исходного кода Zabbix

Существует несколько способов получить исходный код Zabbix:

  • Вы можете скачать выпущенные стабильные версии с официального сайта Zabbix
  • Вы можете скачать nightly-сборки со страницы разработчиков на официальном сайте Zabbix
  • Вы можете получить последнюю разрабатываемую версию из Git-репозитория исходного кода:

Для клонирования репозитория должен быть установлен Git-клиент. Официальный пакет клиента Git для командной строки в дистрибутивах обычно называется git. Чтобы установить его, например, в Debian/Ubuntu, выполните:

sudo apt-get update
sudo apt-get install git

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

git clone https://git.zabbix.com/scm/zbx/zabbix.git

Проблемы компиляции

Ниже перечислены известные проблемы, связанные с компиляцией Zabbix из исходных кодов. Во всех остальных случаях смотрите страницу Известные проблемы.

Библиотека в нестандартном расположении

Zabbix позволяет указать библиотеку, расположенную в нестандартном месте. В примере ниже Zabbix запустит curl-config из указанного нестандартного расположения и использует его вывод, чтобы определить, какую libcurl следует использовать.

$ ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Это будет работать, если в системе установлена только одна libcurl, но может не сработать, если другая libcurl установлена в стандартном расположении (например, менеджером пакетов). Такая ситуация возникает, когда для Zabbix требуется более новая версия библиотеки, а более старая — для других приложений.

Поэтому указание компонента в нестандартном расположении не всегда будет работать, если тот же компонент также существует в стандартном расположении.

Например, если вы используете более новую libcurl, установленную в /usr/local, при этом пакет libcurl по-прежнему установлен, Zabbix может выбрать неправильную библиотеку, и компиляция завершится ошибкой:

usr/bin/ld: ../../src/libs/zbxhttp/libzbxhttp.a(http.o): in function 'zbx_http_convert_to_utf8':
/tmp/zabbix-master/src/libs/zbxhttp/http.c:957: undefined reference to 'curl_easy_header'
collect2: error: ld returned 1 exit status

Здесь функция curl_easy_header() недоступна в более старой /usr/lib/x86_64-linux-gnu/libcurl.so, но доступна в более новой /usr/local/lib/libcurl.so.

Проблема связана с порядком флагов компоновщика, и одним из решений является указание полного пути к библиотеке в переменной LDFLAGS:

$ LDFLAGS="-Wl,--no-as-needed /usr/local/lib/libcurl.so" ./configure --enable-server --with-mysql --with-libcurl=/usr/local/bin/curl-config

Обратите внимание на параметр -Wl,--no-as-needed, который может потребоваться в некоторых системах (см. также: параметры компоновки по умолчанию в системах на базе Debian-based).

Слишком маленький размер стека в некоторых системах

Если Zabbix аварийно завершается или зависает из-за переполнения стека, вы можете увеличить размер стека для каждого потока с помощью опции --with-stacksize при настройке исходного кода. Эта проблема может возникать в системах с низкими значениями ограничения размера стека потока по умолчанию, особенно во время предобработки, когда создаётся несколько потоков.

Следующий пример задаёт размер стека 512 КБ для каждого потока:

./configure --enable-server --with-mysql --with-stacksize=512

Вы можете проверить ограничения размера стека потока в системе во время выполнения с помощью команды ulimit -s в системах на базе Linux.