全部產品
Search
文件中心

Simple Log Service:匯入OSS資料

更新時間:Jul 24, 2024

您可以將OSS Bucket中的記錄檔,通過資料匯入方式匯入到Log Service,實現日誌的查詢分析、加工等操作。目前Log Service只支援匯入5 GB以內的OSS檔案,壓縮檔大小按照壓縮後的大小計算。

費用說明

Log Service不針對匯入功能收取費用,但匯入功能需要訪問OSS API,會產生OSS的流量費用和請求費用。相關計費項目的定價詳情,請參見OSS定價。匯入OSS資料時,每天產生的OSS費用的計算公式如下:

image..png

費用參數說明

欄位

說明

N

每天匯入的檔案個數。

T

每天匯入的總資料量,單位:GB。

p_read

每GB資料的流量費用。

  • 同地區匯入時,會產生OSS的內網流出流量,該流量免費。

  • 跨地區匯入時,會產生OSS的外網流出流量。

p_put

每萬次的Put類型請求費用。

Log Service使用ListObjects介面擷取目標Bucket中的檔案清單。該介面在OSS側按照Put類型請求收費。另外,該介面每次最多返回1000條資料,因此如果您有100萬個新增檔案,需要進行1,000,000/1000=1000次請求。

p_get

每萬次的GET類型請求費用。

M

新檔案檢查周期,單位:分鐘。

您可以在建立資料匯入配置時,設定檢查新檔案周期參數。

前提條件

  • 已上傳記錄檔到OSS Bucket中。具體操作,請參見控制台上傳檔案

  • 已建立Project和Logstore。具體操作,請參見建立專案Project建立Logstore

  • 已經完成雲資源訪問授權,即已授權Log Service使用AliyunLogImportOSSRole角色訪問您的OSS資源。

  • 帳號具有oss:ListBuckets許可權,用於訪問oss bucket資源。具體操作,請參見為RAM使用者授權自訂的權限原則

    如果您使用的是RAM使用者,還需授予RAM使用者PassRole許可權,授權策略如下所示。具體操作,請參見建立自訂權限原則為RAM使用者授權

    {
      "Statement": [
        {
          "Effect": "Allow",
          "Action": "ram:PassRole",
          "Resource": "acs:ram:*:*:role/aliyunlogimportossrole"
        },
        {
          "Effect": "Allow",
          "Action": "oss:GetBucketWebsite",
          "Resource": "*"
        },
        {
          "Effect": "Allow",
          "Action": "oss:ListBuckets",
          "Resource": "*"
        }
      ],
      "Version": "1"
    }    

建立資料匯入配置

重要

