运行时依赖
安装命令
点击复制技能文档
OpenClaw SLS 集成 该技能为 OpenClaw 在 Linux 上提供阿里云 SLS 可观测性,并确保重跑安全。高层次上,执行以下流程: 检查并安装 aliyun CLI(如果缺失则安装最新版本) 安装 LoongCollector(根据项目区域,若已运行则跳过) 创建基于标识符的机器组(本地标识符 + 云机器组) 创建日志存储索引和仪表盘 创建日志存储收集配置 将收集配置绑定到机器组 捕获意图 在执行命令之前,请确保用户意图完整: 确认目标 PROJECT 和 LOGSTORE。 确认 Linux 主机访问具有 sudo 权限。 确认 AK/SK 已在环境变量中导出。 如果缺少任何必需输入,请先请求它并不要运行部分设置。 先决条件 所需: PROJECT:SLS 项目名称 LOGSTORE:SLS 日志存储名称 从环境变量中读取: ALIBABA_CLOUD_ACCESS_KEY_ID ALIBABA_CLOUD_ACCESS_KEY_SECRET ALIYUN_UID(用于 /etc/ilogtail/users 下的本地 UID 文件) 推荐的可选项: ALIBABA_CLOUD_REGION_ID(如果未设置,则从 PROJECT 自动解析) 如果您使用不同的 AK/SK 变量名称,请先将它们导出到这些标准名称中。 预期结果 在成功执行后,环境应包含: 在主机上运行 LoongCollector(或 ilogtaild) 机器组 openclaw-sls-collector 在目标 LOGSTORE 上创建日志存储索引 仪表盘 openclaw-audit 和 openclaw-gateway 收集配置 openclaw-audit_${LOGSTORE} 配置绑定 openclaw-audit_${LOGSTORE} 和 openclaw-sls-collector 之间 一次性执行流程(幂等) 以下命令旨在“存在 -> 跳过”并且可以安全地重新运行。 严格模板模式:对于索引/配置/仪表盘有效负载,始终从 references/ 中的文件读取。不要手工制作或简化 JSON 主体,除非需要占位符替换。 set -euo pipefail # ===== 用户输入 ===== : "${PROJECT:?请导出 PROJECT}" : "${LOGSTORE:?请导出 LOGSTORE}" : "${ALIBABA_CLOUD_ACCESS_KEY_ID:?请导出 ALIBABA_CLOUD_ACCESS_KEY_ID}" : "${ALIBABA_CLOUD_ACCESS_KEY_SECRET:?请导出 ALIBABA_CLOUD_ACCESS_KEY_SECRET}" : "${ALIYUN_UID:?请导出 ALIYUN_UID}" MACHINE_GROUP="openclaw-sls-collector" CONFIG_NAME="openclaw-audit_${LOGSTORE}" # 1) 如果缺失则安装 aliyun CLI(Linux) 如果!命令 -v aliyun >/dev/null 2>&1;则 如果命令 -v apt-get >/dev/null 2>&1;则 sudo apt-get update sudo apt-get install -y aliyun-cli elif 命令 -v dnf >/dev/null 2>&1;则 sudo dnf install -y aliyun-cli elif 命令 -v yum >/dev/null 2>&1;则 sudo yum install -y aliyun-cli elif 命令 -v zypper >/dev/null 2>&1;则 sudo zypper -n install aliyun-cli 否则 echo "未找到 aliyun CLI。请手动安装 aliyun-cli 以适应您的 Linux 分发版。" >&2 exit 1 fi # 导出 aliyun CLI 的身份验证变量 导出 ALIBABA_CLOUD_ACCESS_KEY_ID 导出 ALIBABA_CLOUD_ACCESS_KEY_SECRET is_loong_running() { 如果 sudo /etc/init.d/loongcollectord 状态 2>/dev/null | grep -qi "运行中";则 返回 0 否则如果 sudo /etc/init.d/ilogtaild 状态 2>/dev/null | grep -qi "运行中";则 返回 0 否则 返回 1 fi # 2) 解析区域并安装 LoongCollector(如果已运行则跳过) REGION_ID="${ALIBABA_CLOUD_REGION_ID:-}" 如果 [ -z "$REGION_ID" ];则 REGION_ID="$(aliyun sls GetProject --project "$PROJECT" --cli-query 'region' --quiet 2>/dev/null | tr -d '\"' || true)" fi 如果 [ -z "$REGION_ID" ];则 echo "无法从项目:$PROJECT 解析区域。请设置 ALIBABA_CLOUD_REGION_ID。" >&2 exit 1 fi 如果!is_loong_running;则 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 # 安装后验证:loongcollectord 或 ilogtaild 必须运行。 如果!is_loong_running;则 sudo /etc/init.d/loongcollectord start >/dev/null 2>&1 || true sudo /etc/init.d/ilogtaild start >/dev/null 2>&1 || true fi 如果!is_loong_running;则 echo "LoongCollector 安装检查失败:neither loongcollectord nor ilogtaild is running。" >&2 exit 1 fi # 3) 本地用户定义的标识符 + 创建机器组 sudo mkdir -p /etc/ilogtail sudo mkdir -p /etc/ilogtail/users 如果 [ ! -f /etc/ilogtail/user_defined_id ];则 sudo touch /etc/ilogtail/user_defined_id fi RAND8="$(LC_ALL=C tr -dc 'a-z0-9' /dev/null || true)" 如果 [ -n "${EXISTING_USER_DEFINED_ID}" ];则 USER_DEFINED_ID="${EXISTING_USER_DEFINED_ID}" 否则 USER_DEFINED_ID="${USER_DEFINED_ID_PREFIX}${RAND8}" echo "${USER_DEFINED_ID}" | sudo tee -a /etc/ilogtail/user_defined_id >/dev/null fi