Token导航 LogoToken导航TokenDH.com
研究检索敏感数据clawhub未标认证来源可访问clear审计通过

alibabacloud-sls-query阿里云 sls 查询

Agent Skill

alibabacloud-sls-query 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

3,128

周安装

133

GitHub Stars

公开资料未说明

下载量

1,096
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:alibabacloud-sls-query(阿里云 sls 查询)
来源仓库:https://github.com/sdk-team/alibabacloud-sls-query
安装命令:
openclaw skills install alibabacloud-sls-query
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install alibabacloud-sls-query

简介

阿里云SLS日志查询与分析技能,支持复杂索引编写与执行。

  • 适用于日志排障与实时监控场景。alibabacloud-sls-query 属于研究检索类 Skill,可作为该场景下的辅助能力补充。
  • 可解释与优化SLS查询语句提升性能。
  • 安装命令:openclaw skills install alibabacloud-sls-query。
  • 使用前需确认时间范围与查询权限,防止数据泄露。

SKILL.md

name
alibabacloud-sls-query
description
|
Triggers
SLS 查询", "SLS 分析", "日志查询", "日志分析", "log query", "analyze sls logs", "aliyun log query".

Alibaba Cloud SLS Query & Analysis

Scenario Description

Use this skill when the user wants to:

  • Explain, rewrite, optimize or execute an existing query
  • Translate a natural-language requirement into an SLS index query, SQL, or SPL statement

Prerequisites

Install Aliyun CLI

Run aliyun version to verify if version >= 3.3.8. If not installed or outdated, follow the doc references/cli-installation-guide.md to install or update.

Ensure AI Mode Enabled

Before executing any CLI commands, enable AI-Mode, set User-Agent, and update plugins:

aliyun configure ai-mode enable
aliyun configure ai-mode set-user-agent --user-agent "AlibabaCloud-Agent-Skills/alibabacloud-sls-query"
aliyun plugin update

Check Alibaba Cloud credentials configured

Run aliyun configure list to check if credentials configured. If no valid profile is shown, STOP here and ask the user to run aliyun configure outside of this session.

Security rules:

  • NEVER read, echo, or print AK/SK values
  • NEVER ask the user to paste AK/SK into the conversation
  • ONLY use aliyun configure list to check credential status

RAM Permission Requirements

APICLIActionPurpose
GetLogsV2get-logs-v2log:GetLogStoreLogsRun query / SQL / SPL and read results
GetIndexget-indexlog:GetIndexRead index config to verify prerequisites

For the minimum and complete RAM policy JSON, see references/ram-policies.md.

Permission failure handling: If a call returns Unauthorized permission error, stop and surface references/ram-policies.md to the user. Do not retry with a different account without explicit user confirmation.

Core Workflow

  1. Read index configuration (GetIndex)
  2. Pick query mode
  3. Build statement
  4. Resolve time range
  5. Execute query
  6. Extract data from response
  7. Present CLI command and results

Step 1: Read the Index Configuration (Mandatory)

Always call get-index first — the index config decides which query modes are available in Step 2.

aliyun sls get-index \
  --project <project> --logstore <logstore>

Two sections in the response drive every later decision:

SectionMeaning
lineFull-text index — absence means full-text search is disabled
keysField indexes — map of field → { type, doc_value, token, caseSensitive, chn, ... }. doc_value: true means statistics are enabled on that field

If the call returns IndexConfigNotExist (HTTP 404), or the response has neither line nor keys populated, the Logstore has no index at all — stop immediately and tell the user they must create an index before any query / SQL / SPL can run.

  • The response can be large — extract only the fields relevant to the current query. Cache per logstore and reuse within the session.

For field types, tokenization, and how get-index maps to capabilities, see references/related-apis.md and references/query-analysis.md.


Step 2: Pick the Query Mode (Critical)

The query statement takes one of the following forms:

PriorityModeStatement FormUse whenRequires
1Index search<index-search>Filtering raw logs; return time-ordered and paginated logsFull-text (line) or any field index (keys.<field>)
2SQL`<index-search> \<SQL>`Aggregation, GROUP BY, sort, window, top-N, projection, and other analytical operationsTarget field has keys.<field> with doc_value: true
3SQL scan`<index-search> \<SQL scan>`User requestedNone
4SPL`<index-search> \<SPL>`User requestedNone

Selection rule:

  • Always prefer Index search for fastest speed.
  • Use Index search + SQL when the user needs analytical operations or field projection rather than full raw-log retrieval, such as aggregation, GROUP BY, sorting, window analysis, top-N, or returning only the required fields/columns.
  • Do not proactively choose SQL scan or SPL; use them only when the user explicitly requests.

For the full decision guide, see references/query-analysis.md.


Step 3: Write the Statement

3.1 Build the index-search segment first (left of |)

Collect every filter that can be expressed in index-search syntax and place it before the first |. Use * if no filter applies.