針對更新過的OSS檔案,資料匯入任務會重新進行全量匯入。即之前已匯入過的檔案,又追加了部分內容,那麼這個檔案中資料將再次被全部匯入。

  1. 登入Log Service控制台

  2. 接入資料地區的資料匯入頁簽中,選擇OSS-資料匯入

  3. 選擇目標Project和Logstore,單擊下一步

  4. 設定匯入配置。

    1. 匯入配置步驟中,設定如下參數。

      參數設定

      參數

      說明

      任務名稱

      SLS任務的唯一名稱。

      顯示名稱

      任務顯示名稱。

      任務描述

      匯入任務的描述。

      OSS地區

      待匯入的OSS檔案所在Bucket的地區。

      如果OSS Bucket和Log ServiceProject處於同一地區,可節省公網流量且傳輸速度快。

      Bucket

      待匯入的OSS檔案所在的Bucket。

      檔案路徑首碼過濾

      通過檔案路徑首碼過濾OSS檔案,用於準確定位待匯入的檔案。例如待匯入的檔案都在csv/目錄下,則可以指定首碼為csv/

      如果不設定該參數,則遍曆整個OSS Bucket。

      說明

      建議設定該參數。當Bucket中的檔案數量非常多時,全量遍曆將導致資料匯入效率非常低。

      檔案路徑正則過濾

      通過檔案路徑的Regex過濾OSS檔案,用於準確定位待匯入的檔案。只有檔案名稱(包含檔案路徑)匹配該Regex的檔案才會被匯入。預設為空白,表示不過濾。

      例如OSS檔案為testdata/csv/bill.csv,您可以設定Regex為(testdata/csv/)(.*)

      調整Regex的方法,請參見如何調試Regex

      檔案修改時間過濾

      通過檔案修改時間過濾OSS檔案,用於準確定位待匯入的檔案。

      • 所有:如果您想匯入所有合格檔案,請選擇該項。

      • 某個時間開始:如果您想匯入某個時間點後修改過的檔案,請選擇該項。

      • 特定時間範圍:如果您想匯入某個時間範圍內修改過的檔案,請選擇該項。

      資料格式

      檔案的解析格式,如下所示。

      • CSV:分隔字元分割的文字檔,支援指定檔案中的首行為欄位名稱或手動指定欄位名稱。除欄位名稱外的每一行都會被解析為日誌欄位的值。

      • 單行JSON:逐行讀取OSS檔案,將每一行看做一個JSON對象進行解析。解析後,JSON對象中的各個欄位對應為日誌中的各個欄位。

      • 單行文本日誌:將OSS檔案中的每一行解析為一條日誌。

      • 跨行文本日誌:多行模式,支援指定首行或者尾行的Regex解析日誌。

      • ORC:ORC檔案格式,無需任何配置,自動解析成日誌格式。

      • Parquet:Parquet格式,無需任何配置,自動解析成日誌格式。

      • 阿里雲OSS訪問日誌:阿里雲OSS訪問日誌格式。更多資訊,請參見日誌轉存

      • 阿里雲CDN下載日誌:阿里雲CDN下載日誌格式。更多資訊,請參見下載離線日誌

      壓縮格式

      待匯入的OSS檔案的壓縮格式,Log Service根據對應格式進行解壓並讀取資料。

      編碼格式

      待匯入的OSS檔案的編碼格式。目前僅支援UTF-8和GBK。

      檢查新檔案周期

      如果目標OSS檔案路徑中不斷有新檔案產生,您可以根據需求設定檢查新檔案周期。設定後,匯入任務會一直在後台運行,自動周期性地發現並讀取新檔案(後台保證不會將同一個OSS檔案中的資料重複寫入到Log Service)。

      如果目標OSS檔案路徑中不再產生新檔案,請修改為永不檢查,即匯入任務讀取完所有合格檔案後,將自動結束。

      匯入歸檔檔案

      如果待匯入的OSS檔案為普通Archive Storage或者冷Archive Storage,則需要解凍後才能讀取。開啟此功能,則歸檔檔案會自動解凍。

      說明
      • 解凍普通歸檔檔案需耗時1分鐘左右,可能導致第一次預覽逾時。逾時後,請等待一段時間再重試。

      • 解凍冷歸檔檔案需耗時1小時左右,預覽逾時後,可以選擇跳過預覽或者等待1小時後再次進行預覽。

        解凍冷歸檔檔案時,預設採用7天的解凍有效期間,以保證有足夠的時間匯入冷歸檔檔案。

      日誌時間配置

      時間欄位

      當選擇資料格式CSV單行JSONORCParquet阿里雲OSS訪問日誌阿里雲CDN下載日誌時,您需要設定一個時間欄位,即設定為OSS檔案中代表時間的列名,用於指定匯入日誌到Log Service時的時間。

      提取時間正則

      當選擇資料格式單行文本日誌跨行文本日誌,您需要使用Regex提取日誌中的時間。

      例如日誌範例為127.0.0.1 - - [10/Sep/2018:12:36:49 +0800] "GET /index.html HTTP/1.1"時,則您可以設定提取時間正則[0-9]{0,2}\/[0-9a-zA-Z]+\/[0-9\: +]+

      說明

      針對其他類型的資料格式,如果您只需提取時間欄位中的部分內容,也可通過Regex提取。

      時間欄位格式

      指定時間格式,用於解析時間欄位的值。

      • 支援Java SimpleDateFormat文法的時間格式,例如yyyy-MM-dd HH:mm:ss。時間格式的文法詳情,請參見Class SimpleDateFormat。常見的時間格式,請參見時間格式

      • 支援epoch格式,包括epoch、epochMillis、epochMicro和epochNano。

      時間欄位分區

      選擇時間欄位對應的時區。當時間欄位格式為epoch類別時,不需要設定時區。

      如果解析日誌時間需要考慮夏令時,可以選擇UTC格式;否則,選擇GMT格式。

      進階配置

      使用OSS中繼資料索引

      當OSS檔案數量超過百萬時,強烈建議開啟,否則發現新檔案的效率很低。採用OSS中繼資料索引後,可以在秒級內發現OSS Bucket中的新檔案,實現近即時匯入Bucket中新寫入檔案的資料。

      在使用OSS中繼資料索引前,需先在OSS側開通OSS中繼資料索引管理功能。具體操作,請參見資料索引

      當選擇資料格式CSV跨行文本日誌時,需額外設定相關參數,具體說明如下表所示。

      CSV

      參數

      說明

      分隔字元

      設定日誌的分隔字元,預設值為半形逗號(,)。

      引號

      CSV字串所使用的引號字元。

      轉義符

      配置日誌的轉義符,預設值為反斜線(\)。

      日誌最大跨行數

      當一條日誌跨多行時,需要指定最大行數,預設值為1。

      首行作為欄位名稱

      開啟首行作為欄位名稱開關後,將使用CSV檔案中的首行作為欄位名稱。例如提取下圖中的首行為日誌欄位的名稱。首行

      自訂欄位列表

      關閉首行作為欄位名稱開關後,請根據需求自訂日誌欄位名稱,多個欄位名稱之間用半形逗號(,)隔開。

      跳過行數

      指定跳過的日誌行數。例如設定為1,則表示從CSV檔案中的第2行開始採集日誌。

      跨文本日誌

      參數

      說明

      正則匹配位置

      設定Regex匹配的位置,具體說明如下:

      • 首行正則:使用Regex匹配一條日誌的行首,未匹配部分為該條日誌的一部分,直到達到最大行數。

      • 尾行正則:使用Regex匹配一條日誌的行尾,未匹配部分為下一條日誌的一部分,直到達到最大行數。

      Regex

      根據日誌內容,設定正確的Regex。

      調整Regex的方法,請參見如何調試Regex

      最大行數

      一條日誌最大的行數。

    2. 單擊預覽,預覽匯入結果。

    3. 確認無誤後,單擊下一步

  5. 建立索引預覽資料,然後單擊下一步。Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引

    重要

    如果需要查詢日誌中的所有欄位,建議使用全文索引。如果只需查詢部分欄位、建議使用欄位索引,減少索引流量。如果需要對欄位進行分析(SELECT語句),必須建立欄位索引。

  6. 單擊查詢日誌,進入查詢和分析頁面,確認是否成功匯入OSS資料。

    等待1分鐘左右,如果有目標OSS資料匯入,則說明匯入成功。

