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

4.1 Требования к программному обеспечению

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

Потребуется следующее программное обеспечение для компилирования Zabbix:

Одна из следующих СУБД:

  • Файлы заголовков и библиотек IBM DB2

Требуются файлы заголовков и библиотек из CLI.

  • Файлы заголовков и библиотек MySQL
  • Файлы заголовков и библиотеки Oracle

Требуются файлы заголовков и библиотек из OCI.

  • Файлы заголовков и библиотек PostgreSQL
  • Файлы заголовков и библиотек SQLite

Обычно являются частью пакетов mysql-dev, postgresql-dev, sqlite3-dev.

Файлы заголовков и библиотек NET-SNMP (или UCD-SNMP). Требуется для поддержки SNMP. Опционально.

Файлы заголовков и библиотек Iksemel. Требуется для поддержки отправки сообщений Jabber. Опционально.

Файлы заголовков и библиотек Libcurl. Требуется для модуля Веб мониторинга. Опционально.

Компилятор C. GNU C является лучшим выбором для открытых платформ. Другие (HP, IBM) C компиляторы также могут быть использованы.

GNU Make. GNU make требуется для создания Zabbix Makefiles.

4.2 Структура дистрибутива Zabbix

  • src

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

  • src/zabbix_server

Папка содержит Makefile и исходные коды для zabbix_server.

  • src/zabbix_agent

Папка содержит Makefile и исходные коды для zabbix_agent и zabbix_agentd.

  • src/zabbix_get

Папка содержит Makefile и исходные коды для zabbix_get.

  • src/zabbix_sender

Папка содержит Makefile и исходные коды для zabbix_sender.

  • src/libs

Папка содержит Makefile и исходные коды для общих библиотек процессов Zabbix.

  • include

Папка содержит файлы include Zabbix.

  • misc
    • misc/init.d

Папка содержит скрипты автозапуска для разных платформ.

  • frontends
    • frontends/php

Папка содержит файлы для Веб-интерфейса PHP.

  • create

Папка содержит SQL скрипт для первичного создания базы данных.

  • create/schema

Папка содержит схемы создания базы данных.

  • create/data

Папка содержит данные для первичного создания базы данных.

  • upgrades

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

4.3 Zabbix сервер

На стороне сервера

Шаг 1

Создайте аккаунт суперпользователя Zabbix.

Сервер будет работать под этим пользователем. Для использования в производственной среде вы должны создать выделенный непривилегированный аккаунт (обычно используется 'zabbix'). Запуск Zabbix из под 'root','bin', или из под любых других аккаунтов со специальными правами может представлять угрозу безопасности. Не делайте этого!

Процесс Zabbix сервера (zabbix_server) защищен от запуска из под аккаунта root.

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

Шаг 2

Распакуйте исходные коды Zabbix

shell> tar -zxf zabbix-1.8.tar.gz
Шаг 3

Создайте базу данных для Zabbix

С исходными кодами Zabbix предоставляются SQL скрипты, которые можно использовать для создания требуемой схемы в базе данных, а также для заполнениями настройками по умолчанию. Есть отдельные скрипты для IBM DB2, MySQL, Oracle, PostgreSQL и SQLite.

Для IBM DB2:

shell> db2 "create database zabbix using codeset utf-8 territory us pagesize 32768"
       shell> cd create/schema
       shell> db2batch -d zabbix -f ibm_db2.sql
       shell> cd ../data 
       shell> db2batch -d zabbix -f data.sql
       shell> db2batch -d zabbix -f images_ibm_db2.sql

Для MySQL:

shell> mysql -u<username> -p<password>
       mysql> create database zabbix character set utf8;
       mysql> quit;
       shell> cd create/schema
       shell> cat mysql.sql | mysql -u<username> -p<password> zabbix
       shell> cd ../data
       shell> cat data.sql | mysql -u<username> -p<password> zabbix
       shell> cat images_mysql.sql | mysql -u<username> -p<password> zabbix

