Я хочу нажать метрику с меткой в Prometheus с помощью Pushgateway. Документация предлагает пример скручивания, но мне нужно отправить его через Python. Кроме того, я хотел бы добавить несколько меток в метрику.Как нажимать метрики с Python и Prometheus Pushgateway
4
A
ответ
0
Вот что я в итоге сделал - потребовалось время, чтобы поправиться. Хотя в идеале я бы использовал клиент Python от Prometheus, разработанный специально для этой цели, похоже, что он не поддерживает несколько ярлыков в некоторых случаях, а документация практически не существует - поэтому я пошел с домашним решением.
Код ниже использует gevent и поддерживает множественные URL-адреса pushgateway (например, «pushgateway1.my.com:9092, pushgateway2.my.com:9092»).
import gevent
import requests
def _submit_wrapper(urls, job_name, metric_name, metric_value, dimensions):
dim = ''
headers = {'X-Requested-With': 'Python requests', 'Content-type': 'text/xml'}
for key, value in dimensions.iteritems():
dim += '/%s/%s' % (key, value)
for url in urls:
requests.post('http://%s/metrics/job/%s%s' % (url, job_name, dim),
data='%s %s\n' % (metric_name, metric_value), headers=headers)
def submit_metrics(job_name, metric_name, metric_value, dimensions={}):
from ..app import config
cfg = config.init()
urls = cfg['PUSHGATEWAY_URLS'].split(',')
gevent.spawn(_submit_wrapper, urls, job_name, metric_name, metric_value, dimensions)
0
Это документирован для клиента Python: https://github.com/prometheus/client_python#exporting-to-a-pushgateway
код выше генерирует нетипизированную метрику. Чтобы создать типизированную метрику, вам необходимо добавить полезную нагрузку с помощью «# TYPE counter \ n» (для счетчика). –
FuzzyAmi