使用监控 API 标记
当您使用 Python 脚本或 IBM Cloud Monitoring REST API 自动执行例行任务和监控通知时,可以使用监控 API 标记来验证 IBM Cloud Monitoring 服务。
请考虑 IBM Cloud Monitoring 服务的每个实例的以下信息:
- 每个团队都有一个监控器 API 令牌。
- 如果令牌泄漏或组织的安全策略需要在特定条件后重置令牌,那么具有管理许可权的用户可以重置 API 令牌。
通过监控 UI 获取监控 API 令牌
完成以下步骤获取监控 API 令牌:
- 通过导航栏中的选择器按钮,选择设置。
- 从监控器 API 部分,复制监控器 API 令牌。
获取令牌后,您可以运行 API 调用并在 Authorization
標軸。
复制令牌时请包含 Bearer
关键词:Authorization: Bearer MONITOR_API_TOKEN
通过监控 UI 重置监控 API 令牌
完成以下步骤来重置监控 API 令牌:
- 通过导航栏中的选择器按钮,选择设置。
- 在 “监控 API”部分,单击“重置令牌”重置 API 令牌。
使用 API 获取监控 API 令牌
您可以使用Token API来获取Monitor API token。
例如,您可以使用以下内容cURL获取监控 API 令牌的命令:
curl -X GET <MONITORING_REST_API_ENDPOINT>/api/token -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"
GET <MONITORING_REST_API_ENDPOINT>/api/token -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"
位置
-
<MONITORING_REST_API_ENDPOINT>
表示 REST API 调用的目标端点。 有关详细信息,请参阅For more information, see REST API 端点。 例如,在美国南部可用的实例的公共端点如下:https://us-south.monitoring.cloud.ibm.com/api
-
您可以使用以下方式传递多个标头
-H
。Authorization
和IBMInstanceID
是身份验证所需的标题。SysdigTeamID
定义您想要获取监控 API 令牌的团队。要获得
AUTH_TOKEN
和GUID
看,IAM 令牌的标头。
当监控实例中允许的授权设置为 IAM_ONLY
,您会收到以下响应 {"errors":[{"reason":"Not enough privileges to complete the action","message":"Access is denied"}]}
当您尝试获取监控 API 令牌时。
示例 JSON 代码
您可以使用以下示例 JSON 代码来获取监控 API 令牌:
def get_sysdig_api_token(self, instance_guid):
""" Get the Monitor API token by calling the /api/token endpoint """
if self.access_token == None:
self.get_iam_token()
if self.access_token == None:
# If the token is still None we have problems ....
return None
headers = { "Authorization": self.access_token,
"Accept": "application/json",
"IBMInstanceID": instance_guid }
url = self.sysdig_endpoint + "/api/token"
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
return data["token"]["key"]
else:
print_error("Error getting Monitor API token - {}".format(response.text))
return None