public void CollectResponseTelemetry(IHttpRequestInformation requestInformation, IHttpResponseInformation responseInformation, IHttpRequestTelemetry requestTelemetry) { long totalRequests; long totalData; long minResponseSizeEncountered; long maxResponseSizeEncountered; // Capture and update the neweste metrics based on this request lock (_syncObj) { ++_totalRequests; totalRequests = _totalRequests; _totalData += responseInformation.ResponseBodySizeInBytes; totalData = _totalData; _maxResponseSizeEncountered = Math.Max(_maxResponseSizeEncountered, responseInformation.ResponseBodySizeInBytes); maxResponseSizeEncountered = _maxResponseSizeEncountered; _minResponseSizeEncountered = Math.Min(_minResponseSizeEncountered, responseInformation.ResponseBodySizeInBytes); minResponseSizeEncountered = _minResponseSizeEncountered; } AddTotalRequestsTelemetry(totalRequests, requestTelemetry); AddCurrentRequestResponseSizeTelemetry(responseInformation.ResponseBodySizeInBytes, requestTelemetry); AddMaxEncounteredTelemetry(maxResponseSizeEncountered, requestTelemetry); AddMinEncounteredTelemetry(minResponseSizeEncountered, requestTelemetry); AddAverageResponseSizeTelemetry(totalData, totalRequests, requestTelemetry); }
private static void AddTotalRequestsTelemetry(long numberOfRequests, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Total Requests", Description = "Total number of requests the server has processed", Value = numberOfRequests.ToString() }; requestTelemetry.AddDataPoint(dataPoint); }
public void CollectResponseTelemetry(IHttpRequestInformation requestInformation, IHttpResponseInformation responseInformation, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Total Processing Time", Description = "Total time server spent processing the http request, in milliseconds", Unit = "ms", Value = (DateTime.Now - requestInformation.RequestStartTime).Milliseconds.ToString() }; requestTelemetry.AddDataPoint(dataPoint); }
public void ExecuteCollectors(IHttpRequestInformation requestInformation, IHttpRequestTelemetry telemetry) { if (_telemetryCollectorsExecuted) { return; } foreach (var collector in _collectors) { collector.CollectRequestTelemetry(requestInformation, telemetry); } _telemetryCollectorsExecuted = true; }
public void CollectResponseTelemetry(IHttpRequestInformation requestInformation, IHttpResponseInformation responseInformation, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Telemetry Processing Overhead Time", Description = "Total time the agent spent processing telemetry, in milliseconds", Unit = "ms", Value = requestInformation.TelemetryProcessingOverheadTime.TotalMilliseconds.ToString(CultureInfo .InvariantCulture) }; requestTelemetry.AddDataPoint(dataPoint); }
public string ComposeTelemetryHtml(IHttpRequestTelemetry telemetry) { var rowData = from dataPoint in telemetry.TelemetryDataPoints select new XElement("tr", new XElement("td", dataPoint.MetricName), new XElement("td", dataPoint.Description), new XElement("td", dataPoint.Value), new XElement("td", dataPoint.Unit)); var rowDataText = new StringBuilder(); foreach (var row in rowData) { rowDataText.Append(row); } return(string.Format(_htmlTemplate, rowDataText)); }
private static void AddMinEncounteredTelemetry(long minResponseSizeEncountered, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Minimum Response Body Size", Description = "Min size of response body out of all requests encountered so far", Unit = "bytes", Value = minResponseSizeEncountered.ToString(CultureInfo.InvariantCulture) }; requestTelemetry.AddDataPoint(dataPoint); }
private static void AddMaxEncounteredTelemetry(long maxResponseSizeEncountered, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Maximum Response Body Size", Description = "Max size of response body out of all requests encountered so far", Unit = "bytes", Value = maxResponseSizeEncountered.ToString() }; requestTelemetry.AddDataPoint(dataPoint); }
private static void AddCurrentRequestResponseSizeTelemetry(long responseInformationResponseBodySizeInBytes, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Response Body Size", Description = "Size of response body for this request", Unit = "bytes", Value = responseInformationResponseBodySizeInBytes.ToString() }; requestTelemetry.AddDataPoint(dataPoint); }
private static void AddAverageResponseSizeTelemetry(long totalData, long totalRequests, IHttpRequestTelemetry requestTelemetry) { var dataPoint = new HttpRequestTelemetryDataPoint { MetricName = "Average Response Body Size", Description = "Average size of response body for all requests so far", Unit = "bytes", Value = Math.Floor((double)totalData / totalRequests).ToString(CultureInfo.InvariantCulture) }; requestTelemetry.AddDataPoint(dataPoint); }