透過API傳送日誌

您可以使用汲取 API,將日誌傳送至 IBM Cloud Logs 實例。

使用不記名令牌進行身份驗證

您必須取得 IBM Cloud® Identity and Access Management (IAM) 存取記號,才能鑑別您的要求。

若要使用IBM Cloud CLI 取得令牌,請完成下列步驟:

  1. 登入 IBM Cloud。

    確保您登入的實體具有IBM Cloud Logs服務的 Sender 角色。

  2. 執行下列指令:

    ibmcloud iam oauth-tokens
    
  3. 將此令牌以 Bearer 形式放置在 HTTP 請求的 Authorization 標頭中 .

例如,您可以執行下列 CLI 指令來擷取 IAM 持有人記號,並將它匯出為環境變數:

export IAM_TOKEN=`ibmcloud iam oauth-tokens --output json | jq -r '.iam_token'`

使用cURL發送日誌

下表概述端點詳細資料:

單次攝取端點詳細信息
詳細資料 值
URL <INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles
HTTP Method POST
標頭 Content-Type application/json
標頭 Authorization Bearer $IAM_TOKEN

其中

  • INSTANCE_ID: 您要傳送日誌之 IBM Cloud Logs 實例的 GUID。
  • REGION: IBM Cloud Logs 實例所在的區域。
  • IAM_TOKEN: IAM 持有人記號 用來要求對日誌的授權。 需要 pemission logs.data.send。

使用以下cURL命令發送日誌行:

curl -v --location "<INSTANCE_ID>.ingress.<REGION>.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "ENTER_APPLICATION_NAME",
      "subsystemName": "ENTER_SUBSYSTEM_NAME",
      "severity": "ENTER_SEVERITY",
      "computerName": "ENTER_VALUE",
      "text": ENTER_LOG_LINE,
      "category": "ENTER_VALUE",
      "className": "ENTER_VALUE",
      "methodName": "ENTER_VALUE",
      "threadId": "ENTER_VALUE"
    }]'

下表概述您可以在要求中每個日誌行包含的 JSON 物件:

JSON 物件數組
內容名稱 內容類型 必要 其他資訊
applicationName string True
subsystemName string True
text string/json True 如果您使用 Ajax 或類似技術,則可能需要使用 JSON.stringify() 來傳送資料。
severity number 否 1 – Debug
2 – Verbose
3 – Info
4 – Warn
5 – Error
6 – Critical
如果未指定,將使用 1 – Debug 。
timestamp number 否 UTC 毫秒。 如果未指定,則會使用日誌到達閘道的時間。
computerName string 否
category string 否
className string 否
methodName string 否
threadId string 否
hiResTimestamp string 否 UTC 奈秒

如果您未指定 severity,則日誌會獲指派 1 – Debug 的嚴重性。

每個要求最多可以傳送 2MB,即大約 3,000 個中型日誌。

例如,您可以執行下列指令,將日誌傳送至 eu-es 地區中的實例:

curl -v --location "https://90d208cc-e1dd-4fb2-a938-358e5996f056.ingress.eu-es.logs.cloud.ibm.com/logs/v1/singles" \
--header "Content-Type: application/json" \
--header "Authorization: $IAM_TOKEN" \
--data '[{
      "applicationName": "cs-rest-test3",
      "subsystemName": "cs-rest-test3",
      "computerName": "computer test3",
      "text": {"key":"value","message":"148.145.31.214 - user [24/Oct/2023:15:54:46 +0000] \"PATCH /maximized/Triple-buffered_Managed/core.hmtl HTTP/1.1\" 400 7074 1.666 \"-\" \"Mozilla/5.0 (Macintosh; PPC Mac OS X 10_6_4 rv:6.0) Gecko/1929-02-10 Firefox/37.0\" \"-\"","countryme":"Italy"},
      "category": "cat-1",
      "className": "class-1",
      "methodName": "method-1",
      "threadId": "thread-1"
    }]'

-v 選項提供詳細輸出,可協助您判斷指令是否順利完成,或是否有授權或連線功能問題。