Log Service支援將日誌或查詢分析結果下載到本地,本文介紹下載方式及操作步驟。
下載方式說明
Log Service提供控制台、Cloud Shell、Log ServiceCLI或SDK下載方式下載日誌或查詢分析結果。
Log ServiceCLI或SDK下載方式無數量限制,但可能由於網路等不確定因素,出現下載中斷問題。
僅控制台方式支援壓縮下載。
若當前Logstore的計費模式為按寫入資料量計費時,下載查詢和分析結果(SQL結果)時不產生費用。具體內容,可參見按寫入資料量計費。
若當前Logstore的計費模式為按使用功能計費時,下載查詢和分析結果(SQL結果)時,會使用SQL獨享版,因此會產生SQL獨享版相關的費用。費用說明,請參見按使用功能計費模式計費項目。
比較項 | 通過控制台直接下載(推薦) | 通過命令列工具(CLI)下載 | 通過Cloud Shell下載 | 通過SDK下載 |
資料量限制 |
|
|
|
|
依賴部署 | 無 | 手動安裝Log ServiceCLI。 | 自動部署,首次運行時需要等待初始化。 | 手動安裝Log Service SDK,並需要自訂代碼。 |
授權 | 同控制台查詢許可權,無需額外授權。 | 手動設定 | 自動設定 | 手動設定 |
SQL獨享版 | 下載SQL分析結果時,使用SQL獨享版 | 不使用 | 不使用 | 按實際需求,設定參數配置。 |
外網讀取流量 | 無 | 部署在與Project相同地區的ECS上且使用Log Service私網網域名稱時,不會產生外網讀取流量費用。 | 當Project在華東2(上海)地區時,不會產生外網讀取流量費用。 | 部署在與Project相同地區的ECS上且使用Log Service私網網域名稱時,不會產生外網讀取流量費用。 |
NAS整合 | 無 | 必要時,手動設定 | 自動設定 | 必要時,手動設定 |
您也可以將日誌投遞到OSS,通過OSS進行下載。關於投遞的具體操作,請參見建立OSS投遞任務(新版)。
操作步驟
通過控制台直接下載
Log Service支援通過控制台直接將日誌或查詢分析結果下載到本地,兩者的下載操作類似,本文以下載日誌為例進行說明。如果您要下載查詢分析結果,可在執行查詢分析操作後,在統計圖表頁簽中,單擊下載查詢分析結果。
超過單次下載的最大數量時,僅下載最大支援的數量。如果您需要下載全量日誌,可縮小查詢的時間範圍,分多次下載。
您可以在日誌匯出歷史中,查看下載列表。
單個阿里雲帳號最多支援3個並發下載操作(總下載次數無限制)。超出3個並發下載操作或多個RAM帳號同時操作時,可能報錯,此時您可等待其他動作完成後,再重試。
支援儲存最近1天內的匯出記錄,超過1天的匯出記錄被自動清除。
在遇到網路錯誤或者查詢不精確時,系統會自動重試下載任務。如果重試3次後,仍無法完成下載,則下載任務為失敗狀態。
在Project列表地區,單擊目標Project。
在
頁簽中,單擊目標Logstore。輸入查詢語句,然後選擇時間範圍。
更多資訊,請參見查詢和分析日誌。
在原始日誌頁簽中,選擇
。說明無日誌時,下載日誌不可用。
在日誌下載對話方塊中,完成如下配置,然後單擊確認。
參數
說明
任務名
下載任務的名稱。
日誌數量
選擇要下載的日誌數量。
資料格式
支援CSV格式和JSON格式。
採用CSV格式時,檔案中的列名將根據前100條日誌的欄位產生。如果後續日誌存在新的欄位,則所有新的欄位將以JSON格式存放在CSV檔案的最後一列(列名為空白)。
採用JSON格式時,單條日誌的內容會轉換為JSON格式,然後以單行形式寫入檔案。
quote字元
選擇Quote字元,用於包裹日誌中的特殊字元,避免被轉義。
是否允許下載不精確的結果
如果選擇否,則當出現查詢結果不精確時,會導致下載失敗。
壓縮方式
支援gzip、lz4、zstd等壓縮方式,也支援不壓縮。
當下載的日誌數量較多時,強烈建議採用壓縮方式,可顯著降低下載量,減少檔案的下載時間。
定序
日誌的定序。
在下載任務對話方塊中,等待任務狀態為任務成功後,單擊下載,將日誌下載到本地。
您也可以在原始日誌頁簽中,選擇
,開啟下載任務對話方塊,查看下載記錄。
通過Cloud Shell下載
目前Cloud Shell位於上海地區,如果當前Logstore不在上海地區,下載日誌會產生一定的外網讀取流量費用。價格詳情請參見產品定價。操作步驟,參見使用Cloud Shell下載日誌資料。
通過命令列工具下載
當您需要下載更大數量的日誌時,可以通過命令列工具進行下載。
安裝命令列工具。具體操作,請參見安裝CLI。
擷取當前帳號的AccessKey。具體操作,請參見存取金鑰。
擷取下載日誌的命令。具體步驟,請參見get_log_all。
例如:在命令列工具中執行下載命令,執行成功後自動下載到運行命令列的目前的目錄下的
downloaded_data.txt
。aliyunlog log get_log_all --project="aliyun-test-project" --logstore="aliyun-test-logstore" --from_time="2024-07-01 15:33:00+8:00" --to_time="2024-07-09 15:23:00+8:00" --query="status:200|select request_method as method,COUNT(*) as pv group by method order by pv" --region-endpoint="cn-hangzhou.log.aliyuncs.com" --format-output=json --access-id="LT***CyGg" --access-key="8P***zi" >> ./downloaded_data.txt
更多資訊,請參見使用Log ServiceCLI。
通過SDK下載
當您需要下載更大數量的日誌時,可通過SDK下載。
SDK下載日誌介面就是查詢日誌的介面。
Python SDK樣本如下:
import os
import time
from aliyun.log import LogClient
from aliyun.log import GetLogsRequest
# Log Service的服務存取點。
endpoint = 'cn-qingdao.log.aliyuncs.com'
# 本樣本從環境變數中擷取AccessKey ID和AccessKey Secret。
accessKeyId = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_ID', '')
accessKey = os.environ.get('ALIBABA_CLOUD_ACCESS_KEY_SECRET', '')
# Project名稱。
project = 'Project名稱'
# Logstore名稱。
logstore = 'Logstore名稱'
client = LogClient(endpoint, accessKeyId, accessKey)
request = GetLogsRequest("project1", "logstore1", fromTime=int(time()-3600), toTime=int(time()), topic='', query="*", line=100, offset=0, reverse=False)
# 或者
# request = GetLogsRequest("project1", "logstore1", fromTime="2018-1-1 10:10:10", toTime="2018-1-1 10:20:10", topic='', query="*", line=100, offset=0, reverse=False)
res = client.get_logs(request)
res.log_print()
更多資訊,請參見SDK參考概述。