Для Oracle (мы предполагаем, что пользователь zabbix с паролем password существует и имеет права на создание объектов в базе данных в сервисе ORCL):

shell> cd create

Скопируйте папку data/images куда-нибудь на сервер oracle, например /home/oracle:

shell> scp -r data/images user@host:/home/oracle 

Измените файл data/images_oracle.sql и установите переменную images_dir в "/home/oracle/images":

CREATE OR REPLACE DIRECTORY image_dir AS '/home/oracle/images'

Выполните для импорта данных:

shell> sqlplus zabbix/password@host/ORCL

Zabbix требует набор символов UTF8 в базе данных. Если база данных не в UTF8, её возможно сконвертировать запустив: ALTER DATABASE NATIONAL CHARACTER SET UTF8;

Для PostgreSQL:

shell> psql -U <username>
       psql> create database zabbix; 
       psql> \q 
       shell> cd create/schema 
       shell> cat postgresql.sql | psql -U <username> zabbix 
       shell> cd ../data 
       shell> cat data.sql | psql -U <username> zabbix
       shell> cat images_pgsql.sql | psql -U <username> zabbix

Для SQLite:

shell> cd create/schema
       shell> cat sqlite.sql | sqlite3 /var/lib/sqlite/zabbix.db 
       shell> cd ../data 
       shell> cat data.sql | sqlite3 /var/lib/sqlite/zabbix.db
       shell> cat images_sqlite3.sql | sqlite3 /var/lib/sqlite/zabbix.db
Шаг 4

Сконфигурируйте и скомпилируйте исходные коды для вашей системы

Исходные коды должны быть скомпилированы как для сервера (машина мониторинга), так и для клиентов (машины, которые мониторятся). Для конфигурирования исходных кодов для сервера вы должны указать какая база данных будет использоваться.

shell> ./configure --enable-server --with-ibm-db2 --with-net-snmp --with-jabber --with-libcurl # для IBM DB2 + Jabber + Веб-мониторинг

или

shell> ./configure --enable-server --with-mysql --with-net-snmp --with-jabber --with-libcurl # для MySQL + Jabber + Веб-мониторинг

или

shell> ./configure --enable-server --with-oracle --with-net-snmp --with-jabber --with-libcurl # для Oracle + Jabber + Веб-мониторинг

или

shell> ./configure --enable-server --with-pgsql --with-net-snmp --with-jabber --with-libcurl # для PostgreSQL + Jabber + Веб-мониторинг

или

shell> ./configure --enable-server --with-sqlite3 --with-net-snmp --with-jabber --with-libcurl # для SQLite3 + Jabber + Веб-мониторинг

Используйте флаг --with-ibm-db2 чтобы указать расположение CLI API.
Используйте флаг --with-oracle чтобы указать расположение OCI API.

Флаг --with-ucd-snmp может быть использован вместо флага --with-net-snmp. Если поддержка SNMP не требуется, оба флага --with-net-snmp и --with-ucd-snmp можно пропустить.

Однако, если вы хотите скомпилировать исполняемые файлы клиента вместе с исполняемыми файлами сервера, запустите:

shell> ./configure  --enable-server --enable-agent --with-mysql --with-net-snmp --with-jabber --with-libcurl

Используйте флаг --enable-static для статической линковки библиотек. Если вы планируете распространять скомпилированные исполняемые файлы на другие сервера, вы должны использовать этот флаг чтобы приложения могли работать без требуемых библиотек. Флаг --enable-static не работает под ОС Solaris.

Шаг 5

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

shell> make install

По умолчанию make install устанавливает все файлы в папки /usr/local/sbin, /usr/local/lib и т.д.. Убедитесь, что у вас хватает полномочий для записи в эти папки.

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

Шаг 6

Настройте /etc/services

Этот шаг не обязательный, однако рекомендуемый. На стороне клиента (машина, которая мониторится), добавьте следующие строки в /etc/services:

