【问题标题】:Monitor request lastency and missing datapoints监控请求持续时间和丢失的数据点
【发布时间】:2019-06-24 20:51:25
【问题描述】:

我正在尝试使用Summary 类型监控请求延迟并使用 Grafana 显示百分位数。

我正在使用prometheus_client version 0.5.0。这就是我配置指标的方式

sample_processing_summary = Summary("sample_processing_3_summary_seconds", "Sample processing latency", ["sample_type"])

这就是我使用它的方式:

def message_processor(message, rat):
    with metrics.sample_processing_summary.labels(rat).time():
        do_process_message(message, rat)

现在我正在尝试显示第 99 个百分位数。在我读过的tutorial 中是 PromQl 查询

sample_app_summary_request_duration_seconds{quantile="0.99"}

但这不起作用,因为我只有 sample_processing_3_summary_seconds_countsample_processing_3_summary_seconds_sumsample_processing_3_summary_seconds_created 数据点。

如何使用 Prometheus 和 Python 在 Grafana 中显示第 99 个百分位数?

【问题讨论】:

    标签: python grafana prometheus


    【解决方案1】:

    Python 客户端目前不支持Summary 的分位数。

    您要做的是使用Histogram,然后使用histogram_quantile(0.99, rate(histogram_name_bucket[5m]))

    【讨论】:

    • :(要使用直方图,我必须提供我不知道的桶
    • 我创建了一些存储桶buckets=[5, 10, 20, 30, 50, 100, 150, 300] 并执行了您提供的查询,但结果是17.5 这意味着99% 的请求在
    • histogram_quantile 的工作方式是首先确定所请求的百分位数所在的范围(比如 96% 的请求用时不到 10 毫秒,而 100% 的请求用时不到 20 毫秒,那么范围是10-20 毫秒)。第二步是在两个桶之间进行线性插值,并估计您的特定百分位数落在哪里。 (在我之前的示例中,96% 和 100% 之间的线性插值将估计第 99 个百分位数为 17.5。)虽然这是一个估计值,所以您唯一可以肯定地说的是第 99 个百分位数介于 10 毫秒和 20 毫秒之间.
    • 哦,顺便说一句,您应该使用基本单位(即秒,而不是毫秒)作为存储桶边界,就像使用度量值一样。它可以避免很多混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多