Skip to main content
Early accessElevarq Analyzer is not yet generally available — this manual documents the current build.Request an evaluation →
Elevarq Analyzer docs · Observability

How-to guide

Observability — metrics and dashboards

Expose Prometheus metrics from the unified deployment and use the two ready-made Grafana dashboards to watch analysis runs, Insight enrichment, and documentation retrieval.

The unified Elevarq deployment can expose Prometheus metrics about analysis runs, Insight enrichment, snapshot delivery, and per-database documentation retrieval, together with two ready-made Grafana dashboards. Everything here is opt-in: with no metrics address set, no listener is opened and there is zero overhead.

Metrics describe Elevarq's own processing — how many runs succeeded, how long they took, how many findings by severity. They do not carry the contents of your database or any credential.

Enable the metrics endpoint

Set ELEVARQ_METRICS_ADDR to a listen address. When it is empty (the default) no metrics listener is started.

ValueEffect
unset (default)No /metrics listener.
127.0.0.1:9187Serves /metrics on loopback only (recommended).
:9187Serves /metrics on all interfaces — only behind a firewall.

Metrics are served at http://<addr>/metrics.

The endpoint is unauthenticated in this release. There is no bearer token or per-scrape auth. Bind it to loopback or a private interface and control access at the network layer (firewall, network policy, or a scraping sidecar). Do not expose /metrics publicly.

What you can monitor

The metrics below are the customer-relevant subset. All names are prefixed elevarq_.

MetricTypeKey labelsMeaning
elevarq_analysis_runs_totalcounterstatus (succeeded/failed/partial/skipped)Analysis runs by terminal status.
elevarq_analysis_duration_secondshistogramWall-clock duration of an analysis run.
elevarq_analysis_stage_duration_secondshistogramstageDuration of each stage — the long-pole view.
elevarq_analysis_findings_totalcounterseverity (critical/high/medium/low/info)Findings produced, by severity.
elevarq_analysis_activegauge1 while a run is in flight, else 0.
elevarq_analysis_current_stage_indexgauge1-based stage index of the in-flight run (0 when idle).
elevarq_insight_enrichment_hits_totalcounterresult (succeeded/fallback)Insight enrichment attempts by result.
elevarq_insight_enrichment_fallback_totalcounterreasonEnrichment fall-backs by bounded reason (timeout, budget exhausted, …).
elevarq_insight_enrichment_hit_duration_secondshistogramPer-enrichment latency.
elevarq_docs_retrieval_totalcounterdatabase, source, resultDocumentation-retrieval hits/misses/fallbacks, per database.
elevarq_docs_retrieval_fallback_totalcounterdatabase, reasonRetrieval fall-backs, per database, by bounded reason.
elevarq_docs_retrieval_snippetshistogramdatabaseAccepted documentation snippets per retrieval.
elevarq_delivery_totalcounteroutcome (delivered/failed/skipped)Outcomes of pushing results to Workbench.
elevarq_database_infogauge (=1)database, alias, environmentMaps a database handle to its friendly alias + environment, for label-joins in the dashboards. Refreshed about once a minute from Workbench.
elevarq_build_infogauge (=1)version, model_tier, runtime, profileBuild and served-model identity, set once at startup.

Enrichment budget-used ratio and GPU utilisation are not exported in this release.

A note on labels and sensitivity

Most labels are bounded enumerations (status, severity, outcome, reason, stage) — safe to chart and alert on.

Two things are worth knowing:

  • elevarq_database_info carries alias and environment. The database handle itself is opaque, but the alias and environment are the human-meaningful names you gave the database in Workbench, and they are visible to anyone with access to the dashboards. If that matters in your environment, restrict who can view Grafana.
  • The database label is per-database. The docs-retrieval metrics carry one series per observed database, keyed by the opaque handle. That is intentional; the other metrics stay low-cardinality.

Run the bundled Prometheus + Grafana

The release ships an example stack and both dashboards under observability/. From the release directory:

docker compose -f observability/examples/docker-compose.yml up
  • Grafanahttp://localhost:3000 (default login admin / admin — change it on first sign-in).
  • Prometheushttp://localhost:9090.

Point Prometheus at the deployment's metrics address (the example config scrapes host.docker.internal:9187; adjust it to your ELEVARQ_METRICS_ADDR). A 15–30s scrape interval is plenty — analysis runs are infrequent, so faster scraping adds no detail.

Two dashboards are provisioned automatically into the Elevarq Analysis folder:

DashboardShows
Elevarq — Analysis OverviewRuns by status, duration percentiles, findings by severity, delivery outcomes, the live in-flight stage, and build/model identity.
Elevarq — Insight EnrichmentEnrichment hits by result, fall-backs by reason, per-hit latency, and per-stage duration.

Using your own Grafana

If you already run Grafana (10.4 or newer), skip the bundled stack:

  • Add a Prometheus data source pointing at the Prometheus that scrapes the deployment.
  • Dashboards → New → Import, and upload observability/grafana/dashboards/analysis-overview.json and analysis-enrichment.json.
  • Select your Prometheus data source when prompted.

The dashboards use only stable panel types and need no Enterprise features or plugins.

Run Workbench

docker pull ghcr.io/elevarq/workbench:v0.1.0

Pin a digest in production — verify the image.