[comment]: # ({6b30eb7c-98c082ce})
# 7 Настройка TimescaleDB

[comment]: # ({/6b30eb7c-98c082ce})

[comment]: # ({36fb6804-acb21280})
#### Обзор

Для обеспечения большего уровня производительности при масштабировании, Zabbix поддерживает TimescaleDB — решение на основе базы данных PostgreSQL для автоматического партиционирования данных на фрагменты (chunks) на основе
времени.

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

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

-   Создание базы данных TimescaleDB или для миграции с существующих таблиц PostgreSQL на TimescaleDB (смотрите [Настройка](#настройка)).
-   Обновление существующей схемы базы данных TimescaleDB при обновлении Zabbix (смотрите [Обновление схемы TimescaleDB](#обновление-схемы-timescaledb)).

[comment]: # ({/36fb6804-acb21280})

[comment]: # ({082fb7aa-f731725c})
#### Конфигурация

**Предварительные требования**: расширение TimescaleDB поддерживаемой версии, установленное на сервере базы данных [поддерживаемой версии](/manual/installation/requirements#thirdparty-external-surrounding-software).
Инструкции по установке см. в [документации TimescaleDB](https://docs.tigerdata.com/self-hosted/latest/install/).

::: notewarning
Перед установкой TimescaleDB установите поддерживаемый выпуск PostgreSQL из [официального репозитория PostgreSQL](https://www.postgresql.org/download/).
:::

Включите расширение TimescaleDB для конкретной базы данных, выполнив:

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

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

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

Затем выполните скрипт `postgresql/timescaledb/schema.sql`.
Для новых установок скрипт необходимо запускать после создания обычной базы данных PostgreSQL с начальной схемой/данными (см. [создание базы данных](/manual/appendix/install/db_scripts)).

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

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

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

Скрипт `schema.sql` задает следующие параметры обслуживания:

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

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

Для PostgreSQL и TimescaleDB скрипт `postgresql/timescaledb/schema.sql` задает два дополнительных параметра:

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

[comment]: # ({/082fb7aa-f731725c})

[comment]: # ({5c6ac2c3-60e46db2})

Для успешного удаления сжатых данных процессом очистки истории, обе опции *Переопределить период хранения истории элементов данных (Override item history period)* и *Переопределить период хранения динамики изменения элементов данных (Override item trend period)* должны быть активированы.
Если переопределение отключено, а таблицы имеют сжатые фрагменты, процесс очистки истории не удалит данные из этих таблиц, а в разделах [*Очистка истории (Housekeeping)*](/manual/web_interface/frontend_sections/administration/housekeeping) и [*Информация о системе (System information)*](/manual/web_interface/frontend_sections/reports/status_of_zabbix) будет отображено предупреждение о некорректной конфигурации.

[comment]: # ({/5c6ac2c3-60e46db2})

[comment]: # ({56721869-8c3a80a9})

Все эти параметры можно изменить в разделе *Администрирование* → [*Очистка истории*](/manual/web_interface/frontend_sections/administration/housekeeping) (*Administration* → *Housekeeping*) после установки.

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

[comment]: # ({/56721869-8c3a80a9})

[comment]: # ({0bea3ea4-d6ee4f10})
##### Обновление схемы TimescaleDB

При обновлении Zabbix до версии, содержащей новые гипертаблицы TimescaleDB, сервер Zabbix не настраивает эти гипертаблицы автоматически (например, при обновлении с Zabbix 6.4 до 7.4, так как в версиях 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`.

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

[comment]: # ({/0bea3ea4-d6ee4f10})

[comment]: # ({dc9d91b5-2012f0a6})
#### Сжатие TimescaleDB

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

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

::: notetip
Перед использованием сжатия пользователям рекомендуется ознакомиться со сжатием в [документации TimescaleDB \[en\]](https://docs.tigerdata.com/use-timescale/latest/compression/).
:::

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

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

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

|Параметр|По умолчанию|Комментарии|
|--|--|------|
|*Включить сжатие*<br>*(Enable compression)*|Включено|Установка или снятие флажка не активирует/деактивирует сжатие немедленно. Так как сжатием занимается процесс очистки истории (housekeeper), изменения вступят в силу в течение максимум двух периодов времени, заданных в параметре `HousekeepingFrequency` (в файле конфигурации сервера [zabbix\_server.conf](/manual/appendix/config/zabbix_server)).<br><br>После отключения сжатия новые фрагменты, попавшие в период сжатия, не будут сжиматься. Однако все ранее сжатые данные останутся сжатыми. Чтобы распаковать ранее сжатые фрагменты, следуйте инструкциям в [документации TimescaleDB \[en\]](https://docs.tigerdata.com/use-timescale/latest/compression/).<br><br>При обновлении с более старых версий Zabbix с поддержкой TimescaleDB сжатие не будет включено по умолчанию.|
|*Compress records older than*<br>*(Сжимать записи старше, чем)*|7d|Этот параметр не может быть меньше 7 дней.<br><br>Из-за неизменности сжатых фрагментов все запоздавшие данные (например, данные, задержанные прокси), которые старше этого значения, будут отброшены.|

:::note
Для повышения производительности обновления динамики изменений вы можете уменьшить параметр «chunk_time_interval» для таблиц `trends` и `trends_uint` с 30 дней до 7 дней или меньше в зависимости от того, сколько элементов данных используют динамику изменений.
Цель этой настройки — придерживаться лучших практик TimescaleDB и гарантировать, что размер фрагмента останется в пределах доступных системных ресурсов.
:::

[comment]: # ({/dc9d91b5-2012f0a6})
