Tool for finding root cause. Keep asking "why?" until you hit something systemic.
Customer-facing API returned 500 errors for 12 minutes. Why? The database connection pool was exhausted. Why? A batch job opened thousands of connections and didn't close them. Why? The job's connection handling had a bug introduced in last week's release. Why? Code review didn't catch it, and integration tests don't run the batch job under load. Why? We don't have load tests for batch jobs in the CI pipeline.
Action: add load tests for batch jobs in CI.