创建自定义 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.setGauge 和 prodserver.metrics.incrementCounter 函数分别创建 gauge 和 counter 类型的 Prometheus 度量 proprodserver.metrics.setGauge 和 prodserver.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_count 和 test_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 的度量类型是计量表,因此每次执行部署的函数并查询度量服务时,其值都会增加或减少。
另请参阅
prodserver.metrics.setGauge (MATLAB Compiler SDK) | prodserver.metrics.incrementCounter (MATLAB Compiler SDK)