使用可变标签名称创建prometheus指标

时间:2018-02-22 23:29:11

标签: python prometheus

我正在尝试将一些字典传递给此程序,并导出prometheus指标。

字典是非嵌套的

{'node-name': '0/0/CPU0', 'stack-seg-size': 136, 'text-seg-size': 108, 'shared-mem': 12748, 'process-id': 4086, 'physical-mem': 0, 'malloc-size': 1238, 'name': 'l2snoop', 'pid': 4086, 'data-seg-size': 533588, 'dyn-limit': 307200, 'jid': 251}

然而,prometheus指标中的键或标签数量可能因字典到字典而异。

我想结束这样的事情:

METRIC-NAME{node-name='0/0/CPU0', stack-seg-size='136', text-seg-size= '108', shared-mem='12748', process-id='4086', physical-mem='0', malloc-size='1238', name='l2snoop', pid='4086', data-seg-size='533588', dyn-limit= '307200', jid='251'} ''

所以我可以使用grafana来绘制标签值 http://docs.grafana.org/features/datasources/prometheus/#query-variable

我有以下代码:

        counters = CounterMetricFamily('{}'.format(metric_name), 'Metrics for {}'.format(metric_name))
        for metric in traverse_tree(data): #This returns a list of the dictionaries 
            metric = ['{}={}'.format(k,v) for k,v in metric.items()]
            counters.add_metric(metric, "")
        yield counters

没有引发任何错误但是当我转到指标页面时没有指标,我认为由于面部标签名称之前没有定义。

1 个答案:

答案 0 :(得分:1)

标签值的变化会导致高基数度量标准,这将导致普罗米修斯的性能问题。你也无法对标签值进行数学计算。

您要做的是为每个值创建一个不同命名的度量标准,这些也是Gauges,bar node-name,它不是度量标准。