{
  "license": "CC BY 4.0",
  "licenseUrl": "https://creativecommons.org/licenses/by/4.0/",
  "recipe": {
    "slug": "infrastructure-resource-saturation",
    "title": "Find Host and Container Resource Saturation",
    "testedWith": "Apache DataFusion 45.2.0",
    "lastReviewed": "2026-07-28"
  },
  "contract": {
    "tableName": "system_metrics",
    "schema": [
      {
        "name": "timestamp_utc",
        "type": "Timestamp",
        "description": "Metric sample time in UTC."
      },
      {
        "name": "source",
        "type": "Utf8",
        "description": "Stable host, service, or container identifier."
      },
      {
        "name": "environment",
        "type": "Utf8",
        "description": "Deployment environment."
      },
      {
        "name": "cpu_utilization_pct",
        "type": "Float64",
        "description": "CPU utilization from 0 to 100."
      },
      {
        "name": "memory_utilization_pct",
        "type": "Float64",
        "description": "Memory utilization from 0 to 100."
      },
      {
        "name": "disk_utilization_pct",
        "type": "Float64",
        "description": "Disk utilization from 0 to 100."
      }
    ]
  },
  "query": "SELECT\n  date_trunc('hour', timestamp_utc) AS hour,\n  source,\n  COUNT(*) AS samples,\n  AVG(cpu_utilization_pct) AS average_cpu_pct,\n  MAX(cpu_utilization_pct) AS maximum_cpu_pct,\n  AVG(memory_utilization_pct) AS average_memory_pct,\n  MAX(memory_utilization_pct) AS maximum_memory_pct,\n  MAX(disk_utilization_pct) AS maximum_disk_pct\nFROM system_metrics\nWHERE timestamp_utc >= now() - INTERVAL '24 hours'\n  AND environment = 'production'\nGROUP BY date_trunc('hour', timestamp_utc), source\nHAVING COUNT(*) >= 6\n  AND (\n    AVG(cpu_utilization_pct) >= 80.0\n    OR AVG(memory_utilization_pct) >= 85.0\n    OR MAX(disk_utilization_pct) >= 90.0\n  )\nORDER BY average_cpu_pct DESC, average_memory_pct DESC;",
  "fixtureKind": "schema-example",
  "inputRows": [
    {
      "timestamp_utc": "2026-07-28T10:00:00Z",
      "source": "source_example_1",
      "environment": "production",
      "cpu_utilization_pct": 12,
      "memory_utilization_pct": 12,
      "disk_utilization_pct": 12
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00Z",
      "source": "source_example_2",
      "environment": "production",
      "cpu_utilization_pct": 37,
      "memory_utilization_pct": 37,
      "disk_utilization_pct": 37
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00Z",
      "source": "source_example_3",
      "environment": "production",
      "cpu_utilization_pct": 24,
      "memory_utilization_pct": 24,
      "disk_utilization_pct": 24
    }
  ],
  "illustrativeInputRows": [
    {
      "timestamp_utc": "2026-07-28T10:00:00Z",
      "source": "source_example_1",
      "environment": "production",
      "cpu_utilization_pct": 12,
      "memory_utilization_pct": 12,
      "disk_utilization_pct": 12
    },
    {
      "timestamp_utc": "2026-07-28T11:00:00Z",
      "source": "source_example_2",
      "environment": "production",
      "cpu_utilization_pct": 37,
      "memory_utilization_pct": 37,
      "disk_utilization_pct": 37
    },
    {
      "timestamp_utc": "2026-07-28T12:00:00Z",
      "source": "source_example_3",
      "environment": "production",
      "cpu_utilization_pct": 24,
      "memory_utilization_pct": 24,
      "disk_utilization_pct": 24
    }
  ],
  "expectedOutput": {
    "columns": [
      "hour",
      "source",
      "samples",
      "average_cpu_pct",
      "maximum_cpu_pct",
      "average_memory_pct",
      "maximum_memory_pct",
      "maximum_disk_pct"
    ],
    "rows": [
      {
        "hour": "2026-07-27 14:00",
        "source": "worker-imports-03",
        "samples": 60,
        "average_cpu_pct": 91.4,
        "maximum_cpu_pct": 99.2,
        "average_memory_pct": 78.8,
        "maximum_memory_pct": 84.1,
        "maximum_disk_pct": 66.2
      },
      {
        "hour": "2026-07-27 14:00",
        "source": "api-primary-02",
        "samples": 60,
        "average_cpu_pct": 62.1,
        "maximum_cpu_pct": 88.4,
        "average_memory_pct": 89.3,
        "maximum_memory_pct": 93.6,
        "maximum_disk_pct": 72.5
      }
    ]
  },
  "notes": [
    "The compact input rows demonstrate field names and JSON types; they are not claimed to generate the displayed aggregate by themselves.",
    "The expected output is deterministic synthetic review data for the documented output shape.",
    "Adapt time windows, thresholds, identities, and business definitions before operational use."
  ]
}