全部產品
Search
文件中心

Simple Log Service:匯入Amazon S3檔案

更新時間:Sep 28, 2024

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

前提條件

  • 已上傳記錄檔到S3中。

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

  • 自訂許可權:參見如下樣本,建立具備操作S3資源許可權的自訂權限原則。具體操作,請參見AWS建立自訂許可權

    說明

    S3配置自訂許可權後,才可以將S3的檔案匯入到Log Service。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "s3:GetObject",
            "s3:ListBucket"
          ],
          "Resource": [
            "arn:aws:s3:::your_bucket_name",
            "arn:aws:s3:::your_bucket_name/*"
          ]
        }
      ]
    }

建立資料匯入配置

  1. 登入Log Service控制台

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

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

  4. 設定匯入配置。

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

      參數

      說明

      任務名稱

      SLS任務的唯一名稱。

      顯示名稱

      任務顯示名稱。

      任務描述

      匯入任務的描述。

      S3地區

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

      AWS AccessKey ID

      用於訪問AWS的AWS AccessKey ID。

      重要

      請確保您的AccessKey具有訪問AWS相應資源的許可權。

      AWS Secret AccessKey

      用於訪問AWS的AWS Secret AccessKey。

      檔案路徑首碼過濾

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

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

      說明

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

      檔案路徑正則過濾

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

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

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

      檔案修改時間過濾

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

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

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

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

      資料格式

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

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

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

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

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

      壓縮格式

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

      編碼格式

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

      檢查新檔案周期

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

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

      日誌時間配置

      時間欄位

      當選擇資料格式CSV單行JSON時,您可以設定一個時間欄位,即設定為檔案中代表時間的列名,用於指定匯入日誌到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格式。

      說明

      預設使用東八區時間。

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

      • CSV特有參數

        參數

        說明

        分隔字元

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

        引號

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

        轉義符

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

        日誌最大跨行數

        開啟首行作為欄位名稱開關後,將使用CSV檔案中的首行作為欄位名稱。

        自訂欄位列表

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

        跳過行數

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

      • 跨行文本日誌特有參數

        參數

        說明

        正則匹配位置

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

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

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

        Regex

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

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

        最大行數

        一條日誌的最大行數。

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

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

  5. 預覽資料及建立索引,然後單擊下一步

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

    重要

    如果您要查詢和分析日誌,那麼全文索引和欄位索引必須至少啟用一種。同時啟用時,以欄位索引為準。

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

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

查看匯入配置

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

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

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

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

    image.png

    image.png

在配置的匯入配置概覽頁面,您還可以進行如下操作。

  • 修改配置

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

  • 開始匯入

    單擊啟動,開始/繼續匯入資料。

  • 停止匯入

    單擊停止,停止匯入資料。

  • 刪除配置

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

    警告

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

費用說明

Log Service不針對匯入功能收取費用,但匯入功能需要訪問服務商API,會產生對應的流量費用和請求費用。相關計價模型如下,具體的費用以服務商賬單為準。

image

欄位

說明

T

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

p_read

每GB資料的外網流出費用。

p_put

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

p_get

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

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

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

N

Bucket中根據首碼可列出的檔案數量。

常見問題

問題

可能原因

解決方案

預覽時顯示無資料。

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

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

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

資料中存在亂碼。

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

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

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

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

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

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

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

  • 資料不在查詢範圍內。

  • 未配置索引。

  • 索引未生效。

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

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

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

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

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

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

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

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

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

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

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

部分檔案沒有匯入。

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

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

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

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

多行文本日誌解析錯誤。

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

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

新檔案匯入延遲大。

存量檔案太多(即符合檔案路徑首碼過濾的檔案數量太多)。

如果符合檔案路徑首碼過濾條件檔案數量太多(超過100萬),建議首碼設定的更加詳細,同時建立多個任務來進行資料匯入。否則,發現新檔案的效率非常低。

錯誤處理機制

錯誤項

說明

讀取檔案失敗

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

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

壓縮格式解析錯誤

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

資料格式解析錯誤

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

S3 Bucket不存在

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

許可權錯誤

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

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