Python AWS lambda上的New Relic未读取其配置文件

Python AWS lambda上的New Relic未读取其配置文件,python,django,aws-lambda,newrelic,Python,Django,Aws Lambda,Newrelic,我正在使用zappa将python/django wsgi应用程序部署到AWS API网关和Lambda 我的环境中有所有这些: NEW_RELIC_CONFIG_FILE: /var/task/newrelic.ini NEW_RELIC_LICENSE_KEY: redacted NEW_RELIC_ENVIRONMENT: dev-zappa NEW_RELIC_STARTUP_DEBUG: "on" NEW_RELIC_ENABLED: "on"

我正在使用zappa将python/django wsgi应用程序部署到AWS API网关和Lambda

我的环境中有所有这些:

    NEW_RELIC_CONFIG_FILE: /var/task/newrelic.ini
    NEW_RELIC_LICENSE_KEY: redacted
    NEW_RELIC_ENVIRONMENT: dev-zappa
    NEW_RELIC_STARTUP_DEBUG: "on"
    NEW_RELIC_ENABLED: "on"
我正在我的
wsgi.py
中执行“手动代理启动”,如下所示:

我没有使用
@newrelic.agent.wsgi_应用程序,因为django应该被自动神奇地检测到

我添加了一个中间件来在lambda被冻结之前关闭代理,但是日志显示只有第一个请求被发送到newrelic。如果没有关闭,我就不会从NewRelic代理获得任何日志记录,而且APM中也没有任何事件

class NewRelicShutdownMiddleware(MiddlewareMixin):
    """Simple middleware that shutsdown the NR agent at the end of a request"""

    def process_request(self, request):
        pass
        # really wait for the agent to register with collector
        # Enabling this causes more log messages about starting data samplers, but only on the first request
        # newrelic.agent.register_application(timeout=10)

    def process_response(self, request, response):
        newrelic.agent.shutdown_agent(timeout=2.5)
        return response

    def process_exception(self, request, exception):
        pass
        newrelic.agent.shutdown_agent(timeout=2.5)
在我的
newrelic.ini
中,我有以下内容,但当我登录
newrelic.agent.global_settings()
时,它包含默认的应用程序名(在APM中创建)并且enabled=False,这导致了上面的一些攻击(环境变量,在初始化之前只需编辑
newrelic.agent.global_settings()

[newrelic:dev-zappa]                                                                                          
app_name = DEV APP zappa                                                                                      
monitor_mode = true                                                                                           
TL;DR-两个问题:

  • 当New Relic不想读取它的ini文件时,如何让它读取它的ini文件
  • 如何让New Relic在AWS lambda中记录所有请求的数据

  • Zappa不使用您的wsgi.py文件(当前),所以那里的钩子没有发生。看看这个允许它的PR:

    我的newrelic django zappa项目也有类似的问题。你是如何让Lambda用你的内容创建
    /var/task/newrelic.ini
    的?@kichik它在zappa上传的zipfile中。我已经确认该文件存在于该路径,哈我已将内容读到日志中。我已确认NEW_RELIC_CONFIG_文件和NEW_RELIC_环境已在环境中填充。它们似乎没有按预期使用。我之所以这样问,是因为我很难相信Lambda允许您将文件提取到根文件夹。您确定它相对于源文件夹不存在吗服务器上的der?忽略我。我没有意识到Lambda一直在使用
    /var/task
    。我希望它们已经合并…我一直在等待NR Django Zappa集成工作…@davesave它在我的分支上工作:pip install git+您需要稳定的流量才能将数据报告给NR,这取决于您的Lambda容器冻结/解冻,而不是在每个请求上都重新启动。我正在将跟踪加载到New Relic,只需在一两分钟内以几次/分钟的速度重新加载慢速页面。我的问题中的中间件不需要让NR工作。事实上,您不应该使用它。
    [newrelic:dev-zappa]                                                                                          
    app_name = DEV APP zappa                                                                                      
    monitor_mode = true