You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django API的New Relic事务显示视图函数名,如何改为展示API端点?

在Django中配置New Relic以显示API端点作为事务名称

New Relic默认会以Django视图函数名作为事务名称,要改成显示API端点,可通过以下几种方式实现:

方法一:在视图中手动设置事务名称

直接在视图函数或类视图中调用New Relic的API指定事务名称:

函数视图示例

import newrelic.agent

def function1_name(request):
    # 用请求路径作为事务名称,也可自定义格式
    newrelic.agent.set_transaction_name(request.path, group="Django/API")
    # 原有业务逻辑
    ...

类视图示例

import newrelic.agent
from rest_framework.views import APIView

class MyAPIView(APIView):
    def dispatch(self, request, *args, **kwargs):
        # 提前设置事务名称
        newrelic.agent.set_transaction_name(request.path, group="Django/API")
        return super().dispatch(request, *args, **kwargs)

方法二:通过中间件全局配置

创建一个全局中间件,自动为所有符合条件的API请求设置事务名称,避免逐个修改视图:

编写中间件

import newrelic.agent

class NewRelicAPINameMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # 仅对API路径生效,可根据实际路径调整判断条件
        if request.path.startswith('/api/'):
            # 若URL含参数(如/api/user/<int:pk>/),可改用request.resolver_match.url_name统一命名
            # 示例:newrelic.agent.set_transaction_name(f"/api/{request.resolver_match.url_name}", group="Django/API")
            newrelic.agent.set_transaction_name(request.path, group="Django/API")
        response = self.get_response(request)
        return response

注册中间件

在项目settings.py的MIDDLEWARE列表中添加该中间件(建议放在靠前位置):

MIDDLEWARE = [
    # 其他中间件
    'your_app_name.middleware.NewRelicAPINameMiddleware',
    # 其他中间件
]

方法三:修改New Relic配置文件全局生效

直接调整New Relic的配置文件(newrelic.ini),让它优先使用URL路径作为事务名称:

找到[framework:django]配置段,修改事务名称生成器:

[framework:django]
transaction_name_generator = newrelic.hooks.framework_django:transaction_name_generator_url

该配置会全局替换默认的视图函数命名规则,改用URL路径作为事务名称。

注意事项

  • 如果API URL包含动态参数(如用户ID、商品ID),直接使用request.path会导致事务名称碎片化(每个参数值对应一个事务)。此时建议使用request.resolver_match.url_name获取URL配置中的别名,统一归为同一个事务名称。

内容的提问来源于stack exchange,提问作者Aditya Tiwari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 22:52:55