如何使用 munin 监控 nginx 的 HTTP 响应错误代码?

如何使用 munin 监控 nginx 的 HTTP 响应错误代码?

我开始使用 Munin 来监控生产中的 Nginx 服务器。我特别感兴趣的一件事是绘制错误率——代码在 50x 范围内的 HTTP 响应。我想知道:

  1. 是否有现有的插件可以做到这一点?
  2. 或者,编写我自己的插件的最佳方法是什么。访问日志解析?

答案1

嗯,这种动物根本不存在,所以我想象着

您可以在以下位置找到最新代码要旨。 享受。

答案2

我不知道有任何现成的 OSS 解决方案。我个人编写了这种插件,但不能分享代码。它分为两个阶段:

  1. 日志解析器用于收集最新统计数据(如tail -f)。由于您可以定义 Nginx 日志格式,因此您可以自由记录所需的值,例如状态代码、上游请求时间等。
  2. Munin 插件用于向 Munin 报告统计数据。

您必须在这两个部分之间共享状态。有几种选择:内存中(我的日志解析器实现是事件驱动的守护进程,将所有统计信息存储在内存中);MongoDB;Redis;传统的 MySQL;共享内存;等等。

答案3

所以此链接是 munin 存储库中的 nginx 插件。找不到任何明显可以做你想做的事情的东西,或者在 (非常简短的) 搜索后在网上找不到任何东西。

我写了几个 munin 插件,它们并不难。你应该能够编写一个来实现你想要的。我只需计算当前日志中 50x 错误的数量,并将其作为 DERIVE 类型返回,最小值为 0。这样,你就可以返回一个值,并让 rrdtool 计算出它是否增加了。注意 - 如果在一天结束时你有 130 个 50x 错误,并且日志被旋转并且你立即得到 131 个错误,这将是一个问题,图表会认为这是一个 1 的值。

另一种选择是根据日志文件名自行跟踪计数并返回实际增加的数量,并在日志轮换时重置它。

相关内容