Files
o11y-foundry/docs/examples/systemd/binary/README.md
T
NageshbansalandGitHub 812d676792 feat: introduce signoz-standalone and fix systemdcasting (#80)
#### Features   
- Add standalone Docker image (docs/standalone/): single container
running all SigNoz components via systemd
  casting
- Add SQLite metastore support in systemd casting (enricher, signoz
molding, forge, cast)
- Add Restart=on-failure with RestartSec=5 to migrator, ingester, and
signoz service templates to remove job readiness checks with
`After`/`Wants`/`Requires`
#### Fixes
                                                                     
- Enable all services before starting any (fixes Unit not found during
start)
- Use --no-block for systemctl start (prevents cast from blocking on
oneshot services)
 #### Refactors                                                 
- Remove inter-service dependency coupling (After=/Requires=/Wants=)
from all service templates; services manage their own readiness via
restart policies and readiness checks
- Move config material paths from configs/<component>/ to
<component>/<kind>/
- Move IsEnabled() checks to forgeCasting dispatcher instead of
individual forge methods
- Simplify discoverAndPrepareServices and startAllService, remove
service categorization map
- Render environment variables (Spec.Env) and ClickHouse DSN in
ingester, migrator, and telemetrystore templates
Related: https://github.com/SigNoz/platform-pod/issues/1522
2026-03-26 23:51:57 +05:30

3.7 KiB

Systemd Binary Casting

Field Value
Mode systemd
Flavor binary
Platform -

Overview

Deploys SigNoz on bare metal using systemd service units. Each SigNoz component runs as a separate systemd service under a dedicated signoz user. Foundry generates the service files and config directories, and foundryctl cast installs and starts them.

Prerequisites

sudo useradd -r -s /sbin/nologin signoz
sudo chown -R signoz:signoz /opt/signoz /var/lib/signoz /opt/ingester /var/lib/ingester

The signoz user must also have traverse permissions to the pours/ output directory.

Configuration

apiVersion: v1alpha1
metadata:
  name: signoz
spec:
  deployment:
    flavor: binary
    mode: systemd

Deploy

Run the full pipeline (validate prerequisites, generate files, install and start services):

sudo foundryctl cast -f casting.yaml

Note

foundryctl cast requires sudo because it manages systemd services, creates system users, and writes to system directories.

Step-by-step alternative:

# 1. Validate prerequisites
foundryctl gauge -f casting.yaml

# 2. Generate deployment files
foundryctl forge -f casting.yaml

# 3. Install and start services manually from pours/deployment/
sudo cp pours/deployment/*.service /etc/systemd/system/
sudo cp -r pours/deployment/configs/ /etc/signoz/
sudo systemctl daemon-reload
sudo systemctl enable --now signoz-*.service

Generated output

pours/deployment/
  signoz-ingester.service
  signoz-metastore-postgres.service
  signoz-signoz.service
  signoz-telemetrykeeper-clickhousekeeper-0.service
  signoz-telemetrystore-clickhouse-0-0.service
  signoz-telemetrystore-migrator.service
  configs/
    ingester/
      ingester.yaml
      opamp.yaml
    telemetrykeeper/
      keeper-0.yaml
    telemetrystore/
      config.yaml
      functions.yaml

After deployment

Check service status (replace signoz with your metadata.name):

systemctl status signoz-signoz.service
systemctl status signoz-ingester.service
systemctl status signoz-telemetrystore-clickhouse-0-0.service
systemctl status signoz-telemetrykeeper-clickhousekeeper-0.service
systemctl status signoz-metastore-postgres.service

View logs for a specific service:

journalctl -u signoz-signoz.service -f

View logs for all SigNoz services:

journalctl -u 'signoz-*' -f

Annotations

Use annotations to specify custom binary paths when binaries are not installed in the default locations.

Annotation Type Description
foundry.signoz.io/signoz-binary-path string Path to the SigNoz binary
foundry.signoz.io/ingester-binary-path string Path to the OTel Collector binary
foundry.signoz.io/metastore-postgres-binary-path string Path to the PostgreSQL binary

Example with custom binary paths:

apiVersion: v1alpha1
metadata:
  name: signoz
  annotations:
    foundry.signoz.io/signoz-binary-path: /opt/signoz/bin/signoz
    foundry.signoz.io/ingester-binary-path: /opt/ingester/bin/signoz-otel-collector
    foundry.signoz.io/metastore-postgres-binary-path: /usr/bin/postgres
spec:
  deployment:
    flavor: binary
    mode: systemd