相關操作

建立匯入配置成功後,您可以在控制台中查看已建立的匯入配置及產生的統計報表。

  1. Project列表地區,單擊目標Project。

  2. 日誌儲存 > 日誌庫中,選擇目標日誌庫下的資料接入 > 資料匯入,單擊配置名稱。

  3. 查看任務

    匯入配置概覽頁面,查看匯入配置的基本資料和統計報表。

    匯入任務概覽

    修改任務

    單擊修改配置,修改匯入配置的相關資訊。更多資訊,請參見設定匯入配置

    刪除任務

    單擊刪除配置,刪除該匯入配置。

    警告

    刪除後不可恢複,請謹慎操作。

    停止任務

    單擊停止,停止該匯入任務。

常見問題

問題

可能原因

解決方案

預覽時顯示無資料。

OSS Bucket中沒有檔案、檔案中沒有資料或者沒有符合過濾條件的檔案。

  • 檢查Bucket下是否存在不為空白的檔案(CSV檔案是否僅包含headers行)。如果不存在有資料的檔案,則可以等待檔案有資料後,再進行匯入。

  • 調整檔案路徑首碼過濾檔案路徑正則過濾檔案修改時間過濾等配置項。

資料中存在亂碼。

資料格式、壓縮格式或編碼格式配置不符合預期。

確認OSS檔案的真實格式,然後調整資料格式壓縮格式編碼格式等配置項。

如果需要修複已有的亂碼資料,請建立新的Logstore和匯入配置。

Log Service中顯示的資料時間和資料本身的時間不一致。

設定匯入配置時,沒有指定日誌時間欄位或者設定時間格式、時區有誤。

設定指定的日誌時間欄位以及正確的時間格式和時區。更多資訊,請參見建立資料匯入配置

