SDKs
SDK Go
Guia de instrumentação para serviços Go
go get github.com/obtrace/sdk-go
import (
"os"
ob "github.com/obtrace/sdk-go/pkg/obtrace"
)
client := ob.NewClient(ob.Config{
APIKey: os.Getenv("OBTRACE_API_KEY"),
TenantID: os.Getenv("OBTRACE_TENANT_ID"),
ProjectID: os.Getenv("OBTRACE_PROJECT_ID"),
AppID: "checkout-api",
Env: os.Getenv("OBTRACE_ENV"),
ServiceName: "checkout-api",
ServiceVersion: os.Getenv("OBTRACE_SERVICE_VERSION"),
})
O SDK Go envia para:
POST /otlp/v1/logs
POST /otlp/v1/traces
POST /otlp/v1/metrics
runtimeAttrs := map[string]any{
"cloud.region": os.Getenv("AWS_REGION"),
"k8s.cluster.name": os.Getenv("CLUSTER_NAME"),
}
client.Log("INFO", "service.started", nil)
client.Metric(ob.SemanticMetrics.RuntimeCPUUtilization, 0.42, "1", nil)
client.Span("db.query", "", "", 0, "", map[string]any{
"db.system": "postgresql",
"feature.name": "checkout",
"cloud.region": runtimeAttrs["cloud.region"],
})
_ = client.Flush(context.Background())
http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
client.Log("INFO", "healthz.request", nil)
client.Span("http.server GET /healthz", "", "", 0, "", map[string]any{
"http.method": "GET",
"http.route": "/healthz",
"cloud.region": os.Getenv("AWS_REGION"),
})
_, _ = w.Write([]byte("ok"))
})
service, env e version estáveis entre deploys
- um caminho real emite log e trace
- não existe
401/403 na submissao OTLP
cloud.region existe quando o serviço é multi-região