DatadogAPM을 Opencensus에서 활용하자(로그 및 추적 연결)
6272 단어 opencensusDatadog
소개
안녕하세요, 스에켄( @sueken5 )입니다.
이 기사에서는 DatadogAPM 추적에 로그 정보를 수반하는 방법을 작성합니다.
이렇게 로그와 트레이스를 연결하면 쉽게 디버깅할 수 있으므로 매우 추천합니다.
끈을 붙이려면
datadog APM과 로그를 연결하려면 로그에 trace_id와 span_id를 붙여야합니다. 실제 로그는 다음과 같은 느낌입니다.
{"level":"DEBUG","ts":"2020-01-31T15:33:52.042+0900","msg":"hello world","dd.trace_id":10034860525566454582}
datadog 예약어? 에 dd.trace_id와 dd.span_id가 있으므로 id를 넣습니다.
datadog 용 TraceID / SpanID를 얻으십시오.
여기서 빠졌는데 TraceID/SpanID는 문자열 상태로 보내서 잘 TraceID가 다르며 추적과 로그가 붙지 않습니다. 그래서 다음과 같이 합니다.
spanCTX := trace.FromContext(ctx).SpanContext()
fields = append(
fields,
zap.Uint64("dd.trace_id", binary.BigEndian.Uint64(spanCTX.TraceID[8:])),
zap.Uint64("dd.span_id", binary.BigEndian.Uint64(spanCTX.SpanID[:])),
)
l.logger.Error(msg, fields...)
spanContext에서 TraceID를 가져와 binary 패키지를 사용하여 처리합니다. 이 방법은 datagg의 exporter의 TraceID를 취득하는 방법을 참고로 하고 있습니다.
github.com/DataDog/opencensus-go-exporter-datadog/span.gofunc (e *traceExporter) convertSpan(s *trace.SpanData) *ddSpan {
startNano := s.StartTime.UnixNano()
span := &ddSpan{
TraceID: binary.BigEndian.Uint64(s.SpanContext.TraceID[8:]),
SpanID: binary.BigEndian.Uint64(s.SpanContext.SpanID[:]),
Name: "opencensus",
Resource: s.Name,
Service: e.opts.Service,
Start: startNano,
Duration: s.EndTime.UnixNano() - startNano,
Metrics: map[string]float64{},
Meta: map[string]string{},
}
// 省略
}
이렇게 하면 추적과 로그가 연결됩니다.
요약
트레이스와 로그가 끈적거리며 단번에 디버깅이 쉬워집니다. 추천합니다.
Reference
이 문제에 관하여(DatadogAPM을 Opencensus에서 활용하자(로그 및 추적 연결)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sueken/items/62b56944d85faad4cbd5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
datadog APM과 로그를 연결하려면 로그에 trace_id와 span_id를 붙여야합니다. 실제 로그는 다음과 같은 느낌입니다.
{"level":"DEBUG","ts":"2020-01-31T15:33:52.042+0900","msg":"hello world","dd.trace_id":10034860525566454582}
datadog 예약어? 에 dd.trace_id와 dd.span_id가 있으므로 id를 넣습니다.
datadog 용 TraceID / SpanID를 얻으십시오.
여기서 빠졌는데 TraceID/SpanID는 문자열 상태로 보내서 잘 TraceID가 다르며 추적과 로그가 붙지 않습니다. 그래서 다음과 같이 합니다.
spanCTX := trace.FromContext(ctx).SpanContext()
fields = append(
fields,
zap.Uint64("dd.trace_id", binary.BigEndian.Uint64(spanCTX.TraceID[8:])),
zap.Uint64("dd.span_id", binary.BigEndian.Uint64(spanCTX.SpanID[:])),
)
l.logger.Error(msg, fields...)
spanContext에서 TraceID를 가져와 binary 패키지를 사용하여 처리합니다. 이 방법은 datagg의 exporter의 TraceID를 취득하는 방법을 참고로 하고 있습니다.
github.com/DataDog/opencensus-go-exporter-datadog/span.gofunc (e *traceExporter) convertSpan(s *trace.SpanData) *ddSpan {
startNano := s.StartTime.UnixNano()
span := &ddSpan{
TraceID: binary.BigEndian.Uint64(s.SpanContext.TraceID[8:]),
SpanID: binary.BigEndian.Uint64(s.SpanContext.SpanID[:]),
Name: "opencensus",
Resource: s.Name,
Service: e.opts.Service,
Start: startNano,
Duration: s.EndTime.UnixNano() - startNano,
Metrics: map[string]float64{},
Meta: map[string]string{},
}
// 省略
}
이렇게 하면 추적과 로그가 연결됩니다.
요약
트레이스와 로그가 끈적거리며 단번에 디버깅이 쉬워집니다. 추천합니다.
Reference
이 문제에 관하여(DatadogAPM을 Opencensus에서 활용하자(로그 및 추적 연결)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sueken/items/62b56944d85faad4cbd5
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
spanCTX := trace.FromContext(ctx).SpanContext()
fields = append(
fields,
zap.Uint64("dd.trace_id", binary.BigEndian.Uint64(spanCTX.TraceID[8:])),
zap.Uint64("dd.span_id", binary.BigEndian.Uint64(spanCTX.SpanID[:])),
)
l.logger.Error(msg, fields...)
func (e *traceExporter) convertSpan(s *trace.SpanData) *ddSpan {
startNano := s.StartTime.UnixNano()
span := &ddSpan{
TraceID: binary.BigEndian.Uint64(s.SpanContext.TraceID[8:]),
SpanID: binary.BigEndian.Uint64(s.SpanContext.SpanID[:]),
Name: "opencensus",
Resource: s.Name,
Service: e.opts.Service,
Start: startNano,
Duration: s.EndTime.UnixNano() - startNano,
Metrics: map[string]float64{},
Meta: map[string]string{},
}
// 省略
}
트레이스와 로그가 끈적거리며 단번에 디버깅이 쉬워집니다. 추천합니다.
Reference
이 문제에 관하여(DatadogAPM을 Opencensus에서 활용하자(로그 및 추적 연결)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sueken/items/62b56944d85faad4cbd5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)