Описание
При управлении большим количеством WCS серверов, для отладки возможных проблем с вещанием потоков, возникает необходимость централизованного сбора данных о потоках, клиентских соединениях и событий CDN. Фактически, необходимо в одной точке собрать информацию, которая пишется в логи каждого сервера. При этом само по себе логирование в промышленной эксплуатации сведено к минимуму, чтобы не давать нагрузку на дисковую подсистему сервера.
Для сбора данных в реальном времени в больших объемах хорошо подходят базы данных временных рядов. На основе одной из таких БД cс открытым исходным кодом ClickHouse, в сборке 5.2.774 добавлена система удаленного сбора логов RELS (Remote Event Logging System).
Архитектура
Каждый WCS сервер отправляет данные в ClickHouse независимо, используя JDBC-драйвер и HTTP-соединение. Для оптимизации работы с БД ClickHouse, данные буферизуются и отправляются пачками по времени
Описание таблиц данных
Данные собираются в таблицы ClickHouse, перечисленные ниже. При этом, в таблицу записывается числовой идентификатор события. Для того, чтобы отобразить события в выборках в удобном для чтения виде, каждой таблице сопоставлен словарь текстовых строк, описывающих события.
Данные соединений (таблица ConnectionEvent)
Поле | Тип | Описание |
---|
timestamp | UInt64 | Метка времени |
ip | IPv4 | Адрес сервера |
sessionId | String | Идентификатор сессии |
eventType | UInt64 | Идентификатор типа события |
eventPayload | String | Содержимое события |
Типы событий (таблица ConnectionEventTypes)
Поле | Тип | Описание |
---|
id | UInt32 | Идентификатор типа события |
type | String | Описание типа события |
Словарь типов событий (таблица DictionaryConnectionEvents)
Поле | Тип | Описание |
---|
id | UInt64 | Идентификатор типа события |
type | String | Описание типа события |
Данные потоков (таблица StreamEvent)
Поле | Тип | Описание |
---|
timestamp | UInt64 | Метка времени |
ip | IPv4 | Адрес сервера |
sessionId | String | Идентификатор сессии |
mediaSessionId | String | Идентификатор медиасесий |
streamName | String | Имя потока |
eventType | UInt64 | Идентификатор типа события |
eventPayload | String | Содержимое события |
Типы событий (таблица StreamEventTypes)
Поле | Тип | Описание |
---|
id | UInt32 | Идентификатор типа события |
type | String | Описание типа события |
Словарь типов событий (таблица DictionaryStreamEvents)
Поле | Тип | Описание |
---|
id | UInt64 | Идентификатор типа события |
type | String | Описание типа события |
Данные CDN (таблица CDNEvent)
Поле | Тип | Описание |
---|
timestamp | UInt64 | Метка времени |
ip | IPv4 | Адрес сервера |
nodeId | String | Идентификатор узла (строка IP адреса) |
eventType | UInt64 | Идентификатор типа события |
eventPayload | String | Содержимое события |
Типы событий (таблица CDNEventTypes)
Поле | Тип | Описание |
---|
id | UInt32 | Идентификатор типа события |
type | String | Описание типа события |
Словарь типов событий (таблица DictionaryCDNEvents)
Поле | Тип | Описание |
---|
id | UInt64 | Идентификатор типа события |
type | String | Описание типа события |
Настройка
Установка и настройка ClickHouse
Установка ClickHouse на примере CentOS 7
1. Создайте файл репозитория altinity_clickhouse.repo в каталоге /etc/yum.repos.d
...
Code Block |
---|
|
systemctl start clickhouse-server |
Настройка ClickHouse
1. Для того, чтобы прослушивать входящие запросы на всех интерфесах сервера, раскомментируйте строку в файле /etc/clickhouse-server/config.xml
...
Code Block |
---|
|
systemctl restart clickhouse-server |
Настройка WCS
Сбор данных в БД ClickHouse включается настройкой
...
Code Block |
---|
|
rels_database_address=jdbc:clickhouse://clickhouseserver:8123/wcs?user=wcs&password=wcs |
Остановка сбора данных без перезапуска WCS
При необходимости, передача данных с конкретного WCS сервера в ClickHouse может быть остановлена без перезапуска WCS. Для этого:
...
Code Block |
---|
|
rels_enabled=false |
2. Перезагрузите настройки сервера из интерфейса командной строки
Code Block |
---|
|
reload node-settings |
Изменение адреса сервера ClickHouse без перезапуска WCS
Адрес сервера ClickHose может быть изменен без перезапуска WCS. Для этого:
...
Code Block |
---|
|
rels_enabled=false |
3. Перезагрузите настройки сервера из интерфейса командной строки
Code Block |
---|
|
reload node-settings |
...
Code Block |
---|
|
rels_enabled=true |
5. Перезагрузите настройки сервера из интерфейса командной строки
Code Block |
---|
|
reload node-settings |
Выборки информации из БД
Выборки информации из БД производятся при помощи SQL запросов в клиенте ClickHouse
...