Skip to content

Commit 562b8d4

Browse files
committed
first drfat
1 parent 66efcf9 commit 562b8d4

File tree

13 files changed

+430
-28
lines changed

13 files changed

+430
-28
lines changed

Microsoft.Azure.Cosmos/src/DocumentClient.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -958,6 +958,7 @@ internal virtual void Initialize(Uri serviceEndpoint,
958958
if (this.cosmosClientTelemetryOptions.IsClientMetricsEnabled)
959959
{
960960
CosmosOperationMeter.Initialize();
961+
CosmosNetworkMeter.Initialize();
961962

962963
CosmosOperationMeter.AddInstanceCount(this.ServiceEndpoint);
963964
}

Microsoft.Azure.Cosmos/src/Resource/ClientContextCore.cs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -533,17 +533,23 @@ private async Task<TResult> RunWithDiagnosticsHelperAsync<TResult>(
533533
&& (!this.ClientOptions.CosmosClientTelemetryOptions.DisableDistributedTracing || this.ClientOptions.CosmosClientTelemetryOptions.IsClientMetricsEnabled))
534534
{
535535
// Extracts and records telemetry data from the result of the operation.
536-
OpenTelemetryAttributes response = openTelemetry?.Item2(result);
536+
OpenTelemetryAttributes otelAttributes = openTelemetry?.Item2(result);
537537

538538
// Records the telemetry attributes for Distributed Tracing (if enabled)
539-
recorder.Record(response);
539+
recorder.Record(otelAttributes);
540540

541541
// Records metrics such as request units, latency, and item count for the operation.
542542
CosmosOperationMeter.RecordTelemetry(getOperationName: getOperationName,
543543
accountName: this.client.Endpoint,
544544
containerName: containerName,
545545
databaseName: databaseName,
546-
attributes: response);
546+
attributes: otelAttributes);
547+
548+
CosmosNetworkMeter.RecordTelemetry(getOperationName: getOperationName,
549+
accountName: this.client.Endpoint,
550+
containerName: containerName,
551+
databaseName: databaseName,
552+
attributes: otelAttributes);
547553
}
548554
return result;
549555
}
@@ -584,6 +590,12 @@ private async Task<TResult> RunWithDiagnosticsHelperAsync<TResult>(
584590
containerName: containerName,
585591
databaseName: databaseName,
586592
ex: cosmosException);
593+
594+
CosmosNetworkMeter.RecordTelemetry(getOperationName: getOperationName,
595+
accountName: this.client.Endpoint,
596+
containerName: containerName,
597+
databaseName: databaseName,
598+
ex: cosmosException);
587599
}
588600

589601
throw;

Microsoft.Azure.Cosmos/src/Telemetry/OpenTelemetry/CosmosDbClientMetrics.cs

Lines changed: 115 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace Microsoft.Azure.Cosmos
1212
public sealed class CosmosDbClientMetrics
1313
{
1414
/// <summary>
15-
/// OperationMetrics
15+
/// Operation Metrics
1616
/// </summary>
1717
public static class OperationMetrics
1818
{
@@ -101,6 +101,120 @@ public static class Description
101101
}
102102
}
103103

104+
/// <summary>
105+
/// Network Metrics
106+
/// </summary>
107+
public static class NetworkMetrics
108+
{
109+
/// <summary>
110+
/// the name of the operation meter
111+
/// </summary>
112+
public const string MeterName = "Azure.Cosmos.Client.Request";
113+
114+
/// <summary>
115+
/// Version of the operation meter
116+
/// </summary>
117+
public const string Version = "1.0.0";
118+
119+
/// <summary>
120+
/// Metric Names
121+
/// </summary>
122+
public static class Name
123+
{
124+
/// <summary>
125+
/// Network Call Latency
126+
/// </summary>
127+
public const string Latency = "db.client.cosmosdb.request.duration";
128+
129+
/// <summary>
130+
/// Request Payload Size
131+
/// </summary>
132+
public const string RequestBodySize = "db.client.cosmosdb.request.body.size";
133+
134+
/// <summary>
135+
/// Request Payload Size
136+
/// </summary>
137+
public const string ResponseBodySize = "db.client.cosmosdb.response.body.size";
138+
139+
/// <summary>
140+
/// Channel Aquisition Latency
141+
/// </summary>
142+
public const string ChannelAquisitionLatency = "db.client.cosmosdb.request.channel_aquisition.duration";
143+
144+
/// <summary>
145+
/// Backend Server Latency
146+
/// </summary>
147+
public const string BackendLatency = "db.server.cosmosdb.request.duration";
148+
149+
/// <summary>
150+
/// Transit Time Latency
151+
/// </summary>
152+
public const string TransitTimeLatency = "db.client.cosmosdb.request.transit.duration";
153+
154+
/// <summary>
155+
/// Received Time Latency
156+
/// </summary>
157+
public const string ReceivedTimeLatency = "db.client.cosmosdb.request.received.duration";
158+
}
159+
160+
/// <summary>
161+
/// Unit for metrics
162+
/// </summary>
163+
public static class Unit
164+
{
165+
/// <summary>
166+
/// Unit representing bytes
167+
/// </summary>
168+
public const string Bytes = "bytes";
169+
170+
/// <summary>
171+
/// Unit representing time in seconds
172+
/// </summary>
173+
public const string Sec = "s";
174+
}
175+
176+
/// <summary>
177+
/// Provides descriptions for metrics.
178+
/// </summary>
179+
public static class Description
180+
{
181+
/// <summary>
182+
/// Network Call Latency
183+
/// </summary>
184+
public const string Latency = "Duration of client requests.";
185+
186+
/// <summary>
187+
/// Request Payload Size
188+
/// </summary>
189+
public const string RequestBodySize = "Size of client request body.";
190+
191+
/// <summary>
192+
/// Request Payload Size
193+
/// </summary>
194+
public const string ResponseBodySize = "Size of client response body.";
195+
196+
/// <summary>
197+
/// Channel Aquisition Latency
198+
/// </summary>
199+
public const string ChannelAquisitionLatency = "The duration of the successfully established outbound TCP connections. i.e. Channel Aquisition Time (for direct mode).";
200+
201+
/// <summary>
202+
/// Backend Server Latency
203+
/// </summary>
204+
public const string BackendLatency = "Backend Latency (for direct mode).";
205+
206+
/// <summary>
207+
/// Transit Time Latency
208+
/// </summary>
209+
public const string TransitTimeLatency = "Time spent on the wire (for direct mode).";
210+
211+
/// <summary>
212+
/// Received Time Latency
213+
/// </summary>
214+
public const string ReceivedTimeLatency = "Time spent on 'Received' stage (for direct mode).";
215+
}
216+
}
217+
104218
/// <summary>
105219
/// Buckets
106220
/// </summary>

0 commit comments

Comments
 (0)