Rapport des métriques server.port
HttpClient sans condition
Lorsque les métriques HttpClient ont été ajoutées dans .NET 8, server.port
elles ont été introduites en tant qu’attribut Conditionally Required
conformément à l’état de la norme à ce moment-là. Étant requis de manière conditionnelle, le port était signalé uniquement s’il ne correspondait pas au port par défaut du protocole correspondant (80 pour HTTP, 443 pour HTTPS). Toutefois, le niveau d’exigence standard de l’attribut a depuis été modifié en Required
.
Pour maintenir la conformité avec la norme Open Telemetry tout en gardant les comportements de l’instrument cohérents les uns avec les autres, les instruments http.client.request.duration
, http.client.connection.duration
et http.client.open_connections
ont été modifiés pour signaler inconditionnellement l’attribut server.port
.
Cette modification peut interrompre les requêtes existantes dans les logiciels de surveillance comme Prometheus.
Version introduite
.NET 9 Préversion 7
Comportement précédent
http.client.request.duration
, http.client.connection.duration
et http.client.open_connections
signalé l’attribut server.port
uniquement s’il ne correspond pas au port par défaut du protocole correspondant (80 pour HTTP, 443 pour HTTPS).
Nouveau comportement
L’attribut server.port
est désormais signalé inconditionnellement par les instruments http.client.request.duration
, http.client.connection.duration
et http.client.open_connections
.
Type de changement cassant
Ce changement est un changement de comportement.
Raison du changement
La modification maintient la conformité avec la spécification Open Telemetry tout en gardant HttpClient
les instruments cohérents les uns avec les autres.
Action recommandée
Aucune action n’est nécessaire si vous ne vous fiez pas aux métriques HttpClient. Si vous utilisez les instruments ou http.client.connection.duration
http.client.open_connections
les http.client.request.duration
instruments, cette modification peut interrompre les requêtes existantes dans le logiciel de surveillance comme Prometheus.
API affectées
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)