【问题标题】:grafana-influxdb get multiple rows for last timestampgrafana-influxdb 获取最后一个时间戳的多行
【发布时间】:2017-06-06 11:44:57
【问题描述】:

我正在一起使用 telegraf-influxdb-grafana。但我无法仅获取最后一个时间戳的行。 这就是我正在做的事情;

  • 使用 Telegraf(执行插件)收集数据库统计信息(当时正在运行查询)。

  • 将输出存储到 influxdb

  • 试图通过 grafana 监控正在运行的查询

但我需要获取最后一个时间戳的所有行。

这是我尝试过的;

> select * from postgresql_running_queries where time=(select max(time) from postgresql_running_queries)
ERR: error parsing query: found SELECT, expected identifier, string, number, bool at line 1, char 54

这是我想看到的;

Time                 DB     USER      STATE                QUERY
2017-06-06 14:25.00  mydb   myuser    active               my_query
2017-06-06 14:25.00  mydb   myuser    idle in transaction  my_query2
2017-06-06 14:25.00  mydb2  myuser2   active               my_query3

任何人都可以帮助我实现这一目标吗? 我愿意接受任何解决方案。

【问题讨论】:

    标签: time-series influxdb grafana


    【解决方案1】:
    select last(fieldname) from measurment_name;
    

    这种格式的查询将从 InfluxDB 返回最后一个时间戳数据。

    但令我惊讶的是,您期望单个时间戳有 3 个值(除非您有不同的 TAG 值,请参阅此文档 how to store duplicate points)。对于给定的时间戳,您将只有一条记录。如果有另一个相同时间戳的条目here is why,InfluxDB 会覆盖以前的内容。

    您的结果将类似于(如果您没有不同的 TAG 值):

    Time                 DB     USER      STATE                QUERY
    2017-06-06 14:25.00  mydb2  myuser2   active               my_query3
    

    编辑:

    根据评论,我的猜测是您使用标签来区分,上面的查询应该可以工作,如果没有,您可以尝试添加 WHERE 子句。

    【讨论】:

    • 其实并没有覆盖。我有来自 Telegraf 的指标,这些指标存储在 InfluxDB 中。比如cpu。 16cpu 指标具有相同的时间戳。 image_for_query
    • 16 个指标具有相同的时间戳,这是有道理的。但是你不能有两次相同的时间戳(除非你有两个不同的标签)。
    • 哦,谢谢,现在我明白了。但是有没有我们可以与 Telegraf 和 Grafana 一起使用的类似于 InfluxDB 的数据库?我需要存储具有相同时间戳(没有不同标签)的指标,并且我可以在最后一个时间戳获得多行。
    • 有很多时间序列数据库,但它们与 Grafana、Telegraf 等一起工作,我不确定。您可能需要自己进行研究。祝你好运!
    猜你喜欢
    • 1970-01-01
    • 2021-06-12
    • 2021-12-04
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多