我想了解我的nginx实例返回的内容以及它要求处理请求的人。我的查询的哪一部分由rails处理,哪些部分由nginx直接处理,哪些部分由nginx_status处理,等等。
同样,我也想了解我返回的HTTP结果代码的数量。如果在500年代达到顶峰,我想知道。
telegraf nginx plugin提供了一些关于nginx的非常基本的统计数据但不多了。我已经看到了一些模糊复杂的结果代码解决方案,主要涉及设置日志监控基础架构。这些数据看起来如此根本,我觉得我必须遗漏一些东西。
我没有看到任何可以帮助我理解 实际上正在处理查询的内容(即哪个处理程序)。
所有这一切都很有趣,因为(1)处理程序调度的长期增长可以比处理机上的简单负载更清晰地指示扩展问题,(2)任何事物中的峰值都可以警告问题。
任何指针?
答案 0 :(得分:0)
您可以让telegraf收集您的nginx访问日志。然后,您可以分析多少个请求具有哪个HTTP状态代码(1xx,2xx等)。
将此添加到您的/etc/telegraf/telegraf.conf
中(并确保telegraf具有对该日志文件的访问权限,如果没有,它不会告诉您):
[[inputs.logparser]]
files = ["/var/log/nginx/access.log"]
from_beginning = true
name_override = "nginx_access_log"
[inputs.logparser.grok]
patterns = ["%{COMBINED_LOG_FORMAT}"]
measurement = "nginx_access_log"
答案 1 :(得分:0)
如果是实际的话,我想编写自己的配置。它基于尾部Telegraf插件。
log_format codes_combined 'code=$status ts=$time_iso8601';
access_log /var/log/nginx/codes.log codes_combined;
[[inputs.tail]]
files = ["/var/log/nginx/codes.log"]
data_format = "logfmt"
SELECT count("code") as code_2xx FROM "tail" WHERE $timeFilter AND code >= 200 AND code < 300 AND code <> 204 GROUP BY time($__interval)
SELECT count("code") as code_3xx FROM "tail" WHERE $timeFilter AND code >= 300 AND code < 400 GROUP BY time($__interval)
SELECT count("code") as code_4xx FROM "tail" WHERE $timeFilter AND code >= 400 AND code < 500 GROUP BY time($__interval)
SELECT count("code") as code_5xx FROM "tail" WHERE $timeFilter AND code >= 500 GROUP BY time($__interval)
SELECT count("code") as code_204 FROM "tail" WHERE $timeFilter AND code = 204 GROUP BY time($__interval)
create 0644 www-data adm