将Prometheus日志暴露给端点

时间:2018-07-15 14:48:21

标签: python request prometheus

我正在使用Python库prometheus_client跟踪我的应用程序数据。

我在Gauge中收集指标(Counter / CollectorRegistry等)。

我有http_serverBaseHTTPRequestHandler正确运行并在各个端点上返回了数据。

我想知道如何在端点上公开通过CollerctorRegistry存储的数据。

from http.server import BaseHTTPRequestHandler, HTTPServer
from prometheus_client import generate_latest, CONTENT_TYPE_LATEST

class MyLogHandler(BaseHTTPRequestHandler):
    def _set_headers(self):
        self.send_response(200)
        self.send_header("Content-type", "text/html")
        self.end_headers()

    def do_GET(self):
        if ENDPOINT_MANAGE_HEALTH in self.path:
            status_code = 200 if ServiceStatusStore.all_services_healthy() else 500
            self.send_response(status_code)

            self.send_header("Content-Type", "application/json; charset=utf-8")
            self.end_headers()

            response_content = ServiceStatusStore.get_status_json()
            self.wfile.write(response_content.encode("utf-8"))

        if ENDPOINT_PROMETHEUS in self.path:
            data = generate_latest(PrometheusGlobalRegistry.GLOBAL_REGISTRY)

            self.send_header("Content-Type", CONTENT_TYPE_LATEST)
            self.send_header("Content-Type", str(len(data)))
            self.send_response(200)

            return iter([data])

        else:
            self.send_response(500)

我加入了ENDPOINT_MANAGE_HEALTH是因为它可以正常工作并返回JSON。

我的ENDPOINT_PROMETHEUS被要求提供数据并返回状态200,但是没有传递来自CollertorRegistry的数据。我不知道数据格式是什么,应该如何传递。

我目前的解决方案是阅读该库的GitHub自述文件中的示例后的第n次尝试。

0 个答案:

没有答案