-
nginx-module-vts:这是一个Nginx的监控模块,能够收集Nginx自身详细的虚拟主机流量状态信息,如请求次数、响应字节、响应时间等,并以JSON、HTML或Prometheus格式输出。
nginx-vts-exporter
依赖于这个模块。 -
nginx-vts-exporter:这是一个为Prometheus设计的数据抓取和中转工具。它从
nginx-module-vts
模块提供的状态数据接口(通常是JSON格式)抓取数据,将其转换为Prometheus可识别的metrics格式并暴露出来,方便Prometheus服务器抓取。
在实际应用中,这些模块和组件常常协同工作,以构建更稳定、可观测性更强的Nginx代理体系:
-
负载均衡与健康检查搭配:可以在使用
ngx_http_consistent_hash
进行负载均衡的同时,通过ngx_http_upstream_check_module
对上游服务器进行健康检查,确保流量只被分配到健康的服务器。 -
全面监控方案:要为Nginx搭建完整的监控体系,可以先在Nginx中编译
nginx-module-vts
模块以获取详细数据,然后部署nginx-vts-exporter
将数据提供给Prometheus,最后通过Grafana等可视化工具展示。
-
ngx_http_consistent_hash模块:这个模块在Nginx默认的负载均衡算法之外,提供了一致性哈希算法。它能确保在服务器增加或减少时,最大限度地减少密钥的重新映射,保持会话一致性,适合缓存服务器集群等场景。你可以根据客户端IP、请求URI等参数进行哈希映射。
-
ngx_http_upstream_check_module模块:此模块用于主动监测后端服务器的健康状态。它按照设定的间隔向后端服务器发送健康检查请求,并根据响应判断服务器状态(UP或DOWN),自动剔除故障节点。支持TCP、HTTP、MySQL等多种检查协议,并通常提供一个状态页(通过
check_status
指令)来查看后端服务器的健康状态。