【问题标题】:Is this the correct way to use it via grafana?这是通过grafana使用它的正确方法吗?
【发布时间】:2021-08-07 13:58:10
【问题描述】:

ClickHouse:

┌─name──────────┬─type──────────┬
│ FieldUUID     │ UUID          │
│ EventDate     │ Date          │
│ EventDateTime │ DateTime      │
│ Metric        │ String        │
│ LabelNames    │ Array(String) │
│ LabelValues   │ Array(String) │
│ Value         │ Float64       │
└───────────────┴───────────────┴
Row 1:
──────
FieldUUID:     499ca963-2bd4-4c94-bc60-e60757ccaf6b
EventDate:     2021-05-13
EventDateTime: 2021-05-13 09:24:18
Metric:        cluster_cm_agent_physical_memory_used
LabelNames:    ['host']
LabelValues:   ['test01']
Value:         104189952

格拉法纳:

SELECT
        EventDateTime,
        Value AS cluster_cm_agent_physical_memory_used
    FROM
        $table
    WHERE
        Metric = 'cluster_cm_agent_physical_memory_used'
        AND $timeFilter 
    ORDER BY
        EventDateTime

没有数据点。

问题:这是通过 grafana 使用它的正确方法吗?

示例:
cluster_cm_agent_physical_memory_used{host='test01'} 104189952

【问题讨论】:

    标签: sql performance prometheus grafana clickhouse


    【解决方案1】:

    Grafana 期望您的 SQL 将针对大部分可视化返回时间序列数据格式。

    • 一栏DateTime\Date\DateTime64 or UInt32描述 时间戳
    • 一列或多列数字类型(Float、Int*、 UInt*) 与度量值(列名称将用作时间序列名称)
    • 可选的一列带有可以描述多次的字符串 系列名称

    或高级“时间序列”格式,当第一列将timestamp,第二列将Array(tuple(String, Numeric)) 其中String 列将时间序列名称(通常与

    一起使用

    所以,在query editor 的下拉列表中选择表metrics.shell 作为表并选择EventDateTime 作为字段,您的查询可以更改为

        SELECT
            EventDateTime,
            Value AS cluster_cm_agent_physical_memory_used
        FROM
            $table
        WHERE
            Metric = 'cluster_cm_agent_physical_memory_used'
            AND $timeFilter 
        ORDER BY
            EventDateTime
    

    您帖子中的 SQL 查询,只需使用 Table 插件即可在不进行更改的情况下进行可视化,您应将“时间序列”更改为“表格”格式,以便在 grafana 端进行正确的数据转换

    【讨论】:

    • 你能分享你从查询编辑器中生成的 SQL 吗?
    • 我已经努力了一个星期了,但还是解决不了。看来我自己解决不了。 @Slach
    • 我再次问您请分享您从 grafana clickhouse 查询编辑器中生成的“生成的 SQL”
    【解决方案2】:

    promQL 查询的模拟 cluster_cm_agent_physical_memory_used{host='test01'} 104189952 应该是这样的

    SELECT
            EventDateTime,
            Value AS cluster_cm_agent_physical_memory_used
        FROM
            $table
        WHERE
            Metric = 'cluster_cm_agent_physical_memory_used'
            AND LabelValues[indexOf(LabelNames,'host')] = 'test01'
            AND $timeFilter 
        ORDER BY
            EventDateTime
    
    

    【讨论】:

    • Generated SQL image 如果我将$timeFilter替换为EventDateTime = '2021-05-26 09:10:29',我可以得到数据,但是没有时间序列。
    • 仅设置一秒时,您期望什么时间序列?您可以尝试在 clickhouse-client 中运行生成的 SQL 并检查返回了哪些数据
    • 是的,我设置为一秒,因为$timeFilter 不返回任何数据点。
    • 找到原因:Clickhouse最新数据时间:EventDateTime: 2021-05-27 06:56:01,生成SQL最新数据时间:1622076908 (2021-05-27 08:55:08)
    • 检查您的摄取过程,也许您在尝试将数据插入 clickhouse 时丢失了时区?
    猜你喜欢
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2018-12-31
    • 2021-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多