我希望计算通过nginx进行的请求的平均处理时间。更具体地说,获得各种百分位会很棒。如果我可以通过HTTP方法(发布/获取等)获取这些信息,那就更好了。
我确实有很多不好的/不太好的解决方案:
但是必须有更好的方法来做到这一点。
答案 0 :(得分:1)
我还尝试获取有关Nginx性能的不同统计信息。有一个非免费 nginx-amplify-doc可以帮助您获得所需的东西。我不确定那里的定价政策是什么-我最终解析了访问日志,因为我不想为这种服务付费。
此工具中的nginx.http.request.time指标可以为您提供所需的确切信息。您可以在那里查看价格,也许可以免费获得小规模支持。
类型:仪表,秒。毫秒 说明:请求处理时间-从读取第一个字节到第二个字节之间的时间 客户端,并在发送完最后一个字节后编写日志条目。 来源:access.log(需要自定义日志格式) 变量:$ request_time
答案 1 :(得分:1)
我认为我找到了一个不错的(免费的)解决方案:nginx,nginx-statsd-module和statsd的组合。一般的想法是使用nginx-statsd模块将处理时间从nginx传输到statsd服务器(并从那里传输到您使用的任何数据收集机制)。
使用statsd模块(https://github.com/kinecosystem/nginx-statsd),可以将nginx配置为按每个HTTP方法,每个nginx位置发出处理时间:
rundId
由statsd打印的结果看起来像这样:
statsd_timing "your_product.$request_method.index_response_time" "$upstream_response_time";
使用该模块需要进行一些复杂的编译,但是确实可以。使用nginx 1.14.0进行了测试。