Skip to content

Operations

Service control

The RPM ships a systemd unit named pdns-pf-settingssyncer.service, running as the pdns-settingssyncer user. Everyday commands:

# Status and recent logs
systemctl status pdns-pf-settingssyncer

# Follow the log stream
journalctl -u pdns-pf-settingssyncer -f

# Restart after a config change
systemctl reload-or-restart pdns-pf-settingssyncer

The service does not watch its config file for changes; restart it after editing settingssyncer.yaml.

On restart the service re-subscribes and performs a full bulk load from each configured Redis server before processing incremental updates again.

Config location

The default config path is /etc/pdns-pf/settingssyncer.yaml. A commented template with every option is shipped alongside it as /etc/pdns-pf/settingssyncer.example.yaml. See Configuration for the full reference.

If the file is absent, the service looks for it at /etc/pdns-pf/settingssyncer.yaml automatically; pass --config to override.

Command-line flags

Flag Default Purpose
--config, -C (auto-discovered) Path to the YAML config file.
--debug false Force log level to debug, overriding the config.

Observability

All live-inspection surfaces are served by the HTTP server bound to http.address (see Configuration → http).

  • Status page. A simple HTML page at / with a link to the metrics endpoint.
  • Prometheus metrics. Scraped at /metrics.

Metrics reference

Bulk load metrics

Metric Type Description
settings_syncer_bulk_started_time_seconds gauge Unix timestamp when the last bulk load started. Labels: server.
settings_syncer_bulk_in_progress gauge 1 while a bulk load is running, 0 otherwise. Labels: server.
settings_syncer_bulk_count counter Total bulk load completions by outcome. Labels: server, status (success or error).
settings_syncer_bulk_duration_seconds histogram Duration of each bulk load in seconds. Labels: server, status.
settings_syncer_bulk_last_count gauge Number of entries written in the most recent bulk load. Labels: server, db, region.
settings_syncer_bulk_errors counter Number of bulk load errors, labelled by error text. Labels: server, error.

Incremental (pubsub) metrics

Metric Type Description
settings_syncer_incr_recv_count_total counter Total pubsub messages received, including the timestamp channel. Labels: server.
settings_syncer_incr_updates_count_total counter Total pubsub messages received, excluding the timestamp channel. Labels: server.
settings_syncer_incr_updates_count counter Pubsub messages received per channel. Labels: server, db.
settings_syncer_incr_latency_msec gauge Subscription latency in milliseconds, measured from the timestamp published in the timestamp channel to local receive time. Labels: server.
settings_syncer_incr_latency_excessive_count counter Number of timestamp messages processed with excessive latency (above 3000 ms). Labels: server.
settings_syncer_incr_errors counter Number of pubsub errors. Labels: server, error.

Using the metrics

Is the bulk load completing? Check settings_syncer_bulk_count{status="success"} — it increments on each successful load. settings_syncer_bulk_in_progress stays at 1 for the duration; a long-running bulk load indicates a large dataset or slow Redis.

Is the subscription keeping up? Watch settings_syncer_incr_latency_msec. Values consistently above a few hundred milliseconds mean the subscriber is falling behind the publisher. settings_syncer_incr_latency_excessive_count counts messages that arrived more than 3 seconds late.

How many entries were synced? settings_syncer_bulk_last_count breaks down the entry count by server, database, and region after each bulk load.

Performance notes

scan_count

scan_count controls how many entries the syncer fetches per HSCAN/ZSCAN round-trip during bulk load. The default (1000000) is chosen for production datasets so a bulk load with millions of entries does not spend most of its time on Redis round-trips. Lower it only if Redis reply size, memory pressure, or network characteristics make the large scan batches a bottleneck.

batch_size

batch_size controls how many LMDB writes are grouped into a single transaction. Larger batches improve write throughput for bursts. The worker does not wait for a full batch, so quiet traffic is still committed promptly. The default (10000) is suitable for production while keeping individual transactions bounded.