Category: service
# SLS日志查询和故障排查
使用SLS查询|分析语法和Python SDK进行日志搜索、过滤和分析。
前置条件
- 安装SDK(推荐使用虚拟环境以避免PEP 668限制):
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -U aliyun-log-python-sdk
-
ALIBABA_CLOUD_ACCESS_KEY_ID
-
ALIBABA_CLOUD_ACCESS_KEY_SECRET
-
SLS_ENDPOINT(例如
cn-hangzhou.log.aliyuncs.com)
-
SLS_PROJECT
-
SLS_LOGSTORE(支持单个值或逗号分隔的值)
查询组合
- 查询子句:过滤日志(例如
status:500)。
- 分析子句:统计聚合,格式为
query|analysis。
- 示例:
| SELECT status, count() AS pv GROUP BY status
完整的语法请参阅references/query-syntax.md。
快速开始(Python SDK)
import os
import time
from aliyun.log import LogClient, GetLogsRequestclient = LogClient(
os.environ["SLS_ENDPOINT"],
os.environ["ALIBABA_CLOUD_ACCESS_KEY_ID"],
os.environ["ALIBABA_CLOUD_ACCESS_KEY_SECRET"],
)
project = os.environ["SLS_PROJECT"]
logstore = os.environ["SLS_LOGSTORE"]
query = "status:500"
start_time = int(time.time()) - 15 60
end_time = int(time.time())
request = GetLogsRequest(project, logstore, start_time, end_time, query=query)
response = client.get_logs(request)
for log in response.get_logs():
print(log.contents)
脚本快速开始
python skills/observability/sls/aliyun-sls-log-query/scripts/query_logs.py \
--query "status:500" \
--last-minutes 15
可选参数:--project、--logstore(可重复,或逗号分隔的值)、--endpoint、--start、--end、--last-minutes、--limit、--parallel。
故障排查脚本
python skills/observability/sls/aliyun-sls-log-query/scripts/troubleshoot.py \
--group-field status \
--last-minutes 30 \
--limit 20
可选参数:--error-query、--group-field、--limit、--logstore(可重复,或逗号分隔的值)、--parallel,以及上述时间范围参数。
工作流
- 确保日志库索引已启用(没有索引,查询/分析将失败)。
- 编写查询子句并在需要时附加分析子句。
- 使用SDK/脚本执行并检查结果。
- 使用
limit控制返回的行数;必要时缩小时间范围。
验证
mkdir -p output/aliyun-sls-log-queryfor f in skills/observability/sls/aliyun-sls-log-query/scripts/.py; do
python3 -m py_compile "$f"
done
echo "py_compile_ok" > output/aliyun-sls-log-query/validate.txt
通过标准:命令退出0且生成output/aliyun-sls-log-query/validate.txt。
输出和证据
- 将工件、命令输出和API响应摘要保存在
output/aliyun-sls-log-query/下。
- 在证据文件中包含关键参数(区域/资源ID/时间范围)以确保可复现性。
参考资料
- 语法和示例:
references/query-syntax.md
- Python SDK初始化和查询:
references/python-sdk.md
- 故障排查模板:
references/templates.md
- 源列表:
references/sources.md
Category: service
# SLS Log Query and Troubleshooting
Use SLS query|analysis syntax and Python SDK for log search, filtering, and analytics.
Prerequisites
- Install SDK (virtual environment recommended to avoid PEP 668 restrictions):
python3 -m venv .venv
. .venv/bin/activate
python -m pip install -U aliyun-log-python-sdk
- Configure environment variables:
-
ALIBABA_CLOUD_ACCESS_KEY_ID
-
ALIBABA_CLOUD_ACCESS_KEY_SECRET
-
SLS_ENDPOINT (e.g.
cn-hangzhou.log.aliyuncs.com)
-
SLS_PROJECT
-
SLS_LOGSTORE(supports a single value or comma-separated values)
Query Composition
- Query clause: filters logs (e.g.
status:500).
- Analysis clause: statistical aggregation, format
query|analysis.
- Example:
| SELECT status, count() AS pv GROUP BY status
See references/query-syntax.md for full syntax.
Quickstart (Python SDK)
import os
import time
from aliyun.log import LogClient, GetLogsRequestclient = LogClient(
os.environ["SLS_ENDPOINT"],
os.environ["ALIBABA_CLOUD_ACCESS_KEY_ID"],
os.environ["ALIBABA_CLOUD_ACCESS_KEY_SECRET"],
)
project = os.environ["SLS_PROJECT"]
logstore = os.environ["SLS_LOGSTORE"]
query = "status:500"
start_time = int(time.time()) - 15 60
end_time = int(time.time())
request = GetLogsRequest(project, logstore, start_time, end_time, query=query)
response = client.get_logs(request)
for log in response.get_logs():
print(log.contents)
Script quickstart
python skills/observability/sls/aliyun-sls-log-query/scripts/query_logs.py \
--query "status:500" \
--last-minutes 15
Optional args: --project, --logstore(repeatable, or comma-separated values), --endpoint, --start, --end, --last-minutes, --limit, --parallel.
Troubleshooting script
python skills/observability/sls/aliyun-sls-log-query/scripts/troubleshoot.py \
--group-field status \
--last-minutes 30 \
--limit 20
Optional args: --error-query, --group-field, --limit, --logstore(repeatable, or comma-separated values), --parallel, plus the time range args above.
Workflow
1) Ensure Logstore indexing is enabled (queries/analysis fail without index).
2) Write query clause and append analysis clause when needed.
3) Execute with SDK/script and inspect results.
4) Control returned rows with limit; narrow time range when needed.
Validation
mkdir -p output/aliyun-sls-log-query
for f in skills/observability/sls/aliyun-sls-log-query/scripts/.py; do
python3 -m py_compile "$f"
done
echo "py_compile_ok" > output/aliyun-sls-log-query/validate.txt
Pass criteria: command exits 0 and output/aliyun-sls-log-query/validate.txt is generated.
Output And Evidence
- Save artifacts, command outputs, and API response summaries under
output/aliyun-sls-log-query/.
- Include key parameters (region/resource id/time range) in evidence files for reproducibility.
References
- Syntax and examples:
references/query-syntax.md
- Python SDK initialization and queries:
references/python-sdk.md
- Troubleshooting templates:
references/templates.md
- Source list:
references/sources.md