zabbix-agent    10050/tcp  Zabbix Agent
       zabbix-agent    10050/udp  Zabbix Agent
       zabbix-trapper  10051/tcp  Zabbix Trapper
       zabbix-trapper  10051/udp  Zabbix Trapper 

Обратите внимание, что номера портов являются официальными портами Zabbix зарегистрированными в IANA.

Шаг 7

Настройте /etc/inetd.conf

Если вы планируете использовать zabbix_agent вместо рекомендуемого zabbix_agentd, вы должны добавить следующие строки:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Перезапустите inetd

shell> killall -HUP inetd
Шаг 8

Создайте директорию, где будут хранится конфигурационные файлы

mkdir /etc/zabbix
Шаг 9

Настройте /etc/zabbix/zabbix_agentd.conf

Вы должны настроить этот файл для каждого узла сети где установлен zabbix_agentd. Файл должен содержать IP адрес Zabbix сервера. Соединения с другими хостами будут запрещены. Вы можете использовать файл misc/conf/zabbix_agentd.conf в качестве примера.

Шаг 10

Настройте /etc/zabbix/zabbix_server.conf

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

Вы можете использовать misc/conf/zabbix_server.conf в качестве примера.

Шаг 11

Запустите процессы сервера

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

shell> cd sbin
       shell> ./zabbix_server
Шаг 12

Запустите агентов

Запустите zabbix_agentd на нужных узлах сети.

shell> cd sbin
       shell> ./zabbix_agentd

4.4 Прокси Zabbix

Прокси Zabbix - это специальный демон. Он не требуется для запуска процесса сбора информации в обычном случае.

Шаг 1

Создайте аккаунт суперпользователя Zabbix

Прокси будет работать под этим пользователем. Для использования в производственной среде вы должны создать выделенный непривилегированный аккаунт (обычно используется 'zabbix'). Запуск Zabbix из под 'root','bin', или из под любых других аккаунтов со специальными правами может представлять угрозу безопасности. Не делайте этого!

Процесс Zabbix прокси (zabbix_proxy) защищен от запуска из под аккаунта root.

Шаг 2

Распакуйте исходные коды Zabbix

shell> tar -zxf zabbix-1.8.tar.gz
Step 3

Создайте базу данных для Zabbix. Опционально.

::: noteclassic Процесс Zabbix прокси автоматически создает базу данных при первом запуске, если она еще не существует. Иначе он будет использовать существующую базу данных. Поддержка автоматического создания базы данных поддерживается только для SQLite. ::: С исходными кодами Zabbix поставляются SQL скрипты, которые можно использовать для создания требуемой схемы в базе данных. Имеются отдельные скрипты для IBM DB2, MySQL, Oracle, PostgreSQL и SQLite.

Для IBM DB2:

shell> db2 "create database zabbix using codeset utf-8 territory us pagesize 32768"
       shell> cd create/schema
       shell> db2batch -d zabbix -f ibm_db2.sql

Для MySQL:

shell> mysql -u<username> -p<password>
       mysql> create database zabbix character set utf8; 
       mysql> quit; 
       shell> cd create/schema
       shell> cat mysql.sql | mysql -u<username> -p<password> zabbix

Для Oracle (мы предполагаем, что пользователь zabbix с паролем password существует и имеет права на создание объектов в базе данных):

shell> cd create/schema 
       shell> cat oracle.sql | sqlplus zabbix/password >out.log

Проверьте файл out.log для поиска возможных ошибок. Zabbix требует набор символов UTF8 в базе данных. Если база данных не в UTF8, её возможно сконвертировать запустив: ALTER DATABASE NATIONAL CHARACTER SET UTF8;

Для PostgreSQL:

shell> psql -U <username>
       psql> create database zabbix; 
       psql> \q 
       shell> cd create/schema 
       shell> cat postgresql.sql | psql -U <username> zabbix 

Для SQLite:

shell> cd create/schema
       shell> cat sqlite.sql | sqlite3 /var/lib/sqlite/zabbix.db 

