#### 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
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
- ClickHouse (
clickhouse-serverandclickhouse-keeper) - PostgreSQL for the metadata store
- SigNoz binary installed to
/opt/signoz - SigNoz OTel Collector binary installed to
/opt/ingester - A
signozsystem user with ownership of binary and data directories:
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 castrequiressudobecause 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