全部產品
Search
文件中心

Object Storage Service:即時OSS日誌查詢常見樣本

更新時間:Sep 03, 2025

通過使用Log ServiceSLS的即時日誌查詢,您可以分析OSS的訪問日誌和每小時計量日誌,以監控和最佳化OSS的使用,定位和分析問題,提升儲存和訪問效率。本文介紹即時日誌查詢的常見樣本。

分析某個OSS目錄下檔案的外網流出流量

OSS用量查詢無法精確到某個目錄。您可以通過OSS訪問日誌中的host欄位過濾外網訪問網域名稱,sync_request欄位排除CDN回源請求,object欄位首碼匹配目錄檔案,最後通過response_body_length欄位計算總和,獲得指定目錄下檔案的外網流出流量。

查詢和分析語句

統計examplebucket的bucket中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的bucket中exampledir目錄下所有檔案的外網流出流量總計為11749位元組。

1.png

分析某個OSS目錄下檔案的大小增減情況

OSS用量查詢可以查看Bucket下所有檔案的大小增減,但無法精確到某個目錄。若需分析某個OSS目錄下檔案的大小增減情況,您可以通過匹配OSS訪問日誌中的object欄位首碼統計目錄下的檔案,並計算delta_data_size欄位的總和,從而獲得指定目錄下所有檔案大小的增減情況。

查詢和分析語句

統計examplebucketexampledir目錄下檔案的大小增減情況。

* 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的bucket中exampledir目錄下檔案的大小增加了941位元組。

2.png

分析未通過CDN加速的OSS外網請求

在開啟CDN加速服務後,如果依然能觀察到顯著的OSS外網請求,則說明您的業務中引用的資源URL仍指向OSS來源站點,而非CDN加速網域名稱。為了識別未通過CDN加速的外網請求,您可以通過OSS訪問日誌中的host欄位過濾出OSS外網訪問網域名稱,通過sync_request欄位排除CDN回源請求。您還可以結合使用referer欄位確定這些請求的來源網頁或應用程式。

查詢和分析語句

分析名為examplebucket的bucket未通過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的bucket未通過CDN加速的OSS外網請求的結果顯示,引起流量最多的前三個來源分別是:Referer欄位為空白的請求(可能是由於使用者直接在瀏覽器地址欄輸入URL),以及來自以.com.vip網域名稱結尾的網站的請求。

3.png

查詢檔案的大量刪除記錄

通過即時日誌查詢 OSS 檔案的大量刪除的記錄。大量刪除的檔案資訊存放在 HTTP 要求的 Body 中,通過 Request ID 可以關聯查詢相關記錄。

方法一:已知 Request ID

替換以下 SQL 陳述式中的bucketnamerequest_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'

1

方法二:未知Request ID

如果沒有Request ID 資訊,可通過以下步驟查詢:

  1. 通過大量刪除檔案時的檔案名稱或時間等資訊定位 Request ID,例如替換以下 SQL 陳述式中的bucketname和檔案名稱進行查詢:

    * and __topic__: oss_batch_delete_log and bucket: bucketname | select request_id where url_decode(object) = 'test/001.bin'

    1

  2. 擷取 Request ID 後,按方法一的 SQL 陳述式查詢完整的大量刪除記錄。