ObservaStack

metrics/catalog.yml

# Single source of metric names for rules, dashboards, and demo-app.
# Larkspur Grocers is fictional. demo-app emits this catalog, including
# exporter-shaped and engine-shaped series, so `promtool check metrics`
# covers every name the rules use. It is a fixture, not a claim that the
# process is node_exporter, postgres_exporter, or the Prometheus engine.
#
# Names that promtool check metrics rejects are not used:
# node_exporter's camelCase MemAvailable/MemTotal, and a `_count` suffix
# on a non-histogram (pg_stat_activity_count). See README.md.
metrics:
  - name: http_requests_total
    type: counter
    help: HTTP requests received by a Larkspur service.
    labels: [service, code, route, slo]
  - name: http_request_duration_seconds
    type: histogram
    help: HTTP request duration in seconds.
    labels: [service, route, slo]
    buckets: ["0.05", "0.1", "0.2", "0.3", "0.5", "1", "2.5", "5", "+Inf"]
  - name: payments_queue_oldest_age_seconds
    type: gauge
    help: Age of the oldest message on the payments queue, in seconds.
    labels: [service]
  - name: payments_queue_depth
    type: gauge
    help: Number of messages on the payments queue.
    labels: [service]
  - name: up
    type: gauge
    help: Whether the scrape target is up.
    labels: [job, instance]
  - name: node_cpu_seconds_total
    type: counter
    help: Seconds the CPUs spent in each mode.
    labels: [instance, cpu, mode]
  - name: node_memory_available_bytes
    type: gauge
    help: Memory available to the host, in bytes.
    labels: [instance]
  - name: node_memory_total_bytes
    type: gauge
    help: Total host memory, in bytes.
    labels: [instance]
  - name: node_filesystem_avail_bytes
    type: gauge
    help: Filesystem space available to non-root users, in bytes.
    labels: [instance, mountpoint, fstype, device]
  - name: node_filesystem_size_bytes
    type: gauge
    help: Filesystem size in bytes.
    labels: [instance, mountpoint, fstype, device]
  - name: pg_up
    type: gauge
    help: Whether the Postgres exporter can reach the database.
    labels: [job, instance]
  - name: pg_stat_activity_connections
    type: gauge
    help: Postgres connections in use. Fixture name; not pg_stat_activity_count.
    labels: [job, instance]
  - name: pg_settings_max_connections
    type: gauge
    help: Postgres max_connections setting.
    labels: [job, instance]
  - name: probe_success
    type: gauge
    help: Whether the blackbox probe succeeded.
    labels: [job, instance]
  - name: probe_ssl_earliest_cert_expiry
    type: gauge
    help: Unix time when the earliest presented certificate expires.
    labels: [job, instance]
  - name: prometheus_rule_evaluation_failures_total
    type: counter
    help: Rule evaluation failures. Emitted by the fixture so the name is checked.
    labels: [job, instance]
  - name: alertmanager_notifications_failed_total
    type: counter
    help: Failed Alertmanager notifications. Fixture series, not a live Alertmanager.
    labels: [service]
  - name: alertmanager_notifications_total
    type: counter
    help: Alertmanager notifications attempted. Fixture series, not a live Alertmanager.
    labels: [service]
  - name: ALERTS
    type: gauge
    help: Alert state gauge. The fixture emits it so dashboards and check metrics can see the name. The demo process does not evaluate alerting rules.
    labels: [alertname, alertstate, severity, service, team]