### 运维方案之Nginx > 1.我们已经介绍完毕了 `Linux` 运维、`Mysql` 运维、`Redis` 运维,监控某个程序运行的状态整体流程大家都很熟练了,接下来继续介绍 `Nginx` 监控方案。 #### 前言 > 1.nginx监控的原理主要是编译niginx的时候增加 nginx-module-vts 模块,让他提供底层数据。 > 2.其次需要安装nginx-vts-expoter 数据收集器,存储数据,等待被 prometheus 获取,最终在 grafana 展示。 > 3.但是默认情况下,编译的nginx是没有这个模块的,因此在nginx新安装的时候就应该编译进去,如果是已有nginx,要么重新编译、要么使用docker方式进行重新配置替换原有nginx。 > 4.由于我的nginx之前编译的时候没有编译 nginx-module-vts 模块,为了不影响已上线的项目,我们通过docker进行从头部署。 > ### 正式开始部署nginx运维监控 > 1.以下操作涉及到的ip 172.19.130.185 是我ip ,实际操作注意替换为自己服务器的ip。 > 2.nginx部分使用我本人进行编排的dockerfile生成、并且已经配置好了nginx运行状态数据输出地址。 ```code # step1,拉取 nginx_vts 镜像,该 nginx 版本已经集成了 https://codeload.github.com/vozlt/nginx-module-vts/tar.gz/v0.1.18,并且对容器进行了配置,直接在ip:80/status提供状态数据。 docker pull zhangqifeng/nginx_vts:v1.4 # step2, 启动nginx_vts 镜像,镜像中nginx 的配置(/usr/local/nginx/conf/)、日志目录(/usr/local/nginx/logs/) 站点根目录:/usr/local/nginx/html/ 数据卷映射暂时忽略,您可以通过 -v 自行映射 docker container run --name nginx_vts -d -p 172.19.130.185:9506:80 zhangqifeng/nginx_vts:v1.4 # step3, 此时你可以验证该nginx是否正常运行,只要有数据就是启动ok 访问地址 http://172.19.130.185:9506/status 、http://172.19.130.185:9506/status/format/json # step4, 拉取 nginx-vts-expoter 镜像,该镜像负责收集上一个镜像提供的运行状态数据,等待prometheus获取 docker pull sophos/nginx-vts-exporter:latest # 该镜像的github地址:https://github.com/hnlq715/nginx-vts-exporter # step5, 启动 nginx-vts-exporter docker run -p 172.19.130.185:9913:9913 -d --name nginx-vts-exporter -ti --rm --env NGINX_STATUS="http://172.19.130.185:9506/status/format/json" sophos/nginx-vts-exporter # step6, 配置prometheus文件 - job_name: "Aliyun_Nginx" static_configs: - targets: ["172.19.130.185:9913"] labels: instance: "Nginx_001" # step7, nginx-vts-expoter 采集 docker 容器中启动的 nginx:9506 端口数据,需要穿越防火墙 # 以设置9506端口为例,9913端口仿照设置即可。 firewall-cmd --zone=public --add-port=9506/tcp --permanent firewall-cmd --complete-reload # step8, 在 grafana 中导入nginx监控模板ID,2494 // 相关模板地址:https://grafana.com/dashboards/2949 ``` #### 最终效果图 ![点击查看](https://www.ginskeleton.com/images/nginx_vts.png)