Aracılığıyla paylaş


System.Net ölçümleri

Bu makalede, System.Net API kullanılarak oluşturulan System.Diagnostics.Metrics için yerleşik ağ ölçümleri açıklanmaktadır. Alternatif EventCounters API'sini temel alan ölçümlerin listesi için bkz. .NET'de İyi Bilinen EventCounters .

Bahşiş

System.Net ölçümlerini toplama, raporlama, zenginleştirme ve test etme hakkında daha fazla bilgi için bkz. .NET'de ağ ölçümleri .

System.Net.NameResolution

System.Net.NameResolution ölçümleri, DnsDNS ad çözümlemesini bildirir:

Ölçüm: dns.lookup.duration
Ad İzleme Türü Birim Açıklama
dns.lookup.duration Histogram s DNS araması yapmak için geçen süreyi ölçer.
Öznitelik Tür Açıklama Örnekler Varlık
dns.question.name string Sorgulanan ad. www.example.com; dot.net Her zaman
error.type string İyi bilinen bir hata dizesi veya oluşan bir özel durumun tam tür adı. host_not_found; System.Net.Sockets.SocketException Hata oluştuysa

Bu ölçüm, DNS istekleri yapmak için gereken süreyi ölçer. Bu istekler, Dns üzerinde yöntemleri çağırarak veya HttpClientgibi türlerde dolaylı olarak üst düzey API'ler içinde gerçekleşebilir.

DNS araması yaparken karşılaşılan hataların çoğu SocketExceptionoluşturur. Yaygın hata durumlarını daha iyi tanımlamak için, belirli SocketErrorCode sahip yuva özel durumlarına error.typeaçık hata adları verilir:

SocketErrorCode error.type
HostNotFound host_not_found
TryAgain try_again
AddressFamilyNotSupported address_family_not_supported
NoRecovery no_recovery

Başka bir SocketError değeri olan yuva özel durumları System.Net.Sockets.SocketExceptionolarak bildirilir.

OpenTelemetry kullanılırken, bu ölçüm için varsayılan demetler [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ] olarak ayarlanır.

Şu şekilde kullanılabilir: .NET 8.

System.Net.Http

System.Net.Http ölçümleri, System.Net.Httphttp isteği ve bağlantı bilgilerini bildirir:

Ölçüm: http.client.open_connections
Ad İzleme Türü Birim (UCUM) Açıklama
http.client.open_connections UpDownCounter<T> {connection} İstemcide şu anda etkin veya boşta olan giden HTTP bağlantılarının sayısı
Öznitelik Tür Açıklama Örnekler Varlık
http.connection.state string HTTP bağlantı havuzundaki HTTP bağlantısının durumu. active; idle Her zaman
network.protocol.version string Kullanılan HTTP protokolünün sürümü. 1.1; 2 Her zaman
server.address string HTTP isteğinin gönderildiği "URI kaynağı" ana bilgisayar tanımlayıcısı. example.com Her zaman
server.port int HTTP isteğinin gönderildiği "URI kaynağı" bağlantı noktası tanımlayıcısı. 80; 8080; 443 Varsayılan değilse ( 80 düzeni içinhttp, 443için https )
network.peer.address string Yuva bağlantısının eş IP adresi. 10.5.3.2 Her zaman
url.scheme string URI düzeni, kullanılan protokolü tanımlayan bileşen. http; https; ftp Her zaman

HttpClient, varsayılan SocketsHttpHandlerkullanacak şekilde yapılandırıldığında, HTTP iletileri göndermek için önbelleğe alınmış bir ağ bağlantısı havuzu tutar. Bu ölçüm, şu anda havuzda kaç bağlantı olduğunu sayar. Etkin bağlantılar etkin istekleri işler. Etkin bağlantılar verileri aktarıyor veya istemciyi veya sunucuyu bekliyor olabilir. Boşta bağlantılar hiçbir isteği işlemez, ancak gelecekteki isteklerin daha hızlı işlenebilmesi için açık bırakılır.

Şu şekilde kullanılabilir: .NET 8.

Ölçüm: http.client.connection.duration
Ad İzleme Türü Birim (UCUM) Açıklama
http.client.connection.duration Histogram s Başarıyla kurulan giden HTTP bağlantılarının süresi.
Öznitelik Tür Açıklama Örnekler Varlık
network.protocol.version string Kullanılan HTTP protokolünün sürümü. 1.1; 2 Her zaman
server.address string HTTP isteğinin gönderildiği "URI kaynağı" ana bilgisayar tanımlayıcısı. example.com Her zaman
server.port int HTTP isteğinin gönderildiği "URI kaynağı" bağlantı noktası tanımlayıcısı. 80; 8080; 443 Varsayılan değilse ( 80 düzeni içinhttp, 443için https )
network.peer.address string Yuva bağlantısının IP adresi. 10.5.3.2 Her zaman
url.scheme string URI düzeni, kullanılan protokolü tanımlayan bileşen. http; https; ftp Her zaman

Bu ölçüm yalnızca HttpClient varsayılan SocketsHttpHandlerkullanacak şekilde yapılandırıldığında yakalanır.

Bu ölçüm bağlantı süresini izlediğinden ve ideal olarak http bağlantıları birden çok istek için kullanıldığından, demetler istek süreleri için kullanılanlardan daha uzun olmalıdır. Örneğin, [ 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300 ] kullanılması 5 dakikalık bir üst demet sağlar.

Şu şekilde kullanılabilir: .NET 8.

