【发布时间】:2021-04-13 15:06:55
【问题描述】:
我是 python 和 prometheus 的新手。我目前正在测试一个脚本来抓取指标并发送到一个舞会文件。
代码是:
from prometheus_client import CollectorRegistry, Gauge, write_to_textfile
import re,os
registry = CollectorRegistry()
textfile = 'C:\\Users\\Test\\Desktop\\Python\\'
d = {u'com.testserver.yyy:test-config-server': [u'clog,251', u'temp,33.3', u'violations,1',
u'errors,0', u'code,1', u'leaks,0']}
for x in d['com.testserver.yyy:test-config-server']:
ndx = d['com.testserver.yyy:test-config-server'].index(x)
metric = d['com.testserver.yyy:test-config-server'][ndx].split(',')[0]
value = float(d['com.testserver.yyy:test-config-server'][ndx].split(',')[1])
metric_name = re.sub("[^A-Za-z0-9]","_",'com.testserver.yyy:test-config-server')
test_metric = metric_name+"_"+metric
final_metric = Gauge(test_metric, 'Metrics scraped from test',['Type'] ,registry=registry)
final_metric.labels(metric).set(value)
output = textfile + "test_metrics.prom"
write_to_textfile(output, registry)
这是输出:
com_testserver_yyy_test_config_server_ncloc{Type="clog"} 251.0
com_testserver_yyy_test_config_server_coverage{Type="temp"} 33.3
com_testserver_yyy_test_config_server_violations{Type="violations"} 1.0
com_testserver_yyy_test_config_server_vulnerabilities{Type="errors"} 0.0
com_testserver_yyy_test_config_server_code_smells{Type="code"} 1.0
com_testserver_yyy_test_config_server_bugs{Type="leaks"} 0.0
但是,大约有 100 个字典键(等于 100 个 metric_names),每个键有 6 个指标,因此将有大约 600 个唯一的“final_metric”。是否可以有相同的指标名称但由标签区分?
如果可能,这是所需的输出:
com_testserver_yyy_test_config_server{Type="clog"} 251.0
com_testserver_yyy_test_config_server{Type="temp"} 33.3
com_testserver_yyy_test_config_server{Type="violations"} 1.0
com_testserver_yyy_test_config_server{Type="errors"} 0.0
com_testserver_yyy_test_config_server{Type="code"} 1.0
com_testserver_yyy_test_config_server{Type="leaks"} 0.0
当我把代码改成这样时:
for x in d['com.testserver.yyy:test-config-server']:
ndx = d['com.testserver.yyy:test-config-server'].index(x)
metric = d['com.testserver.yyy:test-config-server'][ndx].split(',')[0]
value = float(d['com.testserver.yyy:test-config-server'][ndx].split(',')[1])
metric_name = re.sub("[^A-Za-z0-9]","_",'com.testserver.yyy:test-config-server')
final_metric = Gauge(metric_name, 'Metrics scraped from test',['Type'] ,registry=registry)
final_metric.labels(metric).set(value)
output = textfile + "test_metrics.prom"
write_to_textfile(output, registry)'''
输出有错误: ValueError:CollectorRegistry 中的重复时间序列:{'com_testserver_yyy_test_config_server'}
标签似乎无法区分每个指标。
【问题讨论】:
标签: python prometheus