日志服务支持将日志或查询分析结果下载到本地,本文介绍下载方式及操作步骤。
下载方式说明
日志服务提供控制台、Cloud Shell、日志服务CLI或SDK下载方式下载日志或查询分析结果。
日志服务CLI或SDK下载方式无数量限制,但可能由于网络等不确定因素,出现下载中断问题。
仅控制台方式支持压缩下载。
SQL 查询语句最大长度为 32 KB。超过限制时需分批拆分查询。
若当前LogStore的计费模式为按写入数据量计费时,下载查询和分析结果(SQL结果)时不产生费用。具体内容,可参见按写入数据量计费。
若当前LogStore的计费模式为按使用功能计费时,下载查询和分析结果(SQL结果)时,会使用SQL独享版,因此会产生SQL独享版相关的费用。费用说明,请参见按使用功能计费模式计费项。
比较项 | 通过控制台直接下载(推荐) | 通过OpenAPI下载 | 通过命令行工具(CLI)下载 | 通过Cloud Shell下载 | 通过SDK下载 |
数据量限制 |
|
|
|
|
|
依赖部署 | 无 | 无 | 手动安装日志服务CLI。 | 自动部署,首次运行时需要等待初始化。 | 手动安装日志服务 SDK,并需要自定义代码。 |
授权 | 手动配置 | 自动配置 | 手动配置 | ||
SQL独享版 | 下载SQL分析结果时,使用SQL独享版 | 下载SQL分析结果时,使用SQL独享版 | 不使用 | 不使用 | 按实际需求,设置参数配置。 |
外网读取流量 | 无 | 无 | 部署在与Project相同地域的ECS上且使用日志服务私网域名时,不会产生外网读取流量费用。 | 当Project在华东2(上海)地域时,不会产生外网读取流量费用。 | 部署在与Project相同地域的ECS上且使用日志服务私网域名时,不会产生外网读取流量费用。 |
NAS集成 | 无 | 无 | 必要时,手动配置 | 自动配置 | 必要时,手动配置 |
您也可以将日志投递到OSS,通过OSS进行下载。关于投递的具体操作,请参见创建OSS投递任务(新版)。
操作步骤
通过控制台直接下载
日志服务支持通过控制台直接将日志或查询分析结果下载到本地,两者的下载操作类似,本文以下载日志为例进行说明。如果您要下载查询分析结果,可在执行查询分析操作后,在统计图表页签中,单击下载日志。
超过单次下载的最大数量时,仅下载最大支持的数量。如果您需要下载全量日志,可缩小查询的时间范围,分多次下载。
单个阿里云账号最多支持3个并发下载操作(总下载次数无限制)。超出3个并发下载操作或多个RAM用户同时操作时,可能报错,此时您可等待其他操作完成后,再重试。
支持保存最近1天内的导出记录,超过1天的导出记录被自动清除。
在遇到网络错误或者查询不精确时,系统会自动重试下载任务。如果重试3次后,仍无法完成下载,则下载任务为失败状态。
在线下载(另存为)与离线下载(任务管理)的区别:
另存为:直接下载当前页面查询到的精确结果,适用于小数据量场景。若导出数据量过大(如几十万条),可能导致浏览器页面无响应或崩溃。此时建议改用任务管理中的离线下载功能,或缩小查询时间范围减少单次下载量。
任务管理(离线下载):适用于大数据量场景,后台异步处理,性能更优。下载任务创建后可关闭页面,任务完成后在任务管理中下载文件。
离线下载任务的实际下载条数可能与前端查询显示的条数存在细微差异,此属正常现象。
若页面刷新导致复制失效或在线下载失败,请优先使用日志下载功能而非手动复制粘贴。
离线下载耗时不固定,受网络状况、数据压缩率、系统负载以及是否需要读取低频存储或归档存储数据等因素影响,日志服务不提供固定耗时 SLA 或估算公式。若下载慢或任务长时间无进展,建议按天或按周缩小查询时间范围,分批创建下载任务,以提升下载速度和稳定性。若查询范围命中分层存储中的低频存储或归档存储数据,读取耗时会明显增加,建议进一步缩小时间范围或收敛查询条件,减少冷备数据读取量。
在线下载失败但离线下载成功的排查建议:
检查网络是否稳定,查询条件是否过于复杂。
优先尝试使用离线下载(任务管理)或 CLI/SDK 方式,这些方式更稳定,适用于大数据量场景。
若必须使用在线下载且持续失败,建议缩小时间范围,分多次下载。
如果下载日志按钮显示为灰色不可用,请按以下步骤排查:
确认当前处于原始日志页签。统计图表等其他视图不支持下载操作。
确认查询有返回结果。若查询结果为空,下载按钮将置灰不可用。请调整查询语句或时间范围后重新查询。
确认 RAM 用户已授予下载相关权限。需要
log:CreateDownloadJob、log:ListDownloadJobs等权限,详见本文档"下载权限配置"部分。确认当前账号的并发下载任务数未达到上限。单个阿里云账号最多支持 3 个并发下载任务,超出限制时需等待已有任务完成后重试。
若查询返回条数过少(如仅 20 条),可能是过滤条件过于严格。建议放宽时间范围或调整查询语句。
登录日志服务控制台。
在Project列表区域,单击目标Project。
在页签中,单击目标LogStore。
输入查询语句,然后选择时间范围。
在原始日志页签中,选择。
在日志下载对话框中,完成如下配置,然后单击确定。
参数
说明
任务名
下载任务的名称。
日志数量
选择要下载的日志数量。
数据格式
支持CSV格式和JSON格式。
采用CSV格式时,文件中的列名将根据前100条日志的字段生成。如果后续日志存在新的字段,则所有新的字段将以JSON格式存放在CSV文件的最后一列(列名为空)。
采用JSON格式时,单条日志的内容会转换为JSON格式,然后以单行形式写入文件。
quote字符
选择Quote字符,用于包裹日志中的特殊字符,避免被转义。
是否允许下载不精确的结果
如果选择否,则当出现查询结果不精确时,会导致下载失败。
压缩方式
支持gzip、lz4、zstd等压缩方式,也支持不压缩。
当下载的日志数量较多时,强烈建议采用压缩方式,可显著降低下载量,减少文件的下载时间。
在下载任务对话框中,等待任务状态为任务成功后,单击下载,将日志下载到本地。
您也可以在原始日志页签中,选择,打开下载任务对话框,查看下载记录。
通过OpenAPI下载
超过单次下载的最大数量时,仅下载最大支持的数量。如果您需要下载全量日志,可缩小查询的时间范围,分多次下载。
单个阿里云账号最多支持3个并发下载操作(总下载次数无限制)。超出3个并发下载操作或多个RAM用户同时操作时,可能报错,此时您可等待其他操作完成后,再重试。
支持保存最近1天内的导出记录,超过1天的导出记录被自动清除。
在遇到网络错误或者查询不精确时,系统会自动重试下载任务。如果重试3次后,仍无法完成下载,则下载任务为失败状态。
OpenAPI 批量下载注意事项:
索引配置要求:调用 GetLogs API 或执行 SQL 查询时,需确保查询字段已在 LogStore 的索引属性中配置。如果查询字段未配置索引,将报
ParameterInvalid错误。索引配置方法请参见创建索引。下载指定字段:若只需下载特定字段(如 message),应在 SQL 中使用 SELECT 语句过滤,例如
* | SELECT message,然后执行下载操作,以减少不必要的数据量。
通过Cloud Shell下载
目前 Cloud Shell 位于上海地域,如果当前 LogStore 不在上海地域,下载日志会产生一定的外网读取流量费用。价格详情请参见产品定价。
海量日志导出:当需要导出大量日志(如亿级数据量)时,推荐使用 Cloud Shell 或 CLI/SDK 方式下载,避免通过控制台分批次下载的繁琐操作。Cloud Shell 无需手动安装依赖,适合快速执行大规模导出任务。
操作步骤,参见使用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 的日志下载命令暂不支持同时使用 --compress(压缩)和 --query(过滤)参数。若需要在大数据量下载场景中同时按条件过滤并压缩下载,建议改用 OpenAPI 的 CreateDownloadJob - 创建日志下载任务 接口创建下载任务。
更多信息,请参见使用日志服务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参考概述。
常见问题
通过控制台直接下载如何只下载指定字段?
如需通过控制台只下载指定字段,需先确保目标字段已在 LogStore 索引中创建字段索引并开启统计功能。字段索引只对索引创建或更新后写入的日志生效,历史日志需重建索引后才能按字段统计和查询。
在查询分析页面执行 SQL 语句筛选需要下载的字段,格式为 查询条件 | SELECT "字段1", 字段2。例如:
__tag__:__container_name__: tms-prod-bp-server | SELECT "__tag__:__pod_name__", __time__, content执行查询后,在统计图表页签中,单击下载日志下载查询分析结果。若需要导出包含特定关键字的结果并提高返回行数上限,可在 SQL 语句中使用 limit,例如:
关键字 | select content limit 999999下载指定字段也可通过 OpenAPI 实现,本文“通过OpenAPI下载”章节已说明索引配置要求和 SELECT 语句用法。下载 SQL 分析结果会使用 SQL独享版;若当前 LogStore 的计费模式为按写入数据量计费,下载查询和分析结果不产生费用,具体计费口径以本文“下载方式说明”为准。
控制台日志列表打不开、加载超时或在线下载失败怎么办?
如果控制台日志列表打不开、加载超时,或在线下载失败,建议先清除浏览器缓存,使用无痕模式重新访问,或更换 Chrome、Edge 浏览器。请同时确认网络连接稳定,并尽量从与 LogStore 所在地域一致的网络环境访问。
如果问题仍然存在,请检查当前账号下的并发下载任务是否已达到上限;并发上限和在线下载失败排查建议已在“通过控制台直接下载”的“重要”提示块中说明。若前端持续异常,可改用命令行工具(CLI)、Cloud Shell 或 SDK 下载,以绕过浏览器和控制台页面依赖。
控制台日志导出记录保留多久?如何查看历史下载操作?
控制台下载任务列表仅保存最近 1 天内的导出记录,超过 1 天的导出记录会自动清除。如需查看更早的历史下载操作,例如创建下载任务的 API 调用记录,可使用操作审计(ActionTrail)查询管控类 API 操作记录。
如何高效统计平均单条日志大小?
可通过离线下载功能统计平均单条日志大小。建议分别选取流量突增时段和正常时段,在控制台创建下载任务并下载到本地;下载完成后,使用文本工具统计文件总字节数并除以日志条数。例如在 Linux 环境中执行 wc -c 查看文件字节数,或使用 Python 脚本统计文件总字节数。
数据量较大时,需按时间段分批下载后分别统计。单次下载量限制沿用本文“下载方式说明”对比表口径:仅查询场景下,华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)和新加坡地域最多支持下载 2000 万行数据,其他地域最多支持下载 100 万行数据,且数据量不超过 20 GB;SQL 分析场景下,数据量不超过 2 GB。若单次导出仍不能满足需求,可先将日志投递到 OSS,再通过 OSS 下载。
为什么下载界面的任务名称和显示名称是必填项?
任务名称和显示名称都是创建日志下载任务 API 的必填参数。任务名称用于在同一 Project 下唯一标识下载任务,显示名称是控制台列表中展示给用户的标识,便于后续管理和检索下载任务。
> 下载日志