{
  "schemaVersion": "1.0",
  "item": {
    "slug": "aws-ecs-monitor",
    "name": "aws-ecs-monitor",
    "source": "tencent",
    "type": "skill",
    "category": "其他",
    "sourceUrl": "https://clawhub.ai/briancolinger/aws-ecs-monitor",
    "canonicalUrl": "https://clawhub.ai/briancolinger/aws-ecs-monitor",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/aws-ecs-monitor",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=aws-ecs-monitor",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/cloudwatch-logs.sh",
      "scripts/ecs-health.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/aws-ecs-monitor"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/aws-ecs-monitor",
    "agentPageUrl": "https://openagent3.xyz/skills/aws-ecs-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/aws-ecs-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/aws-ecs-monitor/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "AWS ECS Monitor",
        "body": "Production health monitoring and log analysis for AWS ECS services."
      },
      {
        "title": "What It Does",
        "body": "Health Checks: HTTP probes against your domain, ECS service status (desired vs running), ALB target group health, SSL certificate expiry\nLog Analysis: Pulls CloudWatch logs, categorizes errors (panics, fatals, OOM, timeouts, 5xx), detects container restarts, filters health check noise\nAuto-Diagnosis: Reads health status and automatically investigates failing services via log analysis"
      },
      {
        "title": "Prerequisites",
        "body": "aws CLI configured with appropriate IAM permissions:\n\necs:ListServices, ecs:DescribeServices\nelasticloadbalancing:DescribeTargetGroups, elasticloadbalancing:DescribeTargetHealth\nlogs:FilterLogEvents, logs:DescribeLogGroups\n\n\ncurl for HTTP health checks\npython3 for JSON processing and log analysis\nopenssl for SSL certificate checks (optional)"
      },
      {
        "title": "Configuration",
        "body": "All configuration is via environment variables:\n\nVariableRequiredDefaultDescriptionECS_CLUSTERYes—ECS cluster nameECS_REGIONNous-east-1AWS regionECS_DOMAINNo—Domain for HTTP/SSL checks (skip if unset)ECS_SERVICESNoauto-detectComma-separated service names to monitorECS_HEALTH_STATENo./data/ecs-health.jsonPath to write health state JSONECS_HEALTH_OUTDIRNo./data/Output directory for logs and alertsECS_LOG_PATTERNNo/ecs/{service}CloudWatch log group pattern ({service} is replaced)ECS_HTTP_ENDPOINTSNo—Comma-separated name=url pairs for HTTP probes"
      },
      {
        "title": "Directories Written",
        "body": "ECS_HEALTH_STATE (default: ./data/ecs-health.json) — Health state JSON file\nECS_HEALTH_OUTDIR (default: ./data/) — Output directory for logs, alerts, and analysis reports"
      },
      {
        "title": "scripts/ecs-health.sh — Health Monitor",
        "body": "# Full check\nECS_CLUSTER=my-cluster ECS_DOMAIN=example.com ./scripts/ecs-health.sh\n\n# JSON output only\nECS_CLUSTER=my-cluster ./scripts/ecs-health.sh --json\n\n# Quiet mode (no alerts, just status file)\nECS_CLUSTER=my-cluster ./scripts/ecs-health.sh --quiet\n\nExit codes: 0 = healthy, 1 = unhealthy/degraded, 2 = script error"
      },
      {
        "title": "scripts/cloudwatch-logs.sh — Log Analyzer",
        "body": "# Pull raw logs from a service\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh pull my-api --minutes 30\n\n# Show errors across all services\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh errors all --minutes 120\n\n# Deep analysis with error categorization\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh diagnose --minutes 60\n\n# Detect container restarts\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh restarts my-api\n\n# Auto-diagnose from health state file\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh auto-diagnose\n\n# Summary across all services\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh summary --minutes 120\n\nOptions: --minutes N (default: 60), --json, --limit N (default: 200), --verbose"
      },
      {
        "title": "Auto-Detection",
        "body": "When ECS_SERVICES is not set, both scripts auto-detect services from the cluster:\n\naws ecs list-services --cluster $ECS_CLUSTER\n\nLog groups are resolved by pattern (default /ecs/{service}). Override with ECS_LOG_PATTERN:\n\n# If your log groups are /ecs/prod/my-api, /ecs/prod/my-frontend, etc.\nECS_LOG_PATTERN=\"/ecs/prod/{service}\" ECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh diagnose"
      },
      {
        "title": "Integration",
        "body": "The health monitor can trigger the log analyzer for auto-diagnosis when issues are detected. Set ECS_HEALTH_OUTDIR to a shared directory and run both scripts together:\n\nexport ECS_CLUSTER=my-cluster\nexport ECS_DOMAIN=example.com\nexport ECS_HEALTH_OUTDIR=./data\n\n# Run health check (auto-triggers log analysis on failure)\n./scripts/ecs-health.sh\n\n# Or run log analysis independently\n./scripts/cloudwatch-logs.sh auto-diagnose --minutes 30"
      },
      {
        "title": "Error Categories",
        "body": "The log analyzer classifies errors into:\n\npanic — Go panics\nfatal — Fatal errors\noom — Out of memory\ntimeout — Connection/request timeouts\nconnection_error — Connection refused/reset\nhttp_5xx — HTTP 500-level responses\npython_traceback — Python tracebacks\nexception — Generic exceptions\nauth_error — Permission/authorization failures\nstructured_error — JSON-structured error logs\nerror — Generic ERROR-level messages\n\nHealth check noise (GET/HEAD /health from ALB) is automatically filtered from error counts and HTTP status distribution."
      }
    ],
    "body": "AWS ECS Monitor\n\nProduction health monitoring and log analysis for AWS ECS services.\n\nWhat It Does\nHealth Checks: HTTP probes against your domain, ECS service status (desired vs running), ALB target group health, SSL certificate expiry\nLog Analysis: Pulls CloudWatch logs, categorizes errors (panics, fatals, OOM, timeouts, 5xx), detects container restarts, filters health check noise\nAuto-Diagnosis: Reads health status and automatically investigates failing services via log analysis\nPrerequisites\naws CLI configured with appropriate IAM permissions:\necs:ListServices, ecs:DescribeServices\nelasticloadbalancing:DescribeTargetGroups, elasticloadbalancing:DescribeTargetHealth\nlogs:FilterLogEvents, logs:DescribeLogGroups\ncurl for HTTP health checks\npython3 for JSON processing and log analysis\nopenssl for SSL certificate checks (optional)\nConfiguration\n\nAll configuration is via environment variables:\n\nVariable\tRequired\tDefault\tDescription\nECS_CLUSTER\tYes\t—\tECS cluster name\nECS_REGION\tNo\tus-east-1\tAWS region\nECS_DOMAIN\tNo\t—\tDomain for HTTP/SSL checks (skip if unset)\nECS_SERVICES\tNo\tauto-detect\tComma-separated service names to monitor\nECS_HEALTH_STATE\tNo\t./data/ecs-health.json\tPath to write health state JSON\nECS_HEALTH_OUTDIR\tNo\t./data/\tOutput directory for logs and alerts\nECS_LOG_PATTERN\tNo\t/ecs/{service}\tCloudWatch log group pattern ({service} is replaced)\nECS_HTTP_ENDPOINTS\tNo\t—\tComma-separated name=url pairs for HTTP probes\nDirectories Written\nECS_HEALTH_STATE (default: ./data/ecs-health.json) — Health state JSON file\nECS_HEALTH_OUTDIR (default: ./data/) — Output directory for logs, alerts, and analysis reports\nScripts\nscripts/ecs-health.sh — Health Monitor\n# Full check\nECS_CLUSTER=my-cluster ECS_DOMAIN=example.com ./scripts/ecs-health.sh\n\n# JSON output only\nECS_CLUSTER=my-cluster ./scripts/ecs-health.sh --json\n\n# Quiet mode (no alerts, just status file)\nECS_CLUSTER=my-cluster ./scripts/ecs-health.sh --quiet\n\n\nExit codes: 0 = healthy, 1 = unhealthy/degraded, 2 = script error\n\nscripts/cloudwatch-logs.sh — Log Analyzer\n# Pull raw logs from a service\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh pull my-api --minutes 30\n\n# Show errors across all services\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh errors all --minutes 120\n\n# Deep analysis with error categorization\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh diagnose --minutes 60\n\n# Detect container restarts\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh restarts my-api\n\n# Auto-diagnose from health state file\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh auto-diagnose\n\n# Summary across all services\nECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh summary --minutes 120\n\n\nOptions: --minutes N (default: 60), --json, --limit N (default: 200), --verbose\n\nAuto-Detection\n\nWhen ECS_SERVICES is not set, both scripts auto-detect services from the cluster:\n\naws ecs list-services --cluster $ECS_CLUSTER\n\n\nLog groups are resolved by pattern (default /ecs/{service}). Override with ECS_LOG_PATTERN:\n\n# If your log groups are /ecs/prod/my-api, /ecs/prod/my-frontend, etc.\nECS_LOG_PATTERN=\"/ecs/prod/{service}\" ECS_CLUSTER=my-cluster ./scripts/cloudwatch-logs.sh diagnose\n\nIntegration\n\nThe health monitor can trigger the log analyzer for auto-diagnosis when issues are detected. Set ECS_HEALTH_OUTDIR to a shared directory and run both scripts together:\n\nexport ECS_CLUSTER=my-cluster\nexport ECS_DOMAIN=example.com\nexport ECS_HEALTH_OUTDIR=./data\n\n# Run health check (auto-triggers log analysis on failure)\n./scripts/ecs-health.sh\n\n# Or run log analysis independently\n./scripts/cloudwatch-logs.sh auto-diagnose --minutes 30\n\nError Categories\n\nThe log analyzer classifies errors into:\n\npanic — Go panics\nfatal — Fatal errors\noom — Out of memory\ntimeout — Connection/request timeouts\nconnection_error — Connection refused/reset\nhttp_5xx — HTTP 500-level responses\npython_traceback — Python tracebacks\nexception — Generic exceptions\nauth_error — Permission/authorization failures\nstructured_error — JSON-structured error logs\nerror — Generic ERROR-level messages\n\nHealth check noise (GET/HEAD /health from ALB) is automatically filtered from error counts and HTTP status distribution."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/briancolinger/aws-ecs-monitor",
    "publisherUrl": "https://clawhub.ai/briancolinger/aws-ecs-monitor",
    "owner": "briancolinger",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/aws-ecs-monitor",
    "downloadUrl": "https://openagent3.xyz/downloads/aws-ecs-monitor",
    "agentUrl": "https://openagent3.xyz/skills/aws-ecs-monitor/agent",
    "manifestUrl": "https://openagent3.xyz/skills/aws-ecs-monitor/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/aws-ecs-monitor/agent.md"
  }
}