从 Clikhouse 到 grafana 的供应商指标
Vendor metrics from Clikhouse to grafana
大家好,我 运行 在向 grafana 添加监视器时遇到了这样的问题,其中包含我们供应商对 clickhouse 数据库的请求状态的指标。
我需要状态 = 200 或! = 200 到 return 到时间表。
我们希望当条件 - count (CASE WHEN StatusRes! = '200' THEN 1 END) 满足时,我们将显示请求状态不是 200 的供应商的数据,但如果 - count (CASE WHEN StatusRes 0 = '200' THEN 1 END ) 仅限请求状态为 200 的供应商。
但实际上请求处理不正确(所有状态都returned 200和500)我不知道为什么。
这是查询本身,我们将在 grafana 中使用它来获取指标:
SELECT
$timeSeries as t,
StatusRes,
count(CASE WHEN StatusRes != '200' THEN 1 END),
count(CASE WHEN StatusRes == '200' THEN 1 END),
Provider
FROM $table
WHERE $timeFilter
GROUP BY
t,
StatusRes,
Provider
ORDER BY
t,
StatusRes,
Provider
count( col )
-- 计算 ROWS 的数量,其中 col 不为 null。这与 CH 无关,而是 ANSI SQL.
你实际上应该使用 countIf
StatusRes,
countIf(StatusRes != '200'),
countIf(StatusRes == '200'),
Provider
或求和
sum(StatusRes != '200'),
sum(StatusRes == '200'),
create table XX(a Int64, StatusRes String) Engine=Memory;
INSERT INTO XX SELECT
number,
['200', '500', '400'][(rand() % 3) + 1]
FROM numbers(1000);
SELECT
sum(StatusRes = '200'),
sum(StatusRes != '200')
FROM XX
┌─sum(equals(StatusRes, '200'))─┬─sum(notEquals(StatusRes, '200'))─┐
│ 321 │ 679 │
└───────────────────────────────┴──────────────────────────────────┘
SELECT
countIf(StatusRes = '200'),
countIf(StatusRes != '200')
FROM XX
┌─countIf(equals(StatusRes, '200'))─┬─countIf(notEquals(StatusRes, '200'))─┐
│ 321 │ 679 │
└───────────────────────────────────┴──────────────────────────────────────┘
大家好,我 运行 在向 grafana 添加监视器时遇到了这样的问题,其中包含我们供应商对 clickhouse 数据库的请求状态的指标。 我需要状态 = 200 或! = 200 到 return 到时间表。
我们希望当条件 - count (CASE WHEN StatusRes! = '200' THEN 1 END) 满足时,我们将显示请求状态不是 200 的供应商的数据,但如果 - count (CASE WHEN StatusRes 0 = '200' THEN 1 END ) 仅限请求状态为 200 的供应商。
但实际上请求处理不正确(所有状态都returned 200和500)我不知道为什么。
这是查询本身,我们将在 grafana 中使用它来获取指标:
SELECT
$timeSeries as t,
StatusRes,
count(CASE WHEN StatusRes != '200' THEN 1 END),
count(CASE WHEN StatusRes == '200' THEN 1 END),
Provider
FROM $table
WHERE $timeFilter
GROUP BY
t,
StatusRes,
Provider
ORDER BY
t,
StatusRes,
Provider
count( col )
-- 计算 ROWS 的数量,其中 col 不为 null。这与 CH 无关,而是 ANSI SQL.
你实际上应该使用 countIf
StatusRes,
countIf(StatusRes != '200'),
countIf(StatusRes == '200'),
Provider
或求和
sum(StatusRes != '200'),
sum(StatusRes == '200'),
create table XX(a Int64, StatusRes String) Engine=Memory;
INSERT INTO XX SELECT
number,
['200', '500', '400'][(rand() % 3) + 1]
FROM numbers(1000);
SELECT
sum(StatusRes = '200'),
sum(StatusRes != '200')
FROM XX
┌─sum(equals(StatusRes, '200'))─┬─sum(notEquals(StatusRes, '200'))─┐
│ 321 │ 679 │
└───────────────────────────────┴──────────────────────────────────┘
SELECT
countIf(StatusRes = '200'),
countIf(StatusRes != '200')
FROM XX
┌─countIf(equals(StatusRes, '200'))─┬─countIf(notEquals(StatusRes, '200'))─┐
│ 321 │ 679 │
└───────────────────────────────────┴──────────────────────────────────────┘