public ClientConfigurationTraceDatum(CosmosClientContext cosmosClientContext, DateTime startTime) { this.ClientCreatedDateTimeUtc = startTime; this.UserAgentContainer = cosmosClientContext.DocumentClient.ConnectionPolicy.UserAgentContainer; this.GatewayConnectionConfig = new GatewayConnectionConfig(cosmosClientContext.ClientOptions.GatewayModeMaxConnectionLimit, cosmosClientContext.ClientOptions.RequestTimeout, cosmosClientContext.ClientOptions.WebProxy, cosmosClientContext.ClientOptions.HttpClientFactory); this.RntbdConnectionConfig = cosmosClientContext.DocumentClient.RecordTcpSettings(this); this.OtherConnectionConfig = new OtherConnectionConfig(cosmosClientContext.ClientOptions.LimitToEndpoint, cosmosClientContext.ClientOptions.AllowBulkExecution); this.ConsistencyConfig = new ConsistencyConfig(cosmosClientContext.ClientOptions.ConsistencyLevel, cosmosClientContext.ClientOptions.ApplicationPreferredRegions, cosmosClientContext.ClientOptions.ApplicationRegion); this.cachedNumberOfClientCreated = CosmosClient.numberOfClientsCreated; this.cachedNumberOfActiveClient = CosmosClient.NumberOfActiveClients; this.cachedUserAgentString = this.UserAgentContainer.UserAgent; this.cachedMachineId = VmMetadataApiHandler.GetMachineId(); this.cachedSerializedJson = this.GetSerializedDatum(); this.ProcessorCount = Environment.ProcessorCount; this.ConnectionMode = cosmosClientContext.ClientOptions.ConnectionMode; this.cachedVMRegion = VmMetadataApiHandler.GetMachineRegion(); }
/// <summary> /// System Level and Client level attributes /// </summary> /// <param name="operationName"></param> /// <param name="clientContext"></param> public void Record(string operationName, CosmosClientContext clientContext) { // Other information this.scope.AddAttribute(OpenTelemetryAttributeKeys.DbSystemName, OpenTelemetryCoreRecorder.CosmosDb); this.scope.AddAttribute(OpenTelemetryAttributeKeys.DbOperation, operationName); this.scope.AddAttribute(OpenTelemetryAttributeKeys.MachineId, VmMetadataApiHandler.GetMachineId()); string netPeerName = clientContext.DocumentClient?.accountServiceConfiguration?.AccountProperties?.AccountNameWithCloudInformation; this.scope.AddAttribute(OpenTelemetryAttributeKeys.NetPeerName, netPeerName); // Client Information this.scope.AddAttribute(OpenTelemetryAttributeKeys.ClientId, clientContext.Client.Id); this.scope.AddAttribute(OpenTelemetryAttributeKeys.UserAgent, clientContext.UserAgent); this.scope.AddAttribute(OpenTelemetryAttributeKeys.ConnectionMode, clientContext.ClientOptions.ConnectionMode); }
public void Visit(ClientConfigurationTraceDatum clientConfigurationTraceDatum) { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendLine("Client Configuration"); stringBuilder.AppendLine($"Client Created Time: {clientConfigurationTraceDatum.ClientCreatedDateTimeUtc.ToString("o", CultureInfo.InvariantCulture)}"); stringBuilder.AppendLine($"Machine Id: {VmMetadataApiHandler.GetMachineId()}"); stringBuilder.AppendLine($"Number Of Clients Created: {CosmosClient.numberOfClientsCreated}"); stringBuilder.AppendLine($"Number Of Active Clients: {CosmosClient.NumberOfActiveClients}"); stringBuilder.AppendLine($"Connection Mode: {clientConfigurationTraceDatum.ConnectionMode}"); stringBuilder.AppendLine($"User Agent: {clientConfigurationTraceDatum.UserAgentContainer.UserAgent}"); stringBuilder.AppendLine("Connection Config:"); stringBuilder.AppendLine($"{space}'gw': {clientConfigurationTraceDatum.GatewayConnectionConfig}"); stringBuilder.AppendLine($"{space}'rntbd': {clientConfigurationTraceDatum.RntbdConnectionConfig}"); stringBuilder.AppendLine($"{space}'other': {clientConfigurationTraceDatum.OtherConnectionConfig}"); stringBuilder.AppendLine($"Consistency Config: {clientConfigurationTraceDatum.ConsistencyConfig}"); this.toStringValue = stringBuilder.ToString(); }