• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

Python 에이전트 및 Heroku

Heroku 는 Python을 포함한 다양한 에이전트 언어로 웹 애플리케이션을 호스팅하기 위한 PaaS(Platform as a Service) 솔루션입니다. 에이전트를 사용하면 New Relic의 메트릭으로 Heroku를 확장할 수 있습니다.

이 문서는 Python 에이전트와 함께 호스팅 서비스로 Heroku를 사용하기 위한 특별한 고려 사항을 설명합니다.

New Relic 애드온 설치

Heroku에 Python 앱을 배포한 후 Python 에이전트를 설치합니다.

추가 기능을 설치하면 개인 New Relic 계정이 자동으로 생성되고 Heroku 호스트에 대한 액세스가 구성됩니다. 에이전트는 추가 기능이 설치된 후 수집된 애플리케이션 성능, 최종 사용자 경험 및 호스트 성능 모니터링을 시작합니다. 몇 분 안에 데이터가 APM 요약 페이지 에 나타나기 시작합니다.

기존 에이전트 설치에서 업그레이드

에이전트가 이미 설치된 경우 Heroku 도구 벨트 명령을 사용하여 추가 기능을 다시 설치하십시오.

bash
$
heroku config:set NEW_RELIC_APP_NAME='Your Application Name'

Python 에이전트 설치

Heroku에 Python 에이전트와 같은 타사 Python 패키지를 설치하려면 pip 를 사용하십시오. Heroku는 프로젝트의 루트 디렉토리에서 requirements.txt 파일을 자동으로 찾습니다. 프로젝트를 Heroku로 푸시할 때 해당 파일에 나열된 모든 것을 설치합니다.

  1. 다음 줄을 추가하여 requirements.txt 파일을 만들거나 편집합니다.

    newrelic
  2. Django 사용자: Procfileweb 항목을 수정하고 값 앞에 newrelic-admin run-program붙입니다. 예를 들어:

    web: newrelic-admin run-program gunicorn mysite.wsgi
  3. 프로젝트를 Heroku로 푸시하세요.

그러면 Python 패키지 색인(PyPi)에 나열된 최신 버전의 Python 에이전트 패키지가 설치됩니다.

Python 에이전트 업데이트

Heroku는 패키지를 캐시하고 최신 버전의 Python 에이전트를 사용할 수 있는 경우 이를 감지하지 않습니다. 강제로 업그레이드하려면:

  1. 패키지 이름과 함께 특정 Python 에이전트 버전(n.n.n.n)을 포함하여 requirements.txt 파일을 편집합니다.

    newrelic==n.n.n.n
  2. 프로젝트를 Heroku로 푸시하세요.

New Relic 애드온 확인

New Relic 애드온이 활성화되었는지 확인하려면 다음을 실행하십시오.

bash
$
heroku run env | grep NEW_RELIC

이것은 Heroku에서 New Relic 관련 환경 변수 목록을 생성합니다. Python 에이전트는 이를 사용하여 보고 데이터에 사용할 New Relic 계정 및 애플리케이션 데이터를 결정합니다.

최소한 다음이 표시되어야 합니다.

NEW_RELIC_LOG=stdout
NEW_RELIC_LICENSE_KEY=****************************************
NEW_RELIC_APP_NAME=Your app name

그만큼 귀하의 New Relic 계정에 고유합니다.

설치 문제 해결

에이전트를 설치하고 구성한 후 몇 분 이내에 데이터가 앱의 APM 요약 페이지 에 나타나기 시작해야 합니다. 데이터가 표시되지 않으면 다음을 실행하여 환경 변수가 제대로 감지되는지 테스트합니다.

bash
$
heroku run newrelic-admin validate-config - stdout

그러면 연결이 생성되고 애플리케이션 Python Agent Test 아래에 테스트 트랜잭션 데이터가 보고됩니다. 테스트 실행의 출력을 캡처하고 데이터를 사용하여 문제를 해결합니다. 추가 지원이 필요한 경우 Python 에이전트 문제 해결 절차 를 따르십시오.

Python 에이전트 초기화

Python 에이전트를 초기화하려면:

  1. 프로젝트의 루트에서 다음을 찾으십시오. Procfile
  2. Procfile 에서 web 항목을 수정하여 Python 웹 애플리케이션을 시작하기 위해 수행할 작업을 정의합니다.
  3. 명령 시작 부분에 newrelic-admin run-program 을 삽입하려면 다음 예를 참조하세요.
  4. Python 에이전트의 관리 스크립트 제어 하에 Python 웹 애플리케이션을 실행합니다.

호스팅 메커니즘

웹 항목의 예

개발 호스트가 내장된 플라스크

web: newrelic-admin run-program python hello.py

gunicorn이 든 플라스크

web: newrelic-admin run-program gunicorn -b "0.0.0.0:$PORT" -w 3 hello:app

Gunicorn이 나열된 Django INSTALLED_APPS

web: newrelic-admin run-program python hellodjango/manage.py run_gunicorn -b "0.0.0.0:$PORT" -w 3

