private void WriteSamples(IEnumerable<QuickPulseDataSample> samples, string instrumentationKey, Stream stream)
{
var monitoringPoints = new List<MonitoringDataPoint>();
foreach (var sample in samples)
{
var metricPoints = new List<MetricPoint>
{
new MetricPoint
{
Name = @"\ApplicationInsights\Requests/Sec",
Value = Round(sample.AIRequestsPerSecond),
Weight = 1
},
new MetricPoint
{
Name = @"\ApplicationInsights\Request Duration",
Value = Round(sample.AIRequestDurationAveInMs),
Weight = sample.AIRequests
},
new MetricPoint
{
Name = @"\ApplicationInsights\Requests Failed/Sec",
Value = Round(sample.AIRequestsFailedPerSecond),
Weight = 1
},
new MetricPoint
{
Name = @"\ApplicationInsights\Requests Succeeded/Sec",
Value = Round(sample.AIRequestsSucceededPerSecond),
Weight = 1
},
new MetricPoint
{
Name = @"\ApplicationInsights\Dependency Calls/Sec",
Value = Round(sample.AIDependencyCallsPerSecond),
Weight = 1
},
new MetricPoint
{
Name = @"\ApplicationInsights\Dependency Call Duration",
Value = Round(sample.AIDependencyCallDurationAveInMs),
Weight = sample.AIDependencyCalls
},
new MetricPoint
{
Name = @"\ApplicationInsights\Dependency Calls Failed/Sec",
Value = Round(sample.AIDependencyCallsFailedPerSecond),
Weight = 1
},
new MetricPoint
{
Name = @"\ApplicationInsights\Dependency Calls Succeeded/Sec",
Value = Round(sample.AIDependencyCallsSucceededPerSecond),
Weight = 1
},
new MetricPoint
{
Name = @"\ApplicationInsights\Exceptions/Sec",
Value = Round(sample.AIExceptionsPerSecond),
Weight = 1
}
};
metricPoints.AddRange(sample.PerfCountersLookup.Select(counter => new MetricPoint { Name = counter.Key, Value = Round(counter.Value), Weight = 1 }));
ITelemetryDocument[] documents = sample.TelemetryDocuments.ToArray();
Array.Reverse(documents);
var dataPoint = new MonitoringDataPoint
{
Version = this.version,
InvariantVersion = MonitoringDataPoint.CurrentInvariantVersion,
InstrumentationKey = instrumentationKey,
Instance = this.instanceName,
StreamId = this.streamId,
MachineName = this.machineName,
Timestamp = sample.EndTimestamp.UtcDateTime,
IsWebApp = this.isWebApp,
Metrics = metricPoints.ToArray(),
Documents = documents
};
monitoringPoints.Add(dataPoint);
}
this.serializerDataPointArray.WriteObject(stream, monitoringPoints.ToArray());
}