在阿里云日志服务平台上,提供了基础数据(Log、Metric、Trace)的智能分析能力。用户调用相关模型,可以直接得到模型的分析结果。目前主要涉及:日志数据的NER任务、时间序列数据的异常检测、高延时链路数据的Span根因定位。
接口说明
需要具备的基本权限如下
{
"Version": "1",
"Statement": [
{
"Action": [
"log:Get*"
],
"Resource": [
"acs:log:*:*:/ml/service/sls_builtin_service_log_struct/",
"acs:log:*:*:/ml/service/sls_builtin_service_metric_anomaly/",
"acs:log:*:*:/ml/service/sls_builtin_service_trace_rca/"
],
"Effect": "Allow"
}
]
}
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
授权信息
当前API暂无授权信息透出。
请求语法
POST /ml/service/{serviceName}/analysis HTTP/1.1
请求参数
名称 | 类型 | 必填 | 描述 | 示例值 |
---|---|---|---|---|
serviceName | string | 否 | 服务名。 枚举值:
| sls_builtin_service_log_struct |
allowBuiltin | boolean | 否 |
枚举值:
| true |
body | MLServiceAnalysisParam | 否 | 请求结构体。 枚举值:
|
在不同的情况,对于请求中的参数会不一样,具体如下:
日志内容实体识别(sls_builtin_service_log_struct)
body.parameter 相关的内容
{
"is_struct": "true",
"use_gpu": "true/false",
"max_fields": "1"
}
- is_struct 为 true 时,表示日志格式为 JSON 结构。目前只支持设置为 true
- use_gpu 表示是否使用 gpu 资源
- max_fields 表示当日志格式为 JSON 结构时,最多分析其中的几个字段,默认只分析一个字段
body.input 相关的内容
[
{
"{column_name}": "{column_value}"
}
]
输入的内容是一个是 JSON 结构数组,其中
- column_name 表示 JSON 结构的日志的某个字段名称
- column_value 表示 JSON 结构的日志的某个字段的值
时间序列异常检测(sls_builtin_service_metric_anomaly)
body.parameter 的相关内容
{
"isOrdered": "true/false",
"keys": "[]",
"timeColumnName": "",
"analysisColumnNames": "[]",
"interval": "-1"
}
- isOrdered 表示输入的数据是否是有序的,如果输入的序列是按照时间维度从小到大,升序排列的,设置为 true,否则设置为 false
- interval 表示时间序列的间隔大小,按照秒来描述。比如:序列是每分钟一个点,则设置为 60;如果不确定序列的间隔,则设置为 -1
- timeColumnName 表示输入的序列中,时间维度的名称
- analysisColumnNames 表示输入的序列中,带分析的数值特征维度的名称,使用数组来表示,且需要将这个数组序列化成字符串
- keys 表示输入的数据的各列的名称,使用数组表示,且需要将这个数组序列化成字符串
body.input 的相关内容
[
{
"{column_name}": "{column_value}"
}
]
输入的内容是一个是数组,其中
- column_name 表示序列中某个字段的名称
- column_value 表示序列中某个字段的值的内容。当 {column_name} 等于 {timeColumnName} 时,对应的值表示的是时间大小,使用 unixtime 时间戳来表示,单位是秒
高延时链路数据检测(sls_builtin_service_trace_rca)
body.parameter 的相关内容
{
"project": "",
"logstore": "",
"endpoint": "",
"role_arn": ""
}
- project 表示待分析的 Trace 数据存储在 SLS 中的 Project 的名称
- logstore 表示待分析的 Trace 数据存储在 SLS 中的 Logstore 的名称
- endpoint 表示 project 所在地域的 endpoint 信息,这里必须使用公网域名,内网域名无法访问
- role_arn 表示已经对该资源进行授权的角色信息,这里务必使用 ETLRole 或者 AuditRole 的 arn 信息
body.input 的相关内容
[
{
"service": "",
"name": "",
"from_ts_sec": "",
"to_ts_sec": "",
"slo_ts_micro": "",
"batch_id": "",
"trace_ids": "[]"
}
]
输入的内容是一个是数组,切输入的数组的长度是 1,其中对应的参数的含义解释如下:
- service 表示某个或者某一批待诊断的 TraceID 的服务名称,可以从 logstore 中获得
- name 表示某个或者某一批待诊断的 TraceID 的服务名称,可以从 logstore 中获得
- from_ts_sec 表示待分析的开始时间戳,单位是秒
- to_ts_sec 表示待分析的结束时间戳,单位是秒
- batch_id 表示当前待分析的一批 TraceID 的名称
- trace_ids 表示当前请求中对应的 trace_id 的列表,使用 JSON 序列化成字符串
返回参数
在不同的情况,对于请求的返回值会不一样,具体如下:
日志内容实体识别(sls_builtin_service_log_struct)
data 相关的内容
[
{
"{column_name}": "{column_value}"
}
]
输出内容中每一个 JSON 结构与输入的 JSON 结构日志相对应,其中
- column_name 表示 JSON 结构的日志的被分析了的某个字段名称,最多有 max_fields 个字段被分析
- column_value 表示 JSON 结构的日志的被分析了的某个字段的值,字段值中的 NER 结果被标签 <ml_ner_${ner_type}></ml_ner_${ner_type}> 包裹,其中 ${ner_type} 是具体的 NER 类型
时间序列异常检测(sls_builtin_service_metric_anomaly)
data 的相关内容
[
{
"start": "",
"end": "",
"label": ""
}
]
- start 表示检测出来的异常区间的开始时间
- end 表示检测出来的异常区间的结束时间
- label 表示检测出来的当前区间的异常类型
- SPIKE_UP_TYPE
- SPIKE_DOWN_TYPE
- TREND_UP_TYPE
- TREND_DOWN_TYPE
- MEANSHIFT_UPWARD_TYPE
- MEANSHIFT_DOWNWARD_TYPE
高延时链路数据检测(sls_builtin_service_trace_rca)
data 的相关内容
[
{
"traceID": "",
"service": "",
"name": "",
"rootCauses": "[{}]"
}
]
- traceID 表示待检测的 traceID 信息
- service 表示当前这个 Trace 的根节点的 service 名称
- name 表示当前这个 Trace 的根节点的 name 名称
- rootCauses 表示当前这个高延时请求的 Trace 中,导致高延时的 span 的列表信息,使用序列化后的字符串来表示。该字段的值反序列化后的结构如下:
[
{
"spanID": "",
"service": "",
"name": "",
"host": "xxxx",
"predicateDuration": 10
}
]
示例
正常返回示例
JSON
格式
{
"status": {
"key": "200"
},
"data": [
{
"key": "{'marker': ''}"
}
]
}
错误码
访问错误中心查看更多错误码。