• 로그인지금 시작하세요

사용자의 편의를 위해 제공되는 기계 번역입니다.

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

문제 신고

PHP 프레임워크: New Relic에 대한 지원 통합

이 문서는 PHP 프레임워크의 개발자 또는 유지 관리자를 대상으로 합니다. New Relic에 대한 지원을 추가하여 프레임워크를 확장하는 방법을 제안합니다.

PHP 에이전트는 프레임워크 코드에서 웹 트랜잭션의 이름을 적절하게 지정할 수 있는 위치를 파악하고 클래스, 함수 호출 등에서 찾은 정보를 기반으로 웹 트랜잭션의 이름을 지정하여 프레임워크를 지원합니다. 이 솔루션은 취약하고 개발자가 코드를 변경할 수 있습니다. New Relic은 프레임워크 개발자가 유지 관리하는 프레임워크로 기본 사용자 경험을 개선하는 데 필요한 몇 가지 호출을 할 것을 권장합니다.

사용자 지원

New Relic은 웹 트랜잭션 이름과 New Relic의 브라우저 모니터링을 위해 JavaScript 헤더 및 바닥글을 삽입할 위치를 식별할 수 있습니다. 그러나 최종 사용자의 경험을 개선하고 성능을 높이며 코드 유지 관리를 더 쉽게 하려면 프레임워크 개발자가 직접 이 작업을 수행해야 합니다.

New Relic에 대한 기본 지원을 추가하여 사용자를 도울지 여부를 결정하는 것은 다양한 프레임워크의 개발자에게 달려 있습니다. 거의 모든 경우에 New Relic에 대한 지원을 추가하려면 프레임워크 코드 어딘가에 3개의 API 호출을 삽입해야 합니다.

술어

New Relic에 대한 지원을 가장 잘 추가하는 방법을 이해하려면 상호 작용의 몇 가지 핵심 사항을 이해하는 것이 좋습니다.

용어

정의

웹 트랜잭션

웹 트랜잭션 은 사이트에 대한 자산 요청(또는 사용자 조회)입니다. 프레임워크에서는 종종 MVC 디스패치 메커니즘에 의해 처리됩니다.

메트릭

메트릭 은 타이밍 정보를 보고하는 명명된 엔터티입니다. New Relic은 이러한 메트릭을 사용하여 APM 요약 페이지 와 같은 차트 및 페이지를 생성합니다. 예를 들어 New Relic은 MySQL에 대한 호출을 계측하고 사용자가 데이터를 선택하거나 업데이트할 때마다 Database/select 또는 Database/update 이라는 측정항목을 생성합니다.

메트릭에는 타이밍 데이터만 포함됩니다.

트랜잭션 추적

모든 수확 기간 동안 New Relic은 사용자 정의 임계값 아래로 떨어지는 가장 느린 웹 트랜잭션을 기록합니다. 이것은 트랜잭션 추적 입니다.

단순한 메트릭보다 더 자세한 정보가 있습니다. 활성화된 경우 정확히 어떤 함수가 호출되었고 소요된 시간에 대한 자세한 호출 그래프가 포함됩니다. 느린 쿼리 문의 경우 호출의 모든 데이터를 난독화합니다.

이름 거래

웹 트랜잭션의 이름을 지정하는 방법은 사용자 경험의 품질에 영향을 미칩니다.

중요

거래 이름 끝에 대괄호 [suffix] 를 사용하지 마십시오. New Relic은 자동으로 이름에서 괄호를 제거합니다. 대신 필요한 경우 괄호 (suffix) 또는 기타 기호를 사용하십시오.

예:

블로그 스타일 프레임워크가 있는 경우 사용자 활동을 기반으로 다양한 트랜잭션의 이름을 display , edit , login 등으로 지정합니다.

MVC 아키텍처를 사용하는 경우 적절한 명명 규칙은 controller/action 입니다. 트랜잭션 이름에 요청 관련 데이터를 포함하지 마십시오 . 예를 들어 실제 요청 URL을 사용하면 측정항목 그룹화 문제 가 발생합니다.

플랫폼

트랜잭션 이름 지정 예

드루팔 7

디스패치는 menu_execute_active_handler() 에서 수행됩니다. 이것은 call_user_func_array() 을 호출하고 첫 번째 인수는 작업의 이름입니다. 웹 트랜잭션 이름으로 설정하는 것입니다.

케이크PHP 1.3

CakePHP에는 _invoke 메서드가 있는 Dispatcher 클래스가 있습니다. 이것은 주어진 작업으로 적절한 컨트롤러 클래스를 호출하고 트랜잭션의 이름은 controller/action 이며 여기서 controller 은 컨트롤러 클래스의 이름입니다.

코드를 특정 컨트롤러 및 작업(MVC를 사용하는 경우) 또는 작업(MVC를 사용하지 않는 경우)으로 라우팅하려는 지점에서 다음과 유사한 코드를 삽입합니다.

컨트롤러 및 작업 (MVC 사용 시):

if (extension_loaded ('newrelic')) {
newrelic_name_transaction ($controller . '/' . $action);
}

작업 전용 (MVC를 사용하지 않음):

if (extension_loaded ('newrelic')) {
newrelic_name_transaction ($action);
}

JavaScript 머리글 및 바닥글 삽입

페이지 로드 타이밍(실제 사용자 모니터링 또는 RUM이라고도 함)의 경우 JavaScript 머리글과 바닥글을 삽입합니다. 이를 통해 생성된 페이지에 대한 최종 사용자의 경험을 모니터링할 수 있습니다.

  • 권장 사항: 프레임워크에 모든 페이지 머리글과 바닥글을 생성하는 중심 기능이 있는 경우 여기에 JavaScript 코드를 설치하세요.
  • 템플릿 기반 프레임워크의 경우 이를 머리글 및 바닥글 템플릿에 삽입합니다.
Copyright © 2022 New Relic Inc.