dataworks-diagnoser
by @ljw-git-dw
Fetch and analyze Alibaba Cloud DataWorks task instance logs to diagnose failures and get actionable recommendations using your instance ID and credentials.
clawhub install dataworks-diagnoser📖 About This Skill
name: dataworks-diagnoser description: DataWorks task instance log fetcher and diagnostician. Use when: user needs to troubleshoot failed DataWorks task instances, analyze error logs, get diagnostic recommendations for task failures, or understand why a DataWorks node failed. Requires Alibaba Cloud credentials. Supports all DataWorks task types including ODPS SQL, Sync, Shell, Python, etc. metadata: { "openclaw": { "emoji": "🔍", "requires": { "bins": ["curl", "python3"] }, "install": [ { "id": "brew", "kind": "brew", "formula": "curl", "bins": ["curl"], "label": "Install curl (brew)", }, ], }, }
DataWorks Task Instance Diagnostician
Fetches task instance logs from Alibaba Cloud DataWorks API and provides intelligent diagnostic recommendations.
Quick Start
Diagnose a failed task:
python3 scripts/dataworks_diagnose.py
Example:
python3 scripts/dataworks_diagnose.py 123456789
When to Use
✅ USE this skill when:
When NOT to Use
❌ DON'T use this skill when:
Prerequisites
1. Alibaba Cloud Credentials
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.
2. Required Permissions
The AccessKey needs these permissions:
dataworks:GetInstanceLog - Fetch task instance logsdataworks:QueryTask - Query task information3. Network Access
Core Workflows
1. Quick Diagnosis (Recommended)
Fetch log and get diagnosis in one command:
python3 scripts/dataworks_diagnose.py
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
2. Fetch Log Only
python3 scripts/fetch_instance_log.py [options]
Options:
# Specify region
python3 scripts/fetch_instance_log.py 123456789 --region cn-shanghaiOutput as JSON
python3 scripts/fetch_instance_log.py 123456789 --jsonShow full log (default: last 50 lines)
python3 scripts/fetch_instance_log.py 123456789 --verboseSave to file
python3 scripts/fetch_instance_log.py 123456789 > log.txt
3. Diagnose Existing Log
python3 scripts/diagnose_log.py
Examples:
# From file
python3 scripts/diagnose_log.py error.logFrom stdin
cat log.txt | python3 scripts/diagnose_log.pyWith instance ID
python3 scripts/diagnose_log.py error.log --instance-id 123456789JSON output
python3 scripts/diagnose_log.py error.log --jsonSummary only
python3 scripts/diagnose_log.py error.log --summary
Scripts
This skill includes three scripts:
dataworks_diagnose.py - All-in-One Tool
Fetches log and provides diagnosis automatically.Usage:
python3 scripts/dataworks_diagnose.py [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 Fetcher
Fetches task instance log from DataWorks API.Usage:
python3 scripts/fetch_instance_log.py [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 Analyzer
Analyzes log content and provides diagnostic recommendations.Usage:
python3 scripts/diagnose_log.py [options]
Options:
--instance-id - Task instance ID--json, -j - JSON output--summary, -s - Summary onlyDetected Error Patterns
The 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.
Common Regions
| Region | Code | |--------|------| | 华东 1 (杭州) | cn-hangzhou | | 华东 2 (上海) | cn-shanghai | | 华北 1 (青岛) | cn-qingdao | | 华北 2 (北京) | cn-beijing | | 华南 1 (深圳) | cn-shenzhen | | 香港 | cn-hongkong | | 新加坡 | ap-southeast-1 |
API Reference
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
Examples
Example 1: Quick Diagnosis
python3 scripts/dataworks_diagnose.py 123456789
Example 2: Save Report
python3 scripts/dataworks_diagnose.py 123456789 --save-report diagnosis.txt
Example 3: Different Region
python3 scripts/dataworks_diagnose.py 123456789 --region cn-shanghai
Example 4: Analyze Saved Log
python3 scripts/diagnose_log.py saved_log.txt --instance-id 123456789
Example 5: Batch Analysis
for id in 123 456 789; do
python3 scripts/diagnose_log.py --instance-id $id < log_$id.txt
done
Troubleshooting
"Credentials not found"
# Set environment variables
export ALIBABA_CLOUD_ACCESS_KEY_ID=your_key
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=your_secret
"Instance not found"
"Permission denied"
"Request timeout"
Tips
💡 Pro tips:
1. Save logs for failed tasks - Use --save-log to keep records
2. Generate reports - Use --save-report for documentation
3. Batch processing - Script supports multiple instance IDs
4. JSON output - Use --json for programmatic processing
5. Region matters - Always use the correct region for your workspace
Security
⚠️ Important:
References
references/error_codes.md - Complete error code reference⚡ When to Use
💡 Examples
Example 1: Quick Diagnosis
python3 scripts/dataworks_diagnose.py 123456789
Example 2: Save Report
python3 scripts/dataworks_diagnose.py 123456789 --save-report diagnosis.txt
Example 3: Different Region
python3 scripts/dataworks_diagnose.py 123456789 --region cn-shanghai
Example 4: Analyze Saved Log
python3 scripts/diagnose_log.py saved_log.txt --instance-id 123456789
Example 5: Batch Analysis
for id in 123 456 789; do
python3 scripts/diagnose_log.py --instance-id $id < log_$id.txt
done
⚙️ Configuration
1. Alibaba Cloud Credentials
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.
2. Required Permissions
The AccessKey needs these permissions:
dataworks:GetInstanceLog - Fetch task instance logsdataworks:QueryTask - Query task information3. Network Access
📋 Tips & Best Practices
💡 Pro tips:
1. Save logs for failed tasks - Use --save-log to keep records
2. Generate reports - Use --save-report for documentation
3. Batch processing - Script supports multiple instance IDs
4. JSON output - Use --json for programmatic processing
5. Region matters - Always use the correct region for your workspace