使用Azure Function应用衡量请求处理时间

时间:2019-05-13 13:56:52

标签: c# asp.net-core .net-core azure-functions asp.net-core-webapi

我需要测量在Azure Function App中处理每个请求所花费的时间,如下所示,通过ASP.NET(非ASP.NET CORE)

public class RequestLogHandler : DelegatingHandler
    {
        private readonly ILogger _logger;

        public RequestLogHandler(ILogger logger)
        {
            _logger = logger;
        }

        protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            string path = request.GetOwinContext().Request.Path.ToString();
            string method = request.Method.Method;

            var sw = Stopwatch.StartNew();

            var response = await base.SendAsync(request, cancellationToken);

            sw.Stop();

            int statusCode = (int)response.StatusCode;

            _logger.HttpRequest(path, method, sw.ElapsedMilliseconds.ToString(), statusCode.ToString());

            return response;
        }
    }

设置

 public class WebServer : IWebServer
    {
        private readonly ILogger _logger;
        private readonly HttpConfiguration _httpConfiguration;

        private IDisposable _server;

        public WebServer(ILogger logger, HttpConfiguration httpConfiguration)
        {
            _logger = logger;
            _httpConfiguration = httpConfiguration;
        }

        public void Start(string url)
        {
            _server = WebApp.Start(url, (appBuilder) =>
            {
                _httpConfiguration.MapHttpAttributeRoutes();
                _httpConfiguration.MessageHandlers.Add(new RequestLogHandler(_logger));

                appBuilder.UseWebApi(_httpConfiguration);
            });
        }

        public void Dispose()
        {
            if(_server != null)
            {
                _server.Dispose();
                _server = null;
            }
        }
    }

1 个答案:

答案 0 :(得分:1)

您可以使用Application Insights来获取请求持续时间,在应用程序见解页面中,您可以获取请求持续时间的详细信息。

enter image description here

这是Duration description:此字段是必填字段,因为请求遥测表示开始和结束的操作。您还可以将Microsoft.ApplicationInsights NuGet包用于send custom telemetry data,以获取包括持续时间在内的Application Insights。