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);
        }
コード例 #4
0
        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);
        }
コード例 #6
0
        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);
        }