Install
openclaw skills install @ljw-git-dw/dataworks-diagnoserFetch and analyze Alibaba Cloud DataWorks task instance logs to diagnose failures and get actionable recommendations using your instance ID and credentials.
openclaw skills install @ljw-git-dw/dataworks-diagnoserFetches task instance logs from Alibaba Cloud DataWorks API and provides intelligent diagnostic recommendations.
Diagnose a failed task:
python3 scripts/dataworks_diagnose.py <instance_id>
Example:
python3 scripts/dataworks_diagnose.py 123456789
✅ USE this skill when:
❌ DON'T use this skill when:
One of the following is required:
Option A: Environment Variables (Recommended)
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_access_key
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_access_secret
Option B: Config File
Create ~/.alibabacloud/credentials:
{
"access_key_id": "your_access_key",
"access_key_secret": "your_access_secret"
}
Option C: Aliyun CLI Config If you have Aliyun CLI configured, credentials will be loaded automatically.
The AccessKey needs these permissions:
dataworks:GetInstanceLog - Fetch task instance logsdataworks:QueryTask - Query task informationFetch log and get diagnosis in one command:
python3 scripts/dataworks_diagnose.py <instance_id>
Example:
python3 scripts/dataworks_diagnose.py 123456789
Output:
🔍 开始诊断 DataWorks 任务实例:123456789
📍 区域:cn-hangzhou
------------------------------------------------------------
📥 步骤 1/2: 获取任务日志...
✅ 日志获取成功
🔬 步骤 2/2: 分析诊断中...
✅ 诊断完成
============================================================
📋 诊断报告
============================================================
🔍 DataWorks 任务实例诊断报告
============================================================
实例 ID: 123456789
发现问题数:2
----------------------------------------------------------------------
🔴 问题 1: 资源配额不足
类型:resource_quota
严重程度:HIGH
相关日志:
> ERROR: quota exceeded for resource group 'default'
> No available slots in queue
建议解决方案:
1. 检查当前资源组的使用情况,释放闲置资源
2. 联系管理员提升资源配额
3. 优化任务配置,减少资源消耗
4. 考虑错峰调度,避开资源使用高峰
参考文档:https://help.aliyun.com/.../resource-group.html
python3 scripts/fetch_instance_log.py <instance_id> [options]
Options:
# Specify region
python3 scripts/fetch_instance_log.py 123456789 --region cn-shanghai
# Output as JSON
python3 scripts/fetch_instance_log.py 123456789 --json
# Show full log (default: last 50 lines)
python3 scripts/fetch_instance_log.py 123456789 --verbose
# Save to file
python3 scripts/fetch_instance_log.py 123456789 > log.txt
python3 scripts/diagnose_log.py <log_file>
Examples:
# From file
python3 scripts/diagnose_log.py error.log
# From stdin
cat log.txt | python3 scripts/diagnose_log.py
# With instance ID
python3 scripts/diagnose_log.py error.log --instance-id 123456789
# JSON output
python3 scripts/diagnose_log.py error.log --json
# Summary only
python3 scripts/diagnose_log.py error.log --summary
This skill includes three scripts:
dataworks_diagnose.py - All-in-One ToolFetches log and provides diagnosis automatically.
Usage:
python3 scripts/dataworks_diagnose.py <instance_id> [options]
Options:
--region, -r - Alibaba Cloud region (default: cn-hangzhou)--json, -j - Output as JSON--verbose, -v - Show full log--save-log FILE - Save raw log to file--save-report FILE - Save diagnostic report to filefetch_instance_log.py - Log FetcherFetches task instance log from DataWorks API.
Usage:
python3 scripts/fetch_instance_log.py <instance_id> [options]
Options:
--region, -r - Region (default: cn-hangzhou)--access-key - Access Key ID--access-secret - Access Key Secret--json, -j - JSON output--verbose, -v - Full logdiagnose_log.py - Log AnalyzerAnalyzes log content and provides diagnostic recommendations.
Usage:
python3 scripts/diagnose_log.py <log_file_or_stdin> [options]
Options:
--instance-id - Task instance ID--json, -j - JSON output--summary, -s - Summary onlyThe diagnostician recognizes these error types:
| Error Type | Severity | Examples |
|---|---|---|
| 🔴 resource_quota | High | "quota exceeded", "资源不足" |
| 🔴 resource_expired | High | "expired", "独享资源组已过期", "bill exception" |
| 🔴 connection_timeout | High | "connection timeout", "network unreachable" |
| 🔴 permission_denied | High | "permission denied", "access denied" |
| 🟡 syntax_error | Medium | "syntax error", "parse error" |
| 🟡 table_not_found | Medium | "table not found", "doesn't exist" |
| 🟡 data_quality | Medium | "quality check failed" |
| 🔴 memory_overflow | High | "out of memory", "heap space" |
| 🔴 disk_full | High | "disk full", "no space left" |
| 🟡 dependency_failed | Medium | "dependency failed", "upstream failed" |
| 🟡 api_rate_limit | Medium | "rate limit exceeded" |
See references/error_codes.md for detailed error patterns and solutions.
| Region | Code |
|---|---|
| 华东 1 (杭州) | cn-hangzhou |
| 华东 2 (上海) | cn-shanghai |
| 华北 1 (青岛) | cn-qingdao |
| 华北 2 (北京) | cn-beijing |
| 华南 1 (深圳) | cn-shenzhen |
| 香港 | cn-hongkong |
| 新加坡 | ap-southeast-1 |
API: GetTaskInstanceLog
Version: 2024-05-18
Endpoint: https://dataworks-public.{region}.aliyuncs.com/
Request Parameters:
InstanceId (required) - Task instance IDRegionId (required) - Region IDResponse:
{
"Data": {
"LogContent": "...",
"InstanceStatus": "FAILED",
"CycleTime": "2024-01-15 10:30:00"
},
"Code": "200"
}
Documentation: https://api.aliyun.com/api/dataworks-public/2024-05-18/GetTaskInstanceLog
python3 scripts/dataworks_diagnose.py 123456789
python3 scripts/dataworks_diagnose.py 123456789 --save-report diagnosis.txt
python3 scripts/dataworks_diagnose.py 123456789 --region cn-shanghai
python3 scripts/diagnose_log.py saved_log.txt --instance-id 123456789
for id in 123 456 789; do
python3 scripts/diagnose_log.py --instance-id $id < log_$id.txt
done
# Set environment variables
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_key
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_secret
💡 Pro tips:
--save-log to keep records--save-report for documentation--json for programmatic processing⚠️ Important:
references/error_codes.md - Complete error code reference