İçeriğe geç
YuvaBelgeler

Go'da API izleme

1 dk okuma

Go paketi net/http işleyicinizi sarar ve yanıtladığı her isteği rota başına kod yazmadan bildirir. Bir API özelliği ve analytics:write kapsamlı bir anahtar gerekir: bkz. API özelliği oluşturun.

go get github.com/productdevbook/yuva/sdk/go/analytics

Middleware bir net/http işleyicisini sarar ve yanıtladığı her isteği bildirir. Mux’ın eşleştirdiği kalıbın bilinmesi için http.ServeMux’un kendisini sarın: GET /users/{id}, /users/{id} rotası olarak kaydedilir.

import "github.com/productdevbook/yuva/sdk/go/analytics"

mux := http.NewServeMux()
mux.HandleFunc("GET /users/{id}", getUser)

monitor, err := analytics.New(analytics.Config{
	BaseURL:    "https://support.example.com",
	APIKey:     os.Getenv("YUVA_API_KEY"),
	PropertyID: os.Getenv("YUVA_API_PROPERTY"),
})
if err != nil {
	log.Fatal(err)
}
defer monitor.Close(context.Background())

handler := monitor.Middleware(analytics.Monitor{
	Service:  "shop-api",
	Consumer: func(r *http.Request) string { return apiKeyName(r) },
})(mux)
log.Fatal(http.ListenAndServe(":8080", handler))

Kayıtlar, sunucu tarafı olayların yeniden denemeleriyle, 5 saniyede bir en çok 500’lük gzip gruplar halinde gider. Süreç çıkmadan önce Close çağırın; yoksa bekleyen kayıtlar kaybolur.

Monitor Varsayılan
Route mux’ın kalıbı Yönlendiriciniz ServeMux değilse bir isteğin rotasını verir.
Consumer yok Kimin çağırdığı: bir API anahtarının adı ya da istemci kimliği. Hiçbir zaman bir kişinin adresi olmaz; e-posta biçimindeki değer (scrubbed) olarak saklanır.
APIVersion yok İsteğin kullandığı API sürümü.
Environment production production, staging gibi ortamları ayırır.
Service yok İsteği karşılayan servis.
Release yok Servisin sürümü. Kabul edilir, henüz gösterilmez.
SampleRate her istek 10, başarılı isteklerin (durum 1-399) ondan birini gönderir; her biri on isteği temsil eder. Hatalar ve istemci hataları her zaman gönderilir.
Country kapalı Yuva’nın isteğin ülkesini sayabilmesi için arayanın adresini (Config.ClientIP) gönderir. Varışta kısaltılır ve hiç saklanmaz.

Hiçbir kalıbın eşleşmediği istek yoluyla gönderilir. Panik eden bir işleyici yazdığı durumla kaydedilir; hiçbir şey yazmadıysa 0 ile.

Rotalar, nelerin kaydedildiği ve sayıların nasıl okunacağı her yığında aynıdır: API izleme. Node, Bun ve Deno için bkz. JavaScript’te API izleme, diğer tüm diller için OpenTelemetry ile API izleme.

Bu sayfayı GitHub'da düzenleyin →