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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
GreatSQL统计信息相关知识点
相关知识点: INNODB_STATS_PERSIST=ON或用STATS_PERSIST=1定义单个表时,优化器统计信息将持久化到磁盘。默认情况下,innodb_stats_persistent是启用的。 持久统计信息存储在mysql.innodb_table_stats和mysql.innodb_index_stats表中。 默认情况下启用的innodb_stats_auto_recalc变量控制当表中超过10%的行发生更改时是否自动计算统计信息。可以通过在创建或更改表时指定STATS_AUTO_RECALC子句来为单个表配置自动统计数据重新计算。 由于在后台进行的自动统计数据重新计算的异步性质,即使启用了innodb_stats_auto_recalc,在运行影响表10%以上的DML操作后,也不会立即重新计算统计数据。在某些情况下,统计数据的重新计算可能会延迟几秒钟。如果立即需要最新的统计数据,运行ANALYZE TABLE以启动统计数据的同步(前台)重新计算。 如果禁用innodb_stats_auto_recalc则可以通过在对索引列进行大量更改后执行ANALYZE TABL...
- 下一篇
多云时代来临,一文了解你该做什么
为什么选择多云:灵活性,成本,和风险规避 从灵活性到故障转移保护,企业选择多云战略的原因有很多。 根据IDC的统计,超过93%的公司开始在自己的业务运营过程中使用多种云基础设施平台。其中大多数(62%)公司称,采用这种方法是为了更充分地利用不同云提供商各自的最佳能力。例如,也许一个云提供商提供的数据归档服务更出色,但另一个提供商可能更擅长使用量可预测的应用托管服务。 延伸阅读,了解 Akamai cloud-computing 上云新选择,出海实力派 很多企业选择多云战略的另一个原因在于成本优化。根据IBM的统计,66%的用户表示:相比与提供了大量功能(甚至自己不需要的功能)的大型云服务商合作,与小型云服务商合作的成本更低。此外,虽然一些大型云服务商提供了专属折扣,但通过将工作负载迁移到更专业的平台上,同样可以节约成本。 多云的采用创造了新机会,并降低了关键领域的某些风险,例如供应商锁定。Flexera的一份报告中提到,68%的CIO担心使用来自单一供应商的工具,并且缺乏按需移动数据的自由可能造成的风险。多云架构可以帮助企业避免被锁定,对小型企业来说这种方法更具吸引力,因为他们可以借...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程