主要内容

用于发现和诊断的RESTful API

MATLAB®生产服务器™用于发现和诊断的RESTful API由以下API组成:

  • 一个发现服务,提供关于部署在服务器上的MATLAB函数的信息

  • 运行状况检查API,让您知道服务器是否可用来处理请求

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

运行状况检查和发现服务以JSON格式返回响应。度量服务以Prometheus度量格式返回数据。

RESTful API的特点

MATLAB制作服务器用于发现和诊断的RESTful API使用HTTP请求-响应模型进行通信MATLAB制作服务器.该模型包括请求方法、响应代码、消息头和消息体。用于发现和诊断的RESTful API具有以下特征:

  • HTTP GET方法形成了客户机和服务器之间的主要通信模式。

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

  • 由于对服务器的请求使用GET方法,因此请求没有消息体,并且您不必设置内容类型请求中的头。

  • 响应的消息体包含特定于请求的信息,例如关于部署到服务器的功能的信息、服务器健康状态或服务器指标。

发现服务

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

使用发现服务前,必须在服务器端开启发现服务——enable-discovery的财产main_config服务器配置文件。

要在使用发现服务时获得有用的信息,必须在创建可部署归档时包含一个JSON文件,其中包含要部署的MATLAB函数的函数签名。有关如何创建可部署归档的信息,请参见为MATLAB生产服务器创建可部署存档.有关创建包含函数签名的JSON文件的信息,请参见JSON中的MATLAB函数签名

调用发现服务获取发现信息

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

对GET发现信息请求的响应示例

JSON响应对象

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

关键 价值
discoverySchemaVersion

JSON字符串,包含发现模式的版本号,格式为<主#>.<次#>. >,其中每个数字都是非负整数

示例值:1.0.0

档案

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

归档JSON对象

档案对象包含所有已部署存档的列表。该列表中的每个对象都是一个JSON对象,其键是已部署归档文件的名称,例如,< CTF归档文件>的名称,它的值是一个JSON对象,包含以下字段:

关键 价值
archiveSchemaVersion

表示存档模式版本号的JSON字符串

例子:1.1.0

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

JSON字符串,表示MATLAB运行时版本

例子:9.9.0

功能

JSON对象,其中包含已部署归档中的函数列表

typedef JSON对象,包含作为已部署函数的输入或输出参数的单元格数组或结构列表

JSON对象

功能对象包含一个嵌套JSON对象列表,其中每个嵌套对象对应于部署归档中的一个MATLAB函数。

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

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

关键 价值
帮助

输入参数名称

例子:“名称”:“input1”

输入

JSON对象数组,包含关于输入参数的信息

输出

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

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

关键 价值
的名字

输入参数名称

例子:“名称”:“input1”

mwtype

MATLAB数据类型

例子:“mwtype”:“替身”

mwsize

数据大小

例子:“mwsize”:(“2、3”)

帮助

输入参数的描述

例子:"help": "input1 description"

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

关键 价值
的名字

输出参数名称

例子:“名称”:“output1”

mwtype

MATLAB数据类型

例子:“mwtype”:“替身”

mwsize

数据大小

例子:“mwsize”:(“2、3”)

帮助

输出参数说明

例子:"help": "output1 description"

typedefs JSON对象

响应包含typedef仅当部署的函数包含单元格数组或结构作为输入或输出参数时使用。

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

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

关键 价值
帮助

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

例子:"help": "cell help"

类型 细胞
元素

JSON对象数组,描述单元格数组的每个元素

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

关键 价值
的名字

单元格元素名称

例子:“名称”:“一”

类型

元素的数据类型

例子:“类型”:“双”

大小

数组大小

例子:“大小”:(“2、3”)

帮助

cell元素描述

例子:"help": "操作数a"

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

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

关键 价值
帮助

包含结构描述的JSON字符串

例子:"help": "struct help"

类型 结构体
字段

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

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

的名字 描述
的名字

的名字结构体

例子:“名称”:“my_field_name”

类型

字段值的数据类型

例子:“类型”:“字符”

大小

的大小结构体

例子:“大小”:(“2、3”)

帮助

描述结构体元素

例子:"help": "description for my_field_name"

健康检查

使用运行状况检查API确定服务器是否具有有效的许可证,并且能够处理HTTP请求。健康检查将服务器分类为健康或不健康,具体取决于服务器是否具有有效的许可证并且可以与网络许可证管理器通信。要检查服务器运行状况,请使用获取服务器运行状况

