Informe server.port
de métricas httpClient incondicionalmente
Cuando se agregaron métricas httpClient en .NET 8, server.port
se introdujo como un Conditionally Required
atributo de acuerdo con el estado del estándar en ese momento. Ser obligatorio condicionalmente significaba que el puerto solo se notificó si no coincide con el puerto predeterminado del protocolo correspondiente (80 para HTTP, 443 para HTTPS). Sin embargo, el nivel de requisito estándar del atributo ha cambiado desde entonces a Required
.
Para mantener el cumplimiento del estándar Open Telemetry al tiempo que mantiene los comportamientos del instrumento coherentes entre sí, los instrumentos http.client.request.duration
, http.client.connection.duration
y http.client.open_connections
se han cambiado para notificar incondicionalmente el server.port
atributo.
Este cambio puede interrumpir las consultas existentes en el software de supervisión, como Prometheus.
Versión introducida
.NET 9 Versión preliminar 7
Comportamiento anterior
http.client.request.duration
, http.client.connection.duration
y http.client.open_connections
notificó el server.port
atributo solo si no coincide con el puerto predeterminado del protocolo correspondiente (80 para HTTP, 443 para HTTPS).
Comportamiento nuevo
El server.port
atributo ahora se notifica incondicionalmente por los instrumentos http.client.request.duration
, http.client.connection.duration
y http.client.open_connections
.
Tipo de cambio importante
Este es un cambio de funcionamiento.
Motivo del cambio
El cambio mantiene el cumplimiento de la especificación Open Telemetry al tiempo que mantiene HttpClient
los instrumentos coherentes entre sí.
Acción recomendada
No se necesita ninguna acción si no se basa en las métricas HttpClient. Si usa los http.client.request.duration
instrumentos , http.client.connection.duration
o http.client.open_connections
, este cambio podría interrumpir las consultas existentes en el software de supervisión como Prometheus.
API afectadas
System.Net.Http.SocketsHttpHandler.Send(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken)
System.Net.Http.SocketsHttpHandler.SendAsync(System.Net.Http.HttpRequestMessage,System.Threading.CancellationToken)
- System.Net.Http.HttpClientHandler.Send(HttpRequestMessage, CancellationToken)
- System.Net.Http.HttpClientHandler.SendAsync(HttpRequestMessage, CancellationToken)