百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Nginx 可观测性最佳实践

off999 2025-01-21 20:36 31 浏览 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 服务器提供丰富的监控数据支撑。

相关推荐

win10专业版激活变成企业版(win10专业版激活变成企业版怎么办)

win10永久激活密钥很少,一旦网上有分享,等你拿到时就超过期限了,一般是要购买。激活win10系统可以使用激活工具:win10激活工具下载一、win10专业版产品密钥NXRQM-CXV6P-PBGV...

ghostwinxp下载纯净版(ghost win7纯净版下载)

可以下载的,现在官网和其他网站上都可以下载xp原版的。可以通过以下步骤下载我的世界游戏到xp系统中:1.首先打开你的浏览器软件,搜索关键字“我的世界xp版下载”,找到可靠下载地址;2.从下载页面下...

惠普完整版驱动(惠普最新驱动)

惠普官方的标准操作:HP1050安装驱动步骤:一:准备:拿出驱动光盘放入光驱或到HP官网下载完整版驱动。二:不要插USB数据线或插上线打印机电源不要开,安装完整版驱动,当程序提示插入USB数据线时,插...

浏览器最好用的(浏览器最好用的插件)

一、谷歌浏览器谷歌浏览器是公认最好用的,这个可以从市场占有率看出端倪,超过三分之二的用户使用谷歌浏览器。Chrome浏览器以简洁快速著称,不管是普通用户还是开发人员,chrome浏览器都是首选。Chr...

fast路由器6位初始密码(fast路由器的密码)

答:fast路由器初始密码是admin;新款的迅捷无线路由器,管理界面没有初始密码。查看迅捷无线路由器底部标签,标签上标注了admin,说明初始密码就是admin;如果没有,说明该路由器没有初始密码。...

硬盘恢复软件哪个好(硬盘 恢复软件)

迷你兔数据恢复工具:支持恢复硬盘丢失的数据Pc3000数据恢复软件是一款非常专业的硬盘修复工具,能够对电脑硬盘资料数据进行修复,通过使用这个软件可以解决硬盘数据丢失故障,是一个用户进行硬盘资料修复好帮...

十大品牌监控摄像头排名(十大品牌监控摄像头排名第一)

答:1、华为/HUAWEI9.92、小米/MI9.63、罗技/Logitech9.64、海康威视/HIKVISION9.25、乔安/Jooan9.26、普联/TP-LINK9.27、乐橙8.98、萤石...

360手机助手老旧版本大全(360手机助手 老版本)

在设置里面找到历史记录就可能查看360手机助手·换机神器是安卓系统的换机软件,因为苹果的换机软件是爱思。1、打开360手机卫士,登陆账号,点击账号。2、进入个人中心,点击账户安全,在密保工具中,点击解...

系统应用工程师(系统工程的应用)

信息软件系统工程师有前途,毕业以后可以从事软件开发,软件系统的维护,运营等等,和计算机有关的工作内容,因为计算机专业可以说是一个非常热门的专业,很多的大型企业公司基本上都是以计算机研发为主的,薪资福利...

qq恢复系统常见问题(qq恢复系统常见问题及答案)

QQ好友恢复系统一直显示服务器频繁有可能是系统的问题,你的qq重新更新一下,或者你卸载了重新下载一下就有可能好了。您好,很高兴为您解答:您可以试试清空下IE内存,然后关掉不必要的程序,尽量在电脑运...

win10自带的office不见了(win10自带的office在哪个文件夹)

win10系统的office在电脑硬盘office的安装目录里,具体打开安装目录的操作如下:1、首先我们右键点击word,打开方式,选择默认程序打开。2、在默认框打钩,点击【浏览】。3、打开你安装of...

华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
  • 华为官网序列号查询入口(华为官网序列号查询入口手写笔)
手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
  • 手机主题美化包(手机主题美化包下载)
w10系统我的电脑在哪里(windows10 我的电脑在哪)

首先,打开Windows10系统,可以看到当前桌面上没有“我的电脑”。二、然后,在桌面上鼠标右键都加空白处,在右键菜单中选择“个性化”,点击打开。三、然后,在窗口中左侧选择“更改桌面图标”,点击打开。...

2500电脑组装最强配置(2500左右组装电脑主机配置清单)

两千五百元组装电脑,但配置只能是一般。台式机分为主机和显示器两个主体,按这个价格,显示器只能配置一般的,大约两百多元价格,其余都用来组装主机,主机包含机箱,电源,排风扇,电脑主板及内存,电脑处理器,声...

取消回复欢迎 发表评论: