모니터 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 토큰 가져오기
토큰 API를 사용하여 모니터 API 토큰을 가져올 수 있습니다.
예를 들어, 다음 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 호출이 대상으로 하는 엔드포인트를 나타냅니다. 자세한 정보는 REST API 엔드포인트를 참조하십시오. 예를 들어, 미국에서 사용 가능한 인스턴스에 대한 공용 엔드포인트는 다음과 같습니다.https://us-south.monitoring.cloud.ibm.com/api -
-H를 사용하여 여러 헤더를 전달할 수 있습니다.Authorization및IBMInstanceID는 인증에 필요한 헤더입니다.SysdigTeamID는 모니터 API 토큰을 받을 팀을 정의합니다.AUTH_TOKEN및GUID를 가져오려면 IAM 토큰에 대한 헤더를 참조하십시오.
모니터링 인스턴스에서 허용되는 권한이 IAM_ONLY로 설정된 경우 모니터 API 토큰을 가져올 때 {"errors":[{"reason":"Not enough privileges to complete the action","message":"Access is denied"}]} 응답이 표시됩니다.
샘플 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