使用 Monitor API 令牌

當您使用 Python 腳本或 IBM Cloud Monitoring REST API 來自動執行例行任務和監控通知時,您可以使用 Monitor API 令牌來驗證 IBM Cloud Monitoring 服務。

請考量每一個 IBM Cloud Monitoring 服務實例的下列資訊:

  • 每個隊伍有一個 Monitor API 令牌。
  • 如果記號已遭洩露,或您組織的安全原則需要在特定條件之後重設記號,則具有管理許可權的使用者可以重設 API 記號。

透過監視使用者介面取得監視 API 記號

完成下列步驟以取得 Monitor API token:

  1. 從導覽列的選取器 按鈕中,選擇設定
  2. Monitor API 區段,複製 Monitor API Token

取得記號之後,您可以執行 API 呼叫,並在 Authorization 標頭中使用此記號。

當您複製記號時,請包含 Bearer 關鍵字: Authorization: Bearer MONITOR_API_TOKEN

透過監視使用者介面重設監視 API 記號

請完成下列步驟來重設 Monitor API 記號:

  1. 從導覽列的選取器 按鈕中,選擇設定
  2. 在「監視 API」區段中,按一下「重設令牌」以重設 API 令牌。

使用 API 取得 Monitor API 記號

您可以使用記號 API 來取得監視 API 記號。

例如,您可以使用下列 cURL 指令來取得 Monitor 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 端點。 例如,us-south 中可用實例的公用端點如下: https://us-south.monitoring.cloud.ibm.com/api

  • 您可以使用 -H 來傳遞多個標頭。

    AuthorizationIBMInstanceID 是鑑別所需的標頭。

    SysdigTeamID 定義您要取得 Monitor API 記號的團隊。

    若要取得 AUTH_TOKENGUID,請參閱 IAM 記號的標頭

當監視實例中容許的授權設為 IAM_ONLY 時,當您嘗試取得監視 API 記號時,會收到下列回應 {"errors":[{"reason":"Not enough privileges to complete the action","message":"Access is denied"}]}

範例 JSON 程式碼

您可以使用下列範例 JSON 程式碼來取得 Monitor 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