Установка из исходного кода
Вы можете получить самую последнюю версию 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-lintmake format- отформатировать код Go с помощьюgo fmtmake 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-репозитория
исходного кода:
- Основное расположение полного репозитория: https://git.zabbix.com/scm/zbx/zabbix.git
- Ветка master и поддерживаемые выпуски также зеркалируются на Github: https://github.com/zabbix/zabbix
Для клонирования репозитория должен быть установлен 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.