查看原文
其他

Nginx如何监控各server的流量

运维研习社 运维研习社 2022-11-05

nginx中,ngx_http_status_module(在1.13之前)或ngx_http_api_module中提供了丰富的nginx状态信息,可以作为nginx监控数据,可以更全面的监控nginx,但这两个模块都是收费版本的


而在开源版本中,就只能通过stub_status模块来查看nginx状态信息,如图:

这信息太少了,作为做常用的web中间件,这点信息显然不够


今天介绍一个第三方模块——ninx-module-vts,仓库地址:https://github.com/vozlt/nginx-module-vts


该模块是一个nginx的监控模块,能够提供json、html、prometheus格式的数据输出,虽然已经两年没有更新维护过了,但我在nginx1.16仍能编译成功


首先clone源码


接着在nginx源码包中添加动态模块


接着安装模块


安装完成,在objs目录下生成了库文件


将库文件复制到nginx的modules目录下,在nginx配置文件中通过load_module加载该模块


模块添加完之后,就可以享受商业版status模块(api模块)的待遇了,先来看下最基本的状态信息

上图就是html格式的状态信息,动态显示,每秒刷新一次,只需要如下配置

在http模块中添加vhost_traffic_status_zone

接着在vhost中添加status的location


如果是zabix监控采集数据,可以用json格式


如果是prometheus,可以直接用prometheus的格式输出


除了可以提供各种格式的数据输出,它最香的就是可以监控各vhost的流量


通常一个nginx的web服务中,会包含多个server,但是通常监控的流量都是服务器总的流量,目前我只能通过分析日志来进行访问量统计,找到流量大的server(如果有其他方式,请留言指教)


那么有这个nginx监控模块之后,各个server的流量,一览无余

复制一份刚才的配置,添加一个server


访问一下之后,查看状态页面

可以看到server zones统计中,每个server的信息分别详细展示


除了server分别统计外,各个upstream也可以分别统计,这样我们可以很方便的查看nginx转发到upstream的流量,结合监控可以实现动态调整后端权重或者流量


不得不说,这才是我要的nginx监控,如果也是你想要的,点个在看吧!



扫描二维码关注我们吧



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存