この操作を呼び出して、特定の Logstore にログデータを書き込むことができます。 現時点では、Protocol Buffers (Protobuf) 形式のロググループのみが記述できます。
注 ログデータは、ロググループ単位でパッケージ化されます。
2 つの書き込みモードがあります。
- LoadBalance モード:Log Service は、LoadBalance モードで Logstore 内のすべての書き込み可能なシャードにログ データを自動的に書き込みます。 このモードはデータの書き込み可能性が高いです (SLA:99.95)。 この方法は、データの書き込みと消費がシャードとは独立しているシナリオ (例:非リオーダリング) に適用可能です。
- KeyHash モード:データを書き込む場合にキーが指定されます。 Log Service は、MD5 値の範囲にキー値が含まれているシャードにログデータを自動的に書き込みます。 たとえば、Log Service は、名前に基づいてインスタンスなどのプロデューサを固定シャードにハッシュして、シャードにデータが厳密に書き込まれ、使用されるようにすることができます。 シャードをマージまたは分割すると、キーは一度にシャードの MD5 値範囲のみに含まれます。 詳細については、「シャード」をご参照ください。
リクエスト構文
LoadBalance モード
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
<Compressed data of logs in Protobuf format>
KeyHash モード
Log Service は、MD5 値幅にキー値を含むシャードを指定するために x-log-hashkey フィールドをリクエストヘッダーに追加します。 このフィールドはオプションです。
このフィールドを指定しない場合、ログ サービスは自動的に LoadBalance モードでログ データを書き込みます。
POST /logstores/<logstorename>/shards/lb HTTP/1.1
Authorization:<AuthorizationString>
Content-Type: application/json
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
<Compressed data of logs in Protobuf format>
リクエストパラメーター
パラメーター | データ型 | 必須 / 省略可能 | 説明 |
---|---|---|---|
logstorename | String | 必須 | ログを書き込む LogStore の名前。 |
KeyHash モードでは、x-log-hashkey フィールドをリクエストヘッダーに追加する必要があります。 詳細については、前述のリクエスト構文をご参照ください。
Log Service 操作の一般的なリクエストヘッダーフィールドの詳細については、「一般的なリクエストヘッダーフィールド」をご参照ください。
レスポンスヘッダーフィールドこの操作は、特別なレスポンスヘッダーフィールドを返しません。 log Service 操作の一般的なレスポンスヘッダーフィールドの詳細については、「一般的なレスポンスヘッダーフィールド」をご参照ください。
レスポンスパラメーターリクエストが送信された後、レスポンスは返されません。
詳細な説明- PutLogs 操作を使用すると、最大 3 MB まで、最高 4,096 個のログを書き込むことができます。 ロググループ内のログは、1 つのサイズが 1 MB を超えることはできません。 上記のいずれかの条件が満たされないと、リクエストが失敗し、ログデータの書き込みができません。
- Log Service は、PutLogs 操作によって書き込まれたログデータの形式をチェックします。 基本概念についての詳細は、「基本概念 (Basic concepts)」をご参照ください。 ログが形式仕様に準拠していないと、リクエストが失敗し、ログデータの書き込みはできません。
Log Service 操作の 一般的なエラー に加えて、この操作は以下の表に載っている特定のエラーも返します。
HTTP ステータスコード | エラーコード | エラーメッセージ | 説明 |
---|---|---|---|
400 | PostBodyInvalid | Protobuffer content cannot be parsed. | Protobuf 形式のログを解析できないため、エラーメッセージが返されました。 |
400 | InvalidTimestamp | Invalid timestamps are in logs. | ログに無効なタイムスタンプが含まれているため、エラーメッセージが返されました。 |
400 | InvalidEncoding | Non-UTF8 characters are in logs. | ログに UTF-8 でエンコードされていない文字が含まれているため、エラーメッセージが返されました。 |
400 | InvalidKey | Invalid keys are in logs. | ログに無効なキーが含まれているため、エラーメッセージが返されました。 |
400 | PostBodyTooLarge | Logs must be less than or equal to 3 MB and 4096 entries. | ログの数が 4,096 を超えるか、ログのサイズが 3 MB を超えているため、エラーメッセージが返されました。 |
400 | PostBodyUncompressError | Failed to decompress logs. | ログの解凍に失敗したため、エラーメッセージが返されました。 |
499 | PostBodyInvalid | The post data time is out of range | ログ タイムスタンプが [-7 × 24 時間+15 分] の有効な間隔を超えているため、エラーメッセージが返されました。 |
404 | LogStoreNotExist | logstore {Name} does not exist. | 指定された VPC ID が存在しない場合に表示されるエラーメッセージ。 |
注 表中のエラーメッセージの {name} 変数は、特定の Logstore 名に置き換えられます。
例
リクエスト例
POST /logstores/sls-test-logstore
{
Content-Length:180
"Content-Type":"application/x-protobuf",
"x-log-bodyrawsize":1356,
"ホスト": "ali-test-project.cn-hangzhou-devcommon-intranet.sls.aliyuncs.com",
"コンテンツ-MD5""6554BD04149C844761C2C094A8FECCE",
"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 <yourAccessKeyId>:<yourSignature>"
}
<Binary data obtained after logs in Protobuf format are compressed by using the LZ4 algorithm>
サンプル成功例
Header
{
"date": "Thu, 12 Nov 2015 06:53:03 GMT",
"connection": "close",
"x-log-requestid": "5644160399248C060600D216",
"content-length": "0",
"server": "nginx/1.6.1"
}