Grafana 中 Prometheus 数据的堆叠图

问题描述 投票:0回答:2

我一直在尝试根据 Prometheus 数据在 Grafana 中创建堆积条形图,但很困难,说实话,我什至不完全确定我正在尝试做的事情是否可行。我尝试过使用旧的图表面板和新的条形图面板 - 但说实话,我发现新的条形图面板相当不直观,而且文档也很模糊。我正在使用按响应代码分割的 nginx 请求的时间序列计数器。 Prometheus 中的数据样本是:

nginx_vts_server_requests_total{code="2xx", host="example.com", instance="localhost:443", job="nginx_vts"}

我希望根据过去 12 小时的请求数创建一个堆积图表,并采用最后一个值:

increase(nginx_vts_server_requests_total[12h])

我没有包含聚合,因为我只使用单个实例。

我希望创建与此图像类似的东西(在 Excel 中模拟):

如果有人之前在 Grafana 中基于 Prometheus 数据创建了这样的图表,如果您能向我展示它是如何完成的(如果实际上可能的话),我将非常感激。 https://grafana.com/docs/grafana/latest/visualizations/bar-chart/页面顶部的屏幕截图表明,尽管此示例未堆叠,但可以进行此类分组。

prometheus grafana
2个回答
5
投票

我也遇到过类似的问题。这是我使用的查询;这非常相似:

sum(rate(http_requests_received_total[1h])) by (code,instance)
  • 首先确保条形图选项堆叠设置为正常
  • 将查询Type设置为Instant,因为我们只使用最后一个值。
  • 继续转换查询。请记住,“表格视图”选项是您了解正在发生的事情的朋友。按此顺序添加: 添加
      Reduce
    • 转换以减少 Series to rows。我使用 Max 计算,但请记住我们实际上只有一个。 添加
    • 提取字段
    • 转换以将Field拆分为单独的字段。 如果您想对排序进行任何操作,可以在此处添加
    • Sort by
    • 转换。 添加
    • 分组到矩阵
    • 转换以从新的code字段创建新列。使用
      code
      作为
      Column
      instance 作为
      Row
      ,使用 Max 作为 Cell Value
  • PS:如果出现错误,请使用
Grafana Explore

检查这些值是否与您想象的一样。特别要注意 code

instance
上的空值。


0
投票
Grouping to matrix

变换。

我在普罗米修斯中的查询是:

sum (gitlab_ci_pipeline_job_duration_seconds{job_name=~"Random job matching.*"}) by (ref,job_name)

我配置的数据转换是:

结果如下:

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.