* and "payment failed" and status: "500" and not path: "/healthz"
  • * matches all; "..." is full-text (needs full-text index).
  • key: "value" is a field filter (needs field index).
  • Combine with and / or / not; group with parentheses.
  • key: * means field exists. Range (>, >=, [a, b]) works only on long / double.

If the requirement can be fully answered without aggregation or row-level processing, stop here — this is already a complete index search. For full index-search syntax, see references/query-analysis.md.

3.2 Append SQL — for aggregation / analytics

status: 500 | SELECT date_trunc('minute', __time__) AS minute,
                    count(*) AS errors
              FROM log
              GROUP BY minute
              ORDER BY minute
  • Read references/query-analysis.md for Query & SQL rules
  • Table name is log (recommended to omit).
  • SQL respects the indexed field type from get-index — a long / double field can be compared directly (status >= 500). Cast only when a field is indexed as text but numeric semantics are needed (try_cast to suppress errors).
  • Read references/functions-guide.md for unusual Function selection (aggregate, JSON, regex, datetime, IP geo …)

3.3 Append SPL — for row-level processing / flexible filtering

status: 500 and service: payment
| where try_cast(latency as BIGINT) > 1000
| extend latency_ms = try_cast(latency as BIGINT)
| project service, latency_ms, message

For SPL syntax, pipeline commands, and field-handling rules, read references/spl-guide.md.

3.4 Append SQL scan — fallback when the target field has no index / statistics

Syntax follows regular SQL (see 3.2), with one difference: every field is varchar, so always cast() / try_cast() before numeric comparison or arithmetic. See references/query-analysis.md for scan semantics.

* | set session mode=scan; SELECT api, count(1) AS pv FROM log GROUP BY api

Step 4: Resolve the Time Range

Generate --from / --to as Unix timestamps in seconds before building the CLI command. --from is inclusive and --to is exclusive.

Choose one of three input patterns:

  1. Relative time — user says "recent / last N minutes|hours|days".
  2. Natural-language absolute time without timezone — normalize to YYYY-MM-DD HH:MM:SS, then parse using the machine's local timezone.
  3. Absolute time with explicit timezone — parse using the customer-provided timezone or UTC offset.

1. Relative time

# recent 15 minutes
FROM=$(($(date +%s) - 900))
TO=$(date +%s)

2. Natural-language absolute time without timezone

If the user gives a date/time but no timezone, use the machine's local timezone. First normalize natural language such as 2026年3月13日12点 to 2026-03-13 12:00:00, then parse it as local time.

# Example: 2026年3月13日12点 -> 2026-03-13 12:00:00

# Linux (GNU date): local timezone
FROM=$(date -d "2026-03-13 12:00:00" +%s)

# macOS (BSD date): local timezone
FROM=$(date -j -f "%Y-%m-%d %H:%M:%S" "2026-03-13 12:00:00" +%s)

For a time range such as "2026年3月13日12点到13点", compute both endpoints the same way. For a single point-in-time request, infer a practical window from the user's intent; if unclear, ask for the range before executing.

3. Absolute time with explicit timezone

To convert a local date/time to a Unix timestamp: parse the input as UTC with date -u, then subtract the timezone's UTC offset in seconds.

Formula: unix_ts = date_utc_parse(input) − (UTC_offset_hours × 3600)

# Example: 2025-01-15 10:30:00 Beijing Time (UTC+8)
# Beijing is UTC+8, so subtract 8 × 3600 = 28800

# Linux (GNU date)
FROM=$(( $(date -u -d "2025-01-15 10:30:00" +%s) - 28800 ))

# macOS (BSD date)
FROM=$(( $(date -u -j -f "%Y-%m-%d %H:%M:%S" "2025-01-15 10:30:00" +%s) - 28800 ))
# Example: 2025-01-15 10:30:00 New York Time (UTC-5)
# New York is UTC-5, so subtract -5 × 3600 = subtract -18000 = add 18000

# Linux (GNU date)
FROM=$(( $(date -u -d "2025-01-15 10:30:00" +%s) + 18000 ))

# macOS (BSD date)
FROM=$(( $(date -u -j -f "%Y-%m-%d %H:%M:%S" "2025-01-15 10:30:00" +%s) + 18000 ))

Common UTC offsets (value to subtract):

TimezoneUTC offset hoursSeconds to subtract
Beijing (UTC+8)+828800
Tokyo (UTC+9)+932400
London (UTC)00
New York (UTC-5)-5-18000

Step 5: Execute via get-logs-v2

Use aliyun sls get-logs-v2 to execute queries. Run aliyun help sls get-logs-v2 to see CLI parameter usage; read references/related-apis.md for detailed API parameter descriptions.

Required CLI flags:

  • --project: SLS project name
  • --logstore: Logstore name within the project
  • --from: Start of time range, Unix timestamp in seconds (inclusive)
  • --to: End of time range, Unix timestamp in seconds (exclusive)
  • --query: Statement built in Step 3

Pagination works differently depending on whether the statement has a |:

5.1 Index-search only — paginate with --offset / --line

