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 <PROJECT_ID> - Output: A table showing
Display NameandService ID.
2. Create an SLO
Use curl to POST a JSON definition to the service.
Example: 99% Availability (7-day rolling)
# 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
requestBasedorwindowBasedSLIs with specific metric filters. - Latency SLOs: Requires defining a
latencythreshold withinbasicSli.
Troubleshooting
- 403 Forbidden: Ensure you have run
gcloud auth application-default loginand that your account hasroles/monitoring.editor. - Service Not Found: Use the discovery script to verify the
Service IDexists in the target project.