Simple Log Service (SLS) のリアルタイムログクエリ機能を使用して、Object Storage Service (OSS) のアクセスログと時間単位のメータリングログを分析できます。これにより、OSS の使用状況を監視および最適化し、問題を特定および分析して、ストレージとアクセスの効率を向上させることができます。このトピックでは、リアルタイムログクエリの一般的な例を説明します。
OSS フォルダー内のファイルのインターネットへのアウトバウンドトラフィックの分析
OSS の使用状況クエリは、特定のフォルダーにスコープを限定できません。フォルダー内のファイルのインターネットへのアウトバウンドトラフィックを計算するには、OSS アクセスログを分析します。ログでは、host フィールドを使用してパブリックエンドポイントでフィルタリングし、sync_request フィールドを使用して CDN オリジンリクエストを除外し、object フィールドのプレフィックスを使用してファイルを照合します。最後に、response_body_length フィールドの値を合計して、総トラフィック量を取得します。
クエリ文
examplebucket バケットの exampledir フォルダー内にあるすべてのファイルのインターネットへのアウトバウンドトラフィックの合計を計算します。
* and __topic__ : oss_access_log and bucket: examplebucket and host : "examplebucket.oss-cn-hangzhou.aliyuncs.com" not sync_request : cdn | select
SUM(response_body_length) AS total_traffic_out_byte
WHERE
url_decode(object) LIKE 'exampledir/%'
クエリ結果
リクエストの host フィールドは偽装される可能性があるため、クエリ結果は推定値にすぎません。OSS からのインターネットへのアウトバウンドトラフィックの実際のコストについては、請求書をご参照ください。
examplebucket バケットの exampledir フォルダー内にあるすべてのファイルのインターネットへのアウトバウンドトラフィックの合計は 11749 バイトです。
OSS フォルダー内のファイルサイズの変更の分析
OSS の使用状況クエリでは、バケット内のすべてのファイルのサイズ変更は表示されますが、特定のフォルダーのサイズ変更は表示されません。特定のフォルダー内のファイルサイズの変更を分析するには、OSS アクセスログの object フィールドのプレフィックスを照合して、フォルダー内のファイルを特定します。次に、delta_data_size フィールドの値を合計して、そのフォルダー内のすべてのファイルの合計サイズ変更を計算できます。
クエリ文
examplebucket バケットの exampledir フォルダー内のファイルサイズの変更を計算します。
* and __topic__ : oss_access_log and bucket: examplebucket | select
SUM(delta_data_size) AS total_delta_data_size
WHERE
url_decode(object) LIKE 'exampledir/%'
クエリ結果
examplebucket バケットの exampledir フォルダーのファイルサイズは 941 バイト増加しました。
CDN によってアクセラレーションされていない OSS インターネットリクエストの分析
CDN アクセラレーションを有効にした後でも、多数の OSS インターネットリクエストが発生する場合があります。これは、アプリケーション内のリソース URL が、CDN のアクセラレーションドメイン名ではなく、依然として OSS ソースを指していることを示しています。これらのアクセラレーションされていないリクエストを特定するには、OSS アクセスログを分析します。host フィールドを使用して OSS パブリックエンドポイントをフィルタリングし、sync_request フィールドを使用して CDN オリジンリクエストを除外します。また、referer フィールドを使用して、これらのリクエスト元の Web ページまたはアプリケーションを特定することもできます。
クエリ文
examplebucket バケットにおける、CDN によってアクセラレーションされていない OSS インターネットリクエストを分析します。
* and __topic__: oss_access_log and bucket: examplebucket and host : "examplebucket.oss-cn-hangzhou.aliyuncs.com" not sync_request: cdn | select
referer,
host,
count(*) as request_count
group by
referer,
host
order by request_count desc
クエリ結果
リクエストの host フィールドは偽装される可能性があるため、クエリ結果は推定値にすぎません。OSS からのインターネットへのアウトバウンドトラフィックの実際のコストについては、請求書をご参照ください。
examplebucket バケットにおける、アクセラレーションされていない OSS インターネットリクエストの結果には、上位 3 つのトラフィックソースが表示されます。ソースには、ユーザーがブラウザで直接 URL を入力した場合などに発生する Referer フィールドが空のリクエストや、ドメイン名が .com および .vip で終わる Web サイトからのリクエストが含まれます。
ファイルの一括削除レコードのクエリ
リアルタイムログクエリを使用して、OSS でのファイルの一括削除のレコードをクエリできます。削除されたファイルに関する情報は、HTTP リクエストボディに保存されます。リクエスト ID を使用して、関連するレコードをクエリできます。
方法 1:リクエスト ID が既知の場合
クエリを実行するには、次の SQL 文の bucketname と request_id を置き換えてください。
* and __topic__: oss_batch_delete_log and operation : DeleteObjects and bucket: bucketname | select from_unixtime( __time__) as Time,url_decode(object) as objectname,user_agent where request_id = '68xxxxxxxxxxxxxxxxxxxxxx'
クエリを実行すると、結果テーブルに一致する削除レコードが返されます。user_agent 列に aliyun-oss-console と表示されている場合、その削除操作が OSS コンソールから開始されたことを示します。この情報を使用して、削除されたオブジェクトと操作のソースを特定できます。
方法 2:リクエスト ID が不明な場合
リクエスト ID がない場合は、次の手順に従ってクエリを実行してください。
-
ファイル名や一括削除の時刻などの情報を使用してリクエスト ID を特定します。たとえば、クエリを実行するには、次の SQL 文の
bucketnameとファイル名を置き換えます。* and __topic__: oss_batch_delete_log and bucket: bucketname | select request_id where url_decode(object) = 'test/001.bin'クエリは
request_id列を返します。値の例は68666811B2D29830309BC41Eです。 -
リクエスト ID を取得したら、方法 1 の SQL 文を使用して、完全な一括削除レコードをクエリできます。
ファイルのアップロード (PutObject) レコードのクエリ
リアルタイムログクエリを使用して、OSS バケット内のファイルのアップロードレコードを確認できます。OSS アクセスログで operation フィールドをフィルタリングして、ファイルのアップロード操作を表す PutObject リクエストを特定します。
クエリ文
examplebucket バケット内のファイルのアップロード (PutObject) レコードをクエリします。
* and __topic__: oss_access_log and bucket: examplebucket and operation: PutObject | select count(*) AS PutObjectCount
直前のステートメントは、アップロード操作の総数を返します。件数の代わりに各アップロードレコードの詳細を表示するには、ステートメントから | select count(*) AS PutObjectCount の部分を削除します。
クエリ結果
返される各レコードには、次のフィールドが含まれます。
-
object:アップロードされたファイルのパス -
http_status:アップロードリクエストの HTTP ステータスコード -
content_length_in:アップロードされたコンテンツのサイズ (バイト単位) -
client_ip:アップロードリクエストの送信元 IP アドレス -
time:アップロードが発生した時刻
たとえば、過去 1 週間で * and __topic__: oss_access_log and bucket: doc-test-oss-bucket-20260505 and operation: PutObject を実行すると、16 件の PutObject レコードが返されます。最初のレコードには、operation=PutObject、http_method=PUT、http_status=200、object=test-presigned-upload/test_upload_c_libcurl.txt、time=08/Jul/2026:12:33:32、content_length_in=68、および client_ip=106.11.32.78 が含まれています。