--- title: "Prefect" description: "Connect Prefect so OpenSRE can inspect flow runs, workers, and deployments during investigations" --- OpenSRE queries Prefect to retrieve recent flow runs, their logs, worker health, and deployment status — helping diagnose pipeline failures and identify stalled or crashed orchestration jobs. ## Prerequisites - Prefect Cloud account or self-hosted Prefect Server - API key (Prefect Cloud) or accessible API URL (self-hosted) ## Setup ### Option 1: Interactive CLI ```bash opensre integrations setup ``` Select **Prefect** when prompted and provide your API URL and API key. ### Option 2: Persistent store Add to `~/.opensre/integrations.json`: ```json { "version": 1, "integrations": [ { "id": "prefect-prod", "service": "prefect", "status": "active", "credentials": { "api_url": "https://api.prefect.cloud/api", "api_key": "your-prefect-api-key", "account_id": "your-account-id", "workspace_id": "your-workspace-id" } } ] } ``` | Field | Default | Description | | --- | --- | --- | | `api_url` | `https://api.prefect.cloud/api` | Prefect API URL (override for self-hosted) | | `api_key` | — | Prefect Cloud API key | | `account_id` | — | Prefect Cloud account ID | | `workspace_id` | — | Prefect Cloud workspace ID | ## Prefect Cloud setup 1. In Prefect Cloud, go to your **profile icon** → **API Keys** 2. Click **Create API Key** 3. Copy the key, account ID, and workspace ID from the URL: `https://app.prefect.cloud/account//workspace//` ## Self-hosted Prefect Server For self-hosted Prefect Server, set `api_url` to your server's API endpoint (no API key required if unauthenticated): ```json { "api_url": "http://prefect-server:4200/api", "api_key": "" } ``` ## Verify ```bash opensre integrations verify prefect ``` Expected output on success (self-hosted, `api_url` set): ``` Service: prefect Status: passed Detail: Configured for Prefect at http://prefect-server:4200/api. ``` For Prefect Cloud (only `api_key` set, no `api_url`): ``` Service: prefect Status: passed Detail: Configured for Prefect at cloud. ``` This is a configuration-presence check (`api_url` or `api_key` is set) rather than a live API call. ## Investigation tools When OpenSRE investigates a Prefect-related alert, three diagnostic tools are available: - **Flow runs** — lists recent flow runs filtered by state (FAILED, CRASHED, etc.) - **Flow run logs** — retrieves log output for a specific flow run - **Workers** — checks worker health and heartbeat status across work pools ## Troubleshooting | Symptom | Fix | | --- | --- | | **401 Unauthorized** | Check your API key and account/workspace IDs | | **Connection refused** | Verify `api_url` is reachable — check firewall rules for self-hosted | | **No flow runs returned** | Flow runs may have been purged — check retention settings | ## Security best practices - Use a **service account API key** rather than a personal key. - For self-hosted, restrict network access to the Prefect API to trusted IPs. - Store credentials in `~/.opensre/integrations.json`, not in source code.