如何在FastAPI中关闭elastic-apm的请求体日志功能
解决FastAPI中Elastic APM冗余日志问题
完全可以通过调整Elastic APM客户端的配置参数,关闭请求体、请求头等冗余数据的采集,只保留请求的时间和目标信息(比如请求路径、HTTP方法、响应时间这些核心事务数据)。
你只需要在make_apm_client的配置字典里添加以下关键参数:
CAPTURE_BODY: 设置为"off",彻底关闭请求体的采集CAPTURE_HEADERS: 设置为False,关闭请求和响应头的采集(如果不需要这些信息的话)TRANSACTION_SAMPLE_RATE: 保持为1.0(默认值),确保每个请求的事务都被记录(如果不需要抽样的话)
修改后的完整代码如下:
app = FastAPI( title="My API", description="Hello from my API!" ) apm = make_apm_client( { "SERVICE_NAME": "MyService", "SERVER_URL": CONFIG["elastic_apm"]["server_url"], "SECRET_TOKEN": CONFIG["elastic_apm"]["token"], # 新增配置,关闭冗余数据采集 "CAPTURE_BODY": "off", "CAPTURE_HEADERS": False, "TRANSACTION_SAMPLE_RATE": 1.0 } ) app.add_middleware(ElasticAPM, client=apm)
参数说明
CAPTURE_BODY: 可选值有"off"、"errors"、"all",设为"off"后不会采集任何请求体数据CAPTURE_HEADERS: 布尔值,设为False后不再采集请求头和响应头的内容TRANSACTION_SAMPLE_RATE: 控制事务的抽样率,1.0表示记录所有请求的事务数据,确保你能获取每个请求的时间和目标信息
这样配置后,Elastic APM只会记录每个请求的核心事务数据:请求路径、HTTP方法、响应状态码、响应时间、服务名称等,不会再发送请求体、请求头这类数据量较大的冗余信息,有效降低高负载场景下的APM数据传输量。
内容的提问来源于stack exchange,提问作者Nick Zorander
相关产品推荐
相关产品推荐

