使用telegraf监控nginx(500)

问题描述 投票:0回答:2

我想了解我的nginx实例返回的内容以及它要求处理请求的人。我的查询的哪一部分由rails处理,哪些部分由nginx直接处理,哪些部分将转向nginx_status等。

同样,我也想了解一些事情,例如我返回的HTTP结果代码的数量。如果在500年代达到峰值,我想知道。

telegraf nginx plugin提供了关于nginx的一些非常基本的统计数据,但没有更多。我已经看到一些模糊复杂的结果代码解决方案,主要涉及设置日志监控基础设施。这些数据看起来如此根本,我觉得我必须遗漏一些东西。

我没有看到任何能帮助我理解实际处理查询的人(即哪个处理程序)。

所有这一切都很有趣,因为(1)处理程序调度中的长期增长可以比处理机器上的简单负载更清楚地指示缩放问题,以及(2)任何事物的峰值都可以警告问题。

有什么指针吗?

nginx nginx-reverse-proxy telegraf telegraf-inputs-plugin nginx-status
2个回答
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"

0
投票

如果它是实际的我想写我自己的配置。它基于tail telegraf插件。

  1. 将特殊日志格式添加到http部分
    log_format codes_combined 'code=$status ts=$time_iso8601';
  1. 在服务器部分使用此格式
    access_log /var/log/nginx/codes.log codes_combined;
  1. 编辑/etc/telegraf/telegraf.conf:
[[inputs.tail]]
    files = ["/var/log/nginx/codes.log"]
    data_format = "logfmt"
  1. 重新启动后,ngrex和telegrap数据应该在Graphana中可用。我配置了一个新的图形enter image description here
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)
  1. 别忘了检查/etc/logrotate.d/nginx。权限应该是这样的:
create 0644 www-data adm
© www.soinside.com 2019 - 2024. All rights reserved.