【问题标题】:How to create custom metrics in prometheus?如何在 prometheus 中创建自定义指标?
【发布时间】:2019-04-11 06:54:57
【问题描述】:

我正在为未来的需求设置一个监控 PoC。 PoC 是在我的计算机上本地开发的。为了监控指标,我使用 Prometheus 和 Grafana。 我想计算收到的文件数量和处理它所花费的时间。为此,我需要创建自定义指标。

我正在使用 python 2.7.5。现在我已经将普罗米修斯和目标联系起来了。我收到了指标,但不知道如何创建我想要的指标。

counter = prom.Counter('python_my_counter', 'This is my counter')
gauge = prom.Gauge('python_my_gauge', 'This is my gauge')
histogram = prom.Histogram('python_my_histogram', 'This is my histogram')
summary = prom.Summary('python_my_summary', 'This is my summary')


def thr():
    while True:
        counter.inc(random.random())
        gauge.set(random.random() * 15 - 5)
        histogram.observe(random.random() * 10)
        summary.observe(random.random() * 10)
        process_request(random.random() * 5)

        time.sleep(1)

我希望收到的文件总数“计算收到的文件数”指标。 处理一个文件所花费的时间(即2s)和处理一个文件所花费的时间总和(50s)。

【问题讨论】:

    标签: python prometheus metrics


    【解决方案1】:

    您的用例不需要所有这些指标。只需向 prometheus 注册 summary 指标,例如:

    from prometheus_client import Summary
    import time
    # Create a metric to track time spent and requests made.
    REQUEST_TIME = Summary('request_processing_seconds', 'Time spent processing request')
    # Decorate function with metric.
    @REQUEST_TIME.time()
    def process_request(t):
        """A dummy function that takes some time."""
        time.sleep(t)
    

    那么您就有了request_processing_seconds_countrequest_processing_seconds_sum 可用的指标。​​

    【讨论】:

    • 感谢您的回答。如何生成随时间返回恒定值的指标(即指标 = 1)?
    • 您试图通过随时间返回恒定值来解决什么用例?如果您只想要一个常量值,您可以注册任何counter 指标并且永远不要增加它。 AFAIK 指标不是为此而制定的。请在此处阅读何时(不)使用指标:medium.com/@copyconstruct/logs-and-metrics-6d34d3026e38
    • @kalimba 如何向 Prometheus 注册自定义指标?
    猜你喜欢
    • 1970-01-01
    • 2018-10-28
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 2020-08-22
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多