使用监视 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
来传递多个头。Authorization
和IBMInstanceID
是认证所需的头。SysdigTeamID
是可选的。 指定此头时,将请求限制为可用于指定团队的数据和资源。要获取
AUTH_TOKEN
和GUID
,请参阅 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
来传递多个头。Authorization
和IBMInstanceID
是认证所需的头。SysdigTeamID
是可选的。 指定此头时,将请求限制为可用于指定团队的数据和资源。要获取
AUTH_TOKEN
和GUID
,请参阅 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
-
- 从定价计划中,选择 企业套餐。
- 如果需要,请在 IAM 中为 Event Streams 设置 授权,以将 KMS 提供程序 (例如 Key Protect) 作为目标,然后刷新页面。
- 对于 服务端点,选择具有 专用 网络的选项。
-
等待几分钟以供应 Event Streams 实例。
-
在 Event Streams 实例中,创建主题,例如
kafka-java-console-sample-topic
。 -
在私有云服务端点上为 Event Streams 实例的凭证创建服务密钥。
<name>
:输入服务密钥的名称。<event_streams_instance>
:请替换为您的 Event Streams 实例名称。
ibmcloud resource service-key-create <name> Writer --instance-name <event_streams_instance> --service-endpoint private
-
在先前命令的输出中,获取进行 REST 调用所需的详细信息。
api_key
kafka_http_url
输出示例:
api_key: 123465123456123465123465123465123465 kafka_http_url: https://mh-<id>.private.us-south.messagehub.appdomain.cloud
-
从 Monitoring 仪表板中,单击要使用的 Monitoring 实例的 打开仪表板。
-
单击 入门> 配置通知通道> 配置通知通道。 “设置” 页面打开。
-
单击 + 添加通知通道,然后选择 Webhook 选项。
-
配置 Webhook 通知通道。 创建 Webhook 通知通道后,必须继续为该通道设置认证。
- 对于 URL,请输入服务密钥中的
kafka_http_url
,并将/topics/<topic>/records
路由添加到 URL 中。<topic>
是您用 Event Streams 实例创建的主题名称。 - 对于 名称,输入 Webhook 通知通道的名称。
- 将其他字段保留为缺省设置。
- 点击 “保存” 创建频道。
- 对于 URL,请输入服务密钥中的
-
获取 IAM 令牌 以向 Monitoring API 认证您的请求。
-
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
}
},
- 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
- 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"
...
- 设置警报,该警报使用您为 Event Streams创建的 Webhook 通知通道。
现在,从 Event Streams触发警报时,可以查看 Monitoring 实例中的详细信息。