From f7123f2ad7876b40fc14ec44df203b5bc6d76ccf Mon Sep 17 00:00:00 2001 From: Dmitry Dementev Date: Fri, 21 Aug 2026 13:28:22 -0400 Subject: [PATCH] =?UTF-8?q?fix(monitoring):=20=D1=80=D1=8F=D0=B4=D1=8B=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BD=D0=B5=D0=BB=D0=B5=D0=B9=20=D0=BF=D0=BE=D0=B4?= =?UTF-8?q?=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D1=8B=20=D1=81=D0=B2=D0=BE=D0=B8?= =?UTF-8?q?=D0=BC=D0=B8=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B0=D0=BC=D0=B8,=20?= =?UTF-8?q?=D0=B0=20=D0=BD=D0=B5=20=D0=B1=D1=83=D0=BA=D0=B2=D0=BE=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Зачем: - на живом дашборде видно то, чего не показывает API: при нескольких запросах в панели Grafana ставит перед именем ряда его букву — «A события», «B приземлилось в ClickHouse». Читателю панели это шум. - Что: - свежесть и поток собраны одним запросом на панель: два столбца вместо двух запросов. У потока это заодно вернуло ряд заказов, который пропадал, когда в окне не было ни одного слепка. - у сходимости ряды из разных источников слить нельзя, поэтому ряду ClickHouse имя задано переопределением поля. - Проверка: - make config-test; на живом стенде подписи прочитаны прямо со страницы дашборда: «события», «заказы», «произведено в Kafka», «приземлилось в ClickHouse»; все шесть панелей отвечают через /api/ds/query. --- .../grafana/provisioning/dashboards/data.json | 43 ++++++++----------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/infra/grafana/provisioning/dashboards/data.json b/infra/grafana/provisioning/dashboards/data.json index f60ecbf..6c9e65a 100644 --- a/infra/grafana/provisioning/dashboards/data.json +++ b/infra/grafana/provisioning/dashboards/data.json @@ -36,18 +36,7 @@ "editorType": "sql", "queryType": "table", "format": 1, - "rawSql": "SELECT dateDiff('second', max(_load_ts), now()) AS \"события\"\nFROM ods.event_dist" - }, - { - "refId": "B", - "datasource": { - "type": "grafana-clickhouse-datasource", - "uid": "clickhouse" - }, - "editorType": "sql", - "queryType": "table", - "format": 1, - "rawSql": "SELECT dateDiff('second', max(_load_ts), now()) AS \"заказы\"\nFROM ods.order_dist" + "rawSql": "SELECT\n (SELECT dateDiff('second', max(_load_ts), now()) FROM ods.event_dist) AS \"события\",\n (SELECT dateDiff('second', max(_load_ts), now()) FROM ods.order_dist) AS \"заказы\"" } ], "fieldConfig": { @@ -141,18 +130,7 @@ "editorType": "sql", "queryType": "timeseries", "format": 0, - "rawSql": "SELECT\n $__timeInterval(_load_ts) AS t,\n count() AS \"события\"\nFROM stg.hits_raw_dist\nWHERE $__timeFilter(_load_ts)\nGROUP BY t\nORDER BY t" - }, - { - "refId": "B", - "datasource": { - "type": "grafana-clickhouse-datasource", - "uid": "clickhouse" - }, - "editorType": "sql", - "queryType": "timeseries", - "format": 0, - "rawSql": "SELECT\n $__timeInterval(_load_ts) AS t,\n count() AS \"заказы\"\nFROM stg.orders_raw_dist\nWHERE $__timeFilter(_load_ts)\nGROUP BY t\nORDER BY t" + "rawSql": "SELECT\n $__timeInterval(_load_ts) AS t,\n countIf(source = 'события') AS \"события\",\n countIf(source = 'заказы') AS \"заказы\"\nFROM\n(\n SELECT 'события' AS source, _load_ts FROM stg.hits_raw_dist\n UNION ALL\n SELECT 'заказы', _load_ts FROM stg.orders_raw_dist\n)\nWHERE $__timeFilter(_load_ts)\nGROUP BY t\nORDER BY t" } ] }, @@ -198,6 +176,23 @@ "rawSql": "SELECT\n -- Правый край, а не левый: ряд Kafka в этой точке — прирост за тот же\n -- интервал, а он набирается к его концу.\n $__timeInterval(_load_ts) + INTERVAL $__interval_s SECOND AS t,\n count() AS \"приземлилось в ClickHouse\"\nFROM stg.hits_raw_dist\nWHERE $__timeFilter(_load_ts)\nGROUP BY t\nORDER BY t" } ], + "fieldConfig": { + "defaults": {}, + "overrides": [ + { + "matcher": { + "id": "byFrameRefID", + "options": "B" + }, + "properties": [ + { + "id": "displayName", + "value": "приземлилось в ClickHouse" + } + ] + } + ] + }, "interval": "1m" }, {