Python AWS lambda上的New Relic未读取其配置文件
我正在使用zappa将python/django wsgi应用程序部署到AWS API网关和Lambda 我的环境中有所有这些: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"
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