360 Secure SkillHub
360 安全技能中心

阿里云日志查询

该技能指导使用 aliyunlog CLI 查询阿里云日志服务(SLS):先安装并配置认证,然后按 project、logstore 和时间范围执行查询,支持命令行参数或 SQL WHERE 条件过滤与聚合统计,默认限制返回条数,输出 JSON 格式日志结果。

jeweis
jeweis
热度 40.91
最近更新 2026-05-11 17:35:07
分类:数据依赖:代码执行 / 第三方 API应用场景:数据处理 / DevOps / 报告撰写

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add aliyun-log-query
Metadata
name
aliyun_log_query
description
当需要查询阿里云日志(SLS)时使用此技能,支持 CLI 查询日志、分析数据。

安装

使用 uv 安装 CLI:

uv pip install -U aliyun-log-cli

确认安装:

aliyunlog --version

配置认证

CLI 支持三种方式(优先级:命令行参数 > 环境变量 > 配置文件)。

如果用户没有提供 access_id 和 access_key,需要引导用户提供后再执行查询。

方式一:configure 命令(推荐)

aliyunlog configure <access_id> <access_key> <endpoint>

示例:

aliyunlog configure LTAIxxxxxxxx xxxxxxxxx cn-hangzhou.log.aliyuncs.com

使用 HTTPS:

aliyunlog configure LTAIxxxxxxxx xxxxxxxxx https://cn-hangzhou.log.aliyuncs.com

配置文件位置:~/.aliyunlogcli,默认账号块名是 main。

方式二:命令行直接传参数

aliyunlog log get_log_all \
  --access-id=<value> \
  --access-key=<value> \
  --region-endpoint=<value> \
  --project=<value> \
  --logstore=<value> \
  ...

SDK 方法到 CLI 命令的映射规则

规则:aliyunlog log <子命令> 映射到 SDK LogClient 的方法名,参数一一对应。

示例:

  • client.create_logstore(project_name, logstore_name, ttl=2, shard_count=30)
  • → aliyunlog log create_logstore --project_name=... --logstore_name=... --ttl=... --shard_count=...

日志查询(SQL 方式)

使用 --power_sql=true 启用增强 SQL 模式,通过 SQL 的 LIMIT 控制返回条数,避免数据量过大导致上下文爆满。

如果用户没有指定 project 和 logstore,先查阅 references/project_mapping.md 查找对应的值。

Command Template

aliyunlog log get_log_all \
  --project="{{project}}" \
  --logstore="{{logstore}}" \
  --from_time="{{from_time}}" \
  --to_time="{{to_time}}" \
  --query="* | SELECT * FROM log WHERE {{query}} LIMIT {{limit}}" \
  --power_sql=true

Inputs

参数名 必填 说明
project ✅ SLS 项目名
logstore ✅ 日志库名
from_time ✅ 开始时间(字符串如 "2026-03-18 10:00:00" 或时间戳)
to_time ✅ 结束时间
query ❌ SQL WHERE 条件(默认 "1=1" 表示无过滤)
limit ❌ 最大返回条数(默认 10)

Behavior

  1. query 转化为 SQL WHERE 条件
  2. 自动拼接 SELECT * FROM log WHERE <query> LIMIT <limit>
  3. 启用 --power_sql=true
  4. 默认 limit=10,避免输出过大

重要:不要一次查全部日志,始终使用 LIMIT 限制返回条数。

Examples

1. 查询全部日志(限制 10 条)

aliyunlog log get_log_all \
  --project="my-project" \
  --logstore="app-log" \
  --from_time="2026-03-18 10:00:00" \
  --to_time="2026-03-18 11:00:00" \
  --query="1=1" \
  --limit=10 \
  --power_sql=true

2. 查询错误日志

aliyunlog log get_log_all \
  --project="my-project" \
  --logstore="app-log" \
  --from_time="2026-03-18 10:00:00" \
  --to_time="2026-03-18 11:00:00" \
  --query="log like '%ERROR%'" \
  --limit=10 \
  --power_sql=true

3. 字段过滤

aliyunlog log get_log_all \
  --project="my-project" \
  --logstore="app-log" \
  --from_time="2026-03-18 10:00:00" \
  --to_time="2026-03-18 11:00:00" \
  --query="status = 500" \
  --limit=10 \
  --power_sql=true

4. URL 统计

aliyunlog log get_log_all \
  --project="my-project" \
  --logstore="app-log" \
  --from_time="2026-03-18 10:00:00" \
  --to_time="2026-03-18 11:00:00" \
  --query="* | SELECT url, COUNT(*) AS cnt GROUP BY url ORDER BY cnt DESC LIMIT 10" \
  --power_sql=true

输出格式

格式化 JSON 输出

aliyunlog log list_project --format-output=json,no_escape

设置默认格式

aliyunlog log configure --format-output=json,no_escape

默认输出

{
  "logs": [...],
  "count": 100,
  "total": 1000
}

Error Handling

  • CLI 执行失败 → 输出 stderr
  • 无结果 → {"logs": [], "count": 0}

Notes

SQL WHERE 条件语法:

  • 全文搜索:log like '%ERROR%'
  • 字段过滤:status = 500、method = 'GET'
  • 组合条件:log like '%ERROR%' AND status = 500

统计类查询(无 WHERE)直接写完整 SQL:

  • * | SELECT url, COUNT(*) AS cnt GROUP BY url LIMIT 10

建议:

  • 限制时间范围避免慢查询
  • 默认 limit=10,避免输出过大