平滑 Grafana 图表

平滑 Grafana 图表

我正在公司基础设施上设置监控。我安装了带有 Prometheus 数据源的 Grafana。我构建了仪表板,并获得了相当“尖锐”的图表。我想知道是否有任何方法可以使其更平滑一些,以便更具可读性。

谢谢 !

答案1

首先我应该说一下,我是一个 Prometheus 新手,自己正在习惯 PromQL。

我应该提醒自己,“速率”只适用于计数器,而不适用于计量器(您的示例对此没有异议)。我将使用主机在 TCP 套接字上调用 connect() 的次数。

node_netstat_Tcp_ActiveOpens

绘制该图表时,它总是在增加,因此很可能是一个计数器,即使节点导出器数据源显示以下内容:

# HELP node_netstat_Tcp_ActiveOpens Statistic TcpActiveOpens.
# TYPE node_netstat_Tcp_ActiveOpens untyped
node_netstat_Tcp_ActiveOpens 20684

我只有一个正在监控的实例,但是让我们在其中添加一个过滤器,这样我们就不会查询太多的时间序列:

node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}

让我们为其添加一个“费率”:

rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"})

哦,但是失败了,提示“在调用函数“rate”时预期类型为范围向量,得到即时向量”;要绘制此图,我们需要“即时向量”类型的数据,但我们得到的是“速率向量”。我们需要指定一个量子(我不认为 Prometheus 使用的术语)来聚合/窗口化时间序列数据。

rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m])

好的,这可行,我们可以通过将 5m 改为 20m 等来进行平滑处理...

但是峰值可能是有用的,并且“速率”只是处理数据的一种方式。

我认为查看数据的某个百分位数很有用,这有助于消除异常值,但仍能使显示的数据更加生动。这里我指定了第 90 个百分位数。

quantile(0.9, rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m]))

您将需要尝试这个更现实的数据来找到一个合适的分位数(0.9)和窗口(5m)。

我们假设这些数据具有故障模式,并且我们想将该数据与 1 天前的数据进行比较:

  quantile(0.9, rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m]))
- quantile(0.9, rate(node_netstat_Tcp_ActiveOpens{instance="localhost:9100"}[5m] offset 1d))

希望这能给你一些启发;至少对我来说这肯定是有用的:)

干杯,卡梅伦

答案2

我认为你可以使用速度在你的 Prometheus 查询中,例如

返回过去 30 分钟内 http_requests_total 指标的 5 分钟速率,分辨率为 1 分钟。

速率(http_requests_total[5m])[30m:1m]

相关内容