2016-12-06 193 views

回答

0

這就是我最終做的 - 花了一段時間才弄好。儘管理想情況下我會使用專門爲此設計的Prometheus python客戶端,但在某些情況下它似乎不支持多個標籤,而且文檔實際上並不存在 - 所以我採用了家庭釀造的解決方案。

下面的代碼使用gevent並支持多個(逗號分隔)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

上面的代碼生成一個無類型度量。要生成一個輸入的指標,你需要在「# counter \ n」(用於計數器指標)前加載荷。 – FuzzyAmi

相關問題