주의

Python 버전 2.7.4 또는 Django 1.4 이전의 모든 웹 프레임워크의 내장 개발 호스트를 사용하지 마십시오. 대신 gunicorn 또는 uWSGI 를 사용하십시오.

wsgiref 모듈을 사용하는 WSGI 호스트는 Python 버전 2.7.4 이전의 개발 호스트에 대해 WSGI와 완전히 호환되지 않았습니다. 이로 인해 Python 에이전트가 올바른 데이터를 보고할 수 없었습니다.

WSGI 애플리케이션 래핑

에이전트는 다음 웹 프레임워크에 대한 WSGI 애플리케이션 포인트의 자동 래핑을 제공합니다.

  • 장고
  • 플라스크

이러한 Python 웹 프레임워크를 사용하는 경우 추가 단계가 필요하지 않습니다.

다른 경우에는 WSGI 응용 프로그램 개체를 WSGI 응용 프로그램 래퍼로 래핑하려면 WSGI 응용 프로그램 진입점으로 Python 코드 파일을 수정해야 합니다. 이렇게 하면 애플리케이션에서 수신한 웹 요청에 대한 타이밍이 시작됩니다.

진입점이 여기라면...

이게 ...

진입점은 함수입니다

데코레이터로 감쌉니다.

import newrelic.agent
@newrelic.agent.wsgi_application()
def application(environ, start_response):
...

진입점은 다른 모듈에서 가져온 함수 또는 개체입니다.

pre 데코레이터 스타일로 래핑합니다.

import myapp
application = myapp.WSGIHandler()
application = newrelic.agent.WSGIApplicationWrapper(application)

셀러리 작업 추적

웹 애플리케이션에 대한 백그라운드 작업으로 Celery 작업의 실행 시간을 기록하려면 newrelic-admin 명령으로 Celery 호스트 시작을 래핑합니다.

Procfileworker 항목에 의해 정의된 기존 시작 명령 앞에 접두사를 붙입니다.

worker: newrelic-admin run-program python hellodjango/manage.py celeryd -E -B --loglevel=INFO

Python 에이전트 디버그

디버깅을 시작하려면 Python 에이전트에서 로그 출력을 수집합니다. Heroku는 Python 에이전트 출력을 표준 출력으로 보내고 웹 서버 로그에 캡처합니다.

Heroku의 웹 서버 로그에 액세스하려면 다음을 실행하십시오.

bash
$
heroku logs

기본적으로 Python 에이전트는 info 수준에서 기록합니다. New Relic Support에서 대체 로깅 수준을 요청하는 경우 구성 변수를 수동으로 추가해야 합니다. 예를 들어, 로깅 출력을 debug 로 설정하려면 다음을 실행합니다.

bash
$
heroku config:add NEW_RELIC_LOG_LEVEL=debug

로그 수준을 변경하면 애플리케이션이 자동으로 다시 시작됩니다.

주의

debug 로그 수준은 많은 양의 출력을 생성합니다. 다음을 실행하여 더 이상 필요하지 않은 즉시 이 설정을 제거하십시오.

bash
$
heroku config:remove NEW_RELIC_LOG_LEVEL

에이전트 구성 파일 편집

Heroku의 애드온을 New Relic과 함께 사용하면 Python 에이전트에 대한 주요 환경 변수가 자동으로 설정됩니다. 에이전트 구성 파일을 사용하여 추가 설정을 사용자 정의하거나 서버 측 구성을 사용할 수도 있습니다.

라이센스 키, 응용 프로그램 이름 등과 같은 핵심 설정을 구성 파일에 추가하지 마십시오. Heroku는 이러한 설정을 자동으로 추가합니다.

다른 설정을 사용자 지정하려면 Heroku에서 Python 에이전트 구성 파일을 사용합니다.

  1. Heroku에 푸시하는 프로젝트 저장소의 루트 디렉터리에 newrelic.ini 에이전트 구성 파일을 추가합니다. [newrelic] 섹션에 특정 구성 설정을 포함합니다. 예를 들어:

    [newrelic]
    transaction_tracer.function_trace = mydbm:connect
  2. 구성 파일을 저장소에 커밋하고 변경 사항을 Heroku로 푸시합니다.

  3. heroku config:add 명령을 사용하여 배포된 애플리케이션에 대한 NEW_RELIC_CONFIG_FILE 환경 변수를 설정합니다.

    bash
    $
    heroku config:add NEW_RELIC_CONFIG_FILE=newrelic.ini

newrelic-admin 래퍼 프로그램을 사용하여 WSGI 호스트를 시작하는 경우 라이선스 키, 애플리케이션 이름 등에 대한 설정은 Heroku가 설정한 환경 변수에서 선택됩니다. 에이전트 구성 파일에서 설정한 추가 설정도 적용됩니다. 그런 다음 에이전트가 New Relic에 등록할 때 모든 서버 측 구성도 병합되어 에이전트가 사용할 최종 구성을 생성합니다.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.