更新时间:2026-01-29 GMT+08:00
分享

获取指标列表 - ListMetrics

功能介绍

获取指标列表

调用方法

请参见如何调用API

授权信息

账号具备所有API的调用权限,如果使用账号下的IAM用户调用当前API,该IAM用户需具备调用API所需的权限,具体权限要求请参见权限和授权项

URI

GET /v1/{project_id}/workspaces/{workspace_id}/soc/metrics

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

参数解释:

项目ID,用于明确项目归属,配置后可通过该ID查询项目下资产,可以通过调用API获取,也可以从控制台获取。获取项目ID

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

workspace_id

String

参数解释:

工作空间id。

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

参数解释:

用户Token,通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。获取用户Token

约束限制:

不涉及

取值范围:

不涉及

默认取值:

不涉及

content-type

String

参数解释:

内容类型

  • application/json;charset=UTF-8 普通API请求的类型

约束限制:

不涉及

取值范围:

  • application/json;charset=UTF-8

默认取值:

不涉及

响应参数

状态码:200

表3 响应Header参数

参数

参数类型

描述

X-request-id

String

请求ID,格式为:request_uuid-timestamp-hostname

表4 响应Body参数

参数

参数类型

描述

code

String

错误码

data

Array of MetricMetaData objects

数据列表

message

String

响应信息

offset

Integer

分页

request_id

String

请求ID

limit

Integer

每页个数

success

Boolean

是否响应成功

total

Integer

总数

表5 MetricMetaData

参数

参数类型

描述

name

String

指标名称

id

String

指标Id

metric_type

String

指标类型, 当前仅支持创建日志类型指标

data_type

String

数据类型, 当前仅支持创建统计指标

metric_dimension

Integer

指标结果维度,0维:单个数字,2维:图表或表格,3+维:多标签图表, metric_type为DERIVED必填,其他类型选填(COMPOUND时必为0)

cache_ttl

Long

缓存生命周期,单位s

report_period

Long

上报周期,埋点指标时必填,单位s

is_built_in

Boolean

是否为系统指标

effective_column

String

生效的列, 当有该参数时,使用指定列作为指标数据结果

max_query_range

Integer

指标支持的最大检索范围,单位:天;复合指标时,数值为derived_metrics列表元素中最小值

derived_metrics

Array of derived_metrics objects

衍生指标列表,非复合指标时只有一个元素,复合指标时,为各衍生指标的定义

compound_expression

String

metric_type为DERIVED时填写, 复合指标的表达式

metric_format

Array of LayoutMetricFormat objects

指标格式

metric_expand_dim

MetricDimensionExpandParam object

指标维度扩充参数

version

String

安全云脑版本

表6 derived_metrics

参数

参数类型

描述

metric_dimension

Integer

衍生指标结果维度,0维:单个数字,2维:图表或表格,3+维:多标签图表

max_query_range

Integer

指标支持的最大检索范围,单位:天;

date_start

String

指标查询范围相对起始时间 datemath表达式

date_end

String

指标查询范围相对截止时间 datemath表达式

date_format

String

时间格式,epoch_millis;epoch_second;yyyy-MM-dd'T'HH:mm:ss.SSSZ

query_type

String

获取指标结果方式,cbsl, api, dsl, sql

query_function

String

