Два оставшихся дашборда ADR 0002. «Кластер» — что с машиной, «Запросы» — что
выполнялось и во что обошлось.
Что в ветке
cluster.json, семь панелей: процессор и память обеих нод, диски, части по
таблицам, слияния по базам, keeper, очередь распределённых DDL.
queries.json, три панели поверх system.query_log: тяжёлые запросы,
аппетит по посетителям, ошибки.
Устройство и доводы — docs/architecture/monitoring/cluster.md и queries.md; каталог набора в README.md обновлён, правило «порогов нет»
поднято туда из data.md как общее для всех дашбордов.
Отступления от ADR 0002 записаны в сам ADR.
Приёмка
Снята на живом стенде 21 августа 2026 года.
make config-test, make smoke 21/21, make check-clickhouse 10/10.
Все десять панелей отвечают через /api/ds/query в окнах на полчаса, час и
шесть часов; пустых нет.
Под нагрузкой (make generate-batch, 50 626 событий) процессор поднялся с
0,04–0,18 ядра до 0,54 и 0,64, запись — с 400 КиБ/с до 2,1 и 4,5 МиБ/с, и
обе величины вернулись к прежним за десять секунд.
Тяжёлый GROUP BY от учётки analyst приехал в «Запросы» со своими
числами: 741 мс, 53,32 МиБ, 701 994 прочитанные строки.
Строка шарда в панели ошибок воспроизведена принудительным пределом памяти: clickhouse-01 записал свой отказ, clickhouse-02 — свой.
Один пункт приёмки закрыт не буквально
«Панель по системной таблице без clusterAllReplicas не остаётся ни одной» —
одна осталась. Очередь распределённых DDL лежит не у ноды, а в keeper: обе
ноды читают из него одну и ту же очередь целиком, и запрос с обёрткой вернул
каждую запись дважды. Довод и замер записаны в ADR 0002 и в cluster.md.
Панель слияний — второй, мягкий случай: обёртка на ней есть, но ноды сложены в
один ряд намеренно, шарды сливают симметрично.
Как ревьюировали
Два круга по две линии, каждая свежей сессией; после правок первого круга
прогон повторён, плюс прошлые сессии опрошены на закрытие своих находок.
Главную находку второго круга — текст спорил с собственной приёмкой про окно
дашборда — нашли независимо трое.
Closes #116
Два оставшихся дашборда ADR 0002. «Кластер» — что с машиной, «Запросы» — что
выполнялось и во что обошлось.
## Что в ветке
- `cluster.json`, семь панелей: процессор и память обеих нод, диски, части по
таблицам, слияния по базам, keeper, очередь распределённых DDL.
- `queries.json`, три панели поверх `system.query_log`: тяжёлые запросы,
аппетит по посетителям, ошибки.
- Устройство и доводы — `docs/architecture/monitoring/cluster.md` и
`queries.md`; каталог набора в `README.md` обновлён, правило «порогов нет»
поднято туда из `data.md` как общее для всех дашбордов.
- Отступления от ADR 0002 записаны в сам ADR.
## Приёмка
Снята на живом стенде 21 августа 2026 года.
- `make config-test`, `make smoke` 21/21, `make check-clickhouse` 10/10.
- Все десять панелей отвечают через `/api/ds/query` в окнах на полчаса, час и
шесть часов; пустых нет.
- Под нагрузкой (`make generate-batch`, 50 626 событий) процессор поднялся с
0,04–0,18 ядра до 0,54 и 0,64, запись — с 400 КиБ/с до 2,1 и 4,5 МиБ/с, и
обе величины вернулись к прежним за десять секунд.
- Тяжёлый `GROUP BY` от учётки `analyst` приехал в «Запросы» со своими
числами: 741 мс, 53,32 МиБ, 701 994 прочитанные строки.
- Строка шарда в панели ошибок воспроизведена принудительным пределом памяти:
`clickhouse-01` записал свой отказ, `clickhouse-02` — свой.
## Один пункт приёмки закрыт не буквально
«Панель по системной таблице без `clusterAllReplicas` не остаётся ни одной» —
одна осталась. Очередь распределённых DDL лежит не у ноды, а в keeper: обе
ноды читают из него одну и ту же очередь целиком, и запрос с обёрткой вернул
каждую запись дважды. Довод и замер записаны в ADR 0002 и в `cluster.md`.
Панель слияний — второй, мягкий случай: обёртка на ней есть, но ноды сложены в
один ряд намеренно, шарды сливают симметрично.
## Как ревьюировали
Два круга по две линии, каждая свежей сессией; после правок первого круга
прогон повторён, плюс прошлые сессии опрошены на закрытие своих находок.
Главную находку второго круга — текст спорил с собственной приёмкой про окно
дашборда — нашли независимо трое.
- Зачем:
- ADR 0002 обещает три дашборда; собран был один, а симптом инфраструктуры
как следствие решения человека показать было негде.
- Что:
- cluster.json — семь панелей: процессор, память с пределом коробки, диски,
части по таблицам, слияния, keeper, очередь распределённых DDL.
- queries.json — четыре панели поверх system.query_log: тяжёлые запросы,
поток запросов, аппетит по пользователям, ошибки.
- системные таблицы читаются через clusterAllReplicas; очередь DDL — без
обёртки, она живёт в keeper и у обеих нод одна.
- устройство обоих дашбордов записано в docs/architecture/monitoring/,
правило про пороги поднято из data.md в README набора.
- Проверка:
- make config-test; make smoke 21/21; make check-clickhouse 10/10.
- все одиннадцать панелей отвечают через /api/ds/query.
- Зачем:
- слияния в верхних строках показывали только журналы самого сервера, а
предел в 15 строк рвал пару нод пополам: панели отвечали не на свой вопрос.
- Что:
- «Слияния» стали столбиками по слоям: журналы сервера отделены, ряды ods и
stg видны своими.
- «Части» показывают все таблицы слоёв целиком, без предела и без обрезанных
пар.
- у «Запросов» убран «Поток запросов» — его пол составляли пробники
состояния; у «Кто спрашивает» убрана лишняя колонка.
- ряд «коробка» назван «отведено» — как в заголовке панели.
- доводы дописаны в cluster.md и queries.md, отступления от ADR 0002
записаны в сам ADR.
- Проверка:
- make config-test; make smoke 21/21; make check-clickhouse 10/10.
- все десять панелей отвечают через /api/ds/query в окнах на полчаса, час и
шесть часов.
- Зачем:
- второй круг ревью нашёл, что текст спорит с собственной приёмкой: окно
держалось доводом «слияния за минуту-две», а замер даёт двадцать секунд;
довод панели ошибок опирался на отказ по памяти, которого ADR 0004 на этом
стенде не обещает.
- Что:
- «Части» сортируются по таблице: сортировка по числу частей разводила две
ноды одной таблицы, как только между ними вставала чужая.
- у «Слияний» столбик шириной в минуту, иначе редкие события выходили
волосяной линией; из заголовка убран «слой» — фильтр отсекает журналы
сервера, а не выбирает слои.
- в cluster.md исправлены довод за окно, ложное «времени в system.parts нет»,
счёт панелей без нод (их две, не одна) и разрешение, в котором снят замер
процессора.
- панель ошибок и её запись в ADR 0002 переписаны под проверенное: отказ на
шарде воспроизведён принудительным пределом памяти.
- из queries.md убран абзац про SELECT 1 — он объяснял пол удалённой панели.
- Проверка:
- make config-test; make smoke 21/21; make check-clickhouse 10/10.
- все десять панелей отвечают через /api/ds/query в окнах на полчаса, час и
шесть часов; шаг столбика слияний проверен отдельным запросом.
ddmitry
merged commit 0340b060f2 into main2026-08-21 22:34:24 +03:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #116
Два оставшихся дашборда ADR 0002. «Кластер» — что с машиной, «Запросы» — что
выполнялось и во что обошлось.
Что в ветке
cluster.json, семь панелей: процессор и память обеих нод, диски, части потаблицам, слияния по базам, keeper, очередь распределённых DDL.
queries.json, три панели поверхsystem.query_log: тяжёлые запросы,аппетит по посетителям, ошибки.
docs/architecture/monitoring/cluster.mdиqueries.md; каталог набора вREADME.mdобновлён, правило «порогов нет»поднято туда из
data.mdкак общее для всех дашбордов.Приёмка
Снята на живом стенде 21 августа 2026 года.
make config-test,make smoke21/21,make check-clickhouse10/10./api/ds/queryв окнах на полчаса, час ишесть часов; пустых нет.
make generate-batch, 50 626 событий) процессор поднялся с0,04–0,18 ядра до 0,54 и 0,64, запись — с 400 КиБ/с до 2,1 и 4,5 МиБ/с, и
обе величины вернулись к прежним за десять секунд.
GROUP BYот учёткиanalystприехал в «Запросы» со своимичислами: 741 мс, 53,32 МиБ, 701 994 прочитанные строки.
clickhouse-01записал свой отказ,clickhouse-02— свой.Один пункт приёмки закрыт не буквально
«Панель по системной таблице без
clusterAllReplicasне остаётся ни одной» —одна осталась. Очередь распределённых DDL лежит не у ноды, а в keeper: обе
ноды читают из него одну и ту же очередь целиком, и запрос с обёрткой вернул
каждую запись дважды. Довод и замер записаны в ADR 0002 и в
cluster.md.Панель слияний — второй, мягкий случай: обёртка на ней есть, но ноды сложены в
один ряд намеренно, шарды сливают симметрично.
Как ревьюировали
Два круга по две линии, каждая свежей сессией; после правок первого круга
прогон повторён, плюс прошлые сессии опрошены на закрытие своих находок.
Главную находку второго круга — текст спорил с собственной приёмкой про окно
дашборда — нашли независимо трое.
- Зачем: - ADR 0002 обещает три дашборда; собран был один, а симптом инфраструктуры как следствие решения человека показать было негде. - Что: - cluster.json — семь панелей: процессор, память с пределом коробки, диски, части по таблицам, слияния, keeper, очередь распределённых DDL. - queries.json — четыре панели поверх system.query_log: тяжёлые запросы, поток запросов, аппетит по пользователям, ошибки. - системные таблицы читаются через clusterAllReplicas; очередь DDL — без обёртки, она живёт в keeper и у обеих нод одна. - устройство обоих дашбордов записано в docs/architecture/monitoring/, правило про пороги поднято из data.md в README набора. - Проверка: - make config-test; make smoke 21/21; make check-clickhouse 10/10. - все одиннадцать панелей отвечают через /api/ds/query.- Зачем: - слияния в верхних строках показывали только журналы самого сервера, а предел в 15 строк рвал пару нод пополам: панели отвечали не на свой вопрос. - Что: - «Слияния» стали столбиками по слоям: журналы сервера отделены, ряды ods и stg видны своими. - «Части» показывают все таблицы слоёв целиком, без предела и без обрезанных пар. - у «Запросов» убран «Поток запросов» — его пол составляли пробники состояния; у «Кто спрашивает» убрана лишняя колонка. - ряд «коробка» назван «отведено» — как в заголовке панели. - доводы дописаны в cluster.md и queries.md, отступления от ADR 0002 записаны в сам ADR. - Проверка: - make config-test; make smoke 21/21; make check-clickhouse 10/10. - все десять панелей отвечают через /api/ds/query в окнах на полчаса, час и шесть часов.- Зачем: - второй круг ревью нашёл, что текст спорит с собственной приёмкой: окно держалось доводом «слияния за минуту-две», а замер даёт двадцать секунд; довод панели ошибок опирался на отказ по памяти, которого ADR 0004 на этом стенде не обещает. - Что: - «Части» сортируются по таблице: сортировка по числу частей разводила две ноды одной таблицы, как только между ними вставала чужая. - у «Слияний» столбик шириной в минуту, иначе редкие события выходили волосяной линией; из заголовка убран «слой» — фильтр отсекает журналы сервера, а не выбирает слои. - в cluster.md исправлены довод за окно, ложное «времени в system.parts нет», счёт панелей без нод (их две, не одна) и разрешение, в котором снят замер процессора. - панель ошибок и её запись в ADR 0002 переписаны под проверенное: отказ на шарде воспроизведён принудительным пределом памяти. - из queries.md убран абзац про SELECT 1 — он объяснял пол удалённой панели. - Проверка: - make config-test; make smoke 21/21; make check-clickhouse 10/10. - все десять панелей отвечают через /api/ds/query в окнах на полчаса, час и шесть часов; шаг столбика слияний проверен отдельным запросом.