5 Настройка TimescaleDB

Обзор

Zabbix поддерживает TimescaleDB - решение на основе PostgreSQL, которое автоматически разделяет данные на временные сегменты для обеспечения более высокой производительности при масштабировании.

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

Инструкции на этой странице можно использовать для создания базы данных TimescaleDB или миграции существующих таблиц PostgreSQL на TimescaleDB.

Конфигурация

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

Расширение TimescaleDB также должно быть включено для конкретной базы данных, выполнив следующую команду:

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

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

Если вы используете схему базы данных, отличную от 'public', необходимо добавить параметр SCHEMA к указанной выше команде. Например:
echo "CREATE EXTENSION IF NOT EXISTS timescaledb SCHEMA yourschema CASCADE;" | sudo -u postgres psql zabbix

Затем выполните скрипт postgresql/timescaledb.sql. Для новых установок скрипт должен быть выполнен после создания регулярной базы данных PostgreSQL с начальной схемой/данными (см. создание базы данных):

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

Пожалуйста, игнорируйте предупреждающие сообщения о том, что при выполнении скрипта timescaledb.sql на версии TimescaleDB 2.9.0 и выше не соблюдены лучшие практики. Несмотря на это предупреждение, конфигурация будет успешно завершена.

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

Скрипт timescaledb.sql устанавливает следующие параметры очистки истории:

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

Для использования разделенной очистки истории для данных и трендов оба эти параметра должны быть включены. Также можно включить переопределение отдельно — только для истории или только для трендов.

Для PostgreSQL версии 10.2 или выше и TimescaleDB версии 1.5 или выше скрипт timescaledb.sql устанавливает два дополнительных параметра:

  • Включить сжатие
  • Сжимать записи старше 7 дней

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

Все эти параметры можно изменить в разделе АдминистрированиеОчистка истории после установки.

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

Сжатие в TimescaleDB

Нативное сжатие TimescaleDB поддерживается, начиная с Zabbix 5.0 для PostgreSQL версии 10.2 или выше и TimescaleDB версии 1.5 или выше для всех таблиц Zabbix, управляемых TimescaleDB. Во время обновления или миграции на TimescaleDB начальное сжатие больших таблиц может занять много времени.

Обратите внимание, что сжатие поддерживается под лицензией Timescale Community "timescale" и не поддерживается под лицензией Apache 2.0 "apache". Если Zabbix обнаруживает, что сжатие не поддерживается, в журнал сервера Zabbix записывается предупреждающее сообщение, и пользователи не могут включить сжатие через интерфейс.

Пользователям рекомендуется ознакомиться с документацией Timescale по сжатию перед использованием этой функции.

Имейте в виду, что сжатие накладывает определенные ограничения, в частности:

  • Модификации сжатых сегментов (вставка, удаление, обновление) не допускаются.
  • Изменения схемы для сжатых таблиц не допускаются.

Настройки сжатия можно изменить в блоке Сжатие истории и трендов в разделе АдминистрированиеОчистка истории на интерфейсе Zabbix.

Параметр Значение по умолчанию Комментарии
Включить сжатие Включено Установка или снятие флажка не активирует/деактивирует сжатие немедленно. Поскольку сжатие выполняется службой очистки, изменения вступят в силу в течение времени до 2 * HousekeepingFrequency часов (устанавливается в zabbix_server.conf).

После отключения сжатия новые сегменты, которые попадают в период сжатия, не будут сжиматься. Однако все ранее сжатые данные останутся сжатыми. Чтобы распаковать ранее сжатые сегменты, следуйте инструкциям в документации Timescale.

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

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