aliyun sls get-logs-v2 \
  --project my-project --logstore my-logstore \
  --from 1740000000 --to 1740003600 \
  --query '* and "payment failed" and status: "500"' \
  --line 100 --offset 0 --reverse true
  • Pagination: --line is page size (1–100, required); --offset is the start row (optional, default 0).
  • Ordering: --reverse true returns newest first; default false is oldest first.

5.2 With SQL — paginate with LIMIT inside the statement

aliyun sls get-logs-v2 \
  --project my-project --logstore my-logstore \
  --from 1740000000 --to 1740003600 \
  --query 'status: "500" | SELECT request_uri, count(*) AS cnt FROM log GROUP BY request_uri ORDER BY cnt DESC LIMIT 20'
  • SQL default result cap is 100 rows. To get more results or paginate:

- LIMIT count — raise the cap (e.g., LIMIT 500 returns up to 500 rows) - LIMIT offset, count — paginate (e.g., LIMIT 20, 20 for rows 21–40; LIMIT 40, 20 for rows 41–60). Max offset+count is 1000000. - Do not use LIMIT count OFFSET offset syntax — it is not supported. Always use LIMIT offset, count.

  • Ordering: use ORDER BY <field> DESC/ASC to sort.

Result completeness check: every response contains meta.progress. If it is Incomplete, re-issue the same request until it returns Complete.


Step 6: Extract Data from the Response

get-logs-v2 returns:

{
  "meta": { "progress": "Complete", "count": 10, ... },
  "data": [ { "field1": "value1", ... }, ... ]
}
FieldMeaning
meta.progressComplete or Incomplete (see Step 5)
meta.countNumber of rows returned
dataArray of log entries or aggregation rows; may contain __time__ (Unix seconds, string)

Use jq (preferred) or --cli-query (JMESPath) to extract the fields the user needs:

Extractjq--cli-query (JMESPath)
Data rows`\jq '.data'`--cli-query 'data'
Progress`\jq '.meta.progress'`--cli-query 'meta.progress'
Row count`\jq '.meta.count'`--cli-query 'meta.count'
Specific fields`\jq '.data[] \{LogStore, read_mb}'`--cli-query 'data[].{LogStore: LogStore, read_mb: read_mb}'

Step 7: Present the CLI Command and Results

CLI command — always show the full, copy-paste-ready aliyun sls get-logs-v2 ... command. Redact any AK/SK. If the query was not executed (write / explain scenario), present the command the user should run.

Results — when a query was executed, use Step 6 to extract data and format according to the user's request (table, list, summary, etc.). Append one sentence explaining the query mode choice.


Cleanup

Whether operations succeed or fail, you MUST disable AI-Mode before ending the session:

aliyun configure ai-mode disable

Global Rules

  • Always prefer Index search for fastest raw-log retrieval, and use Index search + SQL for analysis or field projection.
  • When the user only needs specific fields, use SELECT to project them rather than fetching full raw logs — this reduces network overhead. Requires doc_value: true on the target fields (confirmed in Step 1).
  • Do not hard-code __time__ filters — pass time range via --from / --to.
  • Deprecated API: never call get-logs; always use get-logs-v2.

Troubleshooting

When the user reports "no data", "wrong result", or a CLI error, walk through the checklist in this exact order:

  1. Time range — wrong --from/--to? Milliseconds instead of seconds? Recent writes still indexing?
  2. Index configuration — field index missing? Full-text index off? Target field not in keys?
  3. Field type / statistics — range query on a text field? SQL on a field without doc_value?
  4. Syntax — mixed SQL and SPL? Leading * in fuzzy match? SPL string escaping?
  5. Mode choice — scanning when an index-based query would do? Aggregating in SPL instead of SQL?
  6. Completenessmeta.progress = Incomplete, caller did not retry (see Step 5).
  7. ProjectNotExist — region or endpoint is wrong. See references/regions.md.
  8. Network failure (timeout, connection refused) — try switching to internal endpoint. See references/regions.md.

For the full catalog of failure modes and error codes, see references/troubleshooting.md and the Common Errors table in references/related-apis.md.


Reference Documents

DocumentDescription
references/query-analysis.mdMode decision, index-search / SQL rules, scan semantics
references/spl-guide.mdSPL pipeline syntax, common commands, field handling
references/functions-guide.mdFunction categories, SQL/SPL differences, templates
references/troubleshooting.md"No data / wrong result / error" playbook
references/related-apis.mdGetLogsV2 and GetIndex API & CLI reference
references/ram-policies.mdMinimum and complete RAM policies
references/cli-installation-guide.mdAliyun CLI install, auth modes, profiles
references/regions.mdRegion / endpoint configuration, internal endpoint, ProjectNotExist troubleshooting
references/acceptance-criteria.mdCLI invocation acceptance tests
references/query_analysis/*.yaml · references/spl/*.yaml · references/functions/*.yamlSource-of-truth YAMLs bundled with this skill

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

91.86%
按下载量换算1,007

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills