请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需要一步,快速开始

搜索
开启左侧

聊聊Nginx的监控

马上注册,分享更多源码,享用更多功能,让你轻松玩转云大陆。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.
关于nginx的介绍就不多谈了,这里主要聊下如何打造nginx集群的监控系统。
目前国内大多数互联网都是选择nginx构建web转发集群,那么如何构建nginx集群的监控系统?


2011年左右
当时并没有合适的开源工具,只能自写python脚本,一方面是通过nginx的status模块获取少量指标如处理请求数,连接数等等,另一方面是通过定期跑nginx日志生成监控数据,写入mysql进行存储,然后通过自研的监控系统展示相关监控指标。其中,指标的主要维度是域名。这个方案除了跑nginx日志消耗过多资源以及需要大量开发工作外,没啥大问题,就是有新的监控需求时很头疼,得改脚本。
2013年左右
这时候阿里的tengine开始发力,开发各种插件并在阿里内部推广使用,其中就包括了更为强大的status模块。只是tengine魔改了大量nginx的内部实现,导致大多数模块与nginx并不兼容。于是就有了这个项目hnlq715/status-nginx-module,完美支持nginx,并成功重构了当时上百台nginx,日请求量几十亿的的监控系统,此时能满足绝大多数监控需求。指标的主要维度仍然是域名。
2015年左右
这时候注意到了prometheus的出现,感叹于其强大,于是考虑基于prometheus实现nginx的监控。而此时,vozlt/nginx-module-vts已经使用很广,于是创建了这个项目hnlq715/nginx-vts-exporter,用于将vts的输出内容转化为prometheus的格式,便于prometheus抓取。基于grafana提供监控查询及UI展示,这时候算是步入真正的现代化监控系统,此时的指标维度已经细化到具体的URI。
2017年左右
然而上一个方案还是有个短板,那就是nginx-module-vts对响应时间的处理太过粗糙,只给了一个平均值,无法对P99,P90或是P50给出直观的数据。于是基于lua内嵌在nginx里跑监控指标,demo在这hnlq715/nginx-prometheus-metrics,这种方式可以直接用prometheus的histogram类型统计响应时间等指标,并在prometheus层聚合。此时,才算是真正的现代化监控系统。指标维度可以完全自定义,且更加多维化。


总结
基于prometheus聚合nginx的监控数据是非常好的选择。上述项目能够在一定程度上帮助实现,不用手写代码或是通过极少的lua代码实现一套现代化的nginx监控系统。当然,也可以聚合其他诸如redis、mysql、node等各类系统的监控数据到prometheus进行统一管理。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

  • 0 关注
  • 0 粉丝
  • 5 帖子
广告招商