获取指标结果的方法,转义成字符串, 共四种query方式:CBSL、API、DSL、SQL

  • query_type为CBSL时,function传入dataspace_id,pipe_id,query,sort, from, to

    样例:

    {\"dataspace_id\":\"3939573a-12a0-436f-b0e5-ab2872a1fde9\",\"pipe_id\":\"9db9d8a6-d9e6-4b32-990e-40f0afe4655d\",\"query\":\"* | select ack_pps, device_type as type\",\"sort\":\"desc\",\"from\":${date_from},\"to\":${date_to}}

    转义前:

    {
        "dataspace_id":"3939573a-12a0-436f-b0e5-ab2872a1fde9",
        "pipe_id":"9db9d8a6-d9e6-4b32-990e-40f0afe4655d",
        "query":"* | select ack_pps, device_type as type",
        "sort":"desc",
        "from": ${date_from},
        "to": ${date_to}
    }
  • query_type为API时,function传入api method、url、path_params、headers、response_parser(解析API返回值所需,定义label和json_path将返回值解析为二维表格,label为表头,json_path为字段提取路径)

    样例:

    {\"method\":\"POST\",\"uri\":\"/v1/${project_id}/只填写uri/不带域名/xxx\",\"headers\":{\"X-Auth-Token\":\"${project_token}\"},\"response_parser\":{\"labels\":[\"攻击类型\",\"攻击源\",\"时间\"],\"json_path\":[\"$.data[:].type\",\"$.data[:].source\",\"$.data[:].time\"]}}

    转义前:

    {
        "method":"POST",
        "uri":"/v1/${project_id}/只填写uri/不带域名/xxx",
        "headers":{
            "X-Auth-Token": "${project_token}"
        },
        "response_parser":{
            "labels":[
                "攻击类型",
                "攻击源",
                "时间"
            ],
            "json_path":[
                "$.data[:].type",
                "$.data[:].source",
                "$.data[:].time"
            ]
        }
    }
  • query_type为DSL时,指定index, dsl(转义成字符串), response_parser

    样例:

    {\"index\":\"index_xxx_*\",\"dsl\":\"{\\\"query\\\":{\\\"match_all\\\":{}}}\",\"response_parser\":{\"labels\":[\"攻击类型\",\"攻击源\",\"时间\"],\"json_path\":[\"$.data[:].type\",\"$.data[:].source\",\"$.data[:].time\"]}}

    转义前:

    {
        "index":"index_xxx_*",
        "dsl":"{\"query\":{\"match_all\":{}}}",
        "response_parser":{
            "labels":[
                "攻击类型",
                "攻击源",
                "时间"
            ],
            "json_path":[
                "$.data[:].type",
                "$.data[:].source",
                "$.data[:].time"
            ]
        }
    }
  • query_type为sql时,指定opendistro sql插件查询json(转义成字符串)

    样例:

    {\"query\":\"SELECT count(1) as count , msg.DstPort FROM isap_log_nip_ttl* where oct >= TIMESTAMP(\\\"${date_from}\\\") and oct <= TIMESTAMP(\\\"${date_to}\\\") group by msg.DstPort order by count desc limit 5\"}

    转义前:

    {
        "query":"SELECT count(1) as count , msg.DstPort FROM isap_log_nip_ttl* where oct >= TIMESTAMP(\"${date_from}\") and oct <= TIMESTAMP(\"${date_to}\") group by msg.DstPort order by count desc limit 5"
    }
表7 LayoutMetricFormat

参数

参数类型

描述

data

String

数据格式

display

String

显示格式

display_param

Map<String,String>

显示参数

data_param

Map<String,String>

数据参数

表8 MetricDimensionExpandParam

参数

参数类型

描述

labels

Array of strings

维度扩充标签

functions

Array of strings

维度扩充方法,填写指标数据面内置方法, 参数index从1开始

状态码:400

表9 响应Header参数

参数

参数类型

描述

X-request-id

String

请求ID,格式为:request_uuid-timestamp-hostname

表10 响应Body参数

参数

参数类型

描述

code

String

参数解释:

错误码

取值范围:

不涉及

message

String

参数解释:

错误描述

取值范围:

不涉及

请求示例

响应示例

状态码:200

指标列表

{
  "code" : "909494e3-558e-46b6-a9eb-07a8e18ca62f",
  "message" : "Error message",
  "success" : true,
  "data" : [ {
    "cache_ttl" : 10,
    "compound_expression" : null,
    "data_type" : "STATISTICS",
    "derived_metrics" : [ ],
    "effective_column" : null,
    "id" : "b1f1e000-59d0-4030-bfb7-c4bff9c5ddb4",
    "is_built_in" : false,
    "max_query_range" : 5,
    "metric_dimension" : 0,
    "metric_expand_dim" : null,
    "metric_format" : [ ],
    "metric_type" : "LOGGING",
    "name" : "name",
    "report_period" : 0
  } ]
}

SDK代码示例

SDK代码示例如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.huaweicloud.sdk.test;

import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.secmaster.v1.region.SecMasterRegion;
import com.huaweicloud.sdk.secmaster.v1.*;
import com.huaweicloud.sdk.secmaster.v1.model.*;


public class ListMetricsSolution {

    public static void main(String[] args) {
        // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
        // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
        String ak = System.getenv("CLOUD_SDK_AK");
        String sk = System.getenv("CLOUD_SDK_SK");
        String projectId = "{project_id}";

        ICredential auth = new BasicCredentials()
                .withProjectId(projectId)
                .withAk(ak)
                .withSk(sk);

        SecMasterClient client = SecMasterClient.newBuilder()
                .withCredential(auth)
                .withRegion(SecMasterRegion.valueOf("<YOUR REGION>"))
                .build();
        ListMetricsRequest request = new ListMetricsRequest();
        request.withWorkspaceId("{workspace_id}");
        try {
            ListMetricsResponse response = client.listMetrics(request);
            System.out.println(response.toString());
        } catch (ConnectionException e) {
            e.printStackTrace();
        } catch (RequestTimeoutException e) {
            e.printStackTrace();
        } catch (ServiceResponseException e) {
            e.printStackTrace();
            System.out.println(e.getHttpStatusCode());
            System.out.println(e.getRequestId());
            System.out.println(e.getErrorCode());
            System.out.println(e.getErrorMsg());
        }
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# coding: utf-8

import os
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdksecmaster.v1.region.secmaster_region import SecMasterRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdksecmaster.v1 import *

if __name__ == "__main__":
    # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak = os.environ["CLOUD_SDK_AK"]
    sk = os.environ["CLOUD_SDK_SK"]
    projectId = "{project_id}"

    credentials = BasicCredentials(ak, sk, projectId)

    client = SecMasterClient.new_builder() \
        .with_credentials(credentials) \
        .with_region(SecMasterRegion.value_of("<YOUR REGION>")) \
        .build()

    try:
        request = ListMetricsRequest()
        request.workspace_id = "{workspace_id}"
        response = client.list_metrics(request)
        print(response)
    except exceptions.ClientRequestException as e:
        print(e.status_code)
        print(e.request_id)
        print(e.error_code)
        print(e.error_msg)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main

import (
	"fmt"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
    secmaster "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v1"
	"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v1/model"
    region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/secmaster/v1/region"
)

func main() {
    // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
    // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
    ak := os.Getenv("CLOUD_SDK_AK")
    sk := os.Getenv("CLOUD_SDK_SK")
    projectId := "{project_id}"

    auth := basic.NewCredentialsBuilder().
        WithAk(ak).
        WithSk(sk).
        WithProjectId(projectId).
        Build()

    client := secmaster.NewSecMasterClient(
        secmaster.SecMasterClientBuilder().
            WithRegion(region.ValueOf("<YOUR REGION>")).
            WithCredential(auth).
            Build())

    request := &model.ListMetricsRequest{}
	request.WorkspaceId = "{workspace_id}"
	response, err := client.ListMetrics(request)
	if err == nil {
        fmt.Printf("%+v\n", response)
    } else {
        fmt.Println(err)
    }
}

更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。

状态码

状态码

描述

200

指标列表

400

错误响应

错误码

请参见错误码

相关文档