网络框架¶
以下是一些为您的 Web 应用程序配备检测工具的提示。
Integrations¶
如果您正在使用以下库之一,请查看集成文档:
否则,请检查您的服务器是否使用 WSGI 或 ASGI,并检查相应的集成。
捕获 HTTP 服务器请求和响应标头¶
某些方法(例如 logfire.instrument_fastapi()
)允许您传递 capture_headers=True
以在跨度中记录所有请求和响应标头,这通常就是您所需要的全部。
如果您想要更多控制,有三个环境变量可告知 OpenTelemetry 检测库捕获请求和响应标头:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS
每个都接受一个以逗号分隔的正则表达式列表,这些正则表达式不区分大小写地针对标头名称进行检查。前两个确定捕获哪些请求/响应标头并将其添加到跨度属性中。第三个确定哪些标头的值将被编辑。
例如,若要捕获所有标头,请进行如下设置:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST=".*"
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE=".*"
(这就是 capture_headers=True
所做的)
专门捕获 content-type
请求标头和以 X-
开头的请求标头 :
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST="content-type,X-.*"
将 Authorization
标头值替换为 [REDACTED]
以避免泄露用户凭据:
OTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SANITIZE_FIELDS="Authorization"
(尽管通常依靠 Logfire 的清理功能会更好)
查询每个百分位数的 HTTP 请求持续时间¶
通常,可视化每个百分位数的 HTTP 请求持续时间是很有趣的。与可能受极端值影响的平均值不同,百分位数使我们能够了解 50%、90%、95%或 99%的请求的最大持续时间。
以下是一个用于计算 HTTP 请求持续时间的那些百分位数的示例查询:
WITH dataset AS (
SELECT
time_bucket('%time_bucket_duration%', start_timestamp) AS x,
(extract(epoch from end_timestamp - start_timestamp) * 1000) as duration_ms
FROM records
WHERE attributes ? 'http.method'
)
SELECT
x,
percentile_cont(0.99) WITHIN GROUP (ORDER BY duration_ms) as percentile_99,
percentile_cont(0.95) WITHIN GROUP (ORDER BY duration_ms) as percentile_95,
percentile_cont(0.90) WITHIN GROUP (ORDER BY duration_ms) as percentile_90,
percentile_cont(0.50) WITHIN GROUP (ORDER BY duration_ms) as percentile_50
FROM dataset
GROUP BY x
ORDER BY x DESC;
注意我们是如何对设置了 http.method
属性的记录进行筛选的。这是检索与 HTTP 请求相关的跟踪的一个良好起点,但根据您的设置,您可能需要添加更多筛选器。
此查询是仪表板中时间序列图表的良好候选对象:
本文总阅读量次