727
阿裏雲
PostLogStoreLogs__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
PostLogStoreLogs
向指定LogStore寫入日誌數據。目前僅支持寫入PB格式LogGroup日誌數據。寫入時有兩種模式:
- 負載均衡模式(LoadBalance): 自動根據Logstore下所有可寫的Shard進行負載均衡寫入。該方法對寫入可用性較高(SLA: 99.95%),適合寫入與消費數據與Shard無關場景,例如不保序
- 根據Key路由Shard模式(KeyHash):寫入時需要傳遞一個Key,服務端自動根據Key選擇當前符合該Key區間Shard寫入。例如可以將某個生產者(例如instance)根據名稱Hash到固定Shard上,這樣就能保證寫入與消費在該Shard上是嚴格有序的(在Merge/Split過程中能夠嚴格保證對於Key在一個時間點隻會出現在一個Shard上,參見Shard數據模型)。
請求語法
負載均衡寫入模式
POST /logstores/<logstorename>/shards/lb HTTP/1.1
Authorization: <AuthorizationString>
Content-Type: application/x-protobuf
Content-Length: <Content Length>
Content-MD5: <Content MD5>
Date: <GMT Date>
Host: <Project Endpoint>
x-log-apiversion: 0.6.0
x-log-bodyrawsize: <BodyRawSize>
x-log-compresstype: lz4
x-log-signaturemethod: hmac-sha1
<PB格式日誌壓縮數據>
根據Key路由Shard模式
在header中增加x-log-hashkey,用來判斷落在哪個shard的range中。該參數可選參數,不填情況下自動切換負載均衡寫模式。
POST /logstores/<logstorename>/shards/lb HTTP/1.1
Authorization: <AuthorizationString>
Content-Type: application/x-protobuf
Content-Length: <Content Length>
Content-MD5: <Content MD5>
Date: <GMT Date>
Host: <Project Endpoint>
x-log-apiversion: 0.6.0
x-log-bodyrawsize: <BodyRawSize>
x-log-compresstype: lz4
x-log-hashkey : 14d2f850ad6ea48e46e4547edbbb27e0
x-log-signaturemethod: hmac-sha1
<PB格式日誌壓縮數據>
請求參數
名稱 | 類型 | 必選 | 描述 |
---|---|---|---|
logstorename | 字符串 | 是 | 需要寫入日誌的Logstore名稱。 |
請求頭
根據Key路由Shard模式下需要增加x-log-hashkey請求頭(參見上述示例),關於API的公共請求頭請參考公共請求頭。
響應頭
無特有響應頭,關於API的公共響應頭請參考公共響應頭。
響應元素
成功後無任何響應元素。
細節描述
- PutLogs接口每次可以寫入的日誌數據量上限為3MB或者4096條。隻要日誌數據量超過這兩條上限中的任意一條則整個請求失敗,且無任何日誌數據成功寫入。
- 服務端會對每次PutLogs寫入的日誌數據做格式檢查(具體日誌格式要求請參考[核心概念](core.md),隻要日誌數據中有任何一條日誌不符合規範,則整個請求失敗,且無任何日誌數據成功寫入。
- 服務端會對每次PutLogs寫入的日誌數據時間戳做檢查。目前隻接受日誌數據時間戳在服務端當前處理時間前後[-7x24小時, +15分鍾]小時範圍內的日誌。如果日誌數據內有任何一條日誌的時間戳不在該時間範圍內,則整個請求失敗,且無任何日誌數據成功寫入。
錯誤碼
除了返回API的通用錯誤碼,還可能返回如下特有錯誤碼:
HTTP狀態碼(Status Code) | 錯誤碼(Error Code) | 錯誤消息(Error Message) | 描述(Description) |
---|---|---|---|
400 | PostBodyInvalid | Protobuffer content cannot be parsed. | Protobuffer內容不能夠解析。 |
400 | InvalidTimestamp | Invalid timestamps are in logs. | 日誌內容中有無效的日誌時間戳。 |
400 | InvalidEncoding | Non-UTF8 charactors are in logs. | 日誌內容中有非UTF8字符。 |
400 | InvalidKey | Invalid keys are in logs. | 日誌內容中有無效的”key”。 |
400 | PostBodyTooLarge | Logs must be less than 3M and 4096 lines. | 日誌內容包含的日誌必須小於3MB和4096條。 |
400 | PostBodyUncompressError | Body is uncompressed fail. | 日誌內容解壓失敗。 |
499 | PostBodyInvalid | The post data time is out of range | 日誌中時間範圍不再[-7*24Hour, +15Min] 有效範圍內。 |
404 | LogStoreNotExist | logstore {Name} not exist. | 日誌庫(Logstore)不存在。 |
上表錯誤消息中{name}表示該部分會被具體的Logstore Name來替換。
示例
請求示例:
POST /logstores/sls-test-logstore
{
"Content-Length": 118,
"Content-Type":"application/x-protobuf",
"x-log-bodyrawsize":1356,
"Host": "ali-test-project.cn-hangzhou-devcommon-intranet.sls.aliyuncs.com",
"Content-MD5":"6554BD042149C844761C2C094A8FECCE",
"Date":"Thu, 12 Nov 2015 06:54:26 GMT",
"x-log-apiversion": "0.6.0",
"x-log-compresstype":"lz4"
"x-log-signaturemethod": "hmac-sha1",
"Authorization":"LOG 94to3z418yupi6ikawqqd370:zLyKtgyGpwyv7ntXZs2dY2wWIg4="
}
<PB格式日誌使用Lz4壓縮後的二進製數據>
響應示例:
Header
{
"date": "Thu, 12 Nov 2015 06:53:03 GMT",
"connection": "close",
"x-log-requestid": "5644160399248C060600D216",
"content-length": "0",
"server": "nginx/1.6.1"
}
最後更新:2016-12-12 16:39:39
上一篇:
PullLogs__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
下一篇:
GetShipperStatus__日誌庫相關接口_API-Reference_日誌服務-阿裏雲
日誌庫(Logstore)__基礎概念_用戶指南_日誌服務-阿裏雲
認證考試學習方法__大數據認證(ACP級)_如何獲得專業技術認證?_專業技術認證-阿裏雲
GetRole__角色管理接口_RAM API文檔_訪問控製-阿裏雲
新建自定義路由__路由表相關接口_API 參考_雲服務器 ECS-阿裏雲
基本參數__圖片水印_老版圖片服務手冊_對象存儲 OSS-阿裏雲
刪除端口轉發規則__NAT網關相關接口_API 參考_雲服務器 ECS-阿裏雲
SSH 登錄集群__用戶指南_E-MapReduce-阿裏雲
步驟4:推送雲產品__快速入門_證書服務-阿裏雲
優先級__運算符_SQL語法參考_雲數據庫 OceanBase-阿裏雲
3.5 索引__第三章 DDL_使用手冊_分析型數據庫-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