qwencloud-observe
Report the health, performance, resource status, and actual billed cost of an application deployed by qwencloud-deploy to Alibaba Cloud International (alibabacloud.com), in plain language and without opening the console. Reads the local .qwencloud-deploy state file to identify the app and its ECS (and optional RDS MySQL) resources, then queries read-only cloud APIs to summarize application availability, ECS/RDS performance, and USD cost. Use when: the user asks how their deployed app is doing, wants a health/performance/cost overview, asks about CPU/memory/connections/slow SQL risk, or asks the monthly cost of a qwencloud-deployed app. Do not use when: no .qwencloud-deploy state file exists, the target is Aliyun China (use qianwenai-observe), or the user wants to change/recover resources (use qwencloud-operate).
How do I install this agent skill?
npx skills add https://github.com/qwencloud/qwencloud-deploy --skill qwencloud-observeIs this agent skill safe to install?
- Gen Agent Trust Hubpass
The skill is a cloud observability tool for Alibaba Cloud that follows security best practices. It uses read-only cloud APIs and the Alibaba Cloud Assistant to monitor application health and costs. Security measures include mandatory redaction of secrets, log summarization, and proper output escaping in the provided reporting script.
- Socketwarn
1 alert: gptAnomaly
- Snykpass
Risk: LOW · No issues
What does this agent skill do?
Qwen Cloud Observe
Read-only observability for an application deployed by qwencloud-deploy. Answers "how is my
app doing and what will it cost" without the console. All prices are USD.
Quick Path
- Identify the app — read
.qwencloud-deployin the project directory (references/workflow.md). - Pick the window — default last 1h; user may pick 15m / 1h / 24h.
- Check each layer — Application, ECS, (optional) RDS, Cost. Each check returns one of the unified result states; a failed check never blocks the others.
- Report — one-line conclusion, then per-layer summary, risks, data timestamp, unknowns.
Scope
| In Scope | Out of Scope |
|---|---|
Apps deployed by qwencloud-deploy (state file present) | Apps without a .qwencloud-deploy state file |
| Single ECS, or ECS + RDS MySQL 8.0 | Other topologies / self-managed servers |
| Read-only availability, performance, cost overview | Any change to cloud resources → use qwencloud-operate |
| Report runtime status (availability, performance, cost) | Source-code review, finding bugs/vulns, judging which line is wrong, editing code |
| Alibaba Cloud International, USD | Aliyun China → use qianwenai-observe |
Code issues are out of scope
This skill is read-only observation, reporting runtime availability, performance, and cost. It does not review source code, locate defects, or edit code.
When code is involved, tell the user plainly: editing code is outside this skill's scope, the user must decide and make the change themselves, and any consequences are the user's own.
Prerequisites
Aliyun CLI: run
aliyun version(need 3.x). All queries use the PascalCase native form straight to OpenAPI — no plugin dependency. Credentials: check withaliyun configure listonly. Never read, echo, print, or ask for AK/SK/tokens. If no valid profile exists, stop and ask the user to configure credentials outside this session. Seereferences/cli_installation_guide.md.
States and scoring
Every layer returns one state — healthy · degraded · unavailable · unknown — carrying its
check time, target resource, key evidence, and data source. When a single query fails, keep
checking the other layers and mark the failed item unknown — never silently drop it, never
fabricate data.
Each layer also gets a score, and the layer scores sum to a 0-100 health score with an A/B/C/D
grade (>=90 A · >=75 B · >=60 C · <60 D). Four dimensions are scored:
| Dimension | Weight (with RDS) | Weight (no RDS) | Signals |
|---|---|---|---|
| Application | 35 | 45 | reachability, /healthz, response time, error rate, certificate validity (with domain) |
| ECS | 30 | 45 | CPU, memory, disk usage, disk IO, network |
| RDS | 25 | — | connections, slow SQL, space, row-lock waits |
| Availability | 10 | 10 | ECS/RDS run status, recent system events, EIP status and bandwidth, security-group exposure |
When the app has no RDS, its weight moves to Application and ECS. Cost is never scored — it is shown separately as the actual bill plus a utilization-based optimization note.
Missing backups/snapshots and security-group hardening are surfaced as risks and recommendations, not scored; availability-affecting signals — EIP unbound, bandwidth saturated, missing 80/443 ingress — count toward the Availability dimension.
How to check
Start by identifying the app, then look at each layer. Read the linked guide before running its
commands. A failed check never blocks the others — mark it unknown and move on.
The layer checks are independent and read-only — after identifying the app, fire each layer's
read-only APIs in parallel (background & + wait) rather than waiting serially; merge the Cloud
Assistant commands on one ECS into a single script fetched in one round trip.
- Identify the app — read
.qwencloud-deployfor the region and resource IDs. See workflow. - Is the app reachable? — probe the public address and
/healthz, check the app and Nginx services and their ports, and summarize recent errors. See observe-application. - How is the server doing? — ECS status plus CPU, network, disk, and memory over the window. See observe-ecs.
- How is the database doing? (only when the app has RDS) — status, connections, QPS/TPS, space, row-lock waits, and redacted slow SQL. See observe-rds.
- How are the public entry and exposure? — EIP status and bandwidth, security-group 80/443 and exposure risks. See observe-network.
- Any maintenance or backups? — ECS system events, system-disk snapshots, RDS backups. See observe-resilience.
- What is it costing? — the actual billed cost for the app, with an optional month-end projection. See observe-cost.
- Score and pull it together — score each layer, sum to the health score and grade, and write one plain-language conclusion. See workflow.
The default window is the last hour; honor an explicit 15 minutes / 1 hour / 24 hours request and state the window used.
What to tell the user
Lead with the health score and grade plus a one-line verdict, then a short line each for the
application, server, database (if any), and cost — each with the evidence behind it. Call out risks
and note anything you could not determine and why, plus the data timestamp. When operate_audit.jsonl
exists in the project directory, include the most recent operate action (time, action, result) so
the score lines up with the latest recovery. When you find a real fault, offer to move on to fault
diagnosis with qwencloud-operate: use AskUserQuestion to present Diagnose and fix now /
Just look, no changes; picking the former enters qwencloud-operate. Also write the evidence
already gathered to observe_handoff.json in the project directory (fault layer, key metrics, data
timestamp; never any password/signed URL) so operate can use it as a starting point and skip
repeating the read-only checks.
Health score: 87 / 100 (B, Good) — app healthy; watch the RDS connection trend.
Application: reachable, current response time 186 ms; app and Nginx services healthy.
Certificate: valid, 54 days remaining (app.example.com).
ECS: healthy, last 1h average CPU 31%, no sustained high load.
RDS: healthy, active connections rose from 12 to 38 — watch the connection-pool trend.
Cost: actual bill for 2026-08 so far $12.40 (ECS $7.80, RDS $4.60).
Data as of: 2026-08-03 16:20 UTC+8
After the summary, proactively ask whether to export a report file, e.g. "Want me to export a Markdown or HTML report?" — the user decides; do not force it.
Interaction form
- Read-only information (checkup verdict, status, cost): plain text, with one evidence line after each judgment (metric, status, timestamp).
- State-changing actions (entering operate, exporting a report): use AskUserQuestion whose prompt answers what it does · impact · how to verify; do nothing before the user confirms.
- Proactive discipline: stay quiet when healthy; speak up only on a risk or real fault, and offer at most one follow-up action (diagnose / export report) for the user to choose.
Render a report file (optional)
When the user wants a saved Markdown or HTML report, gather every layer's state, per-layer score,
key metrics, and evidence into one JSON object and let scripts/render_report.py render it — do
not hand-format the final file. The HTML output is a multi-card report (overview with the score
and anomalies, one card per layer with a metric table, a cost card, and recommendations); Markdown
is the lightweight equivalent.
- Print the schema and fill it in:
python3 scripts/render_report.py --schema. Each layer needs astate, ascore/max_score,metrics[], anddetail;assessment.health_scoremust equal the sum of the layer scores and match its grade; cost carries the actual billed amount only. - Validate before rendering:
python3 scripts/render_report.py --validate -i data.json. Fix any reported issue (bad state,unknownwithout a reason, grade/score mismatch, any estimate in cost). - Render in the format the user picks:
python3 scripts/render_report.py -i data.json -f md -o report.md(or-f html).
Handoff to operate (optional)
When you find a real fault and the user chooses to enter qwencloud-operate, write
observe_handoff.json to the project directory so operate can start from it and verify the named
layer first:
{
"from": "qwencloud-observe",
"generated_at": "2026-08-03T16:20:00+08:00",
"fault_layer": "rds",
"symptoms": ["RDS active connections rose from 12 to 190, near the cap"],
"metrics": {"rds_active_connections": 190, "app_http_code": 200}
}
fault_layer is one of app / nginx / ecs / rds / network / disk. Write only read-only
observed evidence; never a password, connection string, or signed URL. It is a hint only —
operate still verifies independently before proposing any recovery action.
Security
| Rule | Detail |
|---|---|
| Read-only only | Cloud Assistant commands must be read-only; never modify instance/app state. |
| No secrets | Never read/output passwords from .qwencloud-deploy.local. |
| Redaction | Mask AccessKey, tokens, passwords, connection-string passwords, and cookies in any log output. |
| Slow SQL | Output SQL templates / redacted SQL only, length-limited; never raw literal values. |
| Cost | Show actual billed cost only (USD) with the billing cycle; never show an estimate. When there is no bill yet, mark cost unknown. |
Required Permissions
See references/ram_policies.md. Read-only except cms:InstallMonitoringAgent (lazy agent install):
ecs:DescribeInstances,
ecs:RunCommand + ecs:DescribeInvocations (read-only commands), cms:DescribeMetricList,
cms:DescribeMonitoringAgentStatuses, cms:InstallMonitoringAgent, ecs:DescribeSecurityGroupAttribute,
ecs:DescribeInstanceHistoryEvents, ecs:DescribeSnapshots, vpc:DescribeEipAddresses,
bssopenapi:QueryInstanceBill, bssopenapi:QueryBill, and (with RDS)
rds:DescribeDBInstances, rds:DescribeDBInstanceAttribute, rds:DescribeDBInstancePerformance,
rds:DescribeSlowLogRecords, rds:DescribeBackups.
More detail
The per-layer guides are linked from "How to check" above. Two setup references:
- CLI setup — install and credential check.
- CLI gotchas — parameter shapes, time formats, response parsing.
- RAM policies — the read-only permissions this skill needs.
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/qwencloud/qwencloud-deploy/qwencloud-observe">View qwencloud-observe on skillZs</a>