--- name: gcp-slo-management description: 🐉 [SRE] Manage Service Level Objectives (SLOs) on Google Cloud. Use when you need to discover Monitoring Services, list existing SLOs, or create new SLOs (Availability/Latency) via the REST API when gcloud commands are unavailable. metadata: author: Google version: 0.1.0 status: published --- # GCP SLO Management ## Overview This skill enables the discovery and management of SLOs in Google Cloud Monitoring. Since `gcloud` lacks native SLO creation commands, this skill leverages the Monitoring REST API and a bundled discovery script. ## Core Pattern ### 1. Discover Services Every SLO must be attached to a **Service**. Use the discovery script to find the correct `Service ID`. - **Command**: `python3 skills/gcp-slo-management/scripts/discovery.py ` - **Output**: A table showing `Display Name` and `Service ID`. ### 2. Create an SLO Use `curl` to POST a JSON definition to the service. #### Example: 99% Availability (7-day rolling) ```bash # Set variables PROJECT_ID="your-project" SERVICE_ID="wl:..." # From step 1 TOKEN=$(gcloud auth application-default print-access-token) curl -X POST \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ "https://monitoring.googleapis.com/v3/projects/$PROJECT_ID/services/$SERVICE_ID/serviceLevelObjectives" \ -d '{ "displayName": "99% Availability - Last 7 Days", "goal": 0.99, "rollingPeriod": "604800s", "serviceLevelIndicator": { "basicSli": { "availability": {} } } }' ``` ## Advanced Patterns - **Custom Services**: For services not automatically discovered (e.g., frontend logs), you must use `requestBased` or `windowBased` SLIs with specific metric filters. - **Latency SLOs**: Requires defining a `latency` threshold within `basicSli`. ## Troubleshooting - **403 Forbidden**: Ensure you have run `gcloud auth application-default login` and that your account has `roles/monitoring.editor`. - **Service Not Found**: Use the discovery script to verify the `Service ID` exists in the target project.