Fetches task instance logs from Alibaba Cloud DataWorks API and provides intelligent diagnostic recommendations.
Diagnose a failed task:
bash
python3 scripts/dataworks_diagnose.py <instance_id>
Example:
bash
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)
bash
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:
json
{
"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:
bash
python3 scripts/dataworks_diagnose.py <instance_id>
Example:
bash
python3 scripts/dataworks_diagnose.py 123456789
Output:
text
🔍 开始诊断 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
bash
python3 scripts/fetch_instance_log.py <instance_id> [options]
Options:
bash
# 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
bash
python3 scripts/diagnose_log.py <log_file>
Examples:
bash
# 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 Tool#Fetches log and provides diagnosis automatically.
Usage:
bash
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 Fetcher#Fetches task instance log from DataWorks API.
Usage:
bash
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 Analyzer#Analyzes log content and provides diagnostic recommendations.
Usage:
bash
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 TypeSeverityExamples🔴 resource_quotaHigh"quota exceeded", "资源不足"🔴 resource_expiredHigh"expired", "独享资源组已过期", "bill exception"🔴 connection_timeoutHigh"connection timeout", "network unreachable"🔴 permission_deniedHigh"permission denied", "access denied"🟡 syntax_errorMedium"syntax error", "parse error"🟡 table_not_foundMedium"table not found", "doesn't exist"🟡 data_qualityMedium"quality check failed"🔴 memory_overflowHigh"out of memory", "heap space"🔴 disk_fullHigh"disk full", "no space left"🟡 dependency_failedMedium"dependency failed", "upstream failed"🟡 api_rate_limitMedium"rate limit exceeded"
See references/error_codes.md for detailed error patterns and solutions.
RegionCode华东 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:
json
{
"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
bash
python3 scripts/dataworks_diagnose.py 123456789
bash
python3 scripts/dataworks_diagnose.py 123456789 --save-report diagnosis.txt
bash
python3 scripts/dataworks_diagnose.py 123456789 --region cn-shanghai
bash
python3 scripts/diagnose_log.py saved_log.txt --instance-id 123456789
bash
for id in 123 456 789; do
python3 scripts/diagnose_log.py --instance-id $id < log_$id.txt
done
bash
# 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