Grafana 仪表板缩小时不显示数据

Con*_*ole 2 grafana prometheus

我有一个 Prometheus 服务器,它使用此导出器将我们的 aws 计费数据作为指标进行抓取。我每 6 小时抓取一次计费指标以限制请求。Grafana 服务器使用这些数据构建一些仪表板。

当我选择时,仪表板会按预期显示数据Last 24 hours

带数据的仪表板

但是如果我将范围更改为this Month图表No data points

仪表板有错误

我还没有找到任何方法让 Grafana 在缩小时显示数据。这是配置

{
  "aliasColors": {},
  "bars": true,
  "dashLength": 10,
  "dashes": false,
  "fill": 1,
  "gridPos": { "h": 12, "w": 5, "x": 5, "y": 16 },
  "id": 12,
  "legend": {
    "alignAsTable": true,
    "avg": false,
    "current": true,
    "hideEmpty": false,
    "hideZero": false,
    "max": false,
    "min": false,
    "rightSide": false,
    "show": true,
    "total": false,
    "values": true
  },
  "lines": false,
  "linewidth": 1,
  "links": [],
  "nullPointMode": "connected",
  "percentage": false,
  "pointradius": 2,
  "points": false,
  "renderer": "flot",
  "seriesOverrides": [],
  "spaceLength": 10,
  "stack": true,
  "steppedLine": false,
  "targets": [
    {
      "expr": "topk(5 ,aws_billing_estimated_charges_sum{linked_account=\"1234567890\"})",
      "format": "time_series",
      "intervalFactor": 1,
      "legendFormat": "{{service_name}}",
      "refId": "A"
    }
  ],
  "thresholds": [],
  "timeFrom": null,
  "timeRegions": [],
  "timeShift": null,
  "title": "Prod: Top 5 Services ",
  "tooltip": {
    "shared": true,
    "sort": 0,
    "value_type": "individual"
  },
  "type": "graph",
  "xaxis": {
    "buckets": null,
    "mode": "time",
    "name": null,
    "show": true,
    "values": []
  },
  "yaxes": [
    {
      "format": "currencyUSD",
      "label": null,
      "logBase": 1,
      "max": null,
      "min": null,
      "show": true
    },
    {
      "format": "short",
      "label": null,
      "logBase": 1,
      "max": null,
      "min": null,
      "show": false
    }
  ],
  "yaxis": {
    "align": false,
    "alignLevel": null
  }
}
Run Code Online (Sandbox Code Playgroud)

如何让 Grafana 显示我的图表?

Ali*_*ean 8

我没有任何分辨率如此低的指标,所以我无法实际测试它。但我认为问题是缩小时的结果步骤超过 5 分钟(Prometheus 的默认“回溯增量”,可通过--query.lookback-delta命令行标志进行配置)。

这个回溯增量的意思是,如果您查询时间序列在某个时间点的值(通过即时查询,或通过范围查询,该查询将检索所述时间序列在不同时间点的值,以一个固定的步长时间),只有在 5 分钟内有样本的情况下,您才会得到一个值。因此,如果步长远大于 5 分钟且采样间隔远大于 5 分钟,则查询不太可能在采样后 5 分钟内命中时间戳,而更有可能命中前 5 分钟内没有样本的时间戳。

所以你需要做的就是延长这5分钟的时间范围。通过上面的命令行标志(不推荐,因为对于具有更合理抓取间隔的时间序列,它可能会破坏其他假设);或使用其中一项<aggregation>_over_time功能。结合 Grafana 的$__interval变量,类似这样的东西应该可以工作:

topk(5, max_over_time(aws_billing_estimated_charges_sum{linked_account="1234567890"}[$__interval]))
Run Code Online (Sandbox Code Playgroud)

这将“迫使”Prometheus 回顾$__interval(这是 Grafana 查询的样本之间的间隔)而不是 5 分钟。如果时间范围为一个月(以及屏幕截图中的图形大小),我猜这大约是 1 小时左右,因此 Grafana 会每 1 小时查询一次样本,其中最大值是前 1 小时的值。

如果您希望这些样本产生像第一个图表中那样的线条,而不是不相交的点,那么您还应该在 Grafana 中设置最小步6h6h或者在查询中使用固定间隔,但随后您会得到一个仅更改每个 的阶跃函数6h