База данных будет автоматически создана, если еще не существует.

Шаг 4

Сконфигурируйте и скомпилируйте исходные коды для вашей системы

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

shell> ./configure --enable-proxy --with-ibm-db2 --with-net-snmp # для IBM DB2 + мониторинг по SNMP

или

shell> ./configure --enable-proxy --with-mysql --with-net-snmp # для MySQL + мониторинг по SNMP

или

shell> ./configure --enable-proxy --with-pgsql --with-net-snmp # для PostgreSQL  + мониторинг по SNMP

или

shell> ./configure --enable-proxy --with-oracle --with-net-snmp –with-libcurl # для Oracle + мониторинг по SNMP

или

shell> ./configure --enable-proxy --with-sqlite3 --with-net-snmp # for SQLite3 + SNMP monitoring

Используйте флаг --with-ibm-db2 для указания расположения CLI API.
Используйте флаг --with-oracle для указания расположения OCI API.

Используйте флаг --enable-static для статической линковки библиотек. Если вы планируете распространять скомпилированные исполняемые файлы на другие хосты, вы должны использовать этот флаг чтобы приложения могли работать без требуемых библиотек. Флаг --enable-static не работает под ОС Solaris. Флаг --with-ucd-snmp может быть использован вместо флага --with-net-snmp. Если поддержка SNMP не требуется, оба флага --with-net-snmp и --with-ucd-snmp можно пропустить.

Однако, если вы хотите скомпилировать исполняемые файлы клиента вместе с исполняемыми файлами прокси, запустите:

shell> ./configure --enable-proxy --enable-agent --with-mysql --with-net-snmp

Флаг --enable-static может быть использован для принудительной статической линковки.

Шаг 5

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

shell> make install

По умолчанию, make install устанавливает все файлы в папки /usr/local/sbin, /usr/local/lib и т.д.. Вы можете указать другой путь установки,который отличается от /usr/local, используя флаг --prefix

Шаг 6

Настройте /etc/services

Этот шаг опциональный, однако рекомендуемый. На стороне клиента (машина, которая мониторится), добавьте следующие строки в /etc/services:

zabbix_agent 10050/tcp
       zabbix_trap 10051/tcp
Шаг 7

Настройте /etc/inetd.conf

Если вы планируете использовать zabbix_agent вместо рекомендуемого zabbix_agentd, вы должны добавить следующие строки:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Перезапустите inetd

shell> killall -HUP inetd

Измените настройки по умолчанию в файлах конфигурации

Шаг 8

Настройте /etc/zabbix/zabbix_proxy.conf

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

Вы можете использовать misc/conf/zabbix_proxy.conf в качестве примера.

Шан 9

Запустите процесс Zabbix прокси

Запустите zabbix_proxy:

shell> cd sbin
       shell> ./zabbix_proxy

4.5 Zabbix агент

На стороне клиента

Шаг 1

Создайте аккаунт суперпользователя Zabbix

Агент будет работать под этим пользователем. Для использования в производственной среде вы должны создать выделенный непривилегированный аккаунт (обычно используется 'zabbix'). Zabbix агенты защищены от запуска из под аккаунта root.

Шаг 2

Распакуйте исходные коды Zabbix

shell> tar -zxf zabbix-1.8.tar.gz
Шаг 3

Сконфигурируйте и скомпилируйте исходные коды для вашей системы

Исходные коды должны быть скомпилированы только для клиента.

Для настройки исходных кодов клиента выполните:

shell> ./configure --enable-agent

Используйте флаг -–enable-static для статической линковки библиотек. Если вы планируете распространять скомпилированные исполняемые файлы на другие хосты, вы должны использовать этот флаг чтобы приложения могли работать без требуемых библиотек.

Шаг 4

Соберите агента

shell> make
Шан 5

Настройте /etc/services

Этот шаг опциональный, однако рекомендуемый.

На стороне клиента (наблюдаемый сервер), добавьте следующие строки в /etc/services:

