主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

创建自定义 Prometheus 度量

此示例说明如何在 MATLAB® Production Server™ 实例上创建自定义 Prometheus® 度量并使用度量服务检索它们。要创建自定义度量,请使用已部署的 MATLAB 函数中的 prodserver.metrics.setGauge (MATLAB Compiler SDK)prodserver.metrics.incrementCounter (MATLAB Compiler SDK) 函数。执行部署的函数后,查询度量服务检索自定义度量。

该示例假设有一个使用命令行管理的在 http://localhost:9910 运行的本地服务器。

编写 MATLAB 代码来创建自定义度量

编写一个 MATLAB 函数,调用 proprodserver.metrics.setGaugeprodserver.metrics.incrementCounter 函数分别创建 gauge 和 counter 类型的 Prometheus 度量 proprodserver.metrics.setGaugeprodserver.metrics.incrementCounter 不返回任何输出。

以下 test_metrics 函数仅创建示例度量。实际上,MATLAB 程序员在与服务器管理员协商后,创建与已部署应用程序相关的度量,以帮助对已部署的 MATLAB 代码进行检测。

function rc = test_metrics()
tic
prodserver.metrics.incrementCounter("test_function_execution_count",1)
toc
prodserver.metrics.setGauge("test_timer_seconds",toc)
rc = 0;
end

MATLAB 函数部署到服务器

将函数 test_metrics.m 打包成名为 test_metrics 的可部署存档,并将其部署到服务器。

有关创建和启动服务器的详细信息,请参阅使用命令行创建服务器实例使用命令行启动服务器实例

有关创建可部署存档并将其部署到服务器的详细信息,请参阅针对 MATLAB Production Server 创建可部署存档将存档部署至 MATLAB Production Server

在服务器上启用度量

通过编辑服务器配置文件 main_config 在服务器上启用度量服务。在 main_config 中,取消注释 --enable-metrics 属性。重新启动服务器以使更改生效。

执行已部署的函数

使用您选择的语言,编写客户端应用程序来执行已部署的功能。此示例使用 Windows® 终端上的 cURL 命令向服务器发送请求。有关构建请求的更多信息,请参阅MATLAB 数据类型的 JSON 表示

以下命令执行部署到运行于 test_metrics 服务器的函数 http://localhost:9910。执行该函数会使 test_function_execution_count 度量增加 1,并将 test_timer_seconds 度量设置为一个变化的数字。

curl -v -H Content-Type:application/json -d '{"nargout":0,"rhs":[]}' http://localhost:9910/test_metrics/test_metrics

查询度量服务以检索自定义度量

客户端调用已部署的 MATLAB 函数后,自定义度量会在服务器上注册。要检索度量,请使用GET Metrics通过在 Web 浏览器中访问以下 URL 来访问 API。实际上,Prometheus 服务器会抓取度量 HTTP/HTTPS 端点。

http://localhost:9910/api/metrics
度量服务的输出包含有关服务器度量的信息。它还包含 test_function_execution_counttest_timer_seconds 自定义度量,以及生成度量的可部署存档的名称 test_metrics
# TYPE matlabprodserver_up_time_seconds counter
matlabprodserver_up_time_seconds 16705.3
# TYPE matlabprodserver_queue_time_seconds gauge
matlabprodserver_queue_time_seconds 0
# TYPE matlabprodserver_cpu_time_seconds counter
matlabprodserver_cpu_time_seconds 29.1406
# TYPE matlabprodserver_memory_working_set_bytes gauge
matlabprodserver_memory_working_set_bytes 5.17153e+08
# TYPE matlabprodserver_requests_accepted_total counter
matlabprodserver_requests_accepted_total 7
# TYPE matlabprodserver_requests_in_queue gauge
matlabprodserver_requests_in_queue 0
# TYPE matlabprodserver_requests_processing gauge
matlabprodserver_requests_processing 0
# TYPE matlabprodserver_requests_succeeded_total counter
matlabprodserver_requests_succeeded_total 7
# TYPE matlabprodserver_requests_failed_total counter
matlabprodserver_requests_failed_total 0
# TYPE matlabprodserver_requests_canceled_total counter
matlabprodserver_requests_canceled_total 0
# TYPE test_function_execution_count counter
test_function_execution_count{archive="test_metrics_2"} 1
# TYPE test_timer_seconds gauge
test_timer_seconds{archive="test_metrics_2"} 0.0194095

由于 test_function_execution_count 的度量类型是计数器,因此每次执行部署的函数并查询度量服务时,其值都会增加 1。由于 test_timer_seconds 的度量类型是计量表,因此每次执行部署的函数并查询度量服务时,其值都会增加或减少。

另请参阅

(MATLAB Compiler SDK) | (MATLAB Compiler SDK)

主题

外部网站