调用阿里云日志服务(SLS)CLI命令查询指定Project和Logstore下的日志数据,支持基础日志查询和SQL分析查询,适用于获取指定时间范围内、指定数量的日志数据场景。
依赖项要求操作系统Windows、Linux、macOSPython版本Python 2.7+ 或 Python 3.7+(推荐Python 3.7及以上)依赖组件docopt、aliyun-log-python-sdk、jmespath、aliyun-python-sdk-core、aliyun-python-sdk-sts、requests
创建并编辑环境变量配置文件 bash
touch ~/.bash_profile
vim ~/.bash_profile
添加Python安装路径(替换为实际路径) bash
export PATH=$PATH:/usr/local/python3/bin
使配置生效 bash
source ~/.bash_profile
右键单击「此电脑」→「属性」→「高级系统设置」→「环境变量」
在「用户变量」的「Path」中添加Python安装路径下的bin目录,例如: D:\dev\python\python37\bin
重启命令行或IDE使配置生效
bash
pip3 install aliyun-log-python-sdk aliyun-log-cli -U --no-cache
bash
aliyunlog --version
# 输出示例:aliyun-log-cli 0.2.9
升级到最新版本 bash
pip3 install aliyun-log-python-sdk aliyun-log-cli -U --no-cache
卸载CLI bash
pip3 uninstall aliyun-log-cli
命令行直接传入的全局参数(--access-id、--access-key等)
--profile参数指定的阿里云CLI配置文件凭证
ALIYUN_LOG_CLI系统环境变量
日志服务CLI配置文件(~/.aliyunlogcli)
阿里云CLI系统环境变量(ALIBABACLOUD、ALICLOUD)
阿里云CLI配置文件(~/.aliyun/config.json)
执行配置命令 bash
aliyunlog configure "你的AccessKey ID" "你的AccessKey Secret" "cn-hangzhou.log.aliyuncs.com"
验证配置 配置文件会自动生成在以下路径:
Linux/macOS: ~/.aliyunlogcli
Windows: C:\Users\你的用户名\.aliyunlogcli
文件内容示例:
ini
[main]
access-id = LTAI******pLMZ
access-key = XjAsP******eRqax
region-endpoint = cn-hangzhou.log.aliyuncs.com
sts-token =
执行配置命令(指定配置名称) bash
aliyunlog configure "你的AccessKey ID" "你的AccessKey Secret" "cn-shanghai.log.aliyuncs.com" "test"
使用指定账号执行命令 bash
aliyunlog log get_log ... --client-name=test
全局配置JSON格式化输出 bash
aliyunlog configure --format-output=json
全局配置不转义非英文字符(解决中文乱码) bash
aliyunlog configure --format-output=no_escape
组合配置(推荐) bash
aliyunlog configure --format-output=json,no_escape
当查询语句包含 $、 `、 \、 ! 等特殊字符时,需使用以下两种方式之一转义:
反斜线转义 bash
--query="event_name:\$_enter"
单引号强制引用(推荐) bash
--query='event_name:$_enter'
阿里云日志查询
SLS日志查询
aliyun log get
查询阿里云日志
SLS日志分析
参数名类型是否必选默认值描述projectstring是-阿里云SLS Project名称logstorestring是-阿里云SLS Logstore名称from_timestring是-查询开始时间,支持两种格式:
1. Unix时间戳(秒级)
2. %Y-%m-%d %H:%M:%S<time_zone> 格式,如 2026-05-14 18:00:00+8:00to_timestring是-查询结束时间,格式同 from_timetopicstring否""日志主题,默认空字符串querystring否"*"查询语句或SQL分析语句,默认查询所有日志reverseboolean否false仅基础查询有效,是否按时间戳降序返回日志
true:降序
false:升序(默认)offsetinteger否0仅基础查询有效,查询开始行偏移量sizeinteger否100仅基础查询有效,返回最大日志条数,范围0-100power_sqlboolean否false是否使用SQL独享版
true:使用独享版
false:使用普通版(默认)
参数名类型是否必选示例值描述access-idstring否LTAI****************阿里云AccessKey ID,优先级高于配置文件access-keystring否yourAccessKeySecret阿里云AccessKey Secretsts-tokenstring否-STS临时访问令牌region-endpointstring否cn-hangzhou.log.aliyuncs.comSLS服务入口域名client-namestring否test使用指定的多账号配置名称profilestring否akProfile使用阿里云CLI配置文件中的凭证format-outputstring否json,no_escape输出格式,支持组合:json、no_escapejmes-filterstring否"data[*].status"JMES语法表达式,过滤返回结果decode-outputstring否utf8二进制日志解码方式,支持utf8、latin1、gbk
bash
aliyunlog log get_log \
--project="{{project}}" \
--logstore="{{logstore}}" \
--from_time="{{from_time}}" \
--to_time="{{to_time}}" \
{{#if topic}}--topic="{{topic}}"{{/if}} \
{{#if query}}--query="{{query}}"{{/if}} \
{{#if reverse}}--reverse={{reverse}}{{/if}} \
{{#if offset}}--offset={{offset}}{{/if}} \
{{#if size}}--size={{size}}{{/if}} \
{{#if power_sql}}--power_sql={{power_sql}}{{/if}} \
{{#if access-id}}--access-id="{{access-id}}"{{/if}} \
{{#if access-key}}--access-key="{{access-key}}"{{/if}} \
{{#if sts-token}}--sts-token="{{sts-token}}"{{/if}} \
{{#if region-endpoint}}--region-endpoint="{{region-endpoint}}"{{/if}} \
{{#if client-name}}--client-name="{{client-name}}"{{/if}} \
{{#if profile}}--profile="{{profile}}"{{/if}} \
{{#if jmes-filter}}--jmes-filter="{{jmes-filter}}"{{/if}} \
{{#if decode-output}}--decode-output="{{decode-output}}"{{/if}} \
--format-output={{format_output|default("json,no_escape")}}
text
用户输入:查询阿里云日志 project=aliyun-test-project logstore=logstore-a from_time="2026-05-14 18:00:00+8:00" to_time="2026-05-14 18:30:00+8:00" query="level:INFO" reverse=true
生成命令: bash
aliyunlog log get_log \
--project="aliyun-test-project" \
--logstore="logstore-a" \
--from_time="2026-05-14 18:00:00+8:00" \
--to_time="2026-05-14 18:30:00+8:00" \
--query="level:INFO" \
--reverse=true \
--format-output=json,no_escape
text
用户输入:阿里云日志分析 project=aliyun-test-project logstore=logstore-a from_time="2026-05-14 00:00:00+8:00" to_time="2026-05-14 18:30:00+8:00" query="* | select status,COUNT(*) as pv group by status order by pv desc limit 20"
生成命令: bash
aliyunlog log get_log \
--project="aliyun-test-project" \
--logstore="logstore-a" \
--from_time="2026-05-14 00:00:00+8:00" \
--to_time="2026-05-14 18:30:00+8:00" \
--query="* | select status,COUNT(*) as pv group by status order by pv desc limit 20" \
--format-output=json,no_escape
text
用户输入:SLS临时查询 project=aliyun-test-project logstore=logstore-a from_time="2026-05-14 12:00:00+8:00" to_time="2026-05-14 18:30:00+8:00" access-id="LTAI******" access-key="XjAsP******" region-endpoint="cn-beijing.log.aliyuncs.com"
生成命令: bash
aliyunlog log get_log \
--project="aliyun-test-project" \
--logstore="logstore-a" \
--from_time="2026-05-14 12:00:00+8:00" \
--to_time="2026-05-14 18:30:00+8:00" \
--access-id="LTAI******" \
--access-key="XjAsP******" \
--region-endpoint="cn-beijing.log.aliyuncs.com" \
--format-output=json,no_escape
text
用户输入:查询阿里云日志 project=aliyun-test-project logstore=logstore-a from_time="2026-05-14 18:00:00+8:00" to_time="2026-05-14 18:30:00+8:00" jmes-filter="data[*].status"
生成命令: bash
aliyunlog log get_log \
--project="aliyun-test-project" \
--logstore="logstore-a" \
--from_time="2026-05-14 18:00:00+8:00" \
--to_time="2026-05-14 18:30:00+8:00" \
--jmes-filter="data[*].status" \
--format-output=json,no_escape
SQL分析查询特殊规则:当 query 参数包含SQL分析语句时, reverse、 offset、 size 参数无效,必须通过SQL语句的 ORDER BY 指定排序,通过 LIMIT 语法实现分页
时间格式要求:必须指定时区,中国区建议使用 +8:00 时区,如 2026-05-14 18:30:00+8:00
返回条数限制:基础查询单次最多返回100条日志,如需更多数据请使用分页查询
SQL独享版:除了通过 power_sql=true 参数开启外,也可以在 query 语句中添加 set session parallel_sql=true;
凭证安全:避免在命令行明文输入AccessKey,优先使用配置文件或环境变量方式
特殊字符处理:查询语句包含特殊字符时,必须使用单引号引用或反斜线转义
多账号使用:跨账号操作时,使用 --client-name 指定配置名称,或通过 --profile 使用阿里云CLI凭证
返回结果为JSON格式,主要包含两部分:
data:查询结果数据数组,包含日志字段和分析结果
meta:查询元信息,包括执行状态、处理行数、CPU耗时、是否准确等
示例返回结果:
json
{
"data": [
{
"__source__": "192.168.1.100",
"__time__": "1747297200",
"pv": "1256",
"status": "200"
},
{
"__source__": "192.168.1.101",
"__time__": "1747297200",
"pv": "42",
"status": "500"
}
],
"meta": {
"count": 2,
"isAccurate": true,
"progress": "Complete",
"processedRows": 1298,
"cpuSec": 0.032,
"elapsedMillisecond": 15
}
}
错误现象可能原因解决方法命令未找到:aliyunlogPython环境变量未配置或CLI未安装检查Python环境变量,重新执行安装命令权限不足:UnauthorizedAccessKey错误或无SLS操作权限验证AccessKey有效性,为RAM用户授予SLS相关权限服务不可达:Connection refusedEndpoint错误或网络不通检查region-endpoint是否正确,确认网络可访问SLS服务入口时间格式错误未指定时区或格式不正确使用 %Y-%m-%d %H:%M:%S+8:00 格式,确保时区正确SQL语法错误分析语句语法不正确检查SQL语句,参考SLS查询分析语法文档中文显示乱码输出未配置no_escape添加 --format-output=json,no_escape 参数参数无效:offset/size使用了SQL分析语句但仍传入offset/size移除offset/size参数,使用SQL的LIMIT语法分页需要我帮你补充 自动分页查询 和 批量导出日志 的高级用法示例,让这个技能支持更多实际场景吗?