- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
Go 로그를 Datadog로 보내려면 파일에 로그한 후 Datadog 에이전트로 해당 파일을 테일링하세요. 개방형 소스 로깅 라이브러리인 [logrus]에서 다음 설정을 사용할 수 있습니다.
Datadog에서는 커스텀 파싱 규칙이 필요하지 않도록 로깅 라이브러리를 설정하여 로그를 JSON으로 생성하는 것을 권장합니다.
클래식 Go 구성을 하려면 main.go
파일을 열고 다음 코드를 붙여 넣으세요.
package main
import (
log "github.com/sirupsen/logrus"
)
func main() {
// JSONFormatter 사용
log.SetFormatter(&log.JSONFormatter{})
// logrus로 평소와 같이 이벤트로 로깅
log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout")
}
로그 이벤트에서 보고 싶은 JSON 개체를 제공하여 로그에 메타데이터를 추가할 수 있습니다.
hostname
, username
, customers
, metric
등, Go 애플리케이션과 관련해 트러블슈팅을 할 수 있는 어떤 정보든 메타데이터로 사용할 수 있습니다.
package main
import (
log "github.com/sirupsen/logrus"
)
func main() {
// JSONFormatter 사용
log.SetFormatter(&log.JSONFormatter{})
// logrus로 이벤트 로깅
log.WithFields(log.Fields{"string": "foo", "int": 1, "float": 1.1 }).Info("My first event from golang to stdout")
// 메타데이터의 경우 다음을 재사용해 로깅 문 사이에 필드를 재사용하는 것이 일반적임
contextualizedLog := log.WithFields(log.Fields{
"hostname": "staging-1",
"appname": "foo-app",
"session": "1ce3f6v"
})
contextualizedLog.Info("Simple event with global metadata")
}
로그 수집을 활성화한 후에는 커스텀 로그 수집을 설정해 로그 파일에 테일링하고 Datadog로 새 로그를 전송하세요.
에이전트 구성 디렉터리의 conf.d/
에 go.d/
폴더를 생성하세요.
다음 내용으로 go.d/
에 conf.yaml
파일을 생성하세요.
##Log section
logs:
- type: file
path: "<path_to_your_go_log>.log"
service: <service_name>
source: go
sourcecategory: sourcecode
에이전트의 상태 하위 명령을 실행하고 Checks
섹션 아래 go
를 찾아서 로그가 Datadog로 잘 전송되었는지 확인하세요.
로그가 JSON 형식인 경우 Datadog에서 자동으로 로그 메시지를 파싱하여 로그 속성을 추출합니다. Log Explorer를 사용해 로그를 확인하고 트러블슈팅하세요.
애플리케이션에서 APM이 활성화된 경우에는 APM Go 로깅 설명서에 따라 자동으로 로그에 트레이스 및 스팬 ID를 추가해 애플리케이션 로그와 트레이스 간의 상관 관계를 개선할 수 있습니다.
DEBUG
, INFO
, WARNING
, FATAL
로그 수준을 사용하세요. Go의 FATAL
수준은 Datadog의 Emergency
수준으로 매핑됩니다.