
Hyperpod Issue Report
- 115 installs
- 850 repo stars
- Updated August 3, 2026
- awslabs/agent-plugins
hyperpod-issue-report is a Claude skill that collects diagnostic logs from HyperPod EKS and Slurm nodes via SSM and stores them in S3 for troubleshooting.
About
This skill gathers diagnostic logs and configuration from HyperPod cluster nodes over SSM and stores the results in S3, supporting both EKS and Slurm with auto-detection. It runs a bundled hyperpod_issue_report.py for parallel collection across nodes, then reports the S3 location and offers analysis. A developer uses it to document cluster state or prepare an AWS Support case.
- Collects diagnostic logs from HyperPod EKS and Slurm nodes via SSM into S3
- Auto-detects orchestrator and runs a bundled parallel-collection Python script
- Produces diagnostic snapshots for AWS Support cases
Hyperpod Issue Report by the numbers
- 115 all-time installs (skills.sh)
- Ranked #231 of 596 Debugging skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
hyperpod-issue-report capabilities & compatibility
- Capabilities
- hyperpod cluster debugger · hyperpod node debugger · hyperpod ssm
- Works with
- aws · kubernetes
- Use cases
- debugging · devops · documentation
What hyperpod-issue-report says it does
Collect diagnostic logs from HyperPod cluster nodes via SSM, store results in S3.
Supports both EKS and Slurm clusters with auto-detection.
npx skills add https://github.com/awslabs/agent-plugins --skill hyperpod-issue-reportAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 115 |
|---|---|
| repo stars | ★ 850 |
| Last updated | August 3, 2026 |
| Repository | awslabs/agent-plugins ↗ |
What it does
Collect HyperPod node diagnostics over SSM into S3 for troubleshooting or AWS Support.
Who is it for?
Operators preparing an AWS Support case or documenting HyperPod cluster state
Skip if: Live remediation of a specific fault (use the matching hyperpod debugger skill)
When should I use this skill?
You need to collect diagnostics from HyperPod nodes for support or investigation
What you get
A diagnostic snapshot from selected nodes stored in S3, ready for analysis or AWS Support.
- Diagnostic logs and configs collected to S3
- Optional local download and analysis
By the numbers
- Python 3.8+ required
- Supports EKS and Slurm clusters
Files
HyperPod Issue Report
Collect diagnostic logs from HyperPod cluster nodes via SSM, store results in S3. Supports both EKS and Slurm clusters with auto-detection. Uses the bundled scripts/hyperpod_issue_report.py for reliable parallel collection.
Prerequisites
- AWS CLI configured with permissions:
sagemaker:DescribeCluster,sagemaker:ListClusterNodes,ssm:StartSession,s3:PutObject,s3:GetObject,eks:DescribeCluster - Python 3.8+ and uv (see uv installation docs for install options)
- SSM Agent running on target nodes; node IAM roles need
s3:GetObject/s3:PutObjecton the report bucket - For EKS clusters: kubectl installed and configured (see Workflow step 2)
Workflow
1. Gather Information
Collect from the user:
- Cluster identifier (required): accepts cluster name or full cluster ARN (e.g.,
arn:aws:sagemaker:us-west-2:123456789012:cluster/abc123) - AWS region (required unless extractable from ARN)
- S3 path for report storage (required, e.g.
s3://bucket/prefix). If the user doesn't have a bucket, create one (e.g.,s3://hyperpod-diagnostics-<account-id>-<region>) - Issue description (optional)
- Target scope: all nodes, specific instance groups, or specific node IDs (optional)
- Additional commands to run on nodes (optional)
2. Verify Environment
aws sts get-caller-identity
aws sagemaker describe-cluster --cluster-name <name-or-arn> --region <region>If the S3 bucket doesn't exist, create it:
aws s3 mb s3://<bucket-name> --region <region>For EKS clusters (check Orchestrator.Eks in describe-cluster output):
1. Ensure kubectl is installed (which kubectl). If missing, install it for the current platform. 2. Configure kubeconfig using the EKS cluster name from the describe-cluster response:
aws eks update-kubeconfig --name <eks-cluster-name> --region <region>3. Run the Collection Script
uv run scripts/hyperpod_issue_report.py \
--cluster <cluster-name-or-arn> \
--region <region> \
--s3-path s3://<bucket>[/prefix]Use --help for all options including --instance-groups, --nodes, --command, --max-workers, and --debug. Note: --instance-groups and --nodes are mutually exclusive. Node identifiers accept instance IDs (i-*), EKS names (hyperpod-i-*), or Slurm names (ip-*).
4. Present Results
After collection, the script shows statistics and offers interactive download. Report the S3 location and offer to:
- Download the report locally
- Help analyze collected diagnostics (see references/collection-details.md for what's in each file)
- Prepare a summary for AWS Support
Troubleshooting
See references/troubleshooting.md for error handling, large cluster tuning, and known limitations.
Collection Details
What Gets Collected
Common (Both EKS and Slurm)
nvidia_smi.txt— GPU status, utilization, memory, temperatureresource_config.json— HyperPod resource config from/opt/ml/config/resource_config.jsoncluster_logs/— Contents of/var/log/aws/clusters/systemd_services.txt— All systemd service statusesdisk_usage.txt—dfoutputhostname.txt,instance_group.txt,instance_id.txt,cluster_type.txt,timestamp.txt
EKS-Specific (Per-Node)
containerd_status.txt—systemctl status containerdkubelet_status.txt—systemctl status kubeleteks-log-collector-output.txt— EKS log collector execution logeks-logs/— EKS log collector output subdirectories:cni/— CNI plugin logs and configcontainerd/— Runtime logs, config, version, images, containers, tasks, pluginsdocker/— Docker logs (if present)gpu/— GPU diagnosticsipamd/— AWS VPC CNI IPAMD logskernel/— dmesg output, uname infokubelet/— Kubelet logs and configmodinfo/— Kernel module info (lustre, ip_vs, etc.)networking/— Network config, iptables, routes, interfacesnodeadm/— Node administration logssandbox-image/— Sandbox image infostorage/— Mounts, inodes, lsblk, LVM, fstab, XFS, pod local storagesysctls/— Kernel parameterssystem/— Services, systemd-analyze, top, ps, netstat, CPU/IO throttlingvar_log/— System logs from /var/log
EKS-Specific (kubectl — Collected Locally)
Packaged as kubectl_resources.tar.gz, collected from the local machine (not from nodes).
High Priority:
nodes_describe.txt— Detailed node descriptions (capacity, conditions, running pods)pods_all_namespaces.txt/pods_describe_all_namespaces.txt— All pods with detailsevents_all_namespaces.txt— Cluster events sorted by timestamppvcs_all_namespaces.txt/pvcs_describe_all_namespaces.txt— PersistentVolumeClaimsservices_all_namespaces.txt/services_describe_all_namespaces.txt— Network endpoints
Medium Priority:
deployments_all_namespaces.txt,statefulsets_all_namespaces.txt,daemonsets_all_namespaces.txtconfigmaps_all_namespaces.txt,secrets_all_namespaces.txt(metadata only)resourcequotas_all_namespaces.txt,networkpolicies_all_namespaces.txt
Slurm-Specific
sinfo.txt— Node and partition informationsinfo_R.txt— Reasons for node down/drain statesslurmctld_status.txt— Slurm controller daemon statusslurmd_status.txt— Slurm compute node daemon statusopt_slurm_etc/— Slurm configuration from/opt/slurm/etc/nvidia-bug-report.log.gz— NVIDIA bug report (compressed)syslog,kern.log— System logsdmesg_T.txt— Kernel ring buffer with timestampsvar_log_slurm/— Slurm logs from/var/log/slurm/
Custom Commands
User-specified commands are saved as command_01_<sanitized_name>.txt, command_02_..., etc.
Report Output Structure
s3://bucket/prefix/cluster-name/YYYYMMDD_HHMMSS/
├── collector_script.sh
├── summary.json
├── kubectl_resources.tar.gz # EKS only
└── instances/
├── worker1_i-abc123.tar.gz
└── worker2_i-abc124.tar.gzTarball filename format: {instance-group}_{instance-id}.tar.gz
Summary JSON Format
{
"cluster_name": "my-cluster",
"cluster_id": "abc123",
"report_id": "20260126_143022",
"timestamp": "2026-01-26T14:30:22.123456",
"total_nodes": 8,
"successful": 7,
"failed": 1,
"results": [
{
"InstanceId": "i-0123456789abcdef0",
"NodeGroup": "worker-group",
"Success": true,
"Output": "...",
"ElapsedTime": 45.2
}
]
}Troubleshooting
Error Handling
| Issue | Cause | Fix |
|---|---|---|
kubectl not found in PATH | kubectl not installed | Install kubectl for the current platform, then re-run |
kubectl must be configured for EKS clusters | kubectl missing or wrong context | Run aws eks update-kubeconfig --name <eks-cluster-name> --region <region>. Get the EKS cluster name from aws sagemaker describe-cluster output (Orchestrator.Eks.ClusterArn) |
| Cluster name from ARN not found | ARN contains cluster ID, not name | Pass the full ARN to --cluster instead of extracting the ID portion. Alternatively, use aws sagemaker list-clusters to find the cluster name |
| No instance reports in S3 | Node IAM role missing S3 permissions | Add s3:GetObject/s3:PutObject to node role for the report bucket |
| SSM connectivity failed | SSM agent down, missing IAM, or network | Check systemctl status amazon-ssm-agent |
| "Failed to detect shell prompt" | Custom SSM session config (custom .bashrc, SSM preferences) | Not compatible without modifying prompt detection; use manual SSM sessions as workaround |
| SSM throttling | Too many concurrent sessions | Reduce --max-workers; automatic retry handles transient throttling |
| Nodes unresponsive | Node completely down | Noted in report; other nodes' diagnostics may reveal pattern |
| EKS log collector fails | Script download or execution error | Check eks-log-collector-output.txt; verify disk space in /var/log/ and /tmp/ |
Large Cluster Handling
- Default
--max-workers 16tested up to 130 nodes (99.2% success rate, ~15 min) - If throttled (
ThrottlingException): reduce to--max-workers 8 - For 200+ nodes: batch by instance group or increase to
--max-workers 32if no throttling - kubectl collection may take 20-30 minutes for 1000+ node clusters
Related skills
FAQ
Which cluster types are supported?
Both EKS and Slurm clusters, with auto-detection from the describe-cluster output.
Where do reports go?
An S3 path you provide; if you have no bucket the skill can create one and collects logs across nodes in parallel.