本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 HLC 端點傳送日誌 (HLC 日誌)
HLC Logs 端點 (/services/collector/event) 是以 HTTP Log Collector (HLC) 格式為基礎。
如果您使用承載字符身分驗證,請先完成 中的設定步驟,設定承載字符身分驗證再繼續。
輸入模式
每個事件都是具有必要"event"欄位的 JSON 物件。選用中繼資料欄位:"time"、"host"、"source"、"sourcetype"、"index"。
單一事件:
{"event":"Hello world!","time":1486683865.0}
事件的 JSON 陣列:
[ {"event":"msg1","time":1486683865.0}, {"event":"msg2","time":1486683866.0} ]
串連/批次事件 (無陣列包裝函式):
{"event":"msg1","time":1486683865.0}{"event":"msg2","time":1486683866.0}
事件欄位 (必要)
欄位為必要"event"欄位。其值可以是任何 JSON 類型:
{"event":"a string message"} {"event":{"message":"structured data","severity":"INFO"}} {"event":42} {"event":true}
無 "event" 欄位的物件會無提示地略過:
{"message":"this is skipped — no event field"}
時間欄位 (選用)
"time" 欄位以 epoch 秒 (非毫秒) 為單位,選用小數表示次秒精確度。
| 格式 | 範例 | 解譯為 |
|---|---|---|
| Float | "time":1486683865.500 |
1486683865500 毫秒 |
| Integer | "time":1486683865 |
1486683865000 毫秒 |
| 字串 (浮點數) | "time":"1486683865.500" |
1486683865500 毫秒 |
| 字串 (整數) | "time":"1486683865" |
1486683865000 毫秒 |
| 缺少 | (無時間欄位) | 伺服器目前時間 |
| 無效 | "time":"invalid" |
伺服器目前時間 |
內容類型
僅接受 application/json 。
接受的 JSON 值類型
| 最上層類型 | Behavior (行為) |
|---|---|
具有 的物件 "event" |
已接受 |
沒有 的物件 "event" |
略過 |
| 物件的陣列 | 個別處理的每個元素 |
| 串連物件 | 個別處理的每個物件 |
| 基本 (字串、數字、布林值、 null) | 略過 |
端點格式
HLC 端點 URL 遵循此格式:
https://logs.<region>.amazonaws.com/services/collector/event?logGroup=<name>&logStream=<name>[&entityName=<name>&entityEnvironment=<environment>]
必要參數:
<region>– AWS Region (例如,us-east-1、eu-west-1)logGroup– URL 編碼的日誌群組名稱logStream– URL 編碼的日誌串流名稱
選用參數:
您可以選擇性地將日誌事件與Service實體建立關聯,方法是包含下列查詢參數。由於透過 HLC 端點傳送的日誌是自訂遙測,因此不會自動與實體建立關聯。透過提供這些參數,CloudWatch Logs 會建立將 KeyAttributes.Type 設定為 的實體,Service並將其與您的日誌事件建立關聯。這可讓 CloudWatch 中的探索相關功能將這些日誌與來自相同服務的其他遙測 (指標、追蹤和日誌) 建立關聯,讓您更輕鬆地疑難排解和監控不同訊號類型的應用程式。如需實體和相關遙測的詳細資訊,請參閱將相關資訊新增至自訂遙測。
entityName– 要與日誌事件建立關聯的服務實體名稱。此值會儲存為實體KeyAttributes.Name(例如my-application或api.myservice.com)。entityEnvironment– 託管服務或其所屬的環境。此值會儲存為實體KeyAttributes.Environment(例如production、ec2:default或eks:my-cluster/default)。
要求格式
使用 HTTP POST 搭配下列標頭和內文來傳送日誌:
標頭:
Authorization: Bearer <your-bearer-token>Content-Type: application/json
內文格式:
請求內文應為 JSON 格式,其中包含一系列事件:
{ "event": [ { "time": 1730141374.001, "event": "Application started successfully", "host": "web-server-1", "source": "application.log", "severity": "info" }, { "time": 1730141374.457, "event": "User login successful", "host": "web-server-1", "source": "auth.log", "user": "john.doe" } ] }
欄位描述:
time– 以秒為單位的 Unix epoch 時間戳記,選用小數表示次秒精確度 (選用)event– 日誌訊息或事件資料 (必要)host– 來源主機名稱或識別符 (選用)source– 日誌來源識別符 (選用)
您可以視需要包含其他自訂欄位。
範例請求
curl -X POST "https://logs.<region>.amazonaws.com/services/collector/event?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/json" \ -d '{"event":{"message":"User logged in","user_id":"u-123"},"time":1486683865.0,"host":"web-01","source":"auth-service"}'
最佳實務
批次處理事件
為了獲得更好的效能和效率:
盡可能在單一請求中批次處理多個事件
建議的批次大小:每個請求 10–100 個事件
請求大小上限:1 MB
錯誤處理
在應用程式中實作適當的錯誤處理。常見的 HTTP 狀態碼:
200 OK– 日誌已成功擷取400 Bad Request– 無效的請求格式或參數401 Unauthorized– 承載字符無效或過期403 Forbidden– 許可不足404 Not Found– 日誌群組或串流不存在429 Too Many Requests– 超過速率限制500 Internal Server Error– 服務錯誤 (以指數退避重試)
限制
事件大小上限:每個事件 256 KB
請求大小上限:1 MB
每個請求的事件上限:10,000
日誌群組名稱必須遵循 CloudWatch Logs 命名慣例
如果使用承載字符身分驗證,則必須在日誌群組上啟用承載字符身分驗證。