Object Storage Service (OSS) は、基本的な分析のために、アクセスログに標準のフィールドセットを記録します。状況によっては、きめ細かいユーザー行動の追跡と分析を実行したり、情報監視を調整したりするために、カスタムフィールドをログに記録したい場合があります。この場合、監視するリクエストヘッダーとクエリパラメーターを記録するようにカスタムログフィールドを設定できます。カスタムログフィールドは、user_defined_log_fields フィールドに集約されます。
背景情報
HTTP リクエストは、主にリクエストヘッダーとクエリパラメーターによって特徴付けられます。OSS アクセスログは、デフォルトではリクエスト特性の一部のみを記録します。 OSS アクセスログの詳細については、「アクセスログ」をご参照ください。
関心のあるデータを監視するために、リクエストヘッダーとクエリパラメーターも記録するように OSS を設定できます。リクエストヘッダーとクエリパラメーターの詳細については、「RFC 2616」をご参照ください。
シナリオ
プロキシ分析:標準の OSS ログは、
x-forwarded-forヘッダーを記録しません。ミドルウェア分析のためにヘッダーを監視する場合は、ヘッダーをログに記録するようにカスタムログフィールドを設定できます。クエリパラメーターに基づくリクエストの分類:標準の OSS ログは、リクエスト URL のクエリパラメーターを記録しません。
http://bucketname.aliyuncs.com/hu.jpg?yyy=45&eee=88&rrr=huyanbinURL の rrr や eee などのクエリパラメーターをログに記録する場合は、パラメーターをログに記録するようにカスタムログフィールドを設定できます。
注意事項
各行には、1 つのリクエストヘッダーまたはクエリパラメーターのみが含まれます。合計 6 つのリクエストヘッダーとクエリパラメーターを指定できます。
ログ設定情報はエンコードされ、
user_defined_log_fieldsフィールドに入力されます。user_defined_log_fieldsフィールドの値は、Base64 エンコードされた JSON データです。JSON データには、JSON データが切り捨てられたかどうかを示す "truncated" フィールド、指定されたリクエストヘッダーを含む "headers" フィールド、および指定されたクエリパラメーターを含む "querys" フィールドが含まれます。リクエストヘッダーのカスタムフィールドキーにはハイフン(-)を含めることができますが、アンダースコア(_)を含めることはできません。クエリパラメーターのカスタムフィールドキーにはアンダースコア(_)を含めることができます。
リクエストヘッダーのカスタムフィールドキーは HTTP プロトコルに準拠している必要があり、アンダースコア(_)とコロン(:)を除く ASCII 印字可能文字(33 ~ 126)のみを含めることができます。
リクエストヘッダーとクエリパラメーターのすべてのカスタムフィールドのキーと値の合計の長さは、1,024 バイトの制限を超えることはできません。制限を超える後続データは切り捨てられます。カスタムログフィールドのキーは、ログでは小文字に変換されます。カスタムログフィールドの値には大文字小文字の変換は適用されません。ログフィールドの値は、リクエストで送信された情報を表し、長さの制限を超えた場合は切り捨てられます。
前提条件
バケットでリアルタイムログクエリ機能が有効になっています。詳細については、「リアルタイムログクエリ」をご参照ください。
バケットに送信されたリクエストには、関連するリクエストヘッダーまたはクエリパラメーターが含まれています。詳細については、「リクエストの開始」をご参照ください。
方法
OSS コンソールを使用する
ossutil を使用する
関連 API 操作
上記で説明した方法は、基本的に RESTful API に基づいて実装されており、ビジネスで高度なカスタマイズが必要な場合は、直接呼び出すことができます。API を直接呼び出すには、コードに署名計算を含める必要があります。詳細については、「PutUserDefinedLogFieldsConfig」をご参照ください。