主要内容

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

用于发现和诊断的 RESTful API

用于发现和诊断的 MATLAB® Production Server™ RESTful API 由以下 API 组成:

  • 提供有关服务器上部署的 MATLAB 函数的信息的发现服务

  • 健康检查 API,可让您了解服务器是否可以处理请求

  • 服务器度量服务,返回有关客户端请求、服务器执行这些请求所花费的时间和内存以及可选的自定义度量的信息

健康检查和发现服务以 JSON 格式返回响应。度量服务以 Prometheus 度量格式返回数据。

RESTful API 的特点

用于发现和诊断的 MATLAB Production Server RESTful API 使用 HTTP 请求-响应模型与 MATLAB Production Server 进行通信。该模型包括请求方法、响应码、消息头、消息体。用于发现和诊断的 RESTful API 具有以下特点:

  • HTTP GET 方法是客户端和服务器之间通信的主要模式。

  • 唯一的统一资源标识符 (URI) 标识服务器创建的资源。

  • 由于对服务器的请求使用 GET 方法,因此请求没有消息正文,您不必在请求中设置 Content-Type 标头。

  • 响应的消息正文包含特定于请求的信息,例如有关部署到服务器的函数、服务器健康状态或服务器度量的信息。

发现服务

使用发现服务了解您部署到服务器的 MATLAB 函数。发现服务以 JSON 对象的形式返回有关已部署的 MATLAB 函数的信息。该对象是一个多级嵌套结构,在高层次上显示发现模式版本和已部署的存档列表。每个存档都包含有关已部署的 MATLAB 函数及其函数签名的信息。

要使用发现服务,您必须通过设置 main_config 服务器配置文件中的 --enable-discovery 属性在服务器上启用发现服务。

为了在使用发现服务时获取有用的信息,您必须在创建可部署存档时包含一个 JSON 文件,其中包含要部署的 MATLAB 函数的函数签名。有关如何创建可部署存档的信息,请参阅针对 MATLAB Production Server 创建可部署存档。有关创建包含函数签名的 JSON 文件的信息,请参阅 JSON 中的 MATLAB 函数签名

使用GET Discovery Information调用发现服务。

来自服务器的响应是一个 JSON 对象。

Example of a response to the GET discovery information request

JSON 响应对象

JSON 响应对象包含发现模式的版本号和已部署存档的列表。响应对象包含以下字段:

discoverySchemaVersion

JSON 字符串,包含发现架构的版本号,格式为 <major#>.<minor#>.<patch#>,其中每个数字都是非负整数

示例值: 1.0.0

archives

包含所有已部署存档列表的 JSON 对象

存档 JSON 对象

archives 对象包含所有已部署存档的列表。此列表中的每个对象都是一个 JSON 对象,其键是已部署存档的名称,例如 <Name of the CTF archive>,其值是一个具有以下字段的 JSON 对象:

archiveSchemaVersion

表示存档架构版本号的 JSON 字符串

示例: 1.1.0

archiveUuid表示存档唯一标识符的 JSON 字符串
matlabRuntimeVersion

表示 MATLAB Runtime 版本的 JSON 字符串

示例: 9.9.0

functions

包含已部署存档中的函数列表的 JSON 对象

typedefsJSON 对象,包含用作已部署函数的输入或输出参量的元胞数组或结构体列表

函数 JSON 对象

functions 对象包含嵌套的 JSON 对象列表,其中每个嵌套对象对应已部署存档中的一个 MATLAB 函数。

每个函数对象都以部署的函数名称作为其键,例如 <MATLAB_function_name1>,并以 JSON 对象作为其值。JSON 对象包含一个 signatures 键,其值是一个 JSON 对象数组,其中包含有关 MATLAB 函数签名的信息。

signatures 数组中的每个对象包含以下字段:

help

输入参数名称

示例: "name": "input1"

inputs

包含输入参量信息的 JSON 对象数组

outputs

包含有关输出参量的信息的 JSON 对象数组

inputs 数组中的每个对象包含以下字段:

name

输入参数名称

示例: "name": "input1"

mwtype

MATLAB 数据类型

示例: "mwtype": "double"

mwsize

数据大小

示例: "mwsize": ["2,3"]

help

输入参量描述

示例: "help": "input1 description"

outputs 对象中的每个对象包含以下字段:

name

输出参数名称

示例: "name": "output1"

mwtype

MATLAB 数据类型

示例: "mwtype": "double"

mwsize

数据大小

示例: "mwsize": ["2,3"]

help

