OpenTelemetry
- Go kursu
- İleri seviye
- Ders 62/68
- 4 dk
OpenTelemetry SDK'nın Go'da temelini öğrenirsin.
OpenTelemetry
OpenTelemetry (OTel), trace, metrik ve logları üreticiden bağımsız biçimde toplamak için açık standarttır. Kodun bir kez OTel API'siyle yazılır; veriler Jaeger, Grafana Tempo, Datadog gibi istediğin arka uca exporter ile gönderilir.
tracer := otel.Tracer("siparis-servisi")
ctx, span := tracer.Start(ctx, "SiparisOlustur")
defer span.End()
span.SetAttributes(attribute.Int("urun_sayisi", 3))SDK kurulumu ve otomatik araçlama
Program başında bir TracerProvider kurulur ve global yapılır; kapanışta Shutdown ile tampondaki span'ler gönderilir. otelhttp gibi hazır paketler HTTP sunucusu ve istemcisini otomatik izler:
handler := otelhttp.NewHandler(mux, "api")
client := http.Client{Transport: otelhttp.NewTransport(http.DefaultTransport)}Böylece her istek için span açma ve traceparent başlığını taşıma işi kendiliğinden yapılır.
Uygulama Öznitelikli span
OTel benzeri bir yapı kur: type Span struct { Ad string; Attr map[string]any } ve func (s *Span) Set(k string, v any). Bir span oluştur, "urun_sayisi" = 3 ve "odeme" = "kart" ekle ve len(s.Attr) yazdır.
Başlangıç kodu
package main
import "fmt"
func main() {
// buraya yaz
}Örnek çözüm
package main
import "fmt"
type Span struct {
Ad string
Attr map[string]any
}
func (s *Span) Set(k string, v any) {
if s.Attr == nil {
s.Attr = map[string]any{}
}
s.Attr[k] = v
}
func main() {
s := &Span{Ad: "SiparisOlustur"}
s.Set("urun_sayisi", 3)
s.Set("odeme", "kart")
fmt.Println(len(s.Attr))
}Beklenen çıktı
2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Arka ucu Jaeger'dan Tempo'ya değiştirmek için ne değişir?
- Go sürümü
- Veritabanı
- Yalnızca exporter ayarı Doğru cevap
- Tüm span kodları
Açıklama: Uygulama kodu OTel API'sine bağlıdır; arka uç farkı SDK kurulumundaki exporter'da kalır.
2 Öznitelik ekle
span.____(attribute.String("kullanici", id))
span.SetAttributes(attribute.String("kullanici", id))
Açıklama: SetAttributes span'e sorgulanabilir anahtar-değer bilgisi ekler.
3 OTel parçaları
| Kavram | Anlamı |
|---|---|
API |
Kodun kullandığı arayüz |
SDK |
Örnekleme ve işleme |
Exporter |
Arka uca gönderir |
otelhttp |
Otomatik HTTP izleme |