匯入資料後,無法查詢和分析資料。

  • 資料不在查詢範圍內。

  • 未配置索引。

  • 索引未生效。

  • 檢查待查詢資料的時間是否在查詢時間範圍內。

    如果不在查詢範圍內,請調整查詢範圍並重新查詢。

  • 檢查是否已為Logstore設定索引。

    如果未設定,請先設定索引。具體操作,請參見建立索引重建索引

  • 如果已設定索引,且資料處理流量觀測儀錶盤中顯示的成功匯入資料量符合預期,則可能原因是索引未生效,請嘗試重建索引。具體操作,請參見重建索引

匯入的資料條目數量少於預期。

部分檔案存在單行資料大小超過3 MB的資料,導致資料在匯入處理程序被丟棄。更多資訊,請參見採集限制

寫入資料到OSS檔案時,避免單行資料大小超過3 MB。

檔案數量和總資料量都很大,但匯入資料的速度不及預期(正常情況下,可達到80 MB/s)。

Logstore Shard數量過少。更多資訊,請參見效能限制

Logstore Shard數量較少時,請嘗試增加Shard的個數(10個及以上),並觀察延遲情況。具體操作,請參見管理Shard

建立匯入配置時,無法選擇OSS Bucket。

未完成AliyunLogImportOSSRole角色授權。

參見文本中的前提條件完成授權。

部分檔案沒有匯入。

過濾條件設定存在問題或者存在單個檔案大小超出5 GB的檔案。更多資訊,請參見採集限制

  • 檢查待匯入的檔案是否符合過濾條件。如果不符合,請修改過濾條件。

  • 確認待匯入檔案的大小都小於5 GB。

    如果超過5 GB,請縮小單個檔案的大小。

歸檔檔案沒有匯入。

未開啟匯入歸檔檔案開關。更多資訊,請參見採集限制

  • 方法1:修改匯入配置,開啟匯入歸檔檔案開關。

  • 方法2:重建一個匯入配置,開啟匯入歸檔檔案開關。

多行文本日誌解析錯誤。

首行Regex或尾行Regex設定錯誤。

檢查首行Regex或尾行Regex的正確性。

新檔案匯入延遲大。

存量檔案太多(即符合檔案路徑首碼過濾的檔案數量太多) 且匯入配置中沒有開啟使用OSS中繼資料索引開關。

如果符合檔案路徑首碼過濾條件檔案數量太多(超過100萬),需要在匯入配置中開啟使用OSS中繼資料索引開關。否則,發現新檔案的效率非常低。

錯誤處理機制

錯誤項

說明

讀取檔案失敗

讀檔案時,如果遇到檔案不完整的錯誤(例如由網路異常、檔案損壞等導致),匯入任務會自動重試,重試3次後仍然讀取失敗,將跳過該檔案。

稍候再試和檢查新檔案周期一致。如果檢查新檔案周期為永不檢查,則重試周期為5分鐘。

壓縮格式解析錯誤

解壓檔案時,如果遇到檔案壓縮格式無效的錯誤,匯入任務將直接跳過該檔案。

資料格式解析錯誤

  • 解析二進位格式(ORC、Parquet)的資料失敗時,匯入任務將直接跳過該檔案。

  • 解析其他格式的資料失敗時,匯入任務會將原始常值內容存放到日誌的content欄位中。

OSS Bucket不存在

匯入任務會定期重試,即重建Bucket後,匯入任務會自動回復匯入。

許可權錯誤

從OSS Bucket讀取資料或者寫資料到Log ServiceLogstore存在許可權錯誤時,匯入任務會定期重試,即修複許可權問題後,匯入任務會自動回復。

遇到許可權錯誤時,匯入任務不會跳過任何檔案,因此修複許可權問題後,匯入任務會自動將Bucket中還未被處理的檔案中的資料匯入到Log ServiceLogstore中。

OSS投遞介面

操作

介面

建立OSS匯入任務

CreateOSSIngestion

修改OSS匯入任務

UpdateOSSIngestion

擷取OSS匯入任務

GetOSSIngestion

刪除OSS匯入任務

DeleteOSSIngestion

啟動OSS匯入任務

StartOSSIngestion

停止OSS匯入任務

StopOSSIngestion