grafana
SKILL.md
Grafana
Query dashboards, alerts, and data sources.
Environment Variables
GRAFANA_URL- Grafana instance URL (e.g.https://grafana.example.com)GRAFANA_TOKEN- API key or service account token
List dashboards
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/search?type=dash-db&limit=20" | jq '.[] | {uid, title, url}'
Get dashboard
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/dashboards/uid/my-dashboard-uid" | jq '{title: .dashboard.title, panels: [.dashboard.panels[].title], tags: .meta.tags}'
List data sources
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/datasources" | jq '.[] | {id, name, type, url}'
List alert rules
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/v1/provisioning/alert-rules" | jq '.[] | {uid, title, condition, for: .for}'
List firing alerts
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/alertmanager/grafana/api/v2/alerts?active=true" | jq '.[] | {labels: .labels, status: .status.state, startsAt}'
Query Prometheus data source
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/datasources/proxy/1/api/v1/query" \
--data-urlencode "query=up{job='my-service'}" | jq '.data.result[] | {metric: .metric, value: .value[1]}'
Query range (Prometheus)
curl -s -H "Authorization: Bearer $GRAFANA_TOKEN" \
"$GRAFANA_URL/api/datasources/proxy/1/api/v1/query_range" \
--data-urlencode "query=rate(http_requests_total{job='my-service'}[5m])" \
--data-urlencode "start=$(date -d '1 hour ago' +%s)" \
--data-urlencode "end=$(date +%s)" \
--data-urlencode "step=60" | jq '.data.result[0].values[-5:]'
Create annotation
curl -s -X POST -H "Authorization: Bearer $GRAFANA_TOKEN" \
-H "Content-Type: application/json" \
"$GRAFANA_URL/api/annotations" \
-d '{"text": "Deployment v1.2.3", "tags": ["deploy","prod"], "time": '$(date +%s000)'}' | jq '{id, message}'
Silence alert
curl -s -X POST -H "Authorization: Bearer $GRAFANA_TOKEN" \
-H "Content-Type: application/json" \
"$GRAFANA_URL/api/alertmanager/grafana/api/v2/silences" \
-d '{
"matchers": [{"name": "alertname", "value": "HighCPU", "isRegex": false}],
"startsAt": "'$(date -u +%Y-%m-%dT%H:%M:%SZ)'",
"endsAt": "'$(date -u -d '+1 hour' +%Y-%m-%dT%H:%M:%SZ)'",
"comment": "Silenced by ThinkFleetBot",
"createdBy": "thinkfleetbot"
}' | jq '{silenceID}'
Notes
- Data source proxy URLs use the data source ID (get from list data sources).
- Grafana Cloud uses
https://your-stack.grafana.net. - Confirm before silencing alerts or creating annotations.
Weekly Installs
2
Repository
thinkfleetai/th…t-engineFirst Seen
14 days ago
Security Audits
Installed on
opencode2
gemini-cli2
claude-code2
github-copilot2
codex2
kimi-cli2