IBM Cloud Docs
使用监视 API 从 Monitoring 实例抽取度量

使用监视 API 从 Monitoring 实例抽取度量

您可以使用 Monitoring API 从 IBM Cloud Monitoring 实例中抽取度量值。

使用 cURL 获取度量值

您可以使用以下 cURL 命令 来获取度量值:

curl -X POST <SYSDIG_REST_API_ENDPOINT>/data -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json" -d DATA

Where

  • <SYSDIG_REST_API_ENDPOINT> 指示 REST API 调用所指向的端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api

  • 您可以使用 -H 来传递多个头。

    AuthorizationIBMInstanceID 是认证所需的头。

    SysdigTeamID 是可选的。 指定此头时,将请求限制为可用于指定团队的数据和资源。

    要获取 AUTH_TOKENGUID,请参阅 IAM 令牌的头

  • 您可以通过使用 -d 来传递文件 metrics.json 以抽取度量值,例如 -d @metrics.json

以下样本显示了 metrics.json 文件的模板:

{
  "start": "Number: seconds",
  "end": "Number: seconds",
  "last": "Number: last available seconds",
  "metrics": [
    {
      "id": "<>",
      "aggregations": {}
    }
  ],
  "sampling": "Number: <10|60|600|3600|86400>",
  "dataSourceType": "<host|container>",
  "filter": "<>",
  "paging": {
    "from": "Number",
    "to": "Number"
  }
}

度量字典

要查看 Sysdig 的失败前度量值,请参阅 度量值字典

要查看由启用了 Sysdig-enabled 的 IBM Cloud 服务定义的预定义度量,请参阅 云服务

数据聚集

要了解有关数据聚集的信息,请参阅 数据聚集

样本: 抽取平台度量

此示例显示如何在过去 24 小时内从 us-south 中的 Cloud Foundry 抽取平台度量值。

curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "content-type: application/json" -d @metrics.json

metrics.json 文件的以下示例显示了如何配置该文件以按实例标识,应用程序容器寿命和应用程序正在使用的字节数抽取数据:

{
  "metrics": [
    {
      "id": "ibm_resource"
    },
    {
      "id": "ibm_cloudfoundry_app_container_age",
      "aggregations": {"group": "max", "time": "max"}
    },
    {
      "id": "ibm_cloudfoundry_app_memory_bytes_used",
      "aggregations": {"group": "avg", "time": "avg"}
    }
  ],
  "filter": "ibm_location = \"us-south\"",
  "sampling": 86400,
  "last": 86400
}

抽取数据的结果将返回以下信息:

{
  "data": [
    {
      "d": [
        "73a9d202-7e97-45b2-a107-3b1528856be3",
        316660942465643,
        18809015.575
      ],
      "t": 1587772800
    }
  ],
  "end": 1587772800,
  "start": 1587686400
}

样本: 抽取 CPU 数据

此示例显示如何按主机抽取具有开始,结束和采样限制的 CPU 数据。

metrics.json 文件的以下示例显示如何配置该文件以抽取 CPU 数据:

{
  "start":"1555404790",
  "end":"1555404850",
  "sampling": 10,
  "metrics": [
    {
      "id": "host.hostName"
    },
    {
      "id": "cpu.used.percent",
      "aggregations": {"time": "avg"}
    }
  ],
  "dataSourceType": "host"
}

抽取数据的结果将返回以下信息:

{
  "data": [
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.621
      ],
      "t": 1555404800
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.597
      ],
      "t": 1555404810
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.993
      ],
      "t": 1555404820
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        3.145
      ],
      "t": 1555404830
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        4.09
      ],
      "t": 1555404840
    },
    {
      "d": [
        "j-rhel71.fyre.ibm.com",
        5.057
      ],
      "t": 1555404850
    }
  ],
  "end": 1555404850,
  "start": 1555404790
}

样本: cURL 样本,用于抽取最新度量

要获取度量的最新值,请仅指定度量名称。 返回不超过 5 分钟前生成的最新值。

例如,要获取 host_cpu_used_percent 的最新值:

curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

Where

  • <SYSDIG_REST_API_ENDPOINT> 指示 REST API 调用所指向的端点。 有关更多信息,请参阅 监视 REST API 端点。 例如,在 us-south 中可用的实例的公共端点如下所示: https://us-south.monitoring.cloud.ibm.com/api

  • 您可以使用 -H 来传递多个头。

    AuthorizationIBMInstanceID 是认证所需的头。

    SysdigTeamID 是可选的。 指定此头时,将请求限制为可用于指定团队的数据和资源。

    要获取 AUTH_TOKENGUID,请参阅 IAM 令牌的头

所有仪表板都支持完整的 PromQL API。 如需了解 PromQL, 的更多信息,请参阅 Prometheus 文档

样本: cURL 样本,用于抽取团队的 CPU 数据

此示例显示如何抽取团队上下文中可用的 CPU 数据。

curl -X POST https://us-south.monitoring.cloud.ibm.com/api/data -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: 30785" -H "content-type: application/json" -d @metrics.json

