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条评论来说两句吧...