This guide explains how to run the provider or consumer as a long-running service and what permissions are required, especially when the consumer launches Fluent Bit or Fluentd as child processes.
fluent-bit or fluentd).systemd)sudo useradd --system --create-home --home-dir /opt/opamp --shell /usr/sbin/nologin opamp
sudo mkdir -p /opt/opamp /var/log/opamp
sudo chown -R opamp:opamp /opt/opamp /var/log/opamp
Copy your repo/venv/config under /opt/opamp (or adjust paths in the units below).
Create /etc/systemd/system/opamp-provider.service:
[Unit]
Description=OpAMP Provider
After=network.target
[Service]
Type=simple
User=opamp
Group=opamp
WorkingDirectory=/opt/opamp
Environment=OPAMP_CONFIG_PATH=/opt/opamp/config/opamp.json
ExecStart=/opt/opamp/.venv/bin/opamp-provider --config-path /opt/opamp/config/opamp.json
Restart=on-failure
RestartSec=5
StandardOutput=append:/var/log/opamp/provider.log
StandardError=append:/var/log/opamp/provider.log
[Install]
WantedBy=multi-user.target
Create /etc/systemd/system/opamp-consumer-fluentbit.service:
[Unit]
Description=OpAMP Consumer (Fluent Bit)
After=network.target
[Service]
Type=simple
User=opamp
Group=opamp
WorkingDirectory=/opt/opamp
Environment=OPAMP_CONFIG_PATH=/opt/opamp/config/opamp.json
ExecStart=/opt/opamp/.venv/bin/opamp-consumer --config-path /opt/opamp/config/opamp.json --agent-config-path /opt/opamp/consumer/fluent-bit.yaml
Restart=on-failure
RestartSec=5
StandardOutput=append:/var/log/opamp/consumer-fluentbit.log
StandardError=append:/var/log/opamp/consumer-fluentbit.log
[Install]
WantedBy=multi-user.target
Create /etc/systemd/system/opamp-consumer-fluentd.service:
[Unit]
Description=OpAMP Consumer (Fluentd)
After=network.target
[Service]
Type=simple
User=opamp
Group=opamp
WorkingDirectory=/opt/opamp
Environment=OPAMP_CONFIG_PATH=/opt/opamp/config/opamp.json
ExecStart=/opt/opamp/.venv/bin/opamp-consumer-fluentd --config-path /opt/opamp/config/opamp.json --agent-config-path /opt/opamp/consumer/fluentd.conf
Restart=on-failure
RestartSec=5
StandardOutput=append:/var/log/opamp/consumer-fluentd.log
StandardError=append:/var/log/opamp/consumer-fluentd.log
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now opamp-provider.service
sudo systemctl enable --now opamp-consumer-fluentbit.service
# or:
# sudo systemctl enable --now opamp-consumer-fluentd.service
Using NSSM is the simplest approach for Python entrypoints.
Log on as a service right.config\\opamp.jsonfluent-bit.yaml or fluentd.conf)python.exe and virtualenv scriptsfluent-bit.exe or fluentd commandnssm install OpAMPProvider "D:\dev\opamp\.venv\Scripts\opamp-provider.exe" "--config-path D:\dev\opamp\config\opamp.json"
nssm set OpAMPProvider AppDirectory "D:\dev\opamp"
nssm set OpAMPProvider AppEnvironmentExtra "OPAMP_CONFIG_PATH=D:\dev\opamp\config\opamp.json"
nssm start OpAMPProvider
nssm install OpAMPConsumerFluentBit "D:\dev\opamp\.venv\Scripts\python.exe" "-m opamp_consumer.fluentbit.client --config-path D:\dev\opamp\config\opamp.json --agent-config-path D:\dev\opamp\consumer\fluent-bit.yaml"
nssm set OpAMPConsumerFluentBit AppDirectory "D:\dev\opamp"
nssm set OpAMPConsumerFluentBit AppEnvironmentExtra "OPAMP_CONFIG_PATH=D:\dev\opamp\config\opamp.json"
nssm start OpAMPConsumerFluentBit
nssm install OpAMPConsumerFluentd "D:\dev\opamp\.venv\Scripts\python.exe" "-m opamp_consumer.fluentd.client --config-path D:\dev\opamp\config\opamp.json --agent-config-path D:\dev\opamp\consumer\fluentd.conf"
nssm set OpAMPConsumerFluentd AppDirectory "D:\dev\opamp"
nssm set OpAMPConsumerFluentd AppEnvironmentExtra "OPAMP_CONFIG_PATH=D:\dev\opamp\config\opamp.json"
nssm start OpAMPConsumerFluentd
For the user account running the consumer service:
fluent-bit or fluentd from PATH (or use absolute path in config/args).consumer/fluent-bit.yaml or consumer/fluentd.conf).subprocess.Popen in consumer runtime).monitor_agent source in fluentd.conf; the consumer relies on it for local status polling.OpAMPSupervisor.signal in the service working directory; this applies to all consumer service types (fluentbit, fluentd, simulator).OpAMPSupervisor.signal.CAP_NET_BIND_SERVICE.docs/authentication.md.