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