[英]Setup statsd-exporter as daemon on Kubernetes and send metrics to it from pods
[英]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_200
或gunicorn_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.