본문 바로가기
WIKI 기술 지식 베이스

Go 컴파일 타임 계측 트러블슈팅 (Troubleshooting Go Compile-Time Instrumentation)

원문 보기 위키 갱신

이 가이드는 Orchestrion이 관리하는 빌드를 트러블슈팅하는 방법을 설명해요. 이 절차는 Datadog가 빌드 과정에 대한 통찰력을 얻도록 돕고, 버그 리포트에 도움이 될 수 있어요.

출처: 문서

본문

개요 (Overview)

이 가이드는 Orchestrion이 관리하는 빌드를 트러블슈팅하는 방법을 설명합니다. 이 절차는 Datadog가 빌드 과정에 대한 통찰력을 얻도록 돕고 버그 리포트를 지원하는 데 도움이 될 수 있어요.

⚠️ 경고: 생성된 파일에는 소스 코드, 의존성 이름 같은 민감한 프로젝트 정보가 포함될 수 있어요. 이러한 정보를 공개적으로 공유하는 것이 우려된다면, 데이터를 비공개로 공유하도록 Datadog 지원팀에 문의하세요.

작업 트리(work tree) 보존 (Preserving the work tree)

Orchestrion은 빌드 변환을 go build 작업 트리에 기록합니다. go 툴체인이 빌드 후 이 디렉터리를 정리하지 못하게 하려면 -work 플래그를 사용하세요:

orchestrion go build -work ./...
WORK=/tmp/go-build2455442813

작업 트리 위치는 빌드 시작 시 WORK=로 표시되어 출력됩니다. 이 디렉터리에는 빌드된 각 go 패키지에 대한 하위 디렉터리가 있으며, 이를 *스테이지 디렉터리(stage directories)*라고 합니다.

작업 트리 내용 (Work tree contents)

Orchestrion이 소스 파일에 코드를 주입하면, 수정된 파일을 패키지의 스테이지 디렉터리($WORK/b###)의 orchestrion/src 하위 디렉터리에 씁니다. 수정된 패키지 import 구성의 경우 원본 파일은 .original 접미사로 보존됩니다. 이러한 사람이 읽을 수 있는 파일을 검사해 Orchestrion의 동작을 확인할 수 있어요. 이 파일들을 해석하는 데 도움이 필요하면 Datadog 지원팀에 문의하세요.

로깅 구성 (Logging configuration)

로그 레벨 (Log levels)

ORCHESTRION_LOG_LEVEL 환경 변수 또는 --log-level 플래그를 사용해 Orchestrion의 로깅 출력을 제어하세요:

레벨 설명
NONE, OFF (기본값) 로깅 출력 없음
ERROR 오류 정보만
WARN 오류 및 경고
INFO 오류, 경고, 정보 메시지
DEBUG 상세 로깅
TRACE 매우 상세한 로깅

⚠️ 경고: ORCHESTRION_LOG_LEVEL을 DEBUG 또는 TRACE 레벨로 설정하면 빌드 성능에 큰 영향을 줄 수 있어요. 이러한 설정은 정상 운영에는 권장되지 않습니다.

로그 파일 출력 (Log file output)

ORCHESTRION_LOG_FILE 환경 변수 또는 --log-file 플래그에 원하는 파일 경로를 설정하면 로깅 메시지를 콘솔 대신 파일에 기록할 수 있어요.

💡 정보: ORCHESTRION_LOG_FILE을 설정하면 ORCHESTRION_LOG_LEVEL의 기본값이 WARN으로 바뀝니다.

로그 파일 경로에는 $PID 또는 ${PID} 토큰을 포함할 수 있으며, 이 값은 로깅 프로세스의 PID로 대체됩니다. 이렇게 하면 파일 경합이 줄어들지만, 대규모 프로젝트에서는 여러 개의 로그 파일이 생성됩니다.

로깅은 파일 경로에 $PID가 있든 없든 기존 파일에 덮어쓰지 않고 추가(append) 방식으로 기록됩니다.

더 알아보기 (Learn more)