服务器处于以下状态之一时,即为正常状态:

  • 服务器使用有效的license运行。服务器正在与网络许可管理器通信,并且签出了所需的许可密钥数量。

  • 方法指定的宽限期结束之前,服务器已失去与网络许可证管理器的通信,但服务器仍处于完全运行状态并将保持运行状态license-grace-period财产。

如果健康检查成功,服务器将返回200好了HTTP状态码和表示服务器正常的JSON对象。

{"status": "ok"}

当服务器无法处理HTTP请求时,运行状况检查API返回一个503健康检查失败HTTP响应代码,响应体为空。当服务器与网络许可证管理器失去通信的时间超过宽限期时,健康检查失败。当服务器处于这种状态时,它会主动尝试重新建立与许可证管理器的通信。如果服务器能够重新建立与许可证管理器的通信,请求处理将恢复。

失败的运行状况检查不能在响应体中提供有关失败原因的其他信息。服务器管理员可以使用mps-status命令,获取有关服务器状态的详细信息。您的终端必须与服务器在同一系统上才能运行mps-status

有关许可的更多信息,请参见管理MATLAB生产服务器的许可证

标准服务

使用度量服务检索Prometheus中的服务器度量®标准格式。度量服务返回关于客户端应用程序发送给服务器的请求的信息,以及服务器执行请求所花费的时间和内存。在使用Kubernetes时,可以使用这些指标来监视服务器®和microservices。要调用度量服务,请使用得到指标

要使用度量服务,必须在服务器上通过设置——enable-metrics的财产main_config服务器配置文件。

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

#类型matlabprodserver_up_time_seconds计数器matlabprodserver_up_time_seconds matlabprodserver_queue_time_seconds 0 # 68140.5 #类型matlabprodserver_queue_time_seconds指标类型matlabprodserver_cpu_time_seconds计数器matlabprodserver_cpu_time_seconds 18.2188 #式matlabprodserver_memory_working_set_bytes计matlabprodserver_memory_working_set_bytes 1.57426 e + 08 #类型matlabprodserver_requests_accepted_total计数器matlabprodserver_requests_accepted_total 0 #类型matlabprodserver_requests_in_queue计matlabprodserver_requests_in_queue 0 #式matlabprodserver_requests_processing计matlabprodserver_requests_processing 0 #类型matlabprodserver_requests_succeeded_total计数器matlabprodserver_requests_succeeded_total 0 #类型matlabprodserver_requests_failed_total计数器matlabprodserver_requests_failed_total matlabprodserver_requests_canceled_total计数器matlabprodserver_requests_canceled_total 0 0 #类型

的错误响应403禁用度量指示未在服务器上启用度量服务。

自定义指标

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

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

例如,在部署到服务器的MATLAB函数中包含以下函数,将创建称为test_function_execution_count而且test_timer_seconds

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

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

#类型matlabprodserver_up_time_seconds计数器matlabprodserver_up_time_seconds matlabprodserver_queue_time_seconds 0 # 16705.3 #类型matlabprodserver_queue_time_seconds指标类型matlabprodserver_cpu_time_seconds计数器matlabprodserver_cpu_time_seconds 29.1406 #式matlabprodserver_memory_working_set_bytes计matlabprodserver_memory_working_set_bytes 5.17153 e + 08 #类型matlabprodserver_requests_accepted_total计数器matlabprodserver_requests_accepted_total 7 #类型matlabprodserver_requests_in_queue计matlabprodserver_requests_in_queue 0 #式matlabprodserver_requests_processing计matlabprodserver_requests_processing 0 #类型matlabprodserver_requests_succeeded_total计数器matlabprodserver_requests_succeeded_total 7 #类型matlabprodserver_requests_failed_total计数器matlabprodserver_requests_failed_total 0 #类型matlabprodserver_requests_canceled_total计数器matlabprodserver_requests_canceled_total 0 # test_function_execution_count类型1 # TYPE test_timer_seconds gauge test_timer_seconds{archive="test_metrics"} 0.421147
输出包含test_function_execution_count而且test_timer_seconds自定义指标,以及可部署存档的名称,test_metrics,生成度量。

有关详细示例,请参见创建自定义普罗米修斯度量

另请参阅

||(MATLAB编译器SDK)|(MATLAB编译器SDK)

相关的话题