Node.js 수집기 구성
대부분의 사용 사례의 경우, require('@instana/collector')(); 으로 Instana Node.js 수집기를 초기화하고 기본 구성 옵션을 그대로 유지해야 합니다. 기본 구성 수정 하기에서 설명한 대로 기본 구성을 수정할 수 있습니다.
기본 구성 수정하기
Instana Node.js 수집기를 초기화할 때 구성 개체를 전달할 수 있습니다:
require('@instana/collector')({
// configuration options, see as follows
});
또한 환경 변수를 통해 Node.js 수집기를 구성할 수 있습니다.
에이전트 통신
에이전트 호스트 및 포트를 변경하도록 수집기를 구성할 수 있습니다.
에이전트 호스트
수집기는 IP 127.0.0.1 및 호스트의 기본 게이트웨이를 통한 폴백으로 Instana 에이전트와 통신을 시도합니다. 이러한 IP 중 하나에서 상담원을 사용할 수 없는 경우에는 agentHost 옵션을 사용하여 사용자 지정 IP를 사용할 수 있습니다.
require('@instana/collector')({
agentHost: '::1' // use IPv6 to contact via localhost
});
또는 환경 변수를 활용하세요.
require('@instana/collector')({
agentHost: process.env.HOST_IP
});
구성하지 않은 경우 Instana 수집기는 INSTANA_AGENT_HOST 이라는 환경 변수를 찾고 이 환경 변수에 정의된 내용을 사용하여 상담원과 통신합니다. 이러한 환경 변수가 없는 경우에는 먼저 localhost 에서 상담원에게 연결한 다음 기본 게이트웨이에서 연결을 시도합니다.
에이전트 포트
수집기는 포트 42699 를 통해 Instana 에이전트와 통신을 시도합니다. 포트가 변경된 경우 agentPort 옵션을 사용하여 포트를 변경할 수 있습니다.
require('@instana/collector')({
agentPort: 42699
});
구성하지 않은 경우 Instana 수집기는 INSTANA_AGENT_PORT 이라는 환경 변수를 찾고 이 환경 변수에 정의된 내용을 사용하여 상담원과 통신합니다. 이러한 환경 변수가 없는 경우 기본 포트 42699로 돌아갑니다.
Kubernetes 그리고 Red Hat OpenShift
Node.js 애플리케이션과 Instana 에이전트가 Kubernetes 클러스터에서 실행되는 경우, 이 설정에 필요한 구성에 대한 정보는 Kubernetes 네트워크 액세스 설명서를 참조하세요.
Node.js EOL 이벤트 비활성화하기
Instana 에이전트가 있는 서버리스 환경이 아닌 환경에서는 실행 중인 Node.js 버전이 수명 종료(EOL)에 도달했음을 감지하면 Node.js 추적기가 문제 이벤트를 트리거합니다.
이러한 EOL 이벤트를 억제하려면 다음 환경 변수를 사용하여 비활성화할 수 있습니다:
INSTANA_TRACING_DISABLE_EOL_EVENTS=true
EOL Node.js 버전의 전체 목록은 공식 Node.js 릴리스 페이지를 참조하세요.
추적
추적은 요청이 다양한 서비스와 구성 요소를 통과할 때 요청에 대한 자세한 정보를 캡처하여 애플리케이션에 대한 엔드투엔드 가시성을 제공합니다.
추적은 기본적으로 활성화되어 있습니다. 전체 또는 선택적으로 추적을 비활성화하려면 추적 비활성화 섹션에서 구성 옵션을 참조하세요.
진입 범위 없이 루트 종료 범위 허용
기본적으로 Instana Node.js 추적기는 활성 입력 스팬이 있는 종료 스팬만 캡처합니다. 이 기능을 활성화하면 추적기가 독립 실행형 종료 범위를 추적할 수 있습니다.
이 기능을 사용하려면 다음 옵션 중 하나를 사용하세요:
환경 변수를 설정합니다
INSTANA_ALLOW_ROOT_EXIT_SPAN환경 변수를 설정합니다.트레이서 초기화 기능을 통해 기능을 구성합니다:
require('@instana/collector')({ tracing: { allowRootExitSpan: true } });
만약 INSTANA_ALLOW_ROOT_EXIT_SPAN 가 1 또는 true 로 설정되어 있거나 allowRootExitSpan 가 true 로 설정되어 있으면 활성 입력 스팬이 없는 경우에도 추적기가 종료 스팬을 캡처합니다.
이 기능은 Instana 자동 계측이 지원하지 않는 메커니즘에 의해 작업이 트리거되는 다음과 같은 시나리오에 유용합니다:
- 지원되지 않는 메시징 라이브러리에서 수신되는 메시지
- 지원되지 않는 프로토콜(예: 원시 Transmission Control Protocol (TCP) 또는 WebSocket
setTimeout,setInterval, 또는 지원되지 않는 Node.js 스케줄링 라이브러리와 같은 메커니즘을 사용하여 애플리케이션에서 내부적으로 시작된 예약된 작업
엔드포인트 무시
Node.js 추적기 4.9.0 에서 특정 추적 또는 호출을 제외하여 불필요한 데이터 수집을 줄일 수 있습니다. 이 필터링 메커니즘은 추적 수집을 세분화합니다. 추적을 제외하려면 Node.js 추적기 구성 설정에서 이러한 매개변수를 정의하세요:
- 기술: 관련 기술을 지정합니다(예:
Kafka,Redis,DynamoDB, 또는HTTP). - 메소드: 제외할 방법을 식별합니다. 예를 들어 다음 기술에 대해서는 이러한 방법을 제외하세요:
Kafka:send,consumeRedis:get,typeDynamoDB:query,scanHTTP:get,post
- 엔드포인트(해당되는 경우): 특정 엔드포인트를 기준으로 필터링을 더욱 세분화할 수 있습니다. 예를 들어 다음 기술의 엔드포인트는 다음과 같이 정의됩니다:
Kafka: 엔드포인트는 주제 이름입니다.HTTP: 엔드포인트는 URL 경로입니다.
- 연결(선택 사항): 특정 연결에 대한 추적을 제외합니다. 예를 들어, 다음 기술에 대한 연결은 다음과 같이 정의됩니다:
Redis: 연결은 연결 문자열입니다.HTTP: 연결에는 호스트와 포트가 포함됩니다.
무시 엔드포인트 기능에는 다음과 같은 제한 사항이 있습니다:
- 이 기능은 현재, DynamoDB,Kafka, Redis 및 에서 이용 HTTP 가능합니다. 그러나 와 Kafka 만이 메서드와 엔드포인트 HTTP 모두에 의한 필터링을 지원합니다.
- 라이브러리는 Kafka.js 여러 토픽에 동시에 메시지를 전송할 수 있는 sendBatch 메서드를 지원합니다. 메서드와 엔드포인트를 모두 사용하여 추적을 필터링하는 경우 구성에서 모든 관련 엔드포인트(토픽)를 지정하세요. 주제를 생략해도 추적은 무시되지 않습니다.
- 연결 필터링은 현재 와 Redis 에 HTTP 대해서만 지원됩니다.
- 현재 엔트리 HTTP 호출에 대한 필터링이 지원됩니다.
필터링 규칙
추적 필터링 규칙은 다음과 같습니다:
- 추적이 무시되면 이후의 모든 다운스트림 추적도 무시됩니다.
*을 사용하여 모든 엔드포인트, 메서드 또는 연결을 무시합니다.- 엔드포인트 값(예: Kafka 토픽 이름)은 서비스 전반에 걸쳐 일관성을 유지합니다.
- 메서드 이름은 프로그래밍 언어와 기술에 따라 다를 수 있습니다. 서비스에 적합한 방법과 엔드포인트를 결정하려면 Instana UI를 참조하세요.
다음 Instana UI 스크린샷은 구성을 위한 올바른 방법과 엔드포인트를 식별하기 위한 시각적 참조를 제공합니다:

구성 옵션
다음 옵션 중 하나를 사용하여 엔드포인트 제외를 사용 설정할 수 있습니다:
- 환경 변수
- 코드 내 구성
- 에이전트 구성
환경 변수
다음 환경 변수를 사용하여 서비스별로 엔드포인트를 필터링하여 무시된 엔드포인트를 구성할 수 있습니다:
- Instana_ignore_endpoint_path
- Instana_ignore_endpoint
Instana_ignore_endpoint_path
이 환경 변수를 사용하면 다음 예시와 같이 외부 YAML 파일을 통해 필터링을 구성할 수 있습니다:
INSTANA_IGNORE_ENDPOINTS_PATH=/absolute/path/to/config.yaml
앞의 예에서 config.yaml 파일은 절대 경로를 가져야 하며 지정된 구성 구조를 준수해야 합니다.
다음 예는 메서드별 필터링을 보여줍니다:
tracing:
ignore-endpoints:
redis:
- get
- type
dynamodb:
- query
kafka:
- send
http:
- get
이 구성은 다음과 같은 추적을 필터링합니다:
GET및TYPE명령은RedisQUERYcommand forDynamoDBSENDKafka메서드 및 모든 다운스트림 추적에 대한GETHTTP메서드 및 모든 다운스트림 추적에 대한
다음 예는 메서드, 엔드포인트 및 연결별로 필터링하는 방법을 보여줍니다:
tracing:
ignore-endpoints:
kafka:
- methods: ["consume"]
endpoints: ["topic1", "topic2"]
- methods: ["consume", "send"]
endpoints: ["topic3"]
- methods: ["*"] # Applied to all methods
endpoints: ["topic4"]
- methods: ["consume"]
endpoints: ["*"] # Applied to all endpoints
http:
- methods: ["get"]
endpoints: ["/status"]
- methods: ["get", "post"]
endpoints: ["/status", "/v1/status"]
- methods: ["*"]
connection: ["localhost:3000"]
redis:
- methods: ['get']
connections: ['192.168.0.1:9191']
이 구성은 다음과 같은 추적을 필터링합니다:
CONSUMEKafka및 모든 다운스트림 추적에서topic1및topic2에 대한 메서드를 호출합니다CONSUME및Kafka및 모든 다운스트림 추적에서topic3메서드에 대한SEND메서드Kafka및 모든 다운스트림 추적에서topic4에 대한 모든 (*) 메서드CONSUMEKafka및 모든 다운스트림 추적의 모든 (*) 항목에 대한 메서드입니다GET메서드를HTTP및 모든 다운스트림 추적의 URL/status에 추가합니다GET및POST메서드를HTTP및 모든 다운스트림 추적의/status및/v1/statusURL로 전송합니다- 연결에 대한 모든 (
*) 메서드localhost:3000및 모든 다운스트림 추적 GET연결에 대한 메서드192.168.0.1:9191Redis
동일한 구성 파일에서 두 가지 필터링 옵션(메서드 전용 및 메서드 및 엔드포인트)을 결합할 수 있습니다.
이 구성은 에이전트 configuration.yaml 구조와 호환됩니다.
Instana_ignore_endpoint
이 환경 변수를 사용하면 메서드 이름만 기준으로 추적을 제외할 수 있습니다.
INSTANA_IGNORE_ENDPOINTS=redis:get,type
이 구성은 redis 패키지의 GET 및 TYPE 명령을 추적에서 제외합니다.
여러 패키지에 대한 제외를 구성하려면 다음 예시와 같이 구성을 사용하세요.
INSTANA_IGNORE_ENDPOINTS=redis:get,type;dynamodb:query,scan;kafka:send;http:get
이 구성은 다음과 같은 추적을 필터링합니다:
GET및TYPE명령어를RedisQUERY및SCAN명령어를DynamoDBSEND메서드의KafkaGET메서드의HTTP
코드 내 구성
코드 내 구성을 사용하여 서비스별로 엔드포인트를 필터링하여 엔드포인트 무시를 구성할 수 있습니다.
다음 예는 메서드별 필터링을 보여줍니다:
require('@instana/collector')({
tracing: {
ignoreEndpoints: {
redis: ['get', 'type'],
dynamodb: ['query', 'scan'],
kafka: ['send'],
http: ['get']
}
}
});
이 구성은 다음과 같은 추적을 필터링합니다:
GET및TYPE명령어를RedisQUERY및SCAN명령어를DynamoDBSENDKafka메서드 및 모든 다운스트림 추적GETHTTP메서드 및 모든 다운스트림 추적
다음 예는 메서드 및 엔드포인트별 필터링을 보여줍니다:
require('@instana/collector')({
tracing: {
ignoreEndpoints: {
kafka: [
{ methods: ['consume'], endpoints: ['topic1', 'topic2'] },
{ methods: ['send'], endpoints: ['topic3'] }
],
http: [
{
methods: ['get'], endpoints: ['/status']
}
]
}
}
});
이 구성은 다음과 같은 추적을 필터링합니다:
CONSUMEKafka및 모든 다운스트림 추적에서topic1및topic2에 대한 메서드를 호출합니다SENDKafka및 모든 다운스트림 추적에 대한topic3메서드를 호출합니다GET메서드를HTTP및 모든 다운스트림 추적의 URL/status에 추가합니다
동일한 구성에서 두 가지 필터링 옵션(메서드 전용 및 메서드 및 엔드포인트)을 모두 사용할 수 있습니다.
에이전트 구성
또는 에이전트를 통해 모든 서비스의 엔드포인트를 구성하여 중앙에서 무시할 수도 있습니다. 하지만 진행하기 전에 관련 규정을 꼼꼼히 검토하시기 바랍니다. 자세한 내용은 에이전트를 사용하여 엔드포인트 무시하기 섹션을 참조하세요.
추적 사용 안함
추적을 사용하지 않으려면 추적을 완전히 끄거나 데이터베이스, 메시징 또는 로깅과 같은 특정 계측 또는 전체 그룹을 선택적으로 제외할 수 있습니다. 이러한 유연성을 통해 애플리케이션의 필요에 따라 추적을 미세 조정할 수 있습니다.
추적을 비활성화하도록 구성을 적용하려면 다음 방법 중 하나를 사용합니다:
- 환경 변수
- 코드 내 구성
- 상담원 구성(YAML)
모든 추적 비활성화
추적을 완전히 비활성화하면 Instana 추적기가 스팬을 수집하거나 보고하지 못합니다. 이 접근 방식은 디버깅, 테스트 또는 일시적으로 추적이 필요하지 않은 경우와 같은 시나리오에 유용할 수 있습니다.
추적이 비활성화되면 자동 계측이나 추적 SDK가 모두 활성화되지 않습니다. 모든 SDK 호출은 오류나 스팬을 생성하지 않고 조용히 무시됩니다.
모든 추적을 비활성화하려면 다음 방법 중 하나를 사용하세요:
환경 변수를 설정합니다: 환경 변수 설정
INSTANA_TRACING_DISABLE를true로 설정합니다.INSTANA_TRACING_DISABLE=true코드 내 구성: 트레이서 초기화 중에 다음 옵션을 전달합니다:
require('@instana/collector')({ tracing: { disable: true } });
특정 계측 기능 비활성화하기
특정 계측기 또는 이름별 패키지에 대한 추적을 비활성화하려면 다음 옵션을 사용하세요. 적절한 이름을 찾으려면 지원되는 라이브러리 섹션에 나열된 값을 Instrumentation identifier 참조하십시오.
특정 계측을 비활성화하려면 다음 방법 중 하나를 사용하세요:
환경 변수입니다: 환경 변수를 설정합니다
INSTANA_TRACING_DISABLE_INSTRUMENTATIONS환경 변수를 설정합니다:INSTANA_TRACING_DISABLE_INSTRUMENTATIONS=redis,graphql이 예제에서는 이 구성을 사용하여
redis및graphql에 대해 추적을 비활성화합니다. 이 두 기기에 대한 스팬은 수집되거나 보고되지 않습니다.코드 내 구성: 트레이서 초기화 중에 다음 옵션을 전달합니다:
require('@instana/collector')({ tracing: { disable: { instrumentations: ['redis', 'graphql'] } } });
계측 그룹 비활성화하기
그룹 이름을 지정하여 관련 계측기의 전체 카테고리를 비활성화할 수 있습니다. 이 접근 방식은 단일 구성으로 광범위한 라이브러리 집합에 대한 추적을 해제하려는 경우에 유용합니다.
그룹 수준 비활성화는 현재 다음 카테고리로 제한됩니다:
특정 계측 그룹을 비활성화하려면 다음 방법 중 하나를 사용하세요:
환경 변수입니다: 환경 변수를 설정합니다
INSTANA_TRACING_DISABLE_GROUPS환경 변수를 설정합니다:INSTANA_TRACING_DISABLE_GROUPS=logging,database이 예에서는
logging및databases그룹 아래의 모든 계측이 이 구성으로 비활성화됩니다. 이러한 그룹에 속하는 계측기에 대해서는 스팬이 수집되거나 보고되지 않습니다.코드 내 구성: 트레이서 초기화 중에 다음 옵션을 전달합니다:
require('@instana/collector')({ tracing: { disable: { groups: ['logging', 'database'] } } });
에이전트 구성을 통해 추적 비활성화하기
또는 에이전트를 통해 구성하여 모든 서비스에 대한 계측 또는 그룹을 전역적으로 비활성화할 수 있습니다. 자세한 내용은 추적 비활성화하기 섹션을 참조하세요.
단일 플랫 목록으로 추적 비활성화하기
플랫 목록 형식을 사용하면 쉼표로 구분된 목록을 사용하여 여러 개의 계측기 또는 그룹을 비활성화할 수 있습니다.
단일 플랫 목록으로 추적을 비활성화하려면 다음 방법 중 하나를 사용하세요:
환경 변수를 설정합니다: 환경 변수 설정
INSTANA_TRACING_DISABLE를 설정합니다:INSTANA_TRACING_DISABLE=redis,graphql,logging,database이 예에서는 개별 계측기(
redis및graphql)와 전체 그룹(logging및database) 모두에 대해 추적이 비활성화되어 있습니다. 지정된 항목에 대해서는 스팬이 수집되지 않습니다.코드 내 구성: 트레이서 초기화 중에 다음 옵션을 전달합니다:
require('@instana/collector')({ tracing: { disable: ['redis', 'graphql', 'logging', 'database'] } });
자동 추적 비활성화하기
자동 추적도 기본적으로 활성화되어 있습니다. 자동 추적만 비활성화하려면(SDK 또는 openTracing 을 통한 수동 추적은 활성화된 상태로 유지) 다음 옵션을 초기화 함수에 전달합니다:
require('@instana/collector')({
tracing: {
automaticTracingEnabled: false
}
});
마지막으로 환경 변수 INSTANA_DISABLE_AUTO_INSTR=true 를 설정하여 자동 추적을 비활성화할 수 있습니다.
자동 추적이 비활성화된 경우에도 SDK 또는 OpenTracing API를 사용하여 수동으로 스팬을 생성할 수 있습니다.
OpenTelemetry 연동 비활성화하기
오픈 텔레메트리 통합은 기본적으로 활성화되어 있습니다. 통합을 비활성화하려면 초기화 함수에 다음 옵션을 전달하세요:
require('@instana/collector')({
tracing: {
useOpentelemetry: false
}
});
또한 INSTANA_DISABLE_USE_OPENTELEMETRY 변수를 true 로 설정하여 OpenTelemetry 통합을 비활성화할 수 있습니다. 자세한 내용은 Instana 환경 변수를 참조하십시오.
작업자 스레드 추적 비활성화하기
Instana Node.js 수집기가 워커 스레드를 추적하지 못하도록 하려면 다음 환경 변수를 설정하세요:
INSTANA_DISABLE_WORKER_THREADS=true
이 구성은 모든 작업자 스레드에 대한 추적을 비활성화하지만 메인 프로세스는 여전히 자동으로 추적됩니다. 작업자 스레드가 추적에서 제외하려는 내부 또는 백그라운드 작업을 실행하는 경우 이 구성을 사용합니다.
스택 추적 캡처
기본적으로 수집기는 캡처된 각 종료 스팬에 대해 마지막 10개의 호출 위치를 캡처합니다. 이 값은 필요에 따라 증가하거나 감소시킬 수 있습니다.
스택 추적 캡처의 두 가지 측면을 구성할 수 있습니다:
- 스택 추적 길이 : 캡처할 호출 위치의 수.
- 지원되는 값: 0–500
- 기본값: 10
- 스택 추적 모드 : 스택 추적이 캡처되는 방식.
- 지원되는 값:
all: 모든 종료 스팬에 대한 스택 추적을 수집합니다(기본값).error오류가 발생한 스팬에 대해서만 스택 추적을 수집합니다.none: 스택 추적을 수집하지 않습니다.
- 지원되는 값:
다음 옵션 중 하나를 사용하여 스택 추적 캡처를 구성할 수 있습니다:
- 환경 변수
- 코드 내 구성
- 에이전트 구성
스택 추적 길이 구성
스택 추적 길이를 구성하여 스택 추적에 캡처되는 호출 위치의 수를 조정할 수 있습니다. 스택 추적 길이를 구성하려면 다음 방법 중 하나를 사용하십시오:
- 환경 변수: 다음 예시와 같이 환경
INSTANA_STACK_TRACE_LENGTH변수를 설정하십시오:INSTANA_STACK_TRACE_LENGTH=15 - 코드 내 구성: 트레이서 초기화 중에 다음 옵션을 전달합니다:
require('@instana/collector')({ tracing: { global: { stackTraceLength: 15 } } }); - 에이전트 구성: 에이전트를 통한 구성을 참조하십시오.
스택 추적 모드 구성
스택 추적 모드를 구성하여 스택 추적이 캡처되는 시나리오를 설정할 수 있습니다.
스택 추적 모드를 구성하려면 다음 방법 중 하나를 사용하십시오:
- 환경 변수: 다음 예시와 같이 환경
INSTANA_STACK_TRACE변수를 설정하십시오:INSTANA_STACK_TRACE='error' - 코드 내 구성: 트레이서 초기화 중에 다음 옵션을 전달합니다:
require('@instana/collector')({ tracing: { global: { stackTrace: 'none' } } }); - 에이전트 구성: 에이전트를 통한 구성을 참조하십시오.
에이전트를 통한 구성
대안으로, 에이전트를 통해 구성하여 모든 서비스에 대한 스택 추적 캡처를 전역적으로 설정할 수 있습니다. 자세한 내용은 스택 추적 캡처 섹션을 참조하십시오.
사용자 지정 package.json 경로 구성
Instana 수집기는 프로젝트 내에서 기본 package.json 파일을 찾아 애플리케이션 이름과 같은 중요한 정보를 추출하려고 시도합니다. package.json 파일에 대한 사용자 지정 경로를 정의해야 하거나 수집기가 파일을 찾을 수 없는 경우 packageJsonPath 이라는 구성 옵션을 사용할 수 있습니다.
require('@instana/collector')({
packageJsonPath: 'absolute/path/to/package.json'
});
INSTANA_PACKAGE_JSON_PATH 환경 변수를 설정하여 package.json 파일의 경로를 구성할 수도 있습니다.
서비스 이름 지정
서비스는 Instana의 핵심 개념입니다. 통화, 범위 및 추적은 서비스와 밀접하게 연관되어 있습니다. 기본적으로 Node.js 수집기는 기본 package.json 파일의 name 및 version 속성을 사용합니다. 서비스 이름을 사용자 지정하려면 serviceName 속성을 구성하면 됩니다.
require('@instana/collector')({
serviceName: 'shop'
});
환경 변수 INSTANA_SERVICE_NAME 를 설정하여 사용자 지정 서비스 이름을 구성할 수도 있습니다. 사용자 지정 서비스 구성에 대한 자세한 내용은 전역으로 서비스 이름 설정하기를 참조하세요.
Kafka 추적 상관관계 헤더
수집기 버전 4.x, Kafka 추적 상관관계 헤더는 항상 string 형식으로 전송되며, binary 형식은 지원되지 않습니다. 자세한 내용은 Kafka 헤더 마이그레이션을 참조하세요.
환경 변수 INSTANA_KAFKA_HEADER_FORMAT 및 코드 내 구성 옵션 tracing: { kafka: { headerFormat: .... }}} 을 참조하는 모든 구성을 제거합니다.
프로세스 이름 설정
환경 변수 INSTANA_PROCESS_NAME 를 사용하여 Node.js 프로세스를 나타내는 인프라 엔티티에 대한 사용자 지정 레이블을 설정합니다.
처리되지 않은 약속 거부 보고하기
Instana Node.js 수집기는 처리되지 않은 약속 거부를 Instana에 이슈로 보고할 수 있습니다. 처리되지 않은 프라미스 거부는 거부되었지만 거부 처리기가 정의되지 않은 프라미스입니다(즉, 프라미스 체인에 .catch(...))가 없는 경우입니다.
이 기능은 기본적으로 사용 안함으로 설정됩니다. 이 기능이 활성화되어 있고 처리되지 않은 프로미스 거부가 감지되면, 이는 Instana에 심각도 '경고' 문제로 보고됩니다.
약속이 거부되는 동안 진행 중인 호출은 처리되지 않은 거부로 인해 오류로 표시되지 않는다는 점에 유의하세요. 그 이유는 두 가지입니다:
- 처리되지 않은 거부는 Node.js 런타임에 오류를 일으키지 않습니다. 요청을 처리하는 동안 처리되지 않은 거부가 발생하더라도 요청은 여전히 성공적으로 처리될 수 있습니다.
- Node.js 런타임은 특정 호출의 컨텍스트에서 처리되지 않은 거부를 감지할 방법이 없습니다. 실제로 처리되지 않은 거부는 나중에 관련 약속이 가비지 수집되려고 할 때만 감지됩니다. 그때쯤이면 처리되지 않은 거부를 트리거한 요청이 이미 완료되어 응답이 완료된 상태입니다.
이 기능은 다음과 같이 reportUnhandledPromiseRejections 옵션을 사용하여 활성화할 수 있습니다:
require('@instana/collector')({
reportUnhandledPromiseRejections: true
});
Node.js 12.0.0 으로 시작하는 명령줄 플래그( --unhandled-rejections 를 사용하여 처리되지 않은 프로미스 거부를 처리하는 방법을 제어할 수 있습니다. 이 모드에서는 Node.js 이 처리되지 않은 거부를 잡히지 않은 예외로 변환하므로 처리되지 않은 거부를 보고하는 것은 --unhandled-rejections=strict 에서 지원되지 않습니다.
로깅
기본 로깅 구성을 수정하려면 다음 섹션을 참조하세요:
로그 수준 구성
기본 로그 수준을 변경하려면 다음을 통해 구성할 수 있습니다:
require('@instana/collector')({
level: 'debug'
});
환경 변수 INSTANA_LOG_LEVEL 를 debug, info, warn 또는 error 로 설정하여 로그 수준을 구성할 수도 있습니다. 마지막으로 INSTANA_DEBUG 을 비어 있지 않은 문자열로 설정하면 로그 수준이 debug 으로 설정됩니다.
기본 로그 수준은 info 입니다. 예기치 않은 Instana 관련 디버그 로그( "name":"@instana/collector" 및 "level":20 등의 로그 행)가 표시되는 경우 구성에서 로그 수준을 디버깅으로 설정했는지 또는 INSTANA_LOG_LEVEL=debug 또는 INSTANA_DEBUG 이 설정되어 있는지 확인합니다. 자체 로거를 제공하는 경우(아래 참조) 원하는 대로 로그 수준을 설정할 책임이 있습니다.
사용자 정의(상위) 로거
로거 설정을 참조하세요.
AutoProfile
이후: 1.98.1. Node.js 이상이 필요합니다 6.4.0
이 기능은 현재 공개 미리 보기 테스트 단계에 있습니다.
AutoProfile 활성화하려면 수집기를 초기화할 때 autoProfile: true 옵션을 추가합니다.
require('@instana/collector')({
autoProfile: true
});
환경 변수 INSTANA_AUTO_PROFILE 을 다음과 같이 설정하여 AutoProfile 을 활성화할 수도 있습니다 true
짧은 종료 통화 자동 집계
이후: 1.108.0.
Node.js 추적기는 매우 짧고(10ms 미만) 빈도가 높은 데이터베이스 호출의 자동 집계를 지원합니다. 이렇게 하면 이러한 호출이 빠르게 연속적으로 실행되는 시나리오에서 추적의 성능 오버헤드를 최소화하는 데 도움이 됩니다. 현재 이 기능은 옵트인 기능이며 명시적으로 사용하도록 설정해야 합니다. 다음 릴리스 중 하나에서 기본 동작이 될 예정입니다.
즉시 사용하려면 다음 방법 중 하나를 사용하세요:
- 환경 변수
INSTANA_SPANBATCHING_ENABLED=true을(를) 설정하십시오. - 코드 내 구성을 사용합니다:
require('@instana/collector')({ tracing: { spanBatchingEnabled: true } }); - 상담원의
configuration.yaml에 추가합니다:com.instana.plugin.nodejs: span-batching-enabled: true
이러한 구성 옵션은 동작이 기본적으로 켜져 있으면 무시됩니다.
이 기능의 작동 방식으로 인해 이 옵션을 활성화하면 엔드포인트 추출에 영향을 미쳐 일부 지연 시간이 짧은 데이터베이스 엔드포인트에 대한 호출 횟수가 변경될 수 있습니다.
사전 빌드된 기본 애드온으로 폴백 사용 안 함
기본 애드온 옵션 종속성이 성공적으로 설치되지 않은 경우 @instana/collector 패키지는 운영 체제, Node.js 버전 및 libc 변형과 일치하는 사전 빌드된 바이너리를 자동으로 사용하려고 시도합니다. INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS=false 을 설정하여 프리빌드 사용을 비활성화할 수 있습니다.
전체 구성 참조
다음은 가능한 모든 구성 값과 기본값입니다:
{
agentHost: '127.0.0.1',
agentPort: 42699,
serviceName: null,
packageJsonPath: null,
// the log level:
level: 'info',
tracing: {
enabled: true,
automaticTracingEnabled: true,
// Spans are batched and sent to the agent once every second, or if ${forceTransmissionStartingAt} spans have been collected (whichever happens earlier)
forceTransmissionStartingAt: 500,
// If more than ${maxBufferedSpans} have been buffered and the collector has not been able to send them to the agent, it will start to drop spans to avoid causing memory issues.
maxBufferedSpans: 1000,
http: {
// This is usually configured at the agent level (configuration.yaml).
extraHttpHeadersToCapture: []
},
global: {
// Number of stack trace frames to capture. Set to 0 to disable stack trace collection.
stackTraceLength: 15,
// Stack trace collection mode: (`all`, `error`, `none`)
stackTrace: 'all',
},
// To disable individual tracing plug-ins.
disabledTracers: [],
// Can also be configured at the agent level (configuration.yaml).
spanBatchingEnabled: false
},
metrics: {
timeBetweenHealthcheckCalls: 3000
},
// This is usually configured at the agent level (configuration.yaml).
secrets: {
matcherMode: 'contains-ignore-case',
keywords: ['key', 'pass', 'secret']
},
autoProfile: false
}
다음은 Node.js 수집기가 지원하는 모든 환경 변수 목록입니다:
| 환경 변수 | 동등한 구성 옵션 |
|---|---|
INSTANA_AGENT_HOST |
config.agentHost |
INSTANA_AGENT_PORT |
config.agentPort |
INSTANA_SERVICE_NAME |
config.serviceName |
INSTANA_PACKAGE_JSON_PATH |
config.packageJsonPath |
INSTANA_PROCESS_NAME |
– |
INSTANA_DISABLE_AUTO_INSTR=true |
config.tracing.automaticTracingEnabled = false |
INSTANA_TRACING_DISABLE |
config.tracing.disable |
INSTANA_STACK_TRACE_LENGTH |
config.tracing.global.stackTraceLength |
INSTANA_STACK_TRACE |
config.tracing.global.stackTrace(all, error,none) |
INSTANA_LOG_LEVEL |
config.level |
INSTANA_DEBUG |
config.level = debug |
INSTANA_AUTO_PROFILE=true |
config.autoProfile = true |
INSTANA_SPANBATCHING_ENABLED=true |
config.tracing.spanBatchingEnabled = true |
INSTANA_TRACE_IMMEDIATELY=true |
config.tracing.activateImmediately = true |
INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS |
– |
INSTANA_ALLOW_ROOT_EXIT_SPAN |
config.tracing.allowRootExitSpan = true |
INSTANA_IGNORE_ENDPOINTS |
config.tracing.ignoreEndpoints |