Görselleştirme
Connect, net/http
ile yakın çalışır, bu da http.Handler
veya http.Client
ile çalışan herhangi bir günlükleme, izleme veya metriklerin Connect ile de çalışacağı anlamına gelir. Özellikle, otelhttp OpenTelemetry paketi ve ochttp OpenCensus paketi, Connect sunucuları ve istemcileri ile kusursuz bir şekilde entegre olur.
Daha ayrıntılı, RPC odaklı metrikler için, otelconnect paketini kullanın. Bu paket, OpenTelemetry metrikleriniz ile entegre çalışarak önemli bilgileri toplar.
rpc.system
: Bu çağrı gRPC, gRPC-Web veya Connect miydi?rpc.service
verpc.method
: Hangi hizmet ve yöntem çağrıldı?responses_per_rpc
: Akış yanıtlarına kaç mesaj yazıldı?error_code
/status_code
: Hangi spesifik gRPC veya Connect hatası döndürüldü?
OpenTelemetry oldukça karmaşık olabilir, bu nedenle bu kılavuz, okuyucuların aşağıdakiler ile aşina olduğunu varsayıyor:
- görselleştirme nedir.
- OpenTelemetry metrikleri ve izleme hakkında temel bir anlayış.
- TextMapPropagators, MeterProviders ve TraceProviders nasıl başlatılır ve kullanılır.
Connect için OpenTelemetry'yi Etkinleştirme
Uygulamanızda OpenTelemetry'yi kurduğunuzda, bir Connect projesinde OpenTelemetry'yi etkinleştirmek, Connect işleyici ve istemci oluşturucularında otelconnect.NewInterceptor seçeneğini eklemek kadar basittir. Eğer uygulamanızda OpenTelemetry yoksa, OpenTelemetry Go başlangıç kılavuzu 'na başvurabilirsiniz.
import "connectrpc.com/otelconnect"
otelInterceptor, err := otelconnect.NewInterceptor()
if err != nil {
log.Fatal(err)
}
path, handler := greetv1connect.NewGreetServiceHandler(
greeter,
connect.WithInterceptors(otelInterceptor),
)
client := greetv1connect.NewGreetServiceClient(
http.DefaultClient,
"http://localhost:8080",
connect.WithInterceptors(otelInterceptor),
)
Varsayılan olarak, bu, aşağıdakileri kullanacaktır:
otel.GetTextMapPropagator()
'dan TextMapPropagatorglobal.MeterProvider()
'dan MeterProviderotel.GetTracerProvider()
'dan TracerProvider
Özel MeterProvider, TraceProvider ve TextMapPropagators Kullanımı
Tek bir ikili dosyada birden fazla uygulama çalıştırıldığında veya farklı kod bölümlerinin farklı dışlayıcılar kullanması gerektiğinde, doğru dışlayıcıları otelconnect.NewInterceptor 'a açıkça iletin:
- TracerProvider'ı ayarlamak için otelconnect.WithTracerProvider
- MeterProvider'ı ayarlamak için otelconnect.WithMeterProvider
- TextMapPropagator'ı ayarlamak için otelconnect.WithPropagator
// newInterceptor, Connect istemcilerini ve işleyicilerini özel OpenTelemetry metrikleri, izlemesi ve yayılımı kullanarak donatır.
func newInterceptor(tp trace.TracerProvider, mp metric.MeterProvider, p propagation.TextMapPropagator) (connect.Interceptor, error) {
return otelconnect.NewInterceptor(
otelconnect.WithTracerProvider(tp),
otelconnect.WithMeterProvider(mp),
otelconnect.WithPropagator(p),
)
}
İç mikro hizmetler için yapılandırma
Varsayılan olarak, otelconnect ile enstrümantize edilmiş sunucular ihtiyatlıdır ve internetle yüzleşiyormuş gibi davranırlar. İstemciden gönderilen herhangi bir izleme bilgisine güvenmezler ve her istek için yeni izleme aralıkları oluştururlar. Yeni aralıklar, referans için uzak aralıkla bağlantılıdır (OpenTelemetry'nin trace.Link kullanarak), ancak izleme arayüzleri isteği yeni bir üst düzey işlem olarak gösterir.
Sunucunuz bir iç mikro hizmet olarak dağıtıldığında, otelconnect 'in istemcinin izleme bilgisine güvenmesini sağlamak için otelconnect.WithTrustRemote kullanarak yapılandırın. Bu seçenekle, sunucular her istek için çocuk aralıkları oluşturacaktır.
Metrikleri ve izleme kardinalitesini azaltma
Varsayılan olarak, OpenTelemetry RPC konvansiyonları sunucu tarafı yüksek kardinalite metrikleri ve izleme çıktısı üretir. Özellikle, sunucular tüm metrikleri ve izleme verilerini sunucunun IP adresi ve uzak port numarası ile etiketler. Bu nitelikleri bırakmak için otelconnect.WithoutServerPeerAttributes kullanın. Daha özelleştirilebilir nitelik filtreleme için otelconnect.WithFilter kullanın.