Node.js 에이전트는 잠재적으로 매개변수화된 경로(예: /user/:id ) 또는 정규식(예: /^/user/([-0-9a-f]+)$/ )과 함께 HTTP 메서드를 캡처합니다. 이러한 정보는 요청 이름의 일부가 됩니다.
느린 트랜잭션 추적을 지원하고 구성 파일의 attributes.include 에 'request.parameters.*' 를 추가한 경우 트랜잭션 추적에도 요청의 매개변수와 해당 값이 연결됩니다. Node.js 에이전트가 사용하는 요청 이름이 마음에 들지 않으면 API 호출을 사용하여 더 설명적인 이름을 만들 수 있습니다.
팁
일반 이름으로 요청을 그룹화하는 경우 /* 이면 충분하며 구성 파일이나 API 호출을 사용자 정의할 필요가 없습니다.
요구 사항
New Relic은 요청 이름을 사용하여 많은 차트와 테이블에 대한 요청을 그룹화합니다. 이러한 시각화의 값은 다른 요청 이름의 수가 증가함에 따라 떨어집니다.
예를 들어, 생성하는 요청 이름에 GUID, 숫자 ID 또는 타임스탬프와 같은 잠재적인 동적 데이터를 포함하지 마십시오. 요청이 트랜잭션 추적을 생성할 만큼 느린 경우 해당 추적에는 원래 URL이 포함됩니다. 매개변수 캡처를 활성화하면 매개변수도 추적에 첨부됩니다.
팁
50개 이상의 다른 트랜잭션 이름을 사용하지 마십시오. 예를 들어, 서로 다른 요청 이름이 200개 이상인 경우 이름 지정 전략을 다시 생각하십시오.
측정항목 그룹화 문제 방지
요청 명명 API는 New Relic이 때때로 "메트릭 폭발"이라고 하는 너무 많은 메트릭을 처리하려는 문제를 피하는 데 도움이 됩니다. New Relic에는 이러한 문제를 처리하기 위한 몇 가지 전략이 있습니다. 가장 심각한 것은 단순히 거부 목록에 문제가 되는 애플리케이션을 추가하는 것입니다.
이러한 요청 이름 지정 도구를 사용할 때 주의해야 하는 주된 이유는 응용 프로그램에서 이러한 일이 발생하지 않도록 방지하는 것입니다. 자세한 내용은 측정항목 그룹화 문제 를 참조하세요.
지침
가장 구체적인 것부터 가장 일반적인 것까지 구성 규칙을 정의하십시오. 구성 파일에 나열되거나 Node.js 트랜잭션 이름 지정 API 로 추가된 첫 번째 규칙이 먼저 적용되며 좁은 대상을 지정해야 합니다. 보다 일반적인 "폴스루" 규칙은 Node.js 트랜잭션 명명 API를 사용하여 구성되거나 추가된 순서대로 평가되기 때문에 목록의 끝에 추가해야 합니다.
New Relic 모듈에 대한 호출을 애플리케이션 코드에 직접 넣지 않으려면 패턴 기반 규칙을 사용하여 요청의 이름을 지정할 수 있습니다. 두 가지 규칙 세트가 있습니다. 하나는 요청 이름 변경을 위한 것이고 다른 하나는 New Relic의 계측에서 무시하도록 요청을 표시하는 것입니다.
다음은 New Relic의 Node.js 에이전트의 규칙 구조입니다.
들어오는 요청 URL을 pattern 에 일치시키고 일치하는 New Relic 트랜잭션의 이름을 { name }로 지정하기 위한 {pattern : "pattern", name : "name"} 형식의 규칙 목록입니다. 이것은 패턴을 문자열이나 JavaScript 정규식 리터럴로 설정할 수 있는 정규식 바꾸기 역할을 하며 패턴과 이름이 모두 필요합니다.
정규식을 문자열로 전달할 때 백슬래시를 이스케이프 처리합니다. 에이전트는 패턴에서 문자열로 제공될 때 백슬래시를 유지하지 않기 때문입니다. 패턴이 순서대로 평가되고 본질적으로 최종적이므로 가장 구체적인 것부터 가장 일반적인 것까지 구성 규칙을 정의하십시오. 자세한 내용은 명명 지침 을 참조하십시오.
이는 쉼표로 구분된 JSON 객체 리터럴 목록으로 전달된 여러 규칙을 사용하여 환경 변수 NEW_RELIC_NAMING_RULES 로 설정할 수도 있습니다.
true (기본값)으로 설정하면 이 규칙이 일치하는 경우 추가 규칙이 평가되지 않습니다. 이를 false로 설정하면 여러 규칙을 함께 사용해야 하는 경우에 유용합니다. 예를 들어, 하나의 규칙은 여러 다른 URL의 공통 패턴을 대체하는 반면 후속 규칙은 더 구체적일 수 있습니다.
replace_all
기본: false
true 으로 설정하면 패턴의 모든 일치 항목이 대체됩니다. 그렇지 않으면 첫 번째 일치 항목만 대체됩니다. 정규식 리터럴과 함께 g 플래그를 사용하면 동일한 효과가 있습니다. 예를 들어:
pattern:'[0-9]+',
replace_all:true
이것은 pattern: /[0-9]+/g 과 같은 효과를 가집니다.
precedence
기본적으로 규칙은 처음부터 끝까지 순서대로 평가됩니다. 주문을 완전히 제어하려면 각 규칙에 precedence 속성을 부여할 수 있습니다. 우선 순위는 정수이고 규칙은 오름차순으로 평가됩니다. precedence 이 명시적으로 정의되지 않은 경우 기본적으로 500으로 설정됩니다.
추가 속성은 무시됩니다.
명명 규칙 테스트 [#testing-naming-rules]
Node.js 에이전트는 명명 규칙을 테스트하기 위한 명령줄 도구와 함께 제공됩니다. 자세한 내용은 앱이 설치된 디렉터리의 터미널 창에서 다음 명령을 실행하세요.
bash
$
node node_modules/.bin/newrelic-naming-rules
명명 규칙 예 [#examples-rules]
다음은 명명 규칙 및 결과의 몇 가지 예입니다.
pattern:'^/items/[0-9]+$',
name:'/items/:id'
결과:
/items/123 => /items/:id
/orders/123 => /orders/123 (not replaced since the rule is a full match)
pattern:'[0-9]+',
name:':id'
결과:
/orders/123 => /orders/:id
/items/123 => /items/:id
/orders/123/items/123 => /orders/:id/items/123
pattern:'[0-9]+',
name:':id',
replace_all:true
결과:
/orders/123/items/123 => /orders/:id/items/:id
정규식 일치 그룹 참조 사용:
pattern:'^/(items|orders)/[0-9]+$',
name:'/\\1/:id'
결과:
/orders/123 => /orders/:id
/items/123 => /items/:id
이는 여러 규칙이 쉼표로 구분된 패턴 목록으로 전달되는 환경 변수 NEW_RELIC_IGNORING_RULES 를 통해 설정할 수도 있습니다. 현재 패턴에서 쉼표를 이스케이프할 방법이 없습니다.