日志服务支持将日志或查询分析结果下载到本地,本文介绍下载方式及操作步骤。
下载方式说明
日志服务提供控制台、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参考概述。