阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

用Prometheus细化Nginx监控

598次阅读
没有评论

共计 4186 个字符,预计需要花费 11 分钟才能阅读完成。

国内用 Nginx 的比较多,Nginx 的监控比较老的方案可能是通过跑脚本定期收集 nginx 的 status 模块的数据,或者监控 nginx 的日志;后来阿里的 tengine 在国内开始流行,于是诞生了很多不错的 lua 模块; 但是这些监控方案在有新的监控需求的时候,可能就需要再修改脚本或者更改 nginx conf 配置,有时候不是特别的方便。用 Prometheus 进行 nginx 的监控可以自动的对相关 server_name 和 upstream 进行监控,你也可以自定义 Prometheus 的数据标签,实现对不同机房和不同项目的 nginx 进行监控。
监控 Nginx 主要用到以下三个模块:
nginx-module-vts:Nginx virtual host traffic status module,Nginx 的监控模块,能够提供 JSON 格式的数据产出。
nginx-vts-exporter:Simple server that scrapes Nginx vts stats and exports them via HTTP for Prometheus consumption。主要用于收集 Nginx 的监控数据,并给 Prometheus 提供监控接口,默认端口号 9913。
Prometheus:监控 Nginx-vts-exporter 提供的 Nginx 数据,并存储在时序数据库中,可以使用 PromQL 对时序数据进行查询和聚合。

一、nginx-module-vts 模块的编译
nginx_vts_exporter 依赖 nginx-module-vts 模块,安装此模块无需任何其他依赖。模块与 Nginx 的版本兼容性如下:

1.11.x (last tested: 1.11.10)
1.10.x (last tested: 1.10.3)
1.8.x (last tested: 1.8.0)
1.6.x (last tested: 1.6.3)
1.4.x (last tested: 1.4.7)
同时适用于 tengine,其他 nginx 早期版本未做验证。
安装步骤:
1. 下载模块
shell> git clone git://github.com/vozlt/nginx-module-vts.git

2. 编译配置
在 nginx 编译时添加 vts 模块
–add-module=/path/to/nginx-module-vts
下载官方的软件包并编译进 vts 模块,例如:

./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_sysguard_module  –add-module=nginx-module-vts

3. 安装:
make && make install

二、Nginx Conf 配置
更改 Nginx Conf 的配置,添加监控接口 /status/:

http {
vhost_traffic_status_zone;
    vhost_traffic_status_filter_by_host on;

server {

    …

    location /status {
        vhost_traffic_status_display;
        vhost_traffic_status_display_format html;
    }
}
}

配置建议:
1. 打开 vhost 过滤:
vhost_traffic_status_filter_by_host on;
开启此功能,在 Nginx 配置有多个 server_name 的情况下,会根据不同的 server_name 进行流量的统计,否则默认会把流量全部计算到第一个 server_name 上。
2. 在不想统计流量的 server 区域禁用 vhost_traffic_status,配置示例:
server {

vhost_traffic_status off;

}

假如 nginx 没有规范配置 server_name 或者无需进行监控的 server 上,那么建议在此 vhost 上禁用统计监控功能。否则会出现“127.0.0.1”,hostname 等的域名监控信息。

三、监控数据的查看
安装完 vts 模块后,可以通过 nginx status 接口进行监控数据的查看,比如:http://127.0.0.1/status:

用 Prometheus 细化 Nginx 监控

在页面的最下方可以指定监控页面刷新的时间间隔,点击 JSON,可以转为 JSON 格式输出。

用 Prometheus 细化 Nginx 监控

三、nginx-vts-exporter 的使用
exporter 会收集 nginx 性能指标的 JSON 格式数据,并汇总后暴露监控接口给 Prometheus。

它的安装使用很简单,开箱即用:
1. 下载当前最新版本的软件包:
nginx-vts-exporter-0.9.1.linux-amd64.tar.gz

可以到 Linux 公社资源站下载:

—————————————— 分割线 ——————————————

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2018 年资料 / 8 月 / 6 日 / 用 Prometheus 细化 Nginx 监控 /

下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

—————————————— 分割线 ——————————————

2. 解压后运行:
# nginx-vts-exporter-0.9.1.linux-amd64/nginx-vts-exporter -nginx.scrape_timeout 10 -nginx.scrape_uri http://127.0.0.1/status/format/json
推荐 exporter 和 nginx 安装在同一台机器上,如果不在同一台主机,把 scrape_uri 改为 nginx 主机的地址。
nginx_vts_exporter 的默认端口号:9913,对外暴露监控接口 http://xxx:9913/metrics.

四、Nginx 的监控数据类型

nginx-vts-exporter 的数据类型命名空间默认以“nginx”开头,主要有如下 9 个:

HELP 是对监控条目的解释,TYPE 的格式是:监控条目名称 +Prometheus 数据类型:

# HELP nginx_server_bytes request/response bytes
# TYPE nginx_server_bytes counter
# HELP nginx_server_cache cache counter
# TYPE nginx_server_cache counter
# HELP nginx_server_connections nginx connections
# TYPE nginx_server_connections gauge
# HELP nginx_server_requestMsec average of request processing times in milliseconds
# TYPE nginx_server_requestMsec gauge
# HELP nginx_server_requests requests counter,可以区分状态码
# TYPE nginx_server_requests counter
# HELP nginx_upstream_bytes request/response bytes
# TYPE nginx_upstream_bytes counter
# HELP nginx_upstream_requestMsec average of request processing times in milliseconds
# TYPE nginx_upstream_requestMsec gauge
# HELP nginx_upstream_requests requests counter,可以区分状态码
# TYPE nginx_upstream_requests counter
# HELP nginx_upstream_responseMsec average of only upstream/backend response processing times in milliseconds
# TYPE nginx_upstream_responseMsec gauge

五、Nginx 监控在 Prometheus 的数据汇总
常用监控汇总表达式:
DomainName 对应 nginx conf 里的 server_name,这里可以根据不同的 server_name 和 upstream 分别进行 qps、2xx/3xx/4xx/5xx 的状态码监控,另外也可以监控 nginx 每台后端 server 的 qps 和后端接口响应时间。

如果不需要区分 server_name,可以把表达式里的 $DomainName 改为星号,“*****”代表所有;
1. 求 Nginx 的 QPS:
sum(irate(nginx_server_requests{code=”total”,host=~”$DomainName”}[5m]))
2. 求 4xx 万分率(5xx 类似,code=“5xx”):
(sum(irate(nginx_server_requests{code=”4xx”,host=~”$DomainName”}[5m])) / sum(irate(nginx_server_requests{code=”total”,host=~”$DomainName”}[5m]))) * 10000
3. 求 upstream 的 QPS(示例求 group1 的 qps):
sum(irate(nginx_upstream_requests{code=”total”,upstream=”group1″}[5m]))
4. 求 upstream 后端 server 的响应时间(示例求 group1 的后端响应时间):
nginx_upstream_responseMsec{upstream=“group1”}

六、Nginx 监控的展示

Dashboard 的展示当然是使用 grafana,自己根据表达式画图即可,监控图类似:

用 Prometheus 细化 Nginx 监控

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4186字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7993126
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...