모니터 API 토큰 관련 작업

Python 스크립트 또는 IBM Cloud Monitoring REST API를 사용하여 루틴 태스크를 자동화하고 알림을 모니터하는 경우에는 모니터 API 토큰을 사용하여 IBM Cloud Monitoring 서비스를 인증할 수 있습니다.

IBM Cloud Monitoring 서비스의 각 인스턴스에 대해 다음 정보를 고려하십시오.

  • 모니터 API 토큰은 팀당 한 개 있습니다.
  • 토큰이 손상되었거나 조직의 보안 정책에서 특정 조건 이후 토큰 재설정을 요구하는 경우, 관리 권한이 있는 사용자가 API 토큰을 재설정할 수 있습니다.

모니터링 UI를 통해 모니터 API 토큰 가져오기

모니터 API 토큰을 가져오려면 다음 단계를 완료하십시오.

  1. 탐색줄의 선택기 단추에서 설정을 선택하십시오.
  2. 모니터 API 섹션에서 모니터 API 토큰을 복사하십시오.

토큰을 가져오고 나면 API 호출을 실행하거나, Authorization 헤더에서 이 토큰을 사용할 수 있습니다.

토큰을 복사할 때 Bearer 키워드를 포함시키십시오(Authorization: Bearer MONITOR_API_TOKEN).

모니터링 UI를 통해 모니터 API 토큰 재설정

모니터 API 토큰을 재설정하려면 다음 단계를 완료하십시오.

  1. 탐색줄의 선택기 단추에서 설정을 선택하십시오.
  2. 모니터 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를 사용하여 여러 헤더를 전달할 수 있습니다.

    AuthorizationIBMInstanceID는 인증에 필요한 헤더입니다.

    SysdigTeamID 는 모니터 API 토큰을 받을 팀을 정의합니다.

    AUTH_TOKENGUID를 가져오려면 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