Ölçüm: http.client.request.duration
Ad İzleme Türü Birim (UCUM) Açıklama
http.client.request.duration Histogram<T> s Giden HTTP isteklerinin süresi.
Öznitelik Tür Açıklama Örnekler Varlık
error.type string İstek hatasının nedeni: HTTP isteği hatalarından biri snake_case veya tam özel durum türü ya da HTTP 4xx/5xx durum kodunda. System.Threading.Tasks.TaskCanceledException; name_resolution_error; secure_connection_error ; 404 İstek başarısız olduysa.
http.request.method string HTTP isteği yöntemi. GET; POST; ; HEAD_OTHER [2] Her zaman
http.response.status_code int http yanıt durum kodunu. 200 Yanıt alındıysa.
network.protocol.version string Kullanılan HTTP protokolünün sürümü. 1.1; 2 Yanıt alındıysa.
server.address string HTTP isteğinin gönderildiği "URI kaynağı" ana bilgisayar tanımlayıcısı. example.com Her zaman
server.port int HTTP isteğinin gönderildiği "URI kaynağı" bağlantı noktası tanımlayıcısı. 80; 8080; 443 .NET sürümüne bağlıdır. [3]
url.scheme string URI düzeni, kullanılan protokolü tanımlayan bileşen. http; https; ftp Her zaman

[1] error.type: İstek başarısız olduysa, değer aşağıdakilerden birine ayarlanır:

  • türüne sahip bir özel durum adı, örneğin, TaskCanceledException.
  • İstemci veya sunucu hatasını gösteren bir durum kodu, örneğin, 500.
  • HttpRequestExceptiondışında bir HttpRequestError ile bir Unknown oluştuysa, yılan örneğindeki sabit listesi değeri name_resolution_error.

[2] http.request.method:http.request.method:** Yöntemin RFC9110listelenen iyi bilinen yöntemlerden biri olması durumunda bu değer yöntem adını içerir; aksi takdirde değeri _OTHER. Kullanıcı tarafından sağlanan yöntem adları, büyük/küçük harfe duyarsız bir şekilde bilinen adlara eşlenir. Örneğin, kullanıcı GeTadını sağlarsa, GETile eşlenir.

[3] server.port: Değerin varlığı sürüme bağlıdır:

  • .NET 8: Varsayılan değilse sun ( düzeni için, için )
  • .NET 9+: Her zaman mevcut

HTTP istemci isteği süresi, temel alınan istemci işleyicisinin isteği tamamlamak için geçen süreyi ölçer. İsteğin tamamlanması, ağ akışından yanıt üst bilgilerini okumaya kadar geçen süreyi içerir. Yanıt gövdesini okumak için harcanan zamanı içermez.

OpenTelemetry kullanılırken, bu ölçüm için varsayılan demetler [ 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10 ] olarak ayarlanır.

Şu şekilde kullanılabilir: .NET 8.

Bahşiş

Zenginleştirme bu ölçüm için mümkündür.

Ölçüm: http.client.request.time_in_queue
Ad İzleme Türü Birim (UCUM) Açıklama
http.client.request.time_in_queue Histogram<T> s Kullanılabilir bağlantı beklenmeyi bekleyen bir kuyrukta harcanan istek miktarı.
Öznitelik Tür Açıklama Örnekler Varlık
http.request.method string HTTP isteği yöntemi. GET; POST; HEAD Her zaman
network.protocol.version string Kullanılan HTTP protokolünün sürümü. 1.1; 2 Her zaman
server.address string HTTP isteğinin gönderildiği "URI kaynağı" ana bilgisayar tanımlayıcısı. example.com Her zaman
server.port int HTTP isteğinin gönderildiği "URI kaynağı" bağlantı noktası tanımlayıcısı. 80; 8080; 443 Varsayılan değilse ( 80 düzeni içinhttp, 443için https )
url.scheme string URI düzeni, kullanılan protokolü tanımlayan bileşen. http; https; ftp Her zaman

HttpClient, varsayılan SocketsHttpHandlerkullanacak şekilde yapılandırıldığında, bir ağ bağlantısı havuzu kullanarak HTTP istekleri gönderir. Tüm bağlantılar diğer istekleri işlemekle meşgulse, yeni istekler kuyruğa alınır ve bir ağ bağlantısı kullanılabilir duruma gelene kadar bekler. Bu araç, HTTP isteklerinin ağ üzerinden herhangi bir şey gönderilmeden önce bu kuyrukta beklerken harcadığı süreyi ölçer.

Şu şekilde kullanılabilir: .NET 8.

Ölçüm: http.client.active_requests
Ad İzleme Türü Birim (UCUM) Açıklama
http.client.active_requests UpDownCounter<T> {request} Etkin HTTP isteklerinin sayısı.
Öznitelik Tür Açıklama Örnekler Varlık
http.request.method string HTTP isteği yöntemi. GET; POST; HEAD Her zaman
server.address string HTTP isteğinin gönderildiği "URI kaynağı" ana bilgisayar tanımlayıcısı. example.com Her zaman
server.port int HTTP isteğinin gönderildiği "URI kaynağı" bağlantı noktası tanımlayıcısı. 80; 8080; 443 Varsayılan değilse ( 80 düzeni içinhttp, 443için https )
url.scheme string URI düzeni, kullanılan protokolü tanımlayan bileşen. http; https; ftp Her zaman

Bu ölçüm, kaç isteğin etkin olarak kabul edildiğini sayar. İstekler, http.client.request.duration tarafından ölçülen süre boyunca etkindir.

Şu şekilde kullanılabilir: .NET 8.