HttpClient yüksek kardinalite ölçümleri gözlemlenebilir sayaçlar kullanır

.NET 11'den itibaren, http.client.open_connections ve http.client.active_requests ölçümleri ObservableUpDownCounter<T> yerine UpDownCounter<T> kullanır. Kodunuz bu iki araçtan ölçümleri dinlemek için doğrudan kullanıyorsa MeterListener , bunları artık ölçüm olayı geri çağırma yoluyla almazsınız.

Sürüm kullanıma sunulmuştur

.NET 11 RC 1

Önceki davranış

Daha önce, http.client.open_connections ve http.client.active_requests, normal UpDownCounter<long> araçlarıydı. HttpClient, her bağlantı veya istek başlatıldığında ya da durdurulduğunda sayaç üzerinde Add çağrısını yapıyordu; böylece iki araçtan biri için ölçüm olaylarını etkinleştiren bir MeterListener, her bir Add çağrısı için bir push bildirimi alıyordu.

Yeni davranış

.NET 11'den itibaren, http.client.open_connections ve http.client.active_requests, ObservableUpDownCounter<long> araçlardır. HttpClient geçerli sayıları dahili olarak tutar ve yalnızca bir koleksiyon aracı geçerli değeri istediğinde bunları bildirir. İki cihazdan biri için ölçüm olaylarını etkinleştiren bir MeterListener, artık ayrı ayrı anlık bildirimler almaz. Bunun yerine, mevcut ölçümleri talep üzerine almak için MeterListener.RecordObservableInstruments() öğesini düzenli aralıklarla çağırmanız gerekir.

OpenTelemetry SDK’sı, Prometheus dışa aktarıcıları, dotnet-counters, dotnet-monitor ve Aspire panosu gibi zaten çekme esasına göre metrik toplayan araçlar, gözlemlenebilir enstrümanları zaten düzenli olarak örnekledikleri için etkilenmez.

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

http.client.open_connections ve http.client.active_requests ölçümleri, sunucu ve eş adresleri gibi yüksek kardinalite etiketlerini içerir. Bu ölçümler normal sayaçlar olduğundan, izleme arka ucunun gözlemlediği etiket değerlerinin her benzersiz bileşimi süresiz olarak tutuldu ve toplandı, bu da bazı izleme sistemlerinde sınırsız bellek büyümesine ve maliyetlerin artmasına neden oldu. Gözlemlenebilir sayaçlar, sayıların dahili olarak korunmasına, yalnızca o anda etkin olan birleşimleri raporlamasına ve sayısı sıfıra dönen girişleri bırakmasına olanak sağlar HttpClient . Daha fazla bilgi için bu değişikliği yapan çekme isteğine ve yüksek kardinalite öznitelikleriyle ilgili soruna bakın.

RecordObservableInstruments() veya http.client.open_connections okumak için doğrudan MeterListener kullanıyorsanız, yalnızca ölçüm olayı geri çağrısına güvenmek yerine, bu metrikleri örneklemek istediğiniz aralıkta dinleyiciniz üzerinde http.client.active_requests çağrısı yapın. Bu ölçümleri bir ölçüm toplama aracı, bir dışarı aktarıcı veya Aspire pano aracılığıyla tüketirseniz, söz konusu araçlar zaten gözlemlenebilir araçlardan değer çektiğinden herhangi bir eylem gerekmez.

Etkilenen API'ler