写点什么

Nginx 如何监控各 server 的流量

发布于: 2021 年 02 月 21 日

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



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


今天介绍一个第三方模块——nginx-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 的流量,结合监控可以实现动态调整后端权重或者流量


发布于: 2021 年 02 月 21 日阅读数: 19
用户头像

有一点想法的电脑维修工 2020.07.14 加入

一位有些想法的技术爱好者

评论

发布
暂无评论
Nginx如何监控各server的流量