输出参数说明

示例: "help": "output1 description"

typedefs JSON 对象

仅当部署的函数包含元胞数组或结构体作为输入或输出参量时,响应才包含 typedefs 对象。

如果部署的函数包含元胞数组作为输入或输出参量,则 typedefs 对象包含嵌套对象,其键是元胞数组的名称,例如 <homogeneous_cell_name>,相应的值包含一个包含有关元胞数组信息的对象。

<cell_array_name> 对象中的每个对象包含以下字段:

help

包含元胞数组描述的 JSON 字符串

示例: "help": "cell help"

typecell
elements

描述元胞数组每个元素的 JSON 对象数组

elements 中的每个对象包含以下字段:

name

元胞元素名称

示例: "name": "a"

type

元素的数据类型

示例: "type": "double"

size

数组大小

示例: "size": ["2,3"]

help

元胞元素描述

示例: "help": "Operand a"

如果部署的函数包含结构体数组作为输入或输出参量,则 typedefs 对象包含嵌套对象,其键是结构体的名称,例如 <struct_name>,相应的值包含一个具有有关该结构体信息的对象。

<struct_name> 对象中的每个对象包含以下字段:

help

包含结构体描述的 JSON 字符串

示例: "help": "struct help"

typestruct
fields

描述结构体中每个元素的 JSON 对象数组

fields 中的每个对象包含以下字段:

名称描述
name

struct 字段的名称

示例: "name": "my_field_name"

type

字段值的数据类型

示例: "type": "char"

size

struct 的大小

示例: "size": ["2,3"]

help

struct 元素的描述

示例: "help": "description for my_field_name"

度量服务

使用度量服务以 Prometheus® 度量格式检索服务器度量。度量服务返回有关客户端应用程序发送到服务器的请求以及服务器执行请求所需的时间和内存的信息。您可以在使用 Kubernetes® 和微服务时使用这些度量来监控服务器。要调用度量服务,请使用GET Metrics

要使用度量服务,您必须通过设置 main_config 服务器配置文件中的 --enable-metrics 属性来在服务器上启用度量服务。

来自服务器的成功响应由 Prometheus 计数器和计量度量类型中的几个服务器度量组成。有关 Prometheus 度量格式的更多信息,请参阅 Prometheus 属量类型

# TYPE matlabprodserver_up_time_seconds counter
matlabprodserver_up_time_seconds 68140.5
# TYPE matlabprodserver_queue_time_seconds gauge
matlabprodserver_queue_time_seconds 0
# TYPE matlabprodserver_cpu_time_seconds counter
matlabprodserver_cpu_time_seconds 18.2188
# TYPE matlabprodserver_memory_working_set_bytes gauge
matlabprodserver_memory_working_set_bytes 1.57426e+08
# TYPE matlabprodserver_requests_accepted_total counter
matlabprodserver_requests_accepted_total 0
# 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 0
# TYPE matlabprodserver_requests_failed_total counter
matlabprodserver_requests_failed_total 0
# TYPE matlabprodserver_requests_canceled_total counter
matlabprodserver_requests_canceled_total 0

错误响应 403 Metrics Disabled 表示服务器上未启用度量服务。

自定义度量

您可以通过添加特定于您的应用程序或请求处理的自定义度量来检测已部署的 MATLAB 代码。在部署的 MATLAB 代码中,您可以使用函数 prodserver.metrics.incrementCounter (MATLAB Compiler SDK)prodserver.metrics.setGauge (MATLAB Compiler SDK) 创建自定义 Prometheus 度量。这些函数分别创建 Prometheus 计数器和计量度量类型的度量。

当客户端调用已部署的 MATLAB 函数时,服务器会收集自定义度量。除了默认的服务器度量之外,度量服务的输出还包括自定义度量和创建这些度量的可部署存档的名称。

例如,在您部署到服务器的 MATLAB 函数中包含以下函数会创建名为 test_function_execution_counttest_timer_seconds 的自定义度量。

prodserver.metrics.incrementCounter("test_function_execution_count",1);
prodserver.metrics.setGauge("test_timer_seconds",0.421147);

在客户端调用已部署的函数后查询度量 API 时,您会看到以下输出:

# 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"} 0.421147
输出包含 test_function_execution_counttest_timer_seconds 自定义度量,以及生成度量的可部署存档的名称 test_metrics

有关详细示例,请参阅创建自定义 Prometheus 度量

另请参阅

| | (MATLAB Compiler SDK) | (MATLAB Compiler SDK)

主题