prometheus 将一个 NaN 值结果相加为 NaN。如何避免?

Gio*_*nni 2 monitoring prometheus

我在 prometheus 中有以下指标:它按秒计算 memcached 命令:

sum (irate (memcached_commands_total{instance="memcached-instance"}[5m])) by (command)
Run Code Online (Sandbox Code Playgroud)

结果:

{command="delete"}  0
{command="flush"}   0
{command="get"} 62.733333333333334
{command="incr"}    0
{command="set"} 93.43333333333334
{command="touch"}   NaN
{command="cas"} 0
{command="decr"}    0
Run Code Online (Sandbox Code Playgroud)

我想按秒计算命令(不同命令没有单独的速率)。我尝试了以下公式:

sum (irate (memcached_commands_total{instance="memcached-instance"}[5m]))
Run Code Online (Sandbox Code Playgroud)

但结果是:

{}  NaN
Run Code Online (Sandbox Code Playgroud)

我期望大约 155,但它是 NaN。我想是 command="touch" 罪魁祸首。可以从总和中排除 NaN 吗?

Gio*_*nni 6

我已经想通了:

sum (irate (memcached_commands_total{instance="memcached-instance"}[5m]) > 0)
Run Code Online (Sandbox Code Playgroud)

返回正确的数字。>0诀窍。

  • 这对于计数器来说很好......但是如果它是一个可能有负值的仪表怎么办?我想做 `sum(my_metric{...} != NaN)` 但据我所知没有这样的事情...... (2认同)