Работа с поврежденными архивами мониторингаLTS
В Proceset сбор пользовательской активности осуществляется агентом мониторинга, который ежедневно отправляет на сервер архивы с данными. После приема сервер выполняет первичную валидацию архивов. Те, которые не соответствуют требованиям (например, поврежденный manifest.json, несуществующий пользователь, ошибки структуры), не попадают в ClickHouse и помещаются в специальную очередь corrupted.
Диагностика поврежденных архивов
Для работы с поврежденными архивами используется GraphQL API.
Получение статистики по очереди corrupted
Чтобы вывести количество архивов в очереди, выполните запрос:
{
monitoring_diagnostics {
corrupted_file_query {
corrupted_file_statistic {
all_size
node_id
}
}
}
}
Где:
all_size— общее количество архивов в очередиcorruptednode_id— идентификатор узла, на котором накоплены поврежденные файлы
Список поврежденных архивов с детализацией
Чтобы получить список поврежденных архивов:
{
monitoring_diagnostics {
corrupted_file_query {
corrupted_file_column_families {
min_id
max_id
column_family_name
node_id
size
corrupted_file_data_list {
id
source_file_name
}
}
}
}
}
Где:
min_id,max_id— диапазон идентификаторов архивов в группеcolumn_family_name— название группыnode_id— идентификатор сервераsize— количество архивов в группеcorrupted_file_data_list— список файлов:id— уникальный ID архиваsource_file_name— исходное имя файла (например,archive_20251114_012345.zip)
Общая статистика очереди обработки архивов
Чтобы отличить проблемы с corrupted от общей нагрузки на систему:
{
monitoring_diagnostics {
agent_file_query {
agent_file_queue_statistic {
all_queue_size
wait_processing_size
processed_size
}
}
}
}
Где:
all_queue_size— всего архивов в очередиwait_processing_size— архивов, ожидающих обработкиprocessed_size— успешно обработанных и загруженных в ClickHouse
Выгрузка архива
Для выгрузки архива из очереди corrupted необходимы идентификаторы, полученные из запроса на получение списка поврежденных архивов:
idархиваnode_idсервера
{
monitoring_diagnostics {
corrupted_file_query {
corrupted_file_by_id(id: $id, runtimeNodeId: "$node_id")
}
}
}
После выполнения запроса:
- Удалите букву
iв адресной строке браузера изgraphiql. - Нажмите Enter.
- Начнется автоматическая загрузка архива в браузере — файл скачается с именем
corrupted_<id>.zip.
Повторная обработка поврежденных архивов
Если вы уверены, что архивы попали в corrupted ошибочно, можно запустить массовую повторную обработку.
Перед выполнением запроса убедитесь, что в очереди corrupted больше 100 000 архивов.
mutation {
computer_activity {
reload_corrupted_activities(is_delete_on_fail: true)
}
}
Где у параметра is_delete_on_fail может быть установлено два значения:
true— если архив не удается разобрать, то он безвозвратно удаляетсяfalse— если архив не удается разобрать, то он возвращается в очередьcorrupted
Была ли статья полезна?