
Skill
synth-manage-checks
manage Synthetic Monitoring checks via YAML
Description
Creates, updates, exports, and deletes Synthetic Monitoring checks from YAML definitions via gcx. Use when the user wants to create, update, pull, push, or delete Synthetic Monitoring checks. Trigger on phrases like "create a check", "add a synthetic check", "update check", "pull my SM checks", "push checks", "delete check", or when the user provides a target URL/hostname/domain for monitoring. For check status overview use synth-check-status. For investigating failing checks use synth-investigate-check.
SKILL.md
Synthetic Monitoring Check Manager
Manage Synthetic Monitoring checks using gcx.
Core Principles
- Use gcx commands; never call Grafana APIs directly (no curl, no HTTP calls)
- Trust the user's expertise — no explanations of what SM or gcx is
- Use
-o jsonfor agent processing; default table format for user display - gcx validates specs client-side before calling the API (probe names, check type, target format) — no separate dry-run step is needed
- Probe names are case-sensitive — always copy-paste from
gcx synthetic-monitoring probes list
Workflow 1: Create New Check
Step 1: Determine Check Type
Pick the type from the target format (full decision tree and per-type templates: check-types.md):
| Target | Check Type |
|---|---|
URL (https://..., http://...) | HTTP |
| Hostname or IP (no port) | Ping |
| Domain name (DNS lookup) | DNS |
host:port | TCP |
| URL with routing path analysis | Traceroute |
If unsure, ask the user what they want to test (availability, DNS, port connectivity, routing).
Step 2: List and Select Probes
gcx synthetic-monitoring probes list
Recommend at least 3 geographically distributed probes. Copy names exactly as shown — case-sensitive. Suggest probes across different continents or regions to provide meaningful coverage (e.g., one each from North America, Europe, Asia-Pacific).
Step 3: Build YAML Definition
Use the template from check-types.md for the chosen type, filling the type-specific settings block. Common fields:
apiVersion: syntheticmonitoring.ext.grafana.app/v1alpha1
kind: Check
metadata:
name: <job-name> # gcx rewrites this to <job>-<id> after create
spec:
job: <job-name>
target: <target>
frequency: 60000 # milliseconds; 10000-120000 typical
timeout: 10000 # milliseconds; must be < frequency
enabled: true
labels:
- name: environment
value: production
- name: team
value: platform
probes:
- Atlanta
- Frankfurt
- Singapore
alertSensitivity: none # none unless the stack uses legacy sensitivity alerts
basicMetricsOnly: false # true = fewer metrics, lower cardinality
settings:
http: {} # Replace with type-specific settings
Configuration guidance:
- frequency: critical checks 10,000–60,000ms; standard checks 60,000–300,000ms
- timeout: must be strictly less than
frequency; typically 5,000–30,000ms - alertSensitivity: default to
none— see "Alert Sensitivity" in references/check-types.md for why non-nonevalues can 403 on some stacks. - basicMetricsOnly:
truereduces metric cardinality (fewer label dimensions);falseemits full metrics
Step 4: Create the Check
# Create from file
gcx synthetic-monitoring checks create -f <file.yaml>
For HTTP checks, --validate-targets pre-flights the target with a HEAD request (warning only). If client-side validation fails, fix the field named in the error and re-run.
After creation, verify with:
gcx synthetic-monitoring checks list
gcx synthetic-monitoring checks status <ID>
Workflow 2: Update Existing Check
Step 1: Pull Current Definition
Fetch the specific check:
# Get single check as YAML (use ID from list output)
gcx synthetic-monitoring checks get <ID> -o yaml > check-<ID>.yaml
Step 2: Edit and Update
Edit the YAML file, keeping metadata.name unchanged (it is the <job>-<id> composite that targets the right check). Modify only the fields that need changing.
# Update the check from file
gcx synthetic-monitoring checks update <ID> -f check-<ID>.yaml
Workflow 3: GitOps Sync (Pull/Push)
When users say "pull" they mean export with checks get -o yaml; "push" means apply with checks create/checks update -f. Export to files, edit in source control, then update to apply:
# List all checks and export each to YAML
gcx synthetic-monitoring checks list -o yaml
# Get a specific check as YAML
gcx synthetic-monitoring checks get <ID> -o yaml > ./sm-checks/check-<ID>.yaml
# Edit files as needed, then update each changed file
gcx synthetic-monitoring checks update <ID> -f ./sm-checks/check-<ID>.yaml
For bulk updates, update files individually to control which checks are changed.
Workflow 4: Delete Checks
# List checks to confirm IDs
gcx synthetic-monitoring checks list
# Delete one or more checks (by numeric ID)
gcx synthetic-monitoring checks delete <ID>
# Skip confirmation prompt
gcx synthetic-monitoring checks delete <ID> --force
# Delete multiple checks
gcx synthetic-monitoring checks delete <ID1> <ID2> <ID3>
Confirm the check identity (job name and target) before deleting — use gcx synthetic-monitoring checks get <ID> to review.
Output Format
After creating or updating:
Check: <job-name>
Target: <target>
Type: <HTTP|Ping|DNS|TCP|Traceroute>
Probes: <count> selected (<list>)
Result: <created (id=<ID>) | updated>
Verify status:
gcx synthetic-monitoring checks status <ID>
After export:
Exported <N> checks to <dir>/
Files: <list of filenames>
After delete:
Deleted check <ID> (<job-name> -> <target>)
Error Handling
- "probe not found": Probe names are case-sensitive. Run
gcx synthetic-monitoring probes listand copy names exactly. - "timeout must be less than frequency": Reduce
timeoutvalue or increasefrequency. - "invalid frequency": The allowed
frequencyrange depends on check type (e.g. traceroute allows longer intervals); the API error states the valid range. - "check validation failed": gcx validates the spec client-side before calling the API. Fix the YAML field indicated in the error and re-run.
- Create fails with "check already exists": The check job+target combination may already exist. Use
gcx synthetic-monitoring checks listto find it and update instead of create. - No probes available: Run
gcx synthetic-monitoring probes list; if empty, verify gcx context and SM API access. - Complex check types (MultiHTTP, Browser, Scripted): Settings map is not fully documented. Pull an existing check of that type as a template:
gcx synthetic-monitoring checks get <ID> -o yaml.
More skills from the gcx repository
View all 24 skillsagento11y
manage Grafana Agent Observability resources
Jul 18AgentsGrafanaMonitoringObservabilityagento11y-eval-starter
scaffold evaluation experiments for agents
Jul 21AgentsEvalsExperimentsGrafanaagento11y-instrument
instrument LLM apps for agent observability
Jul 21AgentsGrafanaInstrumentationLLM +1agento11y-prod-setup
setup production evaluation for AI agents
Jul 18AgentsEvalsGrafanaObservabilitycreate-dashboard
create Grafana dashboards with gcx
Jul 18DashboardsData VisualizationDesignGrafanadebug-with-grafana
investigate application issues with Grafana
Jul 18DebuggingGrafanaIncident ResponseObservability
More from Grafana
View publisherfaro-setup-web
instrument web apps with Grafana Faro
faro-web-sdk
Jul 12Distributed TracingFrontendMonitoringObservabilityconfiguring-yesoreyeram-infinity-datasource
configure Grafana Infinity data source
grafana-infinity-datasource
Jul 12API DevelopmentAuthenticationConfigurationGrafanaquerying-yesoreyeram-infinity-datasource
query data with Infinity datasource
grafana-infinity-datasource
Jul 15CSVData AnalysisGrafanaGraphQL +1diagnose-entity-graph
diagnose Grafana Entity Graph issues
gcx
Jul 18DebuggingGrafanaGraph AnalysisObservabilitygcx
manage Grafana Cloud resources via gcx
gcx
Jul 15CLIGrafanaMonitoringOperationsgcx-demo
present gcx demo tours
gcx
Jul 18CLIGrafanaPresentations