透過API傳送日誌
您可以使用汲取 API,將日誌傳送至 IBM Cloud Logs 實例。
使用不記名令牌進行身份驗證
您必須取得 IBM Cloud® Identity and Access Management (IAM) 存取記號,才能鑑別您的要求。
若要使用IBM Cloud CLI 取得令牌,請完成下列步驟:
-
登入 IBM Cloud。
確保您登入的實體具有IBM Cloud Logs服務的
Sender角色。 -
執行下列指令:
ibmcloud iam oauth-tokens -
將此令牌以 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 持有人記號 用來要求對日誌的授權。 需要 pemissionlogs.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 物件:
| 內容名稱 | 內容類型 | 必要 | 其他資訊 |
|---|---|---|---|
applicationName |
string |
True | |
subsystemName |
string |
True | |
text |
string/json |
True | 如果您使用 Ajax 或類似技術,則可能需要使用 JSON.stringify() 來傳送資料。 |
severity |
number |
否 | 1 – Debug2 – Verbose3 – Info4 – Warn5 – Error6 – 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 選項提供詳細輸出,可協助您判斷指令是否順利完成,或是否有授權或連線功能問題。