You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
3.0 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

### 运维方案之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,并且对容器进行了配置直接在ip80/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)