9

Pushgateway を使用して、複数ラベルのメトリクスを Prometheus にプッシュしたいと考えています。ドキュメントには curl の例が記載されていますが、Python 経由で送信する必要があります。さらに、メトリックに複数のラベルを埋め込みたいと考えています。

4

3 に答える 3

6

これが私がやったことです-正しくなるまでに時間がかかりました。理想的には、この目的のために特別に設計された Prometheus python クライアントを使用していたでしょうが、場合によっては複数のラベルをサポートしていないようであり、ドキュメントは事実上存在しないため、自家製のソリューションを使用しました。

以下のコードは gevent を使用し、複数の (カンマ区切りの) pushgateway URL (「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)
于 2016-12-06T07:16:54.747 に答える
5

これは、Python クライアントについて文書化されています: https://github.com/prometheus/client_python#exporting-to-a-pushgateway

于 2016-12-06T07:57:19.497 に答える