2017-11-03 19 views
1

저는 zappa를 사용하여 AWS API 게이트웨이와 람다에 python/django wsgi 앱을 배포하고 있습니다.AWS 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.pydocumented로 "수동 에이전트 시작"을하고 있어요 : 나는 @newrelic.agent.wsgi_application를 사용하지이야

import newrelic.agent 
# Will collect NEW_RELIC_CONFIG_FILE and NEW_RELIC_ENVIRONMENT from the environment 
# Dear god why??!?! 
# NB: Looks like this IS what makes it go 
newrelic.agent.global_settings().enabled = True 
newrelic.agent.initialize('/var/task/newrelic.ini', 'dev-zappa', log_file='stderr', log_level=logging.DEBBUG) 

장고는 자동으로 탐지되어야하기 때문에

나는 sh에 미들웨어를 추가했다. 람다가 얼버무 기 전에 에이전트를 종료하면 로깅은 첫 번째 요청 만 New Relic으로 보내지는 것을 의미합니다. 종료가 없으면 New Relic 에이전트에서 로깅을 얻지 않고 APM에 이벤트가 없습니다. 내 newrelic.ini에서

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.agent.global_settings()를 기록 할 때 (환경 VAR을 위 해킹의 일부에지도 (APM에서 만든 얻을 않았다)와 = 거짓 활성화 기본 앱의 이름을 포함 , 그냥 초기화하기 전에 newrelic.agent.global_settings() 편집 :

[newrelic:dev-zappa]                       
app_name = DEV APP zappa                      
monitor_mode = true                       

TL; DR - 두 가지 질문 :

  1. 얻는 방법 새로운 유물 그것이 미상 때 INI 파일의 읽기 그러고 싶지 않아?
  2. AWS 람다의 모든 요청에 ​​대한 데이터를 기록하는 새로운 유적을 얻는 방법은 무엇입니까?
+0

내 newrelic-django-zappa 프로젝트와 비슷한 문제가 있습니다. – davesave

+0

람다가 콘텐츠와 함께'/ var/task/newrelic.ini' 파일을 만드는 방법은 무엇입니까? ? – kichik

+0

@kichik zappa가 업로드하는 zip 파일에 있습니다. 파일이 해당 경로에 존재하고 내용을 로그로 읽었 음을 확인했습니다. NEW_RELIC_CONFIG_FILE 및 NEW_RELIC_ENVIRONMENT가 환경에 채워 졌음을 확인했습니다. 예상대로 소비되지 않는 것 같습니다. –

답변

0

Zappa는 (현재) wsgi.py 파일을 사용하지 않으므로 현재 발생하지 않습니다. https://github.com/Miserlou/Zappa/pull/1251

+0

나는 그들이 이미 병합하기를 바란다. 나는 NR-Django-Zappa 통합 작업을 기다리고있다 ... – davesave

+0

@davesave 그것은 내 지사에서 작동한다 : pip install git + http : //github.com/aarcro/ [email protected]#egg=zappa 데이터가 NR로보고되기 위해서는 꾸준한 트래픽이 필요하며 람다 컨테이너가 고정/해동되고 모든 요청에 ​​대해 실제로 다시 실행되지 않는다는 사실에 달려 있습니다. –

+0

나는 New Relic에로드 된 트레이스를 얻고 있습니다. 느린 페이지를 1 분에 몇 번 또는 몇 분 정도 다시로드하십시오. –