动态telemetry
1.依赖模块
上文控制面配置说明
njt_helper_broker_module
njt_ctrl_config_api_module.so;
本功能需要模块,因为本功能采用外部build,所以版本发布的时候提供对应的so
服务间追踪模块(Otel)依赖:
njt_otel_module.so
njt_agent_dyn_otel_module.so
服务间追踪模块(Otel-webserver)依赖:
njt_otel_webserver_module.so
njt_agent_dyn_otel_webserver_module.so
2.配置指令
无
3.配置示例
3.1 主要配置示例
# 分布式telemetry 动态开关需要加载这两个模块
load_module modules/njt_otel_module.so;
load_module modules/njt_agent_dyn_otel_module.so;
# telemetry-webserver 动态开关需要加载这两个模块
load_module modules/njt_otel_webserver_module.so;
load_module modules/njt_agent_dyn_otel_webserver_module.so;
worker_processes 1;
error_log stderr info; # 注意修改为具体的文件路径,此配置为输出到控制台
helper broker modules/njt_helper_broker_module.so conf/mqtt.conf;
helper ctrl /modules/njt_helper_ctrl_module.so conf/ctrl_demo.conf;
events {
worker_connections 1024;
}
cluster_name helper;
node_name node1;
http {
dyn_kv_conf conf/iot.conf;
access_log logs/access.log combined; ## 此处为必要配置,日志格式可以修改
# 分布式telemetry模块配置文件
opentelemetry_config conf/otel.toml;
# telemetry-webserver模块配置文件
include conf/opentelemetry_module.conf;
upstream demo {
zone demo 128k;
server 192.168.40.141:8080;
}
upstream demos {
zone demos 128k;
server 192.168.40.141:443;
}
server {
listen 1081;
location / {
# telemetry-webserver 配置
NjetModuleEnabled OFF;
# 分布式telemetry 配置
opentelemetry on;
opentelemetry_operation_name my_example_backend;
opentelemetry_propagate;
root html;
index index.html;
location /demo {
proxy_pass http://demo;
}
}
location = /test/demo {
# telemetry-webserver 配置
NjetModuleEnabled ON;
# 分布式telemetry 配置
opentelemetry on;
opentelemetry_operation_name my_example_backend;
opentelemetry_propagate;
proxy_pass http://demo;
}
}
server {
listen 1080;
location / {
root html;
index index.html;
}
location = /test/demo {
limit_conn addr 100;
proxy_pass http://demo;
}
location /demo {
add_header test api;
proxy_pass http://demo;
}
location /demos {
limit_conn addr 100;
proxy_ssl_certificate nginx.pem;
proxy_ssl_certificate_key nginx-key.pem;
proxy_pass https://demos;
}
}
}
4 API
4.1 API 列表
查询telemetry接口:
GET http://IP+port/api/v1/config/otel
修改telemetry接口:
PUT http://127.0.0.1:8081/api/v1/config/otel
查询telemetry webserver接口:
GET http://127.0.0.1:8081/api/v1/config/otel_webserver
修改telemetry webserver接口:
PUT http://127.0.0.1:8081/api/v1/config/otel_webserver
4.2 调用样例
查询telemetry 当前状态
该接口可以查看所有HTTP location 块内telemetry 当前的开关状态
请求
GET http://127.0.0.1:8081/api/v1/config/otel
返回值
HTTP/1.1 200 OK
Server: njet/1.23.1
Date: Fri, 24 Feb 2023 06:52:19 GMT
Content-Type: application/json
Content-Length: 480
Connection: keep-alive
* Connection #0 to host 127.0.0.1 left intact
{
"servers": [
{
"listens": [
"0.0.0.0:1081"
],
"serverNames": [
""
],
"locations": [
{
"location": "/",
"opentelemetry": true,
"locations": [
{
"location": "/demo",
"opentelemetry": true
}
]
},
{
"location": "/test/demo",
"opentelemetry": true
}
]
},
{
"listens": [
"0.0.0.0:1080"
],
"serverNames": [
""
],
"locations": [
{
"location": "/",
"opentelemetry": true
},
{
"location": "= /test/demo",
"opentelemetry": true
},
{
"location": "/demo",
"opentelemetry": true
},
{
"location": "/demos",
"opentelemetry": true
},
{
"location": "/named",
"opentelemetry": true
}
]
}
]
}
修改telemetry 开关状态
此处请求body可以支持发送仅局部json
报错提示在error log中,http不做参数校验
请求
PUT http://127.0.0.1:8081/api/v1/config/otel
Content-Type: application/json
{
"servers": [
{
"listens": [
"0.0.0.0:1081"
],
"serverNames": [
""
],
"locations": [
{
"location": "/",
"opentelemetry": true,
"locations": [
{
"location": "/demo",
"opentelemetry": true
}
]
},
{
"location": "/test/demo",
"opentelemetry": false
}
]
},
{
"listens": [
"0.0.0.0:1080"
],
"serverNames": [
""
],
"locations": [
{
"location": "/",
"opentelemetry": true
},
{
"location": "= /test/demo",
"opentelemetry": true
},
{
"location": "/demo",
"opentelemetry": true
},
{
"location": "/demos",
"opentelemetry": true
},
{
"location": "/named",
"opentelemetry": true
}
]
}
]
}
返回
HTTP/1.1 204 OK
Server: njet/1.23.1
Date: Fri, 10 Feb 2023 13:06:21 GMT
Content-Type: application/json
Content-Length: 37
Connection: keep-alive
查询telemetry webserver 当前状态
该接口可以查看所有HTTP location 块内telemetry webserver当前的开关状态
请求
GET http://127.0.0.1:8081/api/v1/config/otel_webserver
返回值
HTTP/1.1 200 OK
Server: njet/1.23.1
Date: Tue, 28 Feb 2023 08:52:12 GMT
Content-Type: application/json
Content-Length: 538
Connection: keep-alive
{
"servers": [
{
"listens": [
"0.0.0.0:1081"
],
"serverNames": [
""
],
"locations": [
{
"location": "/",
"NjetModuleEnabled": true,
"locations": [
{
"location": "/demo",
"NjetModuleEnabled": true
}
]
},
{
"location": "/test/demo",
"NjetModuleEnabled": true
}
]
}
]
}
修改telemetry webserver 开关状态
此处请求body可以支持发送仅局部json
报错提示在error log中,http不做参数校验
请求
PUT http://127.0.0.1:8081/api/v1/config/otel_webserver
Content-Type: application/json
{
"servers": [
{
"listens": [
"0.0.0.0:1081"
],
"serverNames": [
""
],
"locations": [
{
"location": "/",
"NjetModuleEnabled": true,
"locations": [
{
"location": "/demo",
"NjetModuleEnabled": true
}
]
},
{
"location": "/test/demo",
"NjetModuleEnabled": false
}
]
}
]
}
返回
HTTP/1.1 204 OK
Server: njet/1.23.1
Date: Fri, 10 Feb 2023 13:06:21 GMT
Content-Type: application/json
Content-Length: 37
Connection: keep-alive