private void WriteSamples(IEnumerable <QuickPulseDataSample> samples, string instrumentationKey, Stream stream, CollectionConfigurationError[] errors) { var monitoringPoints = new List <MonitoringDataPoint>(); foreach (var sample in samples) { var metricPoints = new List <MetricPoint>(); metricPoints.AddRange(CreateDefaultMetrics(sample)); metricPoints.AddRange( sample.PerfCountersLookup.Select(counter => new MetricPoint { Name = counter.Key, Value = Round(counter.Value), Weight = 1, })); metricPoints.AddRange(CreateCalculatedMetrics(sample)); ITelemetryDocument[] documents = sample.TelemetryDocuments.ToArray(); Array.Reverse(documents); ProcessCpuData[] topCpuProcesses = sample.TopCpuData.Select(p => new ProcessCpuData() { ProcessName = p.Item1, CpuPercentage = p.Item2, }).ToArray(); var dataPoint = new MonitoringDataPoint { Version = this.version, InvariantVersion = MonitoringDataPoint.CurrentInvariantVersion, InstrumentationKey = instrumentationKey, Instance = this.instanceName, RoleName = this.roleName, StreamId = this.streamId, MachineName = this.machineName, Timestamp = sample.EndTimestamp.UtcDateTime, IsWebApp = this.isWebApp, PerformanceCollectionSupported = PerformanceCounterUtility.IsPerfCounterSupported(), ProcessorCount = this.processorCount, Metrics = metricPoints.ToArray(), Documents = documents, GlobalDocumentQuotaReached = sample.GlobalDocumentQuotaReached, TopCpuProcesses = topCpuProcesses.Length > 0 ? topCpuProcesses : null, TopCpuDataAccessDenied = sample.TopCpuDataAccessDenied, CollectionConfigurationErrors = errors, }; monitoringPoints.Add(dataPoint); } this.serializerDataPointArray.WriteObject(stream, monitoringPoints.ToArray()); }
private void WritePingData(DateTimeOffset timestamp, Stream stream) { var dataPoint = new MonitoringDataPoint { Version = this.version, InvariantVersion = MonitoringDataPoint.CurrentInvariantVersion, // InstrumentationKey = instrumentationKey, // ikey is currently set in query string parameter Instance = this.instanceName, StreamId = this.streamId, MachineName = this.machineName, Timestamp = timestamp.UtcDateTime, IsWebApp = this.isWebApp, PerformanceCollectionSupported = PerformanceCounterUtility.IsPerfCounterSupported(), ProcessorCount = this.processorCount, }; this.serializerDataPoint.WriteObject(stream, dataPoint); }