Nginx 可观测性最佳实践
off999 2025-01-21 20:36 37 浏览 0 评论
Nginx 介绍
Nginx 是一个开源、轻量级、高性能的 HTTP 和反向代理服务器,也可以用于 IMAP/POP3 代理服务器。Nginx 因其采用的异步非阻塞工作模型,使其具备高并发、低资源消耗的特性。高度模块化设计也使得 Nginx 具备很好的扩展性,在处理静态文件、反向代理请求等方面, Nginx 表现出了很大的优势,同时部署维护简单。因此绝大多数企业内部都会用到 Nginx 。
Nginx 的配置结构图如下:
主要结构块说明如下:
1)全局块:配置影响 Nginx 全局的指令。
2)http块:Nginx 配置文件中的主要上下文之一,用于定义全局的 HTTP 配置。它可以包含其他模块的配置指令,如 server 和 upstream。
3)server块:是 Nginx 配置文件中的另一个上下文,用于定义虚拟主机的配置。每个 server 块代表一个虚拟主机,可以包含 listen、server_name、location 和 location 块等指令。
4)location块:location 是 server 上下文中的一个指令,用于定义请求的 URI 或名称空间的匹配和处理规则。它可以包含处理请求的指令,如 proxy_pass、root、index 等。
5)upstream:upstream 用于定义一个服务器组,通常用于负载均衡。它允许 Nginx 将请求分发到多个后端服务器。
通常在 Nginx 监控中,可以通过 stub_status 模块提供的如下7个指标来查看 Nginx 的状态信息。
- Active connections:当前活动的客户端连接数,包括等待中的连接
- accepts:接受的客户端连接总数
- handled:处理的连接总数。通常情况下,此参数的值与accepts相同,除非已经达到了某些资源限制(例如,worker_connections限制)
- equests:客户端请求的总数
- Reading:当前Nginx正在读取请求头的连接数量
- Writing:当前Nginx正在将响应写回客户端的连接数量
但是,这些信息对于监控 Nginx 整体运行情况显然不太够用。Nginx VTS 模块会提供更加丰富的 Nginx 监控指标。Nginx VTS 是 Nginx virtual host traffic status module 的简称,是一个专门用于 Nginx 服务器的监控模块,它的主要目的是收集和呈现关于 Nginx 运行状态的详细信息,可以监控 Nginx 的流量、连接数等底层数据,对分析 Nginx 的性能非常重要。
该模块允许用户访问 Nginx 的虚拟主机状态信息,包括服务器、上游服务器(upstreams)和缓存状态。它类似于 Nginx Plus 的实时活动监控功能。例如,一个 Nginx 的 web 服务中,会包含多个 server,通常监控的流量都是服务器总的流量。如果要分享找到流量大的 server,通常的做法是通过分析日志来进行访问量统计。但是,有了 Nginx VTS 模块后,通过对 server zone 的统计,各个 server 的流量可以一览无余。除了 server 外,各个 upstream 也可以分别统计,可以很方便的查看 nginx 转发到 upstream 的流量,结合监控可以实现动态调整等。
Nginx VTS 模块提供了内置的 HTML 页面,以及 JSON、HTML、JSONP 和 Prometheus 格式的数据输出,方便用于第三方监控工具进行数据采集,并通过监控仪表板进行监控数据的呈现。
Nginx VTS 模块的安装和配置
模块安装
通过如下链接下载 VTS 模块,并上传下载文件到 Nginx 服务器(或者直接在 Nginx 服务上通过 git 下载)。
https://github.com/vozlt/nginx-module-vts
通过如下命令获取 Nginx 当前的配置情况:
# nginx -V
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module
通过 --add-module 添加VTS模块,并编译安装 Nginx 。
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --add-module=/file_path_to/nginx-module-vts
make && make install
nginx -V -- 启动nginx服务,并检测开启的模块
模块配置
修改 nginx.conf 配置文件,添加 VTS 相关配置。重启 Nginx 服务。
http {
vhost_traffic_status_zone;
server {
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format prometheus;
}
}
}
备注:vhost_traffic_status_display_format 可选格式有json、jsonp、html或prometheus。
访问 Nginx VTS 的配置地址( http://localhost/status )。正常情况下会出现如下信息。
观测云
观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。
部署 DataKit
DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。
登录观测云控制台,在 集成 -> DataKit 选择对应安装方式,当前采用 Linux 主机部署 DataKit 。
采集器配置
我们将通过 DataKit 中的 Nginx 采集器对 Nginx 的监控指标进行采集。配置说明如下:
1、开启 Nginx 采集器
cp /usr/local/datakit/conf.d/nginx/nginx.conf.sample /usr/local/datakit/conf.d/nginx/nginx.conf
2、编辑 nginx.conf 文件,开启 VTS 选项并配置监控数据的访问地址等,如下所示:
[[inputs.nginx]]
## Nginx status URL.
## (Default) If not use with VTS, the formula is like this: "http://localhost/basic_status".
## If using with VTS, the formula is like this: "http://localhost/status/format/json".
url = "http://localhost/status/format/json"
use_vts = true
use_plus_api = false
insecure_skip_verify = false
response_timeout = "20s"
election = false
3、重启 DataKit 服务让配置生效。
datakit service -R
关键指标
- nginx 指标集
1、标签
Tag | Description |
host | Host name which installed nginx |
nginx_port | Nginx server port |
nginx_server | Nginx server host |
nginx_version | Nginx version, exist when using vts |
2、指标列表
Metric | Description | Type | Unit |
connection_accepts | The total number of accepts client connections | int | count |
connection_active | The current number of active client connections | int | count |
connection_dropped | The total number of dropped client connections | int | count |
connection_handled | The total number of handled client connections | int | count |
connection_reading | The total number of reading client connections | int | count |
connection_requests | The total number of requests client connections | int | count |
connection_waiting | The total number of waiting client connections | int | count |
connection_writing | The total number of writing client connections | int | count |
load_timestamp | Nginx process load time in milliseconds, exist when using vts | int | msec |
pid | The pid of nginx process (only for Nginx plus) | int | count |
ppid | The ppid of nginx process (only for Nginx plus) | int | count |
- nginx_server_zone 指标集
1、标签
Tag | Description |
host | host name which installed nginx |
nginx_port | nginx server port |
nginx_server | nginx server host |
nginx_version | nginx version |
server_zone | server zone |
2、指标列表
Metric | Description | Type | Unit |
code_200 | The number of responses with status code 200 (only for Nginx plus) | int | count |
code_301 | The number of responses with status code 301 (only for Nginx plus) | int | count |
code_404 | The number of responses with status code 404 (only for Nginx plus) | int | count |
code_503 | The number of responses with status code 503 (only for Nginx plus) | int | count |
discarded | The number of requests being discarded (only for Nginx plus) | int | count |
processing | The number of requests being processed (only for Nginx plus) | int | count |
received | The total amount of data received from clients. | int | B |
requests | The total number of client requests received from clients. | int | count |
response_1xx | The number of responses with status codes 1xx | int | count |
response_2xx | The number of responses with status codes 2xx | int | count |
response_3xx | The number of responses with status codes 3xx | int | count |
response_4xx | The number of responses with status codes 4xx | int | count |
response_5xx | The number of responses with status codes 5xx | int | count |
responses | The total number of responses (only for Nginx plus) | int | count |
send | The total amount of data sent to clients. | int | B |
- nginx_upstream_zone 指标集
1、标签
Tag | Description |
host | host name which installed nginx |
nginx_port | nginx server port |
nginx_server | nginx server host |
nginx_version | nginx version |
upstream_server | upstream server |
upstream_zone | upstream zone |
2、指标列表
Metric | Description | Type | Unit |
active | The number of active connections (only for Nginx plus) | int | count |
backup | Whether it is configured as a backup server (only for Nginx plus) | int | count |
fails | The number of failed requests (only for Nginx plus) | int | count |
received | The total number of bytes received from this server. | int | B |
request_count | The total number of client requests received from server. | int | count |
response_1xx | The number of responses with status codes 1xx | int | count |
response_2xx | The number of responses with status codes 2xx | int | count |
response_3xx | The number of responses with status codes 3xx | int | count |
response_4xx | The number of responses with status codes 4xx | int | count |
response_5xx | The number of responses with status codes 5xx | int | count |
send | The total number of bytes sent to clients. | int | B |
state | The current state of the server (only for Nginx plus) | int | count |
unavail | The number of unavailable server (only for Nginx plus) | int | count |
weight | Weights used when load balancing (only for Nginx plus) | int | count |
- nginx_cache_zone 指标集
1、标签
Tag | Description |
cache_zone | cache zone |
host | host name which installed nginx |
nginx_port | nginx server port |
nginx_server | nginx server host |
nginx_version | nginx version |
2、指标列表
Metric | Description | Type | Unit |
max_size | The limit on the maximum size of the cache specified in the configuration | int | B |
received | The total number of bytes received from the cache. | int | B |
responses_bypass | The number of cache bypass | int | count |
responses_expired | The number of cache expired | int | count |
responses_hit | The number of cache hit | int | count |
responses_miss | The number of cache miss | int | count |
responses_revalidated | The number of cache revalidated | int | count |
responses_scarce | The number of cache scarce | int | count |
responses_stale | The number of cache stale | int | count |
responses_updating | The number of cache updating | int | count |
send | The total number of bytes sent from the cache. | int | B |
used_size | The current size of the cache. | int | B |
场景视图
登录观测云控制台,点击「场景」 -「新建仪表板」,输入 “Nginx”, 选择 “Nginx(VTS) 监控视图”,点击 “确定” 即可添加视图。
视图主要由如下3个部分组成:
1、总览部分:主要显示 Nginx 服务器的总体运行情况。包括整体的请求数,连接数,收发数据量和响应错误数等。
2、Server 部分:主要显示各个虚拟主机的请求数,数据收发量和对应的响应错误数据情况。
3、upstream 部分:主要显示请求分发到不同后端服务的请求数,数据收发量和对应的响应错误数据情况。
监控器(告警)
连接断开异常告警
断开连接数等于 accept(接收)和 handled(处理)之间的差值。在正常情况下,断开的连接应为零。如果每单位时间断开连接的速率开始上升,需要寻找导致资源饱和状态可能的因素。
请求连接数突变
请求数的剧烈变化可能会是环境中某个地方正在发生问题,虽然它并不能确切地告诉问题发生在哪里。但是,值得关注并做进一步分析。
服务错误率告警
服务器错误率等于单位时间的 5xx 错误数(例如 “502 Bad Gateway”)除以请求总数(包含 1xx,2xx,3xx,4xx,5xx)。如果错误率过高,则可能需要进行进一步调查。
总结
Nginx VTS 模块提供了一种强大而灵活的方式来监控和分析 Nginx 的性能和流量,对于维护和优化 Nginx 服务器提供丰富的监控数据支撑。
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
