簡體   English   中英

Prometheus statsd-exporter - 如何在請求持續時間指標(直方圖)中標記狀態代碼

[英]Prometheus statsd-exporter - how to tag status code in request duration metric (histogram)

我已經設置了 statsd-exporter 來從 gunicorn Web 服務器抓取指標。 我的目標是僅針對成功請求(非 5xx)過濾請求持續時間指標,但是在 statsd-exporter 中,無法在持續時間指標中標記狀態代碼。 任何人都可以建議一種在請求持續時間指標中添加狀態代碼的方法,或者一種在普羅米修斯中僅過濾成功請求持續時間的方法。

特別是我想從 statsd-exporter 到 prometheus 提取成功的請求持續時間hitogram。

要將成功的請求持續時間直方圖指標從 gunicorn Web 服務器導出到 prometheus,您需要在 gunicorn 源代碼中添加此功能。

首先看一下這里導出 statsd 指標的代碼。 你應該看到這種代碼的平靜:

status = resp.status
...
self.histogram("gunicorn.request.duration", duration_in_ms)

通過將代碼更改為這樣:

self.histogram("gunicorn.request.duration.%d" % status, duration_in_ms)

從這一刻起,您將導出帶有狀態代碼的指標名稱,例如gunicorn_request_duration_200gunicorn_request_duration_404等。

您還可以通過將如下配置添加到您的statsd_exporter來稍微修改它並將狀態代碼移動到標簽:

mappings:
  - match: gunicorn.request.duration.*
    name: "gunicorn_http_request_duration"
    labels:
      status: "$1"
      job: "gunicorn_request_duration"

因此,您的指標現在將如下所示:

# HELP gunicorn_http_request_duration Metric autogenerated by statsd_exporter.
# TYPE gunicorn_http_request_duration summary
gunicorn_http_request_duration{job="gunicorn_request_duration",status="200",quantile="0.5"} 2.4610000000000002e-06
gunicorn_http_request_duration{job="gunicorn_request_duration",status="200",quantile="0.9"} 2.4610000000000002e-06
gunicorn_http_request_duration{job="gunicorn_request_duration",status="200",quantile="0.99"} 2.4610000000000002e-06
gunicorn_http_request_duration_sum{job="gunicorn_request_duration",status="200"} 2.4610000000000002e-06
gunicorn_http_request_duration_count{job="gunicorn_request_duration",status="200"} 1
gunicorn_http_request_duration{job="gunicorn_request_duration",status="404",quantile="0.5"} 3.056e-06
gunicorn_http_request_duration{job="gunicorn_request_duration",status="404",quantile="0.9"} 3.056e-06
gunicorn_http_request_duration{job="gunicorn_request_duration",status="404",quantile="0.99"} 3.056e-06
gunicorn_http_request_duration_sum{job="gunicorn_request_duration",status="404"} 3.056e-06
gunicorn_http_request_duration_count{job="gunicorn_request_duration",status="404"} 1

現在要在 prometheus 中查詢除具有 5xx 狀態的指標以外的所有指標,您可以運行:

gunicorn_http_request_duration{status=~"[^5].*"}

讓我知道它是否有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM