aliyun-observability

Alibaba Cloud Observability Integration (OpenClaw)

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "aliyun-observability" with this command: npx skills add cinience/alicloud-skills/cinience-alicloud-skills-aliyun-observability

Alibaba Cloud Observability Integration (OpenClaw)

This skill provisions Alibaba Cloud SLS observability for OpenClaw on Linux and keeps reruns safe.

At a high level, execute this flow:

  • Check and install aliyun CLI (install latest when missing)

  • Install LoongCollector by project region (skip if already running)

  • Create an identifier-based machine group (local identifier + cloud machine group)

  • Create logstore index and dashboards

  • Create logstore collection config

  • Bind the collection config to the machine group

Capture Intent Before Execution

Before running commands, make sure the user intent is complete:

  • Confirm the target PROJECT and LOGSTORE .

  • Confirm Linux host access with sudo available.

  • Confirm AK/SK are already exported in environment variables.

  • If any required input is missing, ask for it first and do not run partial setup.

Prerequisites

Required:

  • PROJECT : SLS project name

  • LOGSTORE : SLS logstore name

Read from environment variables:

  • ALIBABA_CLOUD_ACCESS_KEY_ID

  • ALIBABA_CLOUD_ACCESS_KEY_SECRET

  • ALIYUN_UID (used for the local UID file under /etc/ilogtail/users )

Recommended optional:

  • ALIBABA_CLOUD_REGION_ID (auto-resolved from PROJECT when not set)

If you use different AK/SK variable names, export them to these standard names first.

Expected Result

After successful execution, the environment should contain:

  • Running LoongCollector (or ilogtaild ) on the host

  • Machine group openclaw-sls-collector

  • Logstore index created on the target LOGSTORE

  • Dashboards openclaw-audit and openclaw-gateway

  • Collection config openclaw-audit_${LOGSTORE}

  • Config binding between openclaw-audit_${LOGSTORE} and openclaw-sls-collector

One-Time Execution Flow (Idempotent)

The commands below are designed as "exists -> skip" and are safe to rerun. Strict template mode: for index/config/dashboard payloads, always read from files in references/ . Do not handcraft or simplify JSON bodies beyond required placeholder replacement.

set -euo pipefail

===== User inputs =====

: "${PROJECT:?Please export PROJECT}" : "${LOGSTORE:?Please export LOGSTORE}" : "${ALIBABA_CLOUD_ACCESS_KEY_ID:?Please export ALIBABA_CLOUD_ACCESS_KEY_ID}" : "${ALIBABA_CLOUD_ACCESS_KEY_SECRET:?Please export ALIBABA_CLOUD_ACCESS_KEY_SECRET}" : "${ALIYUN_UID:?Please export ALIYUN_UID}"

MACHINE_GROUP="openclaw-sls-collector" CONFIG_NAME="openclaw-audit_${LOGSTORE}"

1) Install aliyun CLI if missing (Linux)

if ! command -v aliyun >/dev/null 2>&1; then if command -v apt-get >/dev/null 2>&1; then sudo apt-get update sudo apt-get install -y aliyun-cli elif command -v dnf >/dev/null 2>&1; then sudo dnf install -y aliyun-cli elif command -v yum >/dev/null 2>&1; then sudo yum install -y aliyun-cli elif command -v zypper >/dev/null 2>&1; then sudo zypper -n install aliyun-cli else echo "aliyun CLI not found. Install aliyun-cli manually for your Linux distribution." >&2 exit 1 fi fi

Export auth variables for aliyun CLI

export ALIBABA_CLOUD_ACCESS_KEY_ID export ALIBABA_CLOUD_ACCESS_KEY_SECRET

is_loong_running() { if sudo /etc/init.d/loongcollectord status 2>/dev/null | grep -qi "running"; then return 0 fi if sudo /etc/init.d/ilogtaild status 2>/dev/null | grep -qi "running"; then return 0 fi return 1 }

2) Resolve region and install LoongCollector (skip when already running)

REGION_ID="${ALIBABA_CLOUD_REGION_ID:-}" if [ -z "$REGION_ID" ]; then REGION_ID="$(aliyun sls GetProject --project "$PROJECT" --cli-query 'region' --quiet 2>/dev/null | tr -d '"' || true)" fi if [ -z "$REGION_ID" ]; then echo "Cannot resolve region from project: $PROJECT. Please set ALIBABA_CLOUD_REGION_ID." >&2 exit 1 fi

if ! is_loong_running; then wget "https://aliyun-observability-release-${REGION_ID}.oss-${REGION_ID}.aliyuncs.com/loongcollector/linux64/latest/loongcollector.sh" -O loongcollector.sh chmod +x loongcollector.sh ./loongcollector.sh install "${REGION_ID}" fi

Post-install verification: one of loongcollectord/ilogtaild must be running.

if ! is_loong_running; then sudo /etc/init.d/loongcollectord start >/dev/null 2>&1 || true sudo /etc/init.d/ilogtaild start >/dev/null 2>&1 || true fi if ! is_loong_running; then echo "LoongCollector installation check failed: neither loongcollectord nor ilogtaild is running." >&2 exit 1 fi

3) Local user-defined identifier + create machine group

sudo mkdir -p /etc/ilogtail sudo mkdir -p /etc/ilogtail/users if [ ! -f /etc/ilogtail/user_defined_id ]; then sudo touch /etc/ilogtail/user_defined_id fi RAND8="$(LC_ALL=C tr -dc 'a-z0-9' </dev/urandom | head -c 8)" USER_DEFINED_ID_PREFIX="${PROJECT}openclaw_sls_collector" EXISTING_USER_DEFINED_ID="$(sudo awk -v p="${USER_DEFINED_ID_PREFIX}" 'index($0,p)==1 {print; exit}' /etc/ilogtail/user_defined_id 2>/dev/null || true)" if [ -n "${EXISTING_USER_DEFINED_ID}" ]; then USER_DEFINED_ID="${EXISTING_USER_DEFINED_ID}" else USER_DEFINED_ID="${USER_DEFINED_ID_PREFIX}${RAND8}" echo "${USER_DEFINED_ID}" | sudo tee -a /etc/ilogtail/user_defined_id >/dev/null fi if ! sudo grep -Fxq "${USER_DEFINED_ID}" /etc/ilogtail/user_defined_id 2>/dev/null; then echo "Failed to persist USER_DEFINED_ID to /etc/ilogtail/user_defined_id" >&2 exit 1 fi if [ ! -f "/etc/ilogtail/users/${ALIYUN_UID}" ]; then sudo touch "/etc/ilogtail/users/${ALIYUN_UID}" fi if [ ! -f "/etc/ilogtail/users/${ALIYUN_UID}" ]; then echo "Failed to create UID marker file: /etc/ilogtail/users/${ALIYUN_UID}" >&2 exit 1 fi

if ! aliyun sls GetMachineGroup --project "$PROJECT" --machineGroup "$MACHINE_GROUP" >/dev/null 2>&1; then cat > /tmp/openclaw-machine-group.json <<EOF { "groupName": "${MACHINE_GROUP}", "groupType": "", "machineIdentifyType": "userdefined", "machineList": ["${USER_DEFINED_ID}"] } EOF aliyun sls CreateMachineGroup
--project "$PROJECT"
--body "$(cat /tmp/openclaw-machine-group.json)" fi if ! aliyun sls GetMachineGroup --project "$PROJECT" --machineGroup "$MACHINE_GROUP" >/dev/null 2>&1; then echo "Machine group was not created successfully: ${MACHINE_GROUP}" >&2 exit 1 fi

4) Create logstore (if missing) + index + multiple dashboards

if ! aliyun sls GetLogStore --project "$PROJECT" --logstore "$LOGSTORE" >/dev/null 2>&1; then aliyun sls CreateLogStore --project "$PROJECT"
--body "{"logstoreName":"${LOGSTORE}","ttl":30,"shardCount":2}" fi

if ! aliyun sls GetIndex --project "$PROJECT" --logstore "$LOGSTORE" >/dev/null 2>&1; then

