Хранение метрик потоков в БД Timescale¶
Timescale - БД временных рядов с открытым исходным кодом, основанная на Postgresql. В отличие от InfluxDB, не хранит все индексы в оперативной памяти, поэтому может быть использована для хранения больших объемов метрик. Кроме того, в этом случае используется одна и та же БД Postgresql для хранения метрик, статистики потоков и настроек сбора данных.
Установка Postgresql и TimescaleDB¶
В процессе настройки должна быть установлена определенная версия Postgresql (9.6, 10 или 11). Если на сервере установлена более ранняя версия Postgresql (например, из стандартных репозиториев Centos 7 устанавливается Posgresql 9.2), необходимо ее удалить, включая исполняемые файлы в /usr/bin
.
Для того, чтобы настроить Postgresql 9.6+TimescaleDB на CentOS, необходимо сделать следующее:
-
Установить репозиторий Postgresql
-
Создать файл
/etc/yum.repos.d/timescale_timescaledb.repo
-
Установить Postgresql
-
Установить TimescaleDB
-
Инициализировать БД Postgresql
-
Настроить Postgresql для работы с TimescaleDB
-
Настроить доступ к таблицам Postgresql в файле
/var/lib/pgsql/9.6/data/pg_hba.conf
-
Запустить Postgresql
-
Войти в консоль Postgresql
-
Создать пользователя и БД
-
Дать пользователю права на доступ к БД
-
Инициализировать расширение Timescale
-
Cоздать БД для хранения статистики потоков
-
Выйти из консоли Postgresql
Настройка БД Timescale¶
Для настройки БД Timescale для хранения метрик необходимо:
-
Указать в файле настроек
wcsoam.properties
параметр -
Указать в файле настроек
init_tsdb.properties
размер фрагментов таблицы для хранения метрик. По умолчанию, размер одного фрагмента установлен в 2 дня
-
Запустить скрипт настройки БД
Настройка удаления устаревших данных при помощи cron¶
Для экономии дискового пространства устаревшие данные могут удаляться периодически при помощи cron. Например, проверка таблицы conditions
каждые 5 минут и удаление данных старше 5 дней может быть настроена следующим образом:
*/5 * * * * PGPASSWORD="wcsoam" /usr/pgsql-9.6/bin/psql -h localhost -p 5432 -U wcsoam -d wcsstat -w -c "SELECT drop_chunks(interval '5 days', 'conditions');"
Структура БД¶
Postgresql должен содержать следующую таблицу для хранения метрик
Field | Type | Note |
---|---|---|
CONDITIONS | ||
time | timestamptz | NOT NULL |
node_id | bigint | NOT NULL |
media_id | character varying(255) | |
video_height | bigint | |
video_width | bigint | |
video_rate | bigint | |
video_sync | bigint | |
video_fps | bigint | |
video_nack | bigint | |
video_pli | bigint | |
video_codec | bigint | |
audio_sync | bigint | |
audio_rate | bigint | |
audio_lost | bigint | |
audio_codec | bigint |
Данные метрик фрагментируются и хранятся в подтаблицах, объем каждой из которых определяется заданной при настройке длительностью фрагмента. Для ограничения количества подтаблиц рекомендуется настройка очистки устаревших данных при помощи cron с указанием максимального времени хранения данных.