zabbix_agent 10050/tcp 
       zabbix_trap 10051/tcp 
Шаг 6

Настройте /etc/inetd.conf

Если вы планируете использовать zabbix_agent вместо рекомендуемого zabbix_agentd, вы должны добавить следующие строки:

zabbix_agent stream tcp nowait.3600 zabbix /opt/zabbix/bin/zabbix_agent

Перезапустите inetd

shell> killall -HUP inetd
Шаг 7

Создайте директорию, где будут хранится конфигурационные файлы

mkdir /etc/zabbix
Шаг 8

Настройте /etc/zabbix/zabbix_agentd.conf

Вы должны настроить этот файл для каждого узла сети где установлен zabbix_agentd. Файл должен содержать IP адрес Zabbix сервера. Соединения с другими хостами будут запрещены. Вы можете использовать misc/conf/zabbix_agentd.conf в качестве примера.

Шаг 9

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

shell> /opt/zabbix/bin/zabbix_agentd

Вы не должны запускать zabbix_agentd если решили использовать zabbix_agent !

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

4.6 Веб-интерфейс Zabbix

Шаг 0

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

Общепринятые места размещения папок HTML документов для веб-сервера Apache составляют:

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

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

mkdir <htdocs>/zabbix
       cd frontends/php
       cp -a . <htdocs>/zabbix

При обновлении вы просто заменяете содержимое <htdocs>/zabbix новыми файлами копированием поверх из папки frontends/php, из этого шага.

Шаг 1

Введите в браузер ссылку на Zabbix.

Шаг 2

Прочитайте и согласитесь с GPL v2.

Шаг 3

Убедитесь, что все требования к программному обеспечению выполнены.

Требование Минимальное значение Описание
Версия PHP 5.0
Лимит памяти PHP 8МБ В php.ini:
memory_limit = 128M
Максимальный размер PHP Post 8МБ В php.ini:
post_max_size = 8M
Максимальный размер загружаемых файлов в PHP 16MB В php.ini:
upload_max_filesize = 16MB
Максимальное время выполнения PHP 300 секунд В php.ini:
max_execution_time = 300
Максимальное время input PHP 300 секунд В php.ini:
max_input_time = 300
Часовой пояс в PHP В php.ini:
date.timezone
Варианты часовых поясов здесь
Поддержка базы данных в PHP скриптах одна из: IBM DB2, MySQL, Oracle, PostgreSQL, SQLite Один из следующих модулей должен быть установлен:
ibm_db2, php-mysql, oci8, php-pgsql, php-sqlite3
**PHP BC math ** Любой Скомпилированный с PHP5.
поддержка PHP многобайтовости Любой Скомпилированный с PHP5 или отдельным модулем php-mbstring.
**PHP MB String ** Любой Скомпилированный с PHP5.
**PHP Sockets ** Любой Скомпилированный с PHP5.
**PHP Session ** Любой Скомпилированный с PHP5.
Версия GD 2.0 или выше Модуль php-gd.
Форматы изображений По крайней мере PNG Модуль php-gd.
**Модуль libxml ** Любой Скомпилированный с PHP5.
**Модуль ctype ** Любой Скомпилированный с PHP5.
Шаг 4

Сконфигурируйте параметры подключения к базе данных. База данных Zabbix уже должна быть создана.

Шаг 5

Введите подробные сведения о сервере Zabbix.

Шаг 6

Просмотрите результат настроек.

Шаг 7

Загрузите файл конфигурации и поместите его в папку conf/.

Шаг 8

Завершение установки.

Шаг 9

Только для распределенного мониторинга!

Если вы используете распределенный мониторинг вы должны один раз выполнить:

shell> ./zabbix_server –n <nodeid>

где Node ID уникальный идентификатор Ноды. Например:

shell> ./zabbix_server –n 1

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

Шаг 10

Веб-интерфейс Zabbix готов! По умолчанию имя пользователя Admin, пароль zabbix.