...
Timescale - БД временных рядов с открытым исходным кодом, основанная на Postgresql. В отличие от InfluxDB, не хранит все индексы в оперативной памяти, поэтому может быть использована для хранения больших объемов метрик. Кроме того, в этом случае используется одна и та же БД Postgresql для хранения метрик, статистики потоков и настроек сбора данных.
Установка Postgresql и
...
TimescaleDB
В процессе настройки должна быть установлена определенная версия Postgresql (9.6, 10 или 11). Если на сервере установлена более ранняя версия Postgresql (например, из стандартных репозиториев Centos 7 устанавливается Posgresql 9.2), необходимо ее удалить, включая исполняемые файлы в /usr/bin.
...
Code Block |
---|
|
su - postgres
/usr/pgsql-9.6/bin/postgresqlpostgres & |
9. Войти в консоль Postgresql
...
Code Block |
---|
|
CREATE USER wcsoam WITH PASSWORD 'wcsoam';
CREATE DATABASE wcsstat; |
1211. Дать пользователю права на доступ к БД
Code Block |
---|
|
\сc wcsstat
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "wcsoam";
|
13. Выйти из консоли Postgresql и войти как пользователь wcsoam
Code Block |
---|
|
\q
/usr/pgsql-9.6/bin/psql -U wcsoam |
14. Создать таблицу для хранения метрик
Code Block |
---|
|
\с wcsstat
CREATE TABLE IF NOT EXIST conditions(
time timestamptz not null,
node_id bigint not null,
mediaid varchar(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); |
15. Установить расширение для работы функций TimescaleDB12. Инициализировать расширение Timescale
Code Block |
---|
|
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE; |
16. Настроить гипертаблицу TimescaleDB с указанием длительности хранения каждого фрагмента, например, 1 час:
Code Block |
---|
|
SELECT create_hypertable('conditions', 'time', 'node_id', 1, chunk_time_interval => interval '1 hour'); |
1713. Cоздать БД для хранения статистики потоков
Code Block |
---|
|
CREATE DATABASE wcsoam;
\c wcsoam
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "wcsoam"; |
1814. Выйти из консоли Postgresql
Настройка БД Timescale
Для настройки БД Timescale для хранения метрик необходимо:
1. Указать в файле настроек wcsoam.properties параметр
Code Block |
---|
|
metric_store=timescale |
2. Указать в файле настроек init_tsdb.properties размер фрагментов таблицы для хранения метрик
Code Block |
---|
|
timescale_chunk_interval=2 days |
По умолчанию, размер одного фрагмента установлен в 2 дня.
3. Запустить скрипт настройки БД
Настройка удаления устаревших данных при помощи cron
Для экономии дискового пространства устаревшие данные могут удаляться периодически при помощи cron. Например, проверка таблицы conditions каждые 5 минут и удаление данных старше 12 часов 5 дней может быть настроена следующим образом:
Code Block |
---|
|
*/5 * * * * PGPASSWORD="wcsoam" /usr/pgsql-9.6/bin/psql -h localhost -p 5432 -U wcsoam -d wcsstat -w -c "SELECT drop_chunks(interval '125 hoursdays', 'conditions');" |
Структура БД
...