- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- Administrator's Guide
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
아직 설정하지 않은 경우:
AWS 통합과 Datadog 포워더를 설치한 후 다음 단계에 따라 애플리케이션을 계측하여 메트릭, 로그 및 트레이스를 Datadog으로 전송합니다.
다음 명령을 실행해 Datadog Lamda 라이브러리를 로컬에 설치합니다:
go get github.com/DataDog/datadog-lambda-go
다음 단계에 따라 함수를 계측합니다:
환경 변수 DD_FLUSH_TO_LOG
와 DD_TRACE_ENABLED
를 true
로 설정합니다.
Lamda 함수 처리기가 표시되는 파일에서 필요한 패키지를 가져옵니다.
package main
import (
"github.com/aws/aws-lambda-go/lambda"
"github.com/DataDog/datadog-lambda-go"
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
httptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/net/http"
)
Datadog Lamda 라이브러리에서 제공하는 래퍼를 사용해 Lamda 함수 처리기를 래핑합니다.
func main() {
// Wrap your lambda handler like this
lambda.Start(ddlambda.WrapHandler(myHandler, nil))
/* OR with manual configuration options
lambda.Start(ddlambda.WrapHandler(myHandler, &ddlambda.Config{
BatchInterval: time.Second * 15
APIKey: "my-api-key",
}))
*/
}
포함된 라이브러리를 사용해 추가 스팬을 생성하고, 로그와 트레이스를 연결하며, 다른 서비스로 트레이스 컨텍스트를 전달할 수 있습니다.
func myHandler(ctx context.Context, event MyEvent) (string, error) {
// Trace an HTTP request
req, _ := http.NewRequestWithContext(ctx, "GET", "https://www.datadoghq.com", nil)
client := http.Client{}
client = *httptrace.WrapClient(&client)
client.Do(req)
// Connect your Lambda logs and traces
currentSpan, _ := tracer.SpanFromContext(ctx)
log.Printf("my log message %v", currentSpan)
// Create a custom span
s, _ := tracer.StartSpanFromContext(ctx, "child.span")
time.Sleep(100 * time.Millisecond)
s.Finish()
}
메트릭, 트레이스, 로그를 Datadog으로 보내려면 각 함수 로그 그룹에서 Datadog 포워더 Lamda 함수를 연결하세요.
선택 사항: Datadog에서는 통합된 서비스 태깅을 위해 서버리스 애플리케이션을 env
, service
, version
으로 태깅하는 것을 추천합니다.
위 단계를 따라 함수를 설정한 후, 서버리스 홈페이지에서 메트릭, 로그, 트레이스를 확인하세요.
커스텀 메트릭을 제출하려면 아래 코드 예시를 참고하세요:
package main
import (
"github.com/aws/aws-lambda-go/lambda"
"github.com/DataDog/datadog-lambda-go"
)
func main() {
// Wrap your handler function
lambda.Start(ddlambda.WrapHandler(myHandler, nil))
}
func myHandler(ctx context.Context, event MyEvent) (string, error) {
// Submit a custom metric
ddlambda.Metric(
"coffee_house.order_value", // Metric name
12.45, // Metric value
"product:latte", "order:online" // Associated tags
)
// Submit a custom metric with timestamp
ddlambda.MetricWithTimestamp(
"coffee_house.order_value", // Metric name
12.45, // Metric value
time.Now(), // Timestamp, must be within last 20 mins
"product:latte", "order:online" // Associated tags
)
req, err := http.NewRequest("GET", "http://example.com/status")
// Add the datadog distributed tracing headers
ddlambda.AddTraceHeaders(ctx, req)
client := http.Client{}
client.Do(req)
}
커스텀 메트릭 제출에 대해 자세히 알아보세요.
추가 유용한 문서, 링크 및 기사: