Manage observability stack lifecycle (start, stop, backup, restore, upgrade). Use when controlling the LGTM stack for Claude Code monitoring.
65
78%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/observability-control/SKILL.mdManage the lifecycle of the observability stack for Claude Code telemetry.
| Environment | Docker Compose Path |
|---|---|
| Primary Stack | /mnt/c/data/github/botaniqal-medtech/botaniqal-medtech/observability/docker-compose.yml |
| Skill-based Stack | /mnt/c/data/github/.observability/docker-compose.yml |
| Service | Port | Purpose |
|---|---|---|
| Grafana | 3000 | Dashboards and visualization |
| Prometheus | 9090 | Metrics storage |
| Loki | 3100 | Log aggregation |
| Tempo | 3200 | Distributed tracing |
| OTEL Collector | 4317/4318 | Telemetry receiver |
| Promtail | - | Log shipping |
startStart observability stack.
docker compose -f /mnt/c/data/github/botaniqal-medtech/botaniqal-medtech/observability/docker-compose.yml up -dstopStop stack gracefully (preserves data).
docker compose -f /mnt/c/data/github/botaniqal-medtech/botaniqal-medtech/observability/docker-compose.yml downrestart [service]Restart specific service or all services.
# Restart all
docker compose -f /path/docker-compose.yml restart
# Restart specific
docker restart lokistatusHealth check all components.
docker ps --format "table {{.Names}}\t{{.Status}}" | grep -E "(otel|loki|grafana|prometheus|tempo)"Output: Running services, health status.
healthVerify service endpoints.
curl -s http://localhost:3000/api/health # Grafana
curl -s http://localhost:9090/-/healthy # Prometheus
curl -s http://localhost:3100/ready # Loki
curl -s http://localhost:3200/ready # TempobackupExport dashboards and configurations.
# Backup dashboards
curl -s http://localhost:3000/api/search -u admin:admin | \
jq -r '.[].uid' | \
xargs -I {} curl -s http://localhost:3000/api/dashboards/uid/{} -u admin:admin > backup/dashboards.jsonOutput: .observability/backups/YYYYMMDD_HHMMSS/
restore <backup-path>Restore from backup.
curl -X POST http://localhost:3000/api/dashboards/db \
-H "Content-Type: application/json" \
-u admin:admin \
-d @backup/dashboards.jsonlogs [service]View logs from stack components.
docker logs loki --tail 100
docker logs otel-collector --tail 100
docker logs grafana --tail 100fix-permissionsFix volume permission issues (common with Tempo).
docker volume rm observability_tempo-data
docker volume create observability_tempo-data
docker run --rm -v observability_tempo-data:/tempo alpine chown -R 10001:10001 /tempo
docker restart tempo# Check all services status
docker ps | grep -E "(otel|loki|grafana|prometheus|tempo|promtail)"
# View recent logs for issues
docker logs otel-collector --tail 50 2>&1 | grep -i error
# Test OTLP endpoint
curl -v http://localhost:4317
# Query Loki for recent data
curl -s "http://localhost:3100/loki/api/v1/labels"
# List Grafana dashboards
curl -s http://localhost:3000/api/search -u admin:admin | python3 -c "import sys,json; [print(d['title']) for d in json.load(sys.stdin)]"docker logs otel-collector --tail 30
# Common fix: Ensure Prometheus has --web.enable-remote-write-receiverdocker logs loki --tail 30
# Common fix: Disable frontend_worker for single-node mode# Fix volume permissions
docker volume rm observability_tempo-data
docker volume create observability_tempo-data
docker run --rm -v observability_tempo-data:/tempo alpine chown -R 10001:10001 /tempo
docker restart tempoenv | grep OTELcat .claude/settings.jsoncurl "http://localhost:3100/loki/api/v1/labels"| Service | URL | Credentials |
|---|---|---|
| Grafana | http://localhost:3000 | admin/admin |
| Prometheus | http://localhost:9090 | - |
| Loki | http://localhost:3100 | - |
| OTLP gRPC | localhost:4317 | - |
| OTLP HTTP | localhost:4318 | - |
scripts/start-stack.sh - Start observability stackscripts/stop-stack.sh - Stop stack gracefullyscripts/health-check.sh - Check all service healthscripts/backup-dashboards.sh - Export Grafana dashboardsscripts/restore-dashboards.sh - Import dashboards from backup93ed392
Also appears in
since Sep 12, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.