我开始使用 Munin 来监控生产中的 Nginx 服务器。我特别感兴趣的一件事是绘制错误率——代码在 50x 范围内的 HTTP 响应。我想知道:
- 是否有现有的插件可以做到这一点?
- 或者,编写我自己的插件的最佳方法是什么。访问日志解析?
答案1
答案2
我不知道有任何现成的 OSS 解决方案。我个人编写了这种插件,但不能分享代码。它分为两个阶段:
- 日志解析器用于收集最新统计数据(如
tail -f
)。由于您可以定义 Nginx 日志格式,因此您可以自由记录所需的值,例如状态代码、上游请求时间等。 - Munin 插件用于向 Munin 报告统计数据。
您必须在这两个部分之间共享状态。有几种选择:内存中(我的日志解析器实现是事件驱动的守护进程,将所有统计信息存储在内存中);MongoDB;Redis;传统的 MySQL;共享内存;等等。
答案3
所以此链接是 munin 存储库中的 nginx 插件。找不到任何明显可以做你想做的事情的东西,或者在 (非常简短的) 搜索后在网上找不到任何东西。
我写了几个 munin 插件,它们并不难。你应该能够编写一个来实现你想要的。我只需计算当前日志中 50x 错误的数量,并将其作为 DERIVE 类型返回,最小值为 0。这样,你就可以返回一个值,并让 rrdtool 计算出它是否增加了。注意 - 如果在一天结束时你有 130 个 50x 错误,并且日志被旋转并且你立即得到 131 个错误,这将是一个问题,图表会认为这是一个 1 的值。
另一种选择是根据日志文件名自行跟踪计数并返回实际增加的数量,并在日志轮换时重置它。