Use the index template as-is from references/index.json

aliyun sls CreateIndex
--project "$PROJECT"
--logstore "$LOGSTORE"
--body "$(cat references/index.json)" fi

sed "s/${logstoreName}/${LOGSTORE}/g" references/dashboard-audit.json > /tmp/openclaw-audit-dashboard.json sed "s/${logstoreName}/${LOGSTORE}/g" references/dashboard-gateway.json > /tmp/openclaw-gateway-dashboard.json

Create dashboard uses project + body(detail). Update uses path + project + body.

if aliyun sls GET "/dashboards/openclaw-audit" --project "$PROJECT" >/dev/null 2>&1; then aliyun sls PUT "/dashboards/openclaw-audit"
--project "$PROJECT"
--body "$(cat /tmp/openclaw-audit-dashboard.json)" else aliyun sls POST "/dashboards"
--project "$PROJECT"
--body "$(cat /tmp/openclaw-audit-dashboard.json)" fi

if aliyun sls GET "/dashboards/openclaw-gateway" --project "$PROJECT" >/dev/null 2>&1; then aliyun sls PUT "/dashboards/openclaw-gateway"
--project "$PROJECT"
--body "$(cat /tmp/openclaw-gateway-dashboard.json)" else aliyun sls POST "/dashboards"
--project "$PROJECT"
--body "$(cat /tmp/openclaw-gateway-dashboard.json)" fi

5) Create collection config (update when already exists)

Render collector config strictly from references/collector-config.json

sed
-e "s/${configName}/${CONFIG_NAME}/g"
-e "s/${logstoreName}/${LOGSTORE}/g"
-e "s/${region_id}/${REGION_ID}/g"
references/collector-config.json > /tmp/openclaw-collector-config.json

if aliyun sls GetConfig --project "$PROJECT" --configName "$CONFIG_NAME" >/dev/null 2>&1; then aliyun sls UpdateConfig
--project "$PROJECT"
--configName "$CONFIG_NAME"
--body "$(cat /tmp/openclaw-collector-config.json)" else aliyun sls CreateConfig
--project "$PROJECT"
--body "$(cat /tmp/openclaw-collector-config.json)" fi

6) Bind collection config to machine group

aliyun sls ApplyConfigToMachineGroup
--project "$PROJECT"
--machineGroup "$MACHINE_GROUP"
--configName "$CONFIG_NAME"

echo "OpenClaw SLS observability setup completed."

Response Format

When this skill completes, return a concise status report with:

  • Inputs used: PROJECT , LOGSTORE , resolved REGION_ID

  • Created/updated resources (machine group, index, dashboards, config, binding)

  • Any skipped steps (already existed / already running)

  • Next verification commands for the user

Verification Commands

aliyun sls GetMachineGroup --project "$PROJECT" --machineGroup openclaw-sls-collector aliyun sls GetIndex --project "$PROJECT" --logstore "$LOGSTORE" aliyun sls GetDashboard --project "$PROJECT" --dashboardName openclaw-audit aliyun sls GetDashboard --project "$PROJECT" --dashboardName openclaw-gateway aliyun sls GetConfig --project "$PROJECT" --configName "openclaw-audit_${LOGSTORE}"

Reference Files

  • Command flow: references/cli-commands.md

  • Index definition: references/index.json

  • Dashboard templates: references/dashboard-audit.json , references/dashboard-gateway.json

  • Collection config template: references/collector-config.json

Read reference files only when needed:

  • Use cli-commands.md for step-by-step troubleshooting.

  • Use JSON templates when creating/updating resources.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

alicloud-ai-image-qwen-image

No summary provided by upstream source.

Repository SourceNeeds Review
General

alicloud-ai-audio-tts-voice-clone

No summary provided by upstream source.

Repository SourceNeeds Review
General

alicloud-ai-multimodal-qwen-vl

No summary provided by upstream source.

Repository SourceNeeds Review
General

alicloud-ai-audio-tts

No summary provided by upstream source.

Repository SourceNeeds Review