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

Posted

技术标签:

【中文标题】这是通过grafana使用它的正确方法吗?【英文标题】:Is this the correct way to use it via 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_usedhost='test01' 104189952

【问题讨论】:

【参考方案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” Generated SQL【参考方案2】:

promQL 查询的模拟 cluster_cm_agent_physical_memory_usedhost='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 时丢失了时区?

以上是关于这是通过grafana使用它的正确方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

这是使用 QThread 的正确方法吗?

centos7安装Grafana

grafana 简介

无法使用 HTTP API 创建 Grafana 用户

在本地缓存 Grafana 插件

将 Grafana 连接到 MySQL 显示查询失败,为啥?