1 Создание базы данных

Обзор

База данных Zabbix должна быть создана в процессе установки Zabbix сервера или прокси.

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

Файлы schema.sql, images.sql and data.sql размещены в подпапке database исходных кодов Zabbix. Если Zabbix установлен из распространяемых пакетов, обратитесь к документации распространителя.

Для базы данных Zabbix прокси необходимо импортировать только schema.sql (без images.sql и data.sql)

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

MySQL

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

shell> mysql -uroot -p<пароль>
       mysql> create database zabbix character set utf8 collate utf8_bin;
       mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<пароль>';
       mysql> quit;

Если вы используете пакеты Zabbix продолжите ознакомление с инструкциями для Debian/Ubuntu или RHEL/CentOS, чтобы импортировать данные в базу данных.

shell> cd database/mysql
       shell> mysql -uzabbix -p<пароль> zabbix < schema.sql
       # остановитесь здесь, если вы создаете базу данных для Zabbix прокси
       shell> mysql -uzabbix -p<пароль> zabbix < images.sql
       shell> mysql -uzabbix -p<пароль> zabbix < data.sql

PostgreSQL

У вас должна быть база данных с правами создания объектов базы данных. Следующая команда командной оболочки создаст zabbix. Задайте пароль при появлении запроса и затем повторите этот пароль (обратите внимание, что сначала возможно у вас будет запрошен пароль для sudo):

shell> sudo -u postgres createuser --pwprompt zabbix

Теперь мы настроим базу данных zabbix (последний параметр) с ранее созданным пользователем в качестве владельца (-O zabbix) и импортируем изначальную схему и данные (предполагается, что вы находитесь в корневой папке исходных кодов Zabbix):

shell> sudo -u postgres createdb -O zabbix -E Unicode -T template0 zabbix

Если вы используете пакеты Zabbix продолжите ознакомление с инструкциями для Debian/Ubuntu или RHEL/CentOS, чтобы импортировать данные в базу данных.

shell> cd database/postgresql
       shell> cat schema.sql | sudo -u zabbix psql zabbix
       # остановитесь здесь, если вы создаете базу данных для Zabbix прокси.
       shell> cat images.sql | sudo -u zabbix psql zabbix
       shell> cat data.sql | sudo -u zabbix psql zabbix

Приведенные выше команды представлены как пример, который будет работать на большинстве GNU/Linux инсталляций. Вы можете использовать другие команды, например "psql -U <username>" зависит от того каким образом настроена ваша система/база данных. Если у вас появились проблемы с настройкой базы данных, пожалуйста, проконсультируйтесь с вашим администратором баз данных.

TimescaleDB

В Zabbix 4.2.0 на экспериментальной основе добавлена поддержка TimescaleDB.

В настоящее время TimescaleDB не поддерживается на стороне Zabbix прокси.

Мы предполагаем, что расширение TimescaleDB уже установлено в базе данных (смотрите инструкции по инсталляции).

Расширение TimescaleDB также должно быть включено для конкретной БД, чтобы это сделать выполните:

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

Выполнение этой команды требует привилегии администратора базы данных.

Скрипт timescaledb.sql размещен в database/postgresql. Этот скрипт необходимо выполнить после того, как создана обычная база данных PostgreSQL с изначальными данными schema/data (смотрите раздел выше):

cat timescaledb.sql | sudo -u zabbix psql zabbix

Обратите внимание, что скрипт timescaledb.sql задает следующие параметры процессу очистки истории (с АдминистрированиеОбщиеОчистка истории):

  • Переопределить период хранения истории элементов данных
  • Переопределить период хранения динамики изменения элементов данных

В случае использования очистки истории с партиционированием для истории и динамики изменений обе эти опции необходимо активировать. Имеется возможность использовать TimescaleDB партиционирование только для динамики изменений (установив настройку Переопределить период хранения динамики изменения элементов данных) или только для истории (Переопределить период хранения истории элементов данных).

Вы возможно захотите выполнить timescaledb-tune утилиту, которая поставляется TimescaleDB, чтобы оптимизировать параметры конфигурации PostgreSQL в вашем postgresql.conf.

Oracle

Мы полагаем, что пользователь zabbix базы данных с паролем пароль уже существует и имеет права на создание объектов в ORCL службе, расположенной на хост сервере базы данных Oracle c shell пользователем пользователь, который имеет доступ в папку /tmp. Zabbix требует базу данных в Юникод кодировке и национальную кодировку UTF8. Проверьте текущие настройки:

sqlplus> select parameter,value from v$nls_parameters where parameter='NLS_CHARACTERSET' or parameter='NLS_NCHAR_CHARACTERSET';

Если вы создаете базу данных для Zabbix сервера вам необходимо поместить куда-то изображения на хост с Oracle из исходных кодов Zabbix. Скопируйте их в /tmp/zabbix_images папку на хосте с Oracle:

shell> cd /путь/к/исходным/кодам/zabbix
       shell> ssh user@oracle_host "mkdir /tmp/zabbix_images"
       shell> scp -r misc/images/png_modern user@oracle_host:/tmp/zabbix_images/

Теперь подготовьте базу данных:

shell> cd /путь/к/исходным/кодам/zabbix/database/oracle
       shell> sqlplus zabbix/пароль@oracle_host/ORCL
       sqlplus> schema.sql
       # остановитесь здесь, если вы создаете базу данных для Zabbix прокси
       sqlplus> images.sql
       sqlplus> data.sql

Пожалуйста, установите параметр инициализации CURSOR_SHARING=FORCE для лучшей производительности.

Теперь временную папку можно удалить:

shell> ssh user@oracle_host "rm -rf /tmp/zabbix_images"

IBM DB2

shell> db2 "create database zabbix using codeset utf-8 territory us pagesize 32768"
       shell> cd database/ibm_db2
       shell> db2batch -d zabbix -f schema.sql
       # остановитесь здесь, если вы создаете базу данных для Zabbix прокси
       shell> db2batch -d zabbix -f images.sql
       shell> db2batch -d zabbix -f data.sql 

Очень важно установить UTF-8 локаль Zabbix серверу, Zabbix прокси и веб-серверу с Zabbix веб-интерфейсом. В противном случае текстовая информация из Zabbix будет интерпретироваться IBM DB2 сервером как не-UTF-8 и будет дополнительно конвертироваться по пути из Zabbix в базу данных и обратно. База данных будет хранить поврежденные не-ASCII символы.

Веб-интерфейс Zabbix использует условия OFFSET и LIMIT в SQL запросах. Чтобы они работали, IBM DB2 сервер должен иметь переменную DB2_COMPATIBILITY_VECTOR заданную значением 3. Выполните следующую команду перед запуском сервера базы данных:

shell> db2set DB2_COMPATIBILITY_VECTOR=3

SQLite

Использование SQLite поддерживается только на Zabbix прокси!

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

shell> cd database/sqlite3
       shell> sqlite3 /var/lib/sqlite/zabbix.db < schema.sql

Вернуться в раздел установки.