样本: 将度量数据从 Monitoring 抽取到 Event Streams

您可以使用以下代码示例将度量从 Monitoring 实例抽取到 Event Streams。

  • <region> 替换为 Monitoring 实例的区域,例如 us-east
  • <apikey> 替换为 IBM Cloud IAM API 密钥令牌
  • <instance_id> 替换为 Monitoring 实例的标识。
  • metrics 字段替换为要抽取的度量的 JSON 数组。 示例度量值为 cpu.cores.used
from sdcclient import IbmAuthHelper, SdMonitorClient
endpoint = "https://<region>.monitoring.cloud.ibm.com"
apikey = "<apikey>"
instanceID = "<instance_id>"
ibm_headers = IbmAuthHelper.get_headers(endpoint, apikey, instanceID)
sdclient = SdMonitorClient(sdc_url=endpoint, custom_headers=ibm_headers)
metrics = [
    {
    "id": "cpu.cores.used",
    "aggregations": {
        "time": "avg",
        "group": "sum"
    }
    }
]
filter = None
start = -120
end = 0
sampling = 60
ok, res = sdclient.get_data(metrics, start, end, sampling, filter=filter, datasource_type = "container")
print(ok)
print(res)
return res

样本: 使用 Event Streams REST API 将通知从 Monitoring 抽取到 Event Streams

  1. 创建 Event Streams 实例

    • 从定价计划中,选择 企业套餐
    • 如果需要,请在 IAM 中为 Event Streams 设置 授权,以将 KMS 提供程序 (例如 Key Protect) 作为目标,然后刷新页面。
    • 对于 服务端点,选择具有 专用 网络的选项。
  2. 等待几分钟以供应 Event Streams 实例。

  3. 在 Event Streams 实例中,创建主题,例如 kafka-java-console-sample-topic

  4. 在私有云服务端点上为 Event Streams 实例的凭证创建服务密钥。

    • <name>:输入服务密钥的名称。
    • <event_streams_instance>:请替换为您的 Event Streams 实例名称。
    ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private
    
  5. 在先前命令的输出中,获取进行 REST 调用所需的详细信息。

    • api_key
    • kafka_http_url

    输出示例:

    api_key:      123465123456123465123465123465123465
    kafka_http_url:           https://mh-<id>.private.us-south.messagehub.appdomain.cloud
    
  6. Monitoring 仪表板中,单击要使用的 Monitoring 实例的 打开仪表板

  7. 单击 入门> 配置通知通道> 配置通知通道“设置” 页面打开。

  8. 单击 + 添加通知通道,然后选择 Webhook 选项。

  9. 配置 Webhook 通知通道。 创建 Webhook 通知通道后,必须继续为该通道设置认证。

    • 对于 URL,请输入服务密钥中的 kafka_http_url,并将 /topics/<topic>/records 路由添加到 URL 中。 <topic> 是您用 Event Streams 实例创建的主题名称。
    • 对于 名称,输入 Webhook 通知通道的名称。
    • 将其他字段保留为缺省设置。
    • 点击 “保存” 创建频道。
  10. 获取 IAM 令牌 以向 Monitoring API 认证您的请求。

  11. Curl Monitoring API 以列出通知通道。

  • <region> 替换为 Monitoring 实例的区域,例如 us-east
  • <token> 替换为先前检索的 IAM 令牌。
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

在输出中,请注意通知频道的 id,其中 options.url 字段与 URL 您之前创建的。

 {
     "id": 123,
     "version": 6,
     ...
     "options": {
         "notifyOnOk": true,
         "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud",
         "notifyOnResolve": true
     }
 },
  1. Curl Monitoring API,用于将认证头添加到 Webhook 通知通道。
  • <region> 替换为 Monitoring 实例的区域,例如 us-east
  • <id> 替换为先前检索的通知通道的标识。
  • <token> 替换为先前检索的 IAM 令牌。
curl -X PUT ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels/<id>' \
--header ‘Content-Type: application/json’
--header ‘Authorization: Bearer <token>’ -d @/tmp/notification.json
  1. Curl Monitoring API 再次确认使用认证头更新通知通道。
  • <region> 替换为 Monitoring 实例的区域,例如 us-east
  • <token> 替换为先前检索的 IAM 令牌。
curl ’https://<region>.monitoring.cloud.ibm.com/api/notificationChannels' --header ‘Authorization: Bearer <token>’ | jq

在输出中,请注意 additionalHeaders.X-Auth-Token 字段已添加到通知通道。

{
"notificationChannel":
    {
        "id": 123,
        ....
        "options": {
            "notifyOnOk": true,
            "url": "https://mh-<id>.private.us-south.messagehub.appdomain.cloud/topics/kafka-java-console-sample-topic/records",
            "notifyOnResolve": true,
            "additionalHeaders": {
                "X-Auth-Token": "123456123456123456123456123465123456"
    ...
  1. 设置警报,该警报使用您为 Event Streams创建的 Webhook 通知通道。

现在,从 Event Streams触发警报时,可以查看 Monitoring 实例中的详细信息。