Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Timescale - БД временных рядов с открытым исходным кодом, основанная на Postgresql. В отличие от InfluxDB, не хранит все индексы в оперативной памяти, поэтому может быть использована для хранения больших объемов метрик. Кроме того, в этом случае используется одна и та же БД Postgresql для хранения метрик, статистики потоков и настроек сбора данных.

Установка Postgresql и

...

TimescaleDB

В процессе настройки должна быть установлена определенная версия Postgresql (9.6, 10 или 11). Если на сервере установлена более ранняя версия Postgresql (например, из стандартных репозиториев Centos 7 устанавливается Posgresql 9.2), необходимо ее удалить, включая исполняемые файлы в /usr/bin.

...

Code Block
languagebash
themeRDark
su - postgres
/usr/pgsql-9.6/bin/postgresqlpostgres &

9. Войти в консоль Postgresql

...

Code Block
languagesql
themeRDark
CREATE USER wcsoam WITH PASSWORD 'wcsoam';
CREATE DATABASE wcsstat;

1211. Дать пользователю права на доступ к БД

Code Block
languagesql
themeRDark
\сc wcsstat
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "wcsoam";

13. Выйти из консоли Postgresql и войти как пользователь wcsoam

Code Block
languagebash
themeRDark
\q
/usr/pgsql-9.6/bin/psql -U wcsoam

14. Создать таблицу для хранения метрик

Code Block
languagesql
themeRDark
\с 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
languagesql
themeRDark
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

16. Настроить гипертаблицу TimescaleDB с указанием длительности хранения каждого фрагмента, например, 1 час:

Code Block
languagesql
themeRDark
SELECT create_hypertable('conditions', 'time', 'node_id', 1, chunk_time_interval => interval '1 hour');

1713. Cоздать БД для хранения статистики потоков

Code Block
languagesql
themeRDark
CREATE DATABASE wcsoam;
\c wcsoam
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO "wcsoam";

1814. Выйти из консоли Postgresql

Code Block
languagebash
themeRDark
\q
exit

Настройка БД Timescale

Для настройки БД Timescale для хранения метрик необходимо:

1. Указать в файле настроек wcsoam.properties параметр

Code Block
themeRDark
metric_store=timescale

2. Указать в файле настроек init_tsdb.properties размер фрагментов таблицы для хранения метрик

Code Block
themeRDark
timescale_chunk_interval=2 days

По умолчанию, размер одного фрагмента установлен в 2 дня.

3. Запустить скрипт настройки БД

Code Block
languagebash
themeRDark
./init_tsdb.sh

Настройка удаления устаревших данных при помощи cron

Для экономии дискового пространства устаревшие данные могут удаляться периодически при помощи cron. Например, проверка таблицы conditions каждые 5 минут и удаление данных старше 12 часов 5 дней может быть настроена следующим образом:

Code Block
languagebash
themeRDark
*/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');"

Структура БД

...