Skip to content

LeanSignal Agent

Watch the health of the LeanSignal agents themselves — control-stream connectivity, pipeline throughput, export failures, queue depth, and memory — with curated dashboards and alerts you import in one step.

There is nothing to enable. The LeanSignal agent monitors itself out of the box: the underlying OpenTelemetry Collector emits its own internal telemetry, and the LeanSignal edge controller adds a handful of platform-specific metrics (metric-index sizes, control-stream connectivity). Every shipped config — the Linux/systemd install, the Docker image, and the Helm chart — already collects it. Install the agent and these metrics are already flowing.

Self-telemetry rides the same demand-driven pipeline as your application metrics: it’s stored in full in the agent’s local VictoriaMetrics, indexed, and demandable. Importing one of the demands below is exactly what forwards it to your central dataplane, so you get fleet-wide agent dashboards without collecting anything you don’t ask for.

Metric names are the ones stored in VictoriaMetrics — the collector’s built-in otelcol_* metrics plus LeanSignal’s own leansignal_edgecontroller_* metrics. See the agent’s own-telemetry reference for the full list.

  • A LeanSignal agent installed and connected — that is the only requirement. Self-telemetry is collected automatically; there is nothing to enable. If you haven’t deployed the agent yet, follow Install the agent (source: LeanSignal/leansignal-agent). It should show as Connected under Agents in the LeanSignal app.
  • Editor or admin role in the LeanSignal app (importing a demand creates dashboards and alert rules).

Nothing to configure. Install the agent (see Install the agent) and its self-telemetry is collected automatically. Every shipped config already does three things for you:

  1. Exports the collector’s own metrics (level detailed), logs, and traces via service.telemetry over OTLP to the agent’s own loopback OTLP receiver (127.0.0.1:4317).
  2. Routes them through the same pipelines as your application telemetry, where the resource processor stamps the leansignal_agent_name, host_name, and os_type identity labels onto every series.
  3. Stores them in the co-located edge stores — metrics land in the local VictoriaMetrics, indexed and demandable like any application metric.

The only step is importing a demand below — that is what tells the agent to forward its own metrics to your central dataplane, exactly like an application metric.

To confirm it locally on an agent host, query its VictoriaMetrics directly:

Terminal window
# Is the control stream up right now?
curl -s 'http://127.0.0.1:8428/api/v1/query?query=leansignal_edgecontroller_connection_up' | jq .
# List every self-telemetry series currently stored
curl -s http://127.0.0.1:8428/api/v1/label/__name__/values \
| jq -r '.data[]' | grep -E '^(leansignal_|otelcol_|http_client_)'

The agent’s own logs are part of its self-telemetry: service.telemetry pushes them through the agent’s own logs pipeline, where they land in the co-located Loki as the leansignal-agent stream — and since agent 0.8.0 the co-located stores’ logs ride along too, as leansignal-victoria-metrics, leansignal-loki, and leansignal-tempo (collected by default on Linux and macOS installs). The Standard and Extended demands on this page include those streams, so importing one also forwards the agent stack’s logs to your tenant — on Windows, where the service captures no log file, that is the only way to read agent logs at all. The agent emits very few spans of its own; the traces it carries are your workloads’, which reach it over OTLP like every other signal.

LeanSignal Agent ships as a ready-made demand in three variants. You don’t copy any JSON — in the LeanSignal app go to Demands, press the ˅ arrow on the Add Demand button (the arrow opens the import menu), choose Import from catalog…, and pick the variant. Each variant below lists the slug that identifies its published bundle. See Integrations for the full import flow.

The variants are nested — Standard is a superset of Essential, Extended a superset of Standard. Pick whichever is closest to what you need and treat it as a starting point: after import everything is a normal, editable copy, so retune thresholds, add or drop panels, and adjust queries for your environment — your edits reshape the demand automatically. Start small and re-import a larger variant later if you outgrow it.

The golden signals. 1 dashboard · 4 panels · 3 alerts — stream connectivity, throughput, failures, and memory at a glance.

Import this variant from the catalog. Its demand slug:

Demand slug
leansignal-agent-otel-demand-essential

Dashboard — Control stream connected, Accepted metric points, Failed metric points, and Agent memory (RSS).

Alerts (3)

AlertSeverityFires when
Agent control stream downcriticalconnection_up = 0 for 5m
Agent export failurescriticalfailing points for 10m
Agent export queue near capacitywarningqueue > 80% full for 5m

Review the bundle JSON →

Each variant imports one LeanSignal Agent dashboard, its panels grouped into collapsible sections. Every dashboard carries an Instance filter (on the leansignal_agent_name label), so one import covers the whole fleet — view every instance at once, or focus on one. Legends are sortable tables showing last/mean/max per series, so the outlier instance stands out. Dashboards are demand-driven: importing one tells your agents to forward exactly the timeseries its panels query, and nothing else. Panels are ordinary Perses panels — edit queries, add panels, or retune them after import, and your changes reshape the demand automatically.

Thresholds are conservative starting points — tune them to your workload.

Was this page helpful?