使用set_function的Perl Prometheus量规添加标签未提供预期的结果

时间:2018-09-27 13:29:09

标签: perl prometheus

我正在尝试在普罗米修斯量规上添加标签。使用set方法可以很好地工作,但似乎我无法正确使用set_function方法。

结果是我只是在使用set_function方法的地方看不到量规。

结果(清理后)如下:

# HELP Test Test help 
# TYPE Test gauge

期望第三行显示“ Test {color =“ red”} 123“

Pastebin输入代码。

#!/usr/bin/env perl

use Net::Prometheus;

my $client = Net::Prometheus->new;

$client->new_gauge(name => "Test", help => "Test help", labels => [qw/color/])->set_function('red', sub { return 123 });

print $client->render;

不确定我是在做错什么还是错误?

普罗米修斯new_gauge->new_function()

  

方法

     

设置

     

$ gauge-> set([@label_values],$ value)
  $ child-> set($ value)

     

设置仪表的当前值。

     

如果仪表已定义了任何标签,则必须给出它们的值   首先。

     

设置功能

     

$ gauge-> set_function([@label_values],$ func)
  $ child-> set_function($ func)

     

设置返回值的回调函数   量规。如果量规已贴标签,则每个标签组合   需要自己的功能。

     

被调用时,该函数将不传递任何参数,并且是预期的   返回单个值

1 个答案:

答案 0 :(得分:3)

我不确定这是否是Net::Prometheus的预期方法,但是创建一个量规,设置一个值然后设置一个功能对我来说是可行的:

my $c = Net::Prometheus->new;
my $g = $c->new_gauge(name=>'Test',help=>'help',labels=>['color']);
$g->set('red',1);
$g->set_function('red',sub { warn 'Getter called'; 123 });
print $c->render

此输出

Getter called at ...
# HELP Test help
# TYPE Test gauge
Test{color="red"} 123

我认为文档对此可能会更清楚。

此问题已在0.06 release中解决。