Ana içeriğe geç

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.

not

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 ve rpc.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:

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 TextMapPropagator
  • global.MeterProvider()'dan MeterProvider
  • otel.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:

// 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.

tehlike

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.