Это перевод страницы документации с английского языка. Помогите нам сделать его лучше.

6 Настройка 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/schema.sql. Скрипт должен быть выполнен после создания регулярной базы данных PostgreSQL с начальной схемой/данными (см. создание базы данных).

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

Для существующих установок при обновлении до Zabbix 7.0.0 или 7.0.2 с предыдущих версий (например, с 6.0 до 7.0.0 или с 6.4 до 7.0.2, или с 7.0.0 до 7.0.2):

  1. Запустите сервер Zabbix; это обновит существующую базу данных.
  2. Проверьте файл журнала сервера, чтобы убедиться, что обновление базы данных прошло успешно; если да, остановите сервер Zabbix и переходите к следующему шагу.
  3. Выполните скрипт postgresql/timescaledb/schema.sql (начиная с Zabbix 7.0.0, местоположение и имя скрипта изменены с postgresql/timescaledb.sql на postgresql/timescaledb/schema.sql). Обратите внимание, что сервер Zabbix зарегистрирует предупреждение, если будет запущен без выполнения этого скрипта.

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

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

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

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

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

Скрипт postgresql/timescaledb/schema.sql устанавливает два дополнительных параметра:

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

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

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

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

Обновление схемы TimescaleDB

При обновлении Zabbix до версии, которая включает новые гипертаблицы TimescaleDB, сервер Zabbix не настраивает их автоматически (например, при обновлении с версии Zabbix 6.4 до 7.0.3, так как в версиях 7.0.0 и 7.0.2 были добавлены новые гипертаблицы).

Чтобы настроить новые гипертаблицы TimescaleDB, выполните следующие шаги:

  1. Запустите сервер Zabbix; это обновит существующую базу данных.
  2. Проверьте файл журнала сервера, чтобы убедиться, что обновление базы данных завершено; когда оно завершится, остановите сервер Zabbix. Обратите внимание, что сервер выводит предупреждение, если он пытается включить сжатие для таблицы, которая не является гипертаблицей.
  3. Запустите скрипт postgresql/timescaledb/schema.sql; он настроит новые гипертаблицы TimescaleDB. Учтите, что с версии Zabbix 7.0.0 местоположение и название скрипта изменились с postgresql/timescaledb.sql на postgresql/timescaledb/schema.sql.

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

Сжатие TimescaleDB

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

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

Обратите внимание, что на сжатие накладываются определенные ограничения, а именно:

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

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

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

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

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

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