从克利克豪斯到Grafana的供应商指标 [英] Vendor metrics from Clikhouse to grafana

查看:16
本文介绍了从克利克豪斯到Grafana的供应商指标的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,我在向Grafana添加监控器时遇到了这样一个问题,该监控器带有供应商对Clickhouse数据库的请求状态的度量。 我需要状态为200或!=200的供应商返回计划。

我们希望当条件-Count(Case When StatusRes!=‘200’Then 1 End)满足时,我们将显示请求状态不是200的供应商的数据,但IF-Count(Case When StatusRes 0=‘200’Then 1 End)仅显示请求状态为200的供应商的数据。

但事实上,请求处理不正确(所有状态都同时返回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 ) --统计其中col不为空的行数。这不是关于CH,而是ANSI SQL。

您实际上应该使用CountIf

    StatusRes,
    countIf(StatusRes != '200'),
    countIf(StatusRes == '200'),
    Provider

或SUM

    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的供应商指标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