您现在的位置是:首页 > 文章详情

Stream 指标输出

日期:2024-04-24点击:181

NGINX 向云原生演进,All in OpenNJet 


1. 介绍

NJet将开源社区提供的STS模块(https://github.com/vozlt/nginx-module-sts)进行修改适配后,用于输出Stream Server 的指标信息,支持返回 json, html 及prometheus 格式。

2. 配置指令

数据面配置指令

server_traffic_status_zone

   
语法 server_traffic_status_zone [shared:name:size]
默认值 shared:stream_server_traffic_status:1m
配置位置 stream

描述: 配置一个共享内存区域,该区域存储stream server的运行状态。

server_traffic_status

   
语法 server_traffic_status<on
默认值 off
配置位置 stream,server

描述: 是否记录stream server 的指标,如果配置了server_traffic_status_zone指令,将自动开启指标采集。

server_traffic_status_filter_by_set_key

   
语法 server_traffic_status_filter_by_set_key key [name]
默认值 -
配置位置 stream,server

描述: 对Stream统计的流量进行分组(name)及子分组(key), 可以使用变量,例如 $server_addr, $server_port等。参数name 不指定时,默认值是streamFilterZones。

控制面配置指令

stream_server_traffic_status_display

   
语法 stream_server_traffic_status_display
默认值 -
配置位置 location

描述: 该指令用于获取stream server 的指标信息,默认输出格式由指令stream_server_traffic_status_display进行设置。

stream_server_traffic_status_display_format

   
语法 stream_server_traffic_status_display_format <json
默认值 json
配置位置 location

描述: 该指令用于配置指标的默认返回格式

3. 配置文件示例

njet.conf njt_stream_stsc_module 模块采用静态编译,不用单独加载。

worker_processes auto; cluster_name njet; node_name node1; error_log logs/error.log error; helper ctrl /usr/local/njet/modules/njt_helper_ctrl_module.so /usr/local/njet/conf/njet_ctrl.conf; helper broker /usr/local/njet/modules/njt_helper_broker_module.so; events { worker_connections 1024; } http { } stream { server_traffic_status_zone shared:aabbcc:2m; upstream tcpa { server 127.0.0.1:1234; } server { listen 1234; server_traffic_status off; server_traffic_status_filter_by_set_key * $server_addr; return "aa\n"; } server { listen 1235; server_traffic_status on; proxy_pass tcpa; } } 

njet_ctrl.conf 需要加载动态模块njt_stream_stsd_module.so

load_module /usr/local/njet/modules/njt_http_sendmsg_module.so; load_module /usr/local/njet/modules/njt_ctrl_config_api_module.so; load_module /usr/local/njet/modules/njt_helper_health_check_module.so; load_module /usr/local/njet/modules/njt_http_upstream_api_module.so; load_module /usr/local/njet/modules/njt_http_location_api_module.so; load_module /usr/local/njet/modules/njt_doc_module.so; load_module /usr/local/njet/modules/njt_http_vtsd_module.so; load_module /usr/local/njet/modules/njt_stream_stsd_module.so; error_log logs/error_ctrl.log error; events { worker_connections 1024; } http { include mime.types; access_log off; server { listen 8081; location / { return 200 "njet control panel\n"; } location /api { dyn_module_api; } location /doc { doc_api; } location /metrics { vhost_traffic_status_display; vhost_traffic_status_display_format html; } location /stream_metrics { stream_server_traffic_status_display; stream_server_traffic_status_display_format html; } } } 

4.4.动态配置

NJet 能够动态配置stream server是否采集指标。

要使用动态配置功能,njet.conf 中需要加载sts 动态配置模块:

load_module /usr/local/njet/modules/njt_stream_dyn_sts_module.so; 

动态配置API 报文的Schema 定义如下:

{ "$id": "dynsts", "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "type": "object", "required": ["servers"], "properties": { "servers": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["listens", "server_traffic_status"], "properties": { "listens": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "server_traffic_status": { "type": "boolean" }, "server_traffic_status_filter_by_set_key": { "type": "array", "items": { "type": "string", "minLength": 1 } } } } } } } 

报文样例:

{ "servers": [ { "listens": [ "0.0.0.0:18082" ], "server_traffic_status": true, "server_traffic_status_filter_by_set_key": [ "* $server_addr" ] } ] } 

使用GET 查询当前配置

curl localhost:8081/api/v1/config/stream_dyn_sts 

使用PUT 对配置进行更新

curl -X PUT -d '{"servers":[{"listens":["0.0.0.0:1234"],"server_traffic_status":false,"server_traffic_status_filter_by_set_key":["\"*\" \"$server_addr\""]},{"listens":["0.0.0.0:1235"],"server_traffic_status":true,"server_traffic_status_filter_by_set_key":[]}]}' localhost:8081/api/v1/config/stream_dyn_sts 

img

img

NJet 应用引擎通过内核重构实现了独特的运行时动态配置加载能力,是新一代高性能 Web 应用引擎。NJet 拥有高性能数据面处理能力,将集群、高可用、主动健康检查、声明式 API 等多种辅助功能,通过 NJet 独特的副驾驶 CoPilot 服务框架调度,从而方便功能扩展,隔离管理 / 控制功能对数据面的影响,NJet 应用引擎性能超过 CNCF 推荐 Envoy 应用引擎的三倍。 邮件组  官网

原文链接:https://my.oschina.net/u/6606114/blog/11054470
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章