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);
        }
Beispiel #3
0
                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();
                }