阿里雲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/*" ] } ] }
建立資料匯入配置
在接入資料地區的資料匯入頁簽中,選擇S3-資料匯入。
選擇目標Project和Logstore,單擊下一步。
設定匯入配置。
在匯入配置步驟中,設定如下參數。
參數
說明
任務名稱
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。
最大行數
一條日誌的最大行數。
單擊預覽,預覽匯入結果。
確認無誤後,單擊下一步。
預覽資料及建立索引,然後單擊下一步。
Log Service預設開啟全文索引。您也可以根據採集到的日誌,手動建立欄位索引,或者單擊自動產生索引,Log Service將自動產生欄位索引。更多資訊,請參見建立索引。
重要如果您要查詢和分析日誌,那麼全文索引和欄位索引必須至少啟用一種。同時啟用時,以欄位索引為準。
單擊查詢日誌,進入查詢和分析頁面,確認是否成功匯入S3資料。
等待1分鐘左右,如果有目標S3資料匯入,則說明匯入成功。
查看匯入配置
建立匯入配置成功後,您可以在控制台中查看已建立的匯入配置及產生的統計報表。
在Project列表地區,單擊目標Project。
在 中,選擇目標日誌庫下的 ,單擊配置名稱。
在匯入配置概覽頁面,查看匯入配置的基本資料和統計報表。
在配置的匯入配置概覽頁面,您還可以進行如下操作。
修改配置
單擊修改配置,修改匯入配置的相關資訊。更多資訊,請參見匯入配置。
開始匯入
單擊啟動,開始/繼續匯入資料。
停止匯入
單擊停止,停止匯入資料。
刪除配置
單擊刪除配置,刪除該匯入配置。
警告刪除後不可恢複,請謹慎操作。
費用說明
Log Service不針對匯入功能收取費用,但匯入功能需要訪問服務商API,會產生對應的流量費用和請求費用。相關計價模型如下,具體的費用以服務商賬單為準。
欄位 | 說明 |
| 每天匯入的總資料量,單位:GB。 |
| 每GB資料的外網流出費用。 |
| 每萬次的Put類型請求費用。 |
| 每萬次的Get類型請求費用。 |
| 新檔案檢查周期,單位:分鐘。 您可以在建立資料匯入配置時,設定檢查新檔案周期參數。 |
| Bucket中根據首碼可列出的檔案數量。 |
常見問題
問題 | 可能原因 | 解決方案 |
預覽時顯示無資料。 | S3中沒有檔案、檔案中沒有資料或者沒有符合過濾條件的檔案。 |
|
資料中存在亂碼。 | 資料格式、壓縮格式或編碼格式配置不符合預期。 | 確認S3檔案的真實格式,然後調整資料格式、壓縮格式或編碼格式等配置項。 如果需要修複已有的亂碼資料,請建立新的Logstore和匯入配置。 |
Log Service中顯示的資料時間和資料本身的時間不一致。 | 設定匯入配置時,沒有指定日誌時間欄位或者設定時間格式、時區有誤。 | 設定指定的日誌時間欄位以及正確的時間格式和時區。更多資訊,請參見日誌時間配置。 |
匯入資料後,無法查詢和分析資料。 |
| |
匯入的資料條目數量少於預期。 | 部分檔案存在單行資料大小超過3 MB的資料,導致資料在匯入處理程序中被丟棄。更多資訊,請參見採集限制。 | 寫入資料到S3檔案時,避免單行資料大小超過3 MB。 |
檔案數量和總資料量都很大,但匯入資料的速度不及預期(正常情況下,可達到80 MB/s)。 | Logstore Shard數量過少。更多資訊,請參見效能限制。 | Logstore Shard數量較少時,請嘗試增加Shard的個數(10個及以上),並觀察延遲情況。具體操作,請參見管理Shard。 |
部分檔案沒有匯入。 | 過濾條件設定存在問題或者存在單個檔案大小超出5 GB的檔案。更多資訊,請參見採集限制。 |
|
多行文本日誌解析錯誤。 | 首行Regex或尾行Regex設定錯誤。 | 檢查首行Regex或尾行Regex的正確性。 |
新檔案匯入延遲大。 | 存量檔案太多(即符合檔案路徑首碼過濾的檔案數量太多)。 | 如果符合檔案路徑首碼過濾條件檔案數量太多(超過100萬),建議首碼設定的更加詳細,同時建立多個任務來進行資料匯入。否則,發現新檔案的效率非常低。 |
錯誤處理機制
錯誤項 | 說明 |
讀取檔案失敗 | 讀檔案時,如果遇到檔案不完整的錯誤(例如由網路異常、檔案損壞等導致),匯入任務會自動重試,重試3次後仍然讀取失敗,將跳過該檔案。 稍候再試和檢查新檔案周期一致。如果檢查新檔案周期為永不檢查,則重試周期為5分鐘。 |
壓縮格式解析錯誤 | 解壓檔案時,如果遇到檔案壓縮格式無效的錯誤,匯入任務將直接跳過該檔案。 |
資料格式解析錯誤 | 解析資料失敗時,匯入任務會將原始常值內容存放到日誌的content欄位中。 |
S3 Bucket不存在 | 匯入任務會定期重試,即重建Bucket後,匯入任務會自動回復匯入。 |
許可權錯誤 | 從S3 Bucket讀取資料或者寫資料到Log ServiceLogstore存在許可權錯誤時,匯入任務會定期重試,即修複許可權問題後,匯入任務會自動回復。 遇到許可權錯誤時,匯入任務不會跳過任何檔案,因此修複許可權問題後,匯入任務會自動將Bucket中還未被處理的檔案中的資料匯入到Log ServiceLogstore中。 |