signoz-agent

signoz-agent

Docker app from JSONbored's Repository

Overview

SigNoz Agent is a lightweight OpenTelemetry collector companion for signoz-aio.
[center][color=#ff8c00]JSONbored Verified Companion Template[/color][/center]

This Unraid template runs a separate collector that can receive local application telemetry, scrape optional Prometheus targets, collect optional host metrics, collect optional Docker metrics, and tail optional Docker container logs before forwarding telemetry to your main SigNoz endpoint.

When to use this:
Use signoz-agent on remote Unraid servers, separate Docker hosts, or any machine where you want collection separated from the main signoz-aio backend. If you only need same-box collection on the server running signoz-aio, the built-in local host agent inside signoz-aio is usually simpler.

Initial Setup:

  1. Enter your SigNoz OTLP endpoint. For signoz-aio on another host, use HOST_OR_IP:4317 with the default gRPC exporter.
  2. Click Apply.
  3. Point local apps at this agent on OTLP gRPC port 4317 or OTLP HTTP port 4318.
  4. Optional: enable host metrics, Docker metrics, Docker logs, or Prometheus targets in Advanced View and explicitly set the matching mounts or target list.

Security Note: Host root, Docker socket, and Docker log mounts are blank by default. Enable only the collection sources you need. Docker socket access can expose Docker control access to this collector container.

SigNoz Unraid Suite

signoz-aio

This repo packages two Unraid Community Applications for SigNoz:

  • signoz-aio: the full self-hosted backend, UI, collector, ClickHouse, and ZooKeeper stack.
  • signoz-agent: a lightweight OpenTelemetry Collector companion for remote hosts, stricter separation, and custom edge collection.

Both templates use the same support surface: JSONbored/signoz-aio issues.

Templates

signoz-aio

signoz-aio packages the full self-hosted SigNoz stack into a single Unraid-friendly image and CA app template.

The image follows the current official SigNoz Docker deployment instead of inventing a custom rewrite. It supervises the services SigNoz currently expects for a complete small-to-medium self-hosted install:

  • signoz
  • signoz-otel-collector
  • clickhouse
  • zookeeper

signoz-agent

signoz-agent packages the official OpenTelemetry Collector Contrib collector as a SigNoz-focused Unraid companion app.

Use it when you want to:

  • collect telemetry from remote machines and forward it to signoz-aio
  • keep host/Docker mounts out of the main SigNoz backend container
  • run advanced collector pipelines without replacing the backend AIO template

The agent defaults to no host root, Docker socket, or Docker log mounts. Those are advanced opt-in settings only.

What Is Inside The Image

The image includes all of the stateful pieces needed for a self-contained SigNoz install:

  • signoz
    • the main SigNoz UI and API service
    • stores application metadata in an internal SQLite database persisted under /appdata/signoz
  • signoz-otel-collector
    • receives OTLP data on 4317 and 4318
    • runs the telemetry-store migrations SigNoz needs in ClickHouse
  • clickhouse
    • the primary telemetry database for traces, logs, metrics, and derived telemetry tables
  • zookeeper
    • internal coordination layer used by the official SigNoz ClickHouse deployment

The image does not require any separate Postgres, TimescaleDB, or Redis sidecars. SigNoz's long-term telemetry data lives in ClickHouse, while SigNoz's app/config metadata in this AIO image lives in SQLite.

Advanced Database Options

The default install is fully self-contained and uses:

  • SQLite for SigNoz metadata
  • bundled ClickHouse for telemetry storage
  • bundled ZooKeeper for ClickHouse coordination

For power users, the advanced app settings also support:

  • external PostgreSQL for SigNoz metadata
  • root user provisioning through official SigNoz environment variables
  • external ClickHouse endpoints for advanced deployments

Important limitation:

  • PostgreSQL can replace SQLite for metadata
  • PostgreSQL does not replace ClickHouse for traces, metrics, and logs
  • if you move to external ClickHouse, you are moving into a more advanced deployment model and should already understand your ClickHouse and ZooKeeper topology

Architecture

flowchart LR
    A["Apps / SDKs / Agents"] -->|"OTLP gRPC :4317"| B["signoz-otel-collector"]
    A -->|"OTLP HTTP :4318"| B
    B -->|"metrics / logs / traces"| C["ClickHouse"]
    D["SigNoz UI/API :8080"] -->|"query + metadata reads"| C
    D -->|"app metadata"| E["SQLite (/appdata/signoz/signoz.db)"]
    C -->|"cluster coordination"| F["ZooKeeper"]
    G["/appdata"] --> C
    G --> E
    G --> F
    G --> H["generated.env / runtime config"]

Persistence Layout

The Unraid app intentionally keeps the mount surface simple by using one root path:

  • /appdata

Inside that mount, the container manages:

  • /appdata/clickhouse
  • /appdata/signoz
  • /appdata/zookeeper
  • /appdata/config
  • /appdata/tmp

Current Status

The single-image runtime is implemented and validated.

  • the image supervises signoz, signoz-otel-collector, clickhouse, and zookeeper
  • linux/amd64 build passes
  • pytest-backed Docker integration testing covers:
    • first boot
    • telemetry-store migrations
    • OTLP listener readiness
    • restart and persistence
    • advanced runtime preflight paths
  • signoz-agent has a separate image, template, generated collector config, and Docker-backed integration tests for forwarding, Prometheus scraping, and fail-fast security checks

First-Run Notes

  • first startup is heavier than a typical single-service app because ClickHouse, ZooKeeper, SigNoz, and the collector all need to initialize
  • expect more RAM and disk use than lighter AIO images
  • the default setup keeps things intentionally simple:
    • one /appdata root
    • one UI port
    • two OTLP ingest ports
    • sane advanced defaults for the collector and internal ZooKeeper housekeeping

Getting Data Into SigNoz

SigNoz is only useful once something is sending telemetry into it. This image gives you ready OTLP endpoints, but it does not automatically reach out and scrape your entire server by default.

The easiest ingestion paths are:

  • instrument applications with OpenTelemetry and send directly to:
    • http://YOUR-UNRAID-IP:4317 for OTLP gRPC
    • http://YOUR-UNRAID-IP:4318 for OTLP HTTP
  • run a separate OpenTelemetry Collector or Alloy agent on the Unraid host
  • run signoz-agent on this host or another machine
  • configure that agent to:
    • scrape Prometheus endpoints
    • collect Docker container metrics
    • tail Docker or file-based logs
    • forward everything into this signoz-aio container

Why keep the host agent separate?

  • it avoids giving the main SigNoz container broad access to the Docker socket
  • it avoids mounting host /proc, /sys, and container log directories into the main UI/database image
  • it keeps the AIO install safe and beginner-friendly while still giving power users a clean upgrade path

Recommended Monitoring Layout For Unraid

flowchart LR
    A["Unraid host"] -->|"host metrics"| B["Optional built-in host agent"]
    C["Docker containers"] -->|"docker stats + logs"| B
    D["Apps with OTel SDKs"] -->|"direct OTLP or via agent"| B
    E["Apps with Prometheus endpoints"] -->|"optional scrape targets"| B
    B -->|"local OTLP"| F["SigNoz internal collector"]
    F --> G["SigNoz UI"]
    F --> H["ClickHouse + SQLite + ZooKeeper"]

For most single-host users, this is the sweet spot:

  • signoz-aio stays the central backend and UI
  • the optional built-in local host agent can handle host collection on the same Unraid machine
  • instrumented apps can either send directly to SigNoz or rely on the local host agent for extra collection

For remote hosts or stricter separation, run signoz-agent and point it at the signoz-aio OTLP endpoint.

Releases

signoz-aio uses upstream-version-plus-AIO-revision releases such as v0.120.0-aio.1.

signoz-agent uses upstream-collector-version-plus-agent-revision releases such as 0.139.0-agent.1.

Every main build publishes latest, the exact pinned upstream version, an explicit packaging line tag, and sha-<commit>.

See docs/releases.md for the central release process details.

The CA templates use the Docker Hub image names:

  • jsonbored/signoz-aio
  • jsonbored/signoz-agent

Quick Start Paths

1. Instrumented apps

If an app already supports OpenTelemetry, point it at:

  • OTEL_EXPORTER_OTLP_ENDPOINT=http://YOUR-UNRAID-IP:4317 for gRPC exporters
  • OTEL_EXPORTER_OTLP_ENDPOINT=http://YOUR-UNRAID-IP:4318 for HTTP exporters

Then verify in SigNoz:

  • traces appear in APM / Traces
  • application metrics appear in Metrics Explorer
  • application logs appear in Logs if the app also exports logs

2. Prometheus scrape targets

If an app exposes a /metrics endpoint, use a host collector to scrape it and forward to SigNoz.

Starter example:

3. Unraid host + Docker telemetry

If you want host metrics, Docker container metrics, and container logs from the same Unraid machine, enable the built-in local host agent in the app settings and explicitly fill only the advanced host/Docker path fields you want to use.

Starter example:

The built-in host agent is auto-generated from the mounts and variables you provide. A default install does not mount the host root, Docker socket, or Docker log directory. When you opt in, it can enable:

  • Unraid CPU, memory, disk, and filesystem metrics
  • Docker container resource metrics
  • Docker stdout/stderr logs
  • optional Prometheus scrape targets you define

Common explicit path values are:

  • Host Root Path: /
  • Docker Socket: /var/run/docker.sock
  • Docker Container Logs Path: /var/lib/docker/containers

This is the best fit for users who want:

  • one main AIO install
  • minimal extra setup
  • local Unraid and Docker observability without a second app

What We Recommend Newcomers Do First

  1. Get signoz-aio running with defaults.
  2. Verify the UI loads on port 8080.
  3. Point one app or one collector at OTLP 4317 or 4318.
  4. Confirm data appears in SigNoz.
  5. Only then expand into Prometheus scraping, host metrics, and container logs.

What This AIO Does Not Bundle

This image is self-contained for the SigNoz backend stack, but observability data still has to come from somewhere. It does not automatically collect telemetry from every remote host or every service you run.

That means you still need to connect senders such as:

  • OpenTelemetry SDKs inside apps
  • OpenTelemetry Collector agents
  • Prometheus scrape pipelines
  • log shippers or agent-based host collectors

The optional built-in local host agent can collect from the same Unraid machine when you explicitly populate the advanced mounts, including the Docker socket. That is useful, but it is also a security tradeoff and it does not replace proper agents for remote systems.

Docs And Examples

Helpful References

Star History

Star History Chart

Install signoz-agent on Unraid in a few clicks.

Find signoz-agent in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for signoz-agent Review the template variables and paths Click Install

Requirements

Requires a reachable SigNoz OTLP endpoint, usually your main signoz-aio instance or a remote SigNoz deployment. If signoz-agent is installed on the same Unraid host as signoz-aio, the default 4317 and 4318 host ports will conflict unless one template is adjusted. Host root, Docker socket, and Docker log mounts are blank by default; explicitly configure only the host access you need. Mounting /var/run/docker.sock can expose Docker control access to the collector container.

Download Statistics

2,239
Total Downloads

Related apps

Details

Repository
jsonbored/signoz-agent:latest
Last Updated2026-06-18
First Seen2026-05-01

Runtime arguments

Network
bridge
Shell
sh
Privileged
false

Template configuration

SigNoz OTLP EndpointVariable

Required. Destination SigNoz OTLP endpoint. For signoz-aio on another host with the default gRPC exporter, use HOST_OR_IP:4317. For HTTP/protobuf, use an http:// or https:// endpoint ending at the OTLP HTTP listener.

Target
SIGNOZ_AGENT_ENDPOINT
OTLP gRPC PortPorttcp

Local OTLP gRPC receiver port for apps and collectors that send telemetry to this agent.

Target
4317
Default
4317
Value
4317
OTLP HTTP PortPorttcp

Local OTLP HTTP receiver port for apps and collectors that send telemetry to this agent.

Target
4318
Default
4318
Value
4318
AppData - SigNoz AgentPathrw

Persistent root for generated collector configuration, status, and diagnostics.

Target
/appdata
Default
/mnt/user/appdata/signoz-agent
Value
/mnt/user/appdata/signoz-agent
TimezoneVariable

Container timezone.

Target
TZ
Default
UTC
Value
UTC
[Exporter] ProtocolVariable

Advanced. Export protocol used to forward telemetry to SigNoz. Use grpc for signoz-aio 4317 and http/protobuf for SigNoz Cloud or 4318-style endpoints.

Target
SIGNOZ_AGENT_PROTOCOL
Default
grpc|http/protobuf
Value
grpc
[Exporter] Insecure TLSVariable

Advanced. Set true for plain-text or self-hosted gRPC endpoints without TLS. Set false for trusted TLS endpoints.

Target
SIGNOZ_AGENT_INSECURE
Default
true|false
Value
true
[Exporter] HeadersVariable

Advanced. Optional comma-separated exporter headers in key=value form. Values are masked because headers may contain credentials.

Target
SIGNOZ_AGENT_HEADERS
[Exporter] SigNoz Ingestion KeyVariable

Advanced. Optional SigNoz ingestion key. This is added as the signoz-ingestion-key header and is masked.

Target
SIGNOZ_AGENT_INGESTION_KEY
[Collector] Log LevelVariable

Advanced. OpenTelemetry collector log level.

Target
SIGNOZ_AGENT_LOG_LEVEL
Default
info|debug|warn|error
Value
info
[Collector] Resource AttributesVariable

Advanced. Comma-separated resource attributes added to telemetry, for example host.name=unraid-remote,service.namespace=homelab.

Target
SIGNOZ_AGENT_RESOURCE_ATTRIBUTES
[Collector] Deployment EnvironmentVariable

Advanced. Optional deployment.environment resource attribute such as homelab, production, or staging.

Target
SIGNOZ_AGENT_DEPLOYMENT_ENVIRONMENT
[Collector] Batch Send SizeVariable

Advanced. Collector batch send size.

Target
SIGNOZ_AGENT_BATCH_SEND_SIZE
Default
8192
Value
8192
[Collector] Batch TimeoutVariable

Advanced. Collector batch timeout.

Target
SIGNOZ_AGENT_BATCH_TIMEOUT
Default
5s
Value
5s
[Collector] Memory Limit MiBVariable

Advanced. OpenTelemetry memory limiter cap in MiB.

Target
SIGNOZ_AGENT_MEMORY_LIMIT_MIB
Default
512
Value
512
[Receiver] gRPC Listen EndpointVariable

Advanced. Internal OTLP gRPC receiver listen endpoint.

Target
SIGNOZ_AGENT_OTLP_GRPC_ENDPOINT
Default
0.0.0.0:4317
Value
0.0.0.0:4317
[Receiver] HTTP Listen EndpointVariable

Advanced. Internal OTLP HTTP receiver listen endpoint.

Target
SIGNOZ_AGENT_OTLP_HTTP_ENDPOINT
Default
0.0.0.0:4318
Value
0.0.0.0:4318
[Receiver] Health EndpointVariable

Advanced. Collector health extension endpoint. This port is not published by default.

Target
SIGNOZ_AGENT_HEALTH_ENDPOINT
Default
0.0.0.0:13133
Value
0.0.0.0:13133
[Host Metrics] EnableVariable

Advanced. Enables hostmetrics collection. Requires explicitly setting the Host Root Path mount below.

Target
SIGNOZ_AGENT_ENABLE_HOST_METRICS
Default
false|true
Value
false
[Host Metrics] Host Root PathPathro

Advanced optional host metrics mount. Leave blank unless host metrics are enabled. Set to / to mount the Unraid host root read-only.

Target
/hostfs
[Host Metrics] Collection IntervalVariable

Advanced. Host metrics collection interval.

Target
SIGNOZ_AGENT_HOST_COLLECTION_INTERVAL
Default
30s
Value
30s
[Docker Metrics] EnableVariable

Advanced. Enables Docker container metrics. Requires explicitly setting the Docker Socket mount below.

Target
SIGNOZ_AGENT_ENABLE_DOCKER_METRICS
Default
false|true
Value
false
[Docker Metrics] Docker SocketPathro

Advanced optional Docker metrics mount. Leave blank unless Docker metrics are enabled. Mounting /var/run/docker.sock can expose Docker control access to this collector container.

Target
/var/run/docker.sock
[Docker Metrics] Collection IntervalVariable

Advanced. Docker metrics collection interval.

Target
SIGNOZ_AGENT_DOCKER_COLLECTION_INTERVAL
Default
30s
Value
30s
[Docker Metrics] Excluded ImagesVariable

Advanced. Optional comma-separated image names to exclude from docker_stats collection, for example pause,otel/opentelemetry-collector-contrib. Container-name-specific exclusions require custom config mode.

Target
SIGNOZ_AGENT_DOCKER_EXCLUDED_IMAGES
[Docker Logs] EnableVariable

Advanced. Enables Docker JSON log tailing. Requires explicitly setting the Docker Container Logs Path mount below.

Target
SIGNOZ_AGENT_ENABLE_DOCKER_LOGS
Default
false|true
Value
false
[Docker Logs] Docker Container Logs PathPathro

Advanced optional Docker log mount. Leave blank unless Docker logs are enabled. Set to /var/lib/docker/containers to read local Docker JSON logs.

Target
/var/lib/docker/containers
[Prometheus] TargetsVariable

Advanced. Optional comma-separated Prometheus scrape targets, for example node-exporter:9100,cadvisor:8080.

Target
SIGNOZ_AGENT_PROMETHEUS_TARGETS
[Prometheus] Metrics PathVariable

Advanced. Prometheus metrics path used for all configured simple scrape targets.

Target
SIGNOZ_AGENT_PROMETHEUS_METRICS_PATH
Default
/metrics
Value
/metrics
[Prometheus] Scrape IntervalVariable

Advanced. Prometheus scrape interval.

Target
SIGNOZ_AGENT_PROMETHEUS_SCRAPE_INTERVAL
Default
30s
Value
30s
[Custom Config] ModeVariable

Advanced. Use generated for the Unraid-managed config. Use custom only when mounting and managing your own collector config.

Target
SIGNOZ_AGENT_CONFIG_MODE
Default
generated|custom
Value
generated
[Custom Config] Config PathVariable

Advanced. Path inside the container to a custom OpenTelemetry collector config when custom config mode is enabled.

Target
SIGNOZ_AGENT_CUSTOM_CONFIG_PATH