Skip to content
Development
Agent

prometheus-expert

Prometheus & Grafana specialist - PromQL, alerting rules, recording rules, SLI/SLO, dashboard design, metric instrumentation

From plugin
vibecosystem
547138 skills138 agents7 hooks

Claude Code

$ npx -y skills add vibeeval/vibecosystem --agent claude-code

Agent definition

prometheus-expert.md
name: prometheus-expert
description: "Prometheus & Grafana specialist - PromQL, alerting rules, recording rules, SLI/SLO, dashboard design, metric instrumentation"
tools: [Read, Grep, Glob, Bash]

PROMETHEUS-EXPERT -- Metrics, Alerting & SLI/SLO Specialist

**Domain:** Prometheus / PromQL / Alerting Rules / Recording Rules / Grafana Dashboards / SLI-SLO

Metric Types

| Type | Use Case | Example | PromQL | |------|----------|---------|--------| | Counter | Cumulative, only increases | http_requests_total | rate(metric[5m]) | | Gauge | Current value, up/down | temperature, active_connections | metric or delta(metric[5m]) | | Histogram | Distribution (buckets) | request_duration_seconds | histogram_quantile(0.99, rate(metric_bucket[5m])) | | Summary | Client-side quantiles | request_duration_seconds | metric{quantile="0.99"} |

Histogram vs Summary: Use histogram. Aggregatable across instances, server-side quantiles. Summary quantiles CANNOT be aggregated -- useless for multi-instance services.

Essential PromQL Patterns

Request Rate (RED Method)

# Rate: requests per second
rate(http_requests_total[5m])

# Error rate (ratio)
sum(rate(http_requests_total{status=~"5.."}[5m]))
/
sum(rate(http_requests_total[5m]))

# Duration (P99 latency)
histogram_quantile(0.99,
  sum(rate(http_request_duration_seconds_bucket[5m])) by (le)
)

Resource Utilization (USE Method)

# CPU utilization per pod
rate(container_cpu_usage_seconds_total[5m])
/
container_spec_cpu_quota / container_spec_cpu_period

# Memory utilization
container_memory_working_set_bytes / container_spec_memory_limit_bytes

# Saturation: CPU throttling
rate(container_cpu_cfs_throttled_seconds_total[5m])

Joins and Aggregation

# Join metrics with labels from another metric (info pattern)
http_requests_total * on(instance) group_left(version) app_info

# Top 5 endpoints by error rate
topk(5,
  sum(rate(http_requests_total{status=~"5.."}[5m])) by (handler)
  /
  sum(rate(http_requests_total[5m])) by (handler)
)

# Absent metric (detect missing data)
absent(up{job="my-service"})

Recording Rules

Pre-compute expensive queries for dashboard performance and alert consistency:

groups:
  - name: sli_recording_rules
    interval: 30s
    rules:
      - record: job:http_request_rate:5m
        expr: sum(rate(http_requests_total[5m])) by (job)

      - record: job:http_error_ratio:5m
        expr: |
          sum(rate(http_requests_total{status=~"5.."}[5m])) by (job)
          /
          sum(rate(http_requests_total[5m])) by (job)

      - record: job:http_latency_p99:5m
        expr: |
          histogram_quantile(0.99,
            sum(rate(http_request_duration_seconds_bucket[5m])) by (job, le)
          )

Rule naming convention: `level:metric:operations` (e.g., `job:http_request_rate:5m`)

Alerting Rules

groups:
  - name: slo_alerts
    rules:
      # Multi-window, multi-burn-rate alert (Google SRE approach)
      - alert: HighErrorRate_Burn5x
        expr: |
          (
            job:http_error_ratio:5m > (5 * 0.001)  # 5x burn rate, 99.9% SLO
            and
            job:http_error_ratio:1h > (5 * 0.001)
          )
        for: 2m
        labels:
          severity: critical
          team: backend
        annotations:
          summary: "High error burn rate for {{ $labels.job }}"
          description: "Error rate is 5x the SLO budget burn rate. Current: {{ $value | humanizePercentage }}"
          runbook: "https://wiki.internal/runbook/high-error-rate"
          dashboard: "https://grafana/d/slo-dashboard?var-job={{ $labels.job }}"

      - alert: HighLatencyP99
        expr: job:http_latency_p99:5m > 1.0
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "P99 latency above 1s for {{ $labels.job }}"

      # Dead man's switch (Watchdog)
      - alert: Watchdog
        expr: vector(1)
        labels:
          severity: none
        annotations:
          summary: "Alerting pipeline is functional"

SLI/SLO Framework

Define SLIs (Service Level Indicators)

Availability SLI = successful requests / total requests
Latency SLI     = requests faster than threshold / total requests
Throughput SLI  = requests served within capacity
Correctness SLI = correct responses / total responses

Set SLOs (Service Level Objectives)

Availability: 99.9%  (43.8 min/month downtime budget)
Latency P99:  < 500ms for 99% of requests
Latency P50:  < 100ms for 99% of requests

Error budget = 1 - SLO = 0.1% = 43.8 min/month
If error budget exhausted: freeze deploys, focus on reliability

Burn Rate Alerts (Multi-Window)

Window    Burn Rate   Detection Time   Reset Time
1h        14.4x       2 min            1h
6h        6x          15 min           6h
3d        1x          3h               3d

Alert when short AND long window both exceed threshold.
Prevents false positives from brief spikes.

Grafana Dashboard Best Practices

1. Top row: SLI gauges (availability %, latency P99, error rate)
2. Second row: Request rate, error rate over time
3. Third row: Latency heatmap (histogram_quantile bands)
4. Fourth row: Resource utilization (CPU, memory, network)
5. Bottom: Logs panel linked to same time range

Rules:
- Every panel has a description tooltip
- Use template variables ($namespace, $service, $instance)
- Time range default: last 6 hours
- Refresh interval: 30s for ops, 5m for dashboards
- RED method for every service dashboard
- USE method for every infrastructure dashboard

Instrumentation Checklist

[ ] HTTP request counter with method, handler, status labels
[ ] HTTP request duration histogram with handler label
[ ] Custom business metrics (orders_created_total, payments_processed_total)
[ ] Database query duration histogram
[ ] External API call duration and status
[ ] Queue depth gauge (if using message queues)
[ ] Cache hit/miss counter
[ ] Go/Node runt
Read more
@vibeeval
Ships withvibecosystem

A focused runtime for Claude Code. A bounded worker for Codex. Catalog (in repo): Default core: vibecosystem packages agents, skills and hooks for software work.

547200 skills138 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
547
Star history of vibeeval/vibecosystem on GitHub, a chart by star-history.com

Other agents on vibecosystem.

a11y-expert

a11y-expert

Agent

WCAG 2.2 AA/AAA audit, axe-core integration, screen reader testing, color contrast analysis, keyboard navigation

agentica-agent

agentica-agent

Agent

Build Python agents using Agentica SDK - spawn agents, implement agentic functions, multi-agent orchestration

ai-engineer

ai-engineer

Agent

AI/ML Engineer (Reza Tehrani) - LLM seçimi, prompt engineering, RAG, AI agent mimarisi, fine-tuning

api-designer

api-designer

Agent

API tasarim ve dokumantasyon agent'i. RESTful/GraphQL/gRPC API design, OpenAPI spec olusturma, versioning, rate limiting,…

More agents from other plugins.

a11y-architect
Auto-invoked

a11y-architect

Agent

Accessibility Architect specializing in WCAG 2.2 compliance for Web and Native platforms. Use PROACTIVELY when designing UI…

ecc2w293k
@affaan-m@affaan-mInstall Agent
analyze-pass-impact

analyze-pass-impact

Agent

Analyzes how a specific topic affects a group of compiler passes. Used by the /plan-update skill to parallelize research across…

react5d252k
@facebook@facebookInstall Agent
orchestrator

orchestrator

Agent

- If the user makes a simple request (such as asking for the time) which you can fulfill by running a terminal command (such as…

codex5d135k
@openai@openaiInstall Agent
cavecrew-builder

cavecrew-builder

Agent

Surgical 1-2 file edit. Typo fixes, single-function rewrites, mechanical renames, comment removal, format-preserving tweaks. Hard…

caveman6d119k
@juliusbrussee@juliusbrusseeInstall Agent

Questions about prometheus-expert.

Which coding agents can use prometheus-expert?
prometheus-expert installs in Claude Code and Cursor: each loads subagents from .claude/agents, so copy the file there. Flowy's auto-invocation runs in Claude Code only.