日志服務支持將日志或查詢分析結果下載到本地,本文介紹下載方式及操作步驟。
下載方式說明
日志服務提供控制臺、Cloud Shell、日志服務CLI或SDK下載方式下載日志或查詢分析結果。
日志服務CLI或SDK下載方式無數量限制,但可能由于網絡等不確定因素,出現下載中斷問題。
僅控制臺方式支持壓縮下載。
若當前Logstore的計費模式為按寫入數據量計費時,下載查詢和分析結果(SQL結果)時不產生費用。具體內容,可參見按寫入數據量計費。
若當前Logstore的計費模式為按使用功能計費時,下載查詢和分析結果(SQL結果)時,會使用SQL獨享版,因此會產生SQL獨享版相關的費用。費用說明,請參見按使用功能計費模式計費項。
比較項 | 通過控制臺直接下載(推薦) | 通過命令行工具(CLI)下載 | 通過Cloud Shell下載 | 通過SDK下載 |
數據量限制 |
|
|
|
|
依賴部署 | 無 | 手動安裝日志服務CLI。 | 自動部署,首次運行時需要等待初始化。 | 手動安裝日志服務 SDK,并需要自定義代碼。 |
授權 | 同控制臺查詢權限,無需額外授權。 | 手動配置 | 自動配置 | 手動配置 |
SQL獨享版 | 下載SQL分析結果時,使用SQL獨享版 | 不使用 | 不使用 | 按實際需求,設置參數配置。 |
外網讀取流量 | 無 | 部署在與Project相同地域的ECS上且使用日志服務私網域名時,不會產生外網讀取流量費用。 | 當Project在華東2(上海)地域時,不會產生外網讀取流量費用。 | 部署在與Project相同地域的ECS上且使用日志服務私網域名時,不會產生外網讀取流量費用。 |
NAS集成 | 無 | 必要時,手動配置 | 自動配置 | 必要時,手動配置 |
您也可以將日志投遞到OSS,通過OSS進行下載。關于投遞的具體操作,請參見創建OSS投遞任務(新版)。
操作步驟
通過控制臺直接下載
日志服務支持通過控制臺直接將日志或查詢分析結果下載到本地,兩者的下載操作類似,本文以下載日志為例進行說明。如果您要下載查詢分析結果,可在執行查詢分析操作后,在統計圖表頁簽中,單擊下載查詢分析結果。
超過單次下載的最大數量時,僅下載最大支持的數量。如果您需要下載全量日志,可縮小查詢的時間范圍,分多次下載。
您可以在日志導出歷史中,查看下載列表。
單個阿里云賬號最多支持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
更多信息,請參見使用日志服務CLI。
通過SDK下載
當您需要下載更大數量的日志時,可通過SDK下載。
SDK下載日志接口就是查詢日志的接口。
Python SDK示例如下:
import os
import time
from aliyun.log import LogClient
from aliyun.log import GetLogsRequest
# 日志服務的服務接入點。
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參考概述。