Auto-supervision

XorMon embarque la supervision, les alertes et le réglage de la base de données de l’hôte sur lequel il tourne.

xmtune.pl : assistant de réglage PostgreSQL/TimescaleDB pour XorMon

Il détecte le nombre de CPU, la RAM et le type de disque de la machine, puis recommande des réglages PostgreSQL.
Par défaut, il suppose que la base partage l’hôte avec XorMon : il règle donc sur environ 2/3 de la RAM (8 GB au minimum) et la moitié des CPU (1 CPU au minimum).
Employez --STANDALONE pour un hôte de base de données dédié.

UTILISATION

cd ~/xormon-ng
perl server-nest/scripts/dbtools/xmtune.pl [OPTIONS]

OPTIONS (insensibles à la casse)

--CONFIG_PATH=  Path to postgresql.conf. Auto-detected if omitted.  Not needed if both --CPU and --MEMORY are given.
--CPU=             Override CPU count.
--MEMORY=[kBMBGB]  Override total memory. Bare number = kB.
--DISK_TYPE=       SSD  HDD  SAN. Affects random_page_cost and effective_io_concurrency.
--STANDALONE          Dedicated DB host: full RAM and all CPUs, no reserve.
--APPLY               Write values into postgresql.conf (backup made first).
--ALL                 With --JSON, list all params, not just changed ones.
--=  Override any PG parameter, e.g. --shared_buffers=4GB.
--HELP                Show usage.

MODES DE SORTIE

default   Prints a ready-to-run "psql -c ALTER SYSTEM SET ..." command for the changed parameters. Nothing is written.
--APPLY   Edits postgresql.conf in place (timestamped .bak backup first).
Une fois les réglages appliqués, PostgreSQL demande un redémarrage complet.

EXEMPLES

perl server-nest/scripts/dbtools/xmtune.pl
perl server-nest/scripts/dbtools/xmtune.pl --shared_buffers=4GB --work_mem=64MB
perl server-nest/scripts/dbtools/xmtune.pl --CPU=16 --MEMORY=64GB --STANDALONE
perl server-nest/scripts/dbtools/xmtune.pl --CONFIG_PATH=/etc/postgresql/16/main/postgresql.conf --APPLY

Exemple de sortie :

perl server-nest/scripts/dbtools/xmtune.pl --shared_buffers=4GB --work_mem=64MB
  Found PostgreSQL config at: /etc/postgresql/16/main/postgresql.conf
  Detected: 3 CPUs, 16009 MB RAM, HDD disk

  Run these commands as user postgres(or another superuser): 
  After running these commands, you will need to restart your database to apply the changes! 

  psql  -c "ALTER SYSTEM SET checkpoint_timeout = '300s';" -c "ALTER SYSTEM SET effective_cache_size = '12295148kB';"...

Recommandations de réglage

max_connections -> 100 (fixed)
shared_buffers -> RAM ÷ 5 (20%)
effective_cache_size -> RAM × 3 ÷ 4 (75%)
maintenance_work_mem -> RAM ÷ 16, capped at 2 GB
work_mem -> (RAM − shared_buffers) ÷ ((max_connections + max_worker_processes) × 3), min 64 kB
wal_buffers -> -1 (let PostgreSQL auto-size)
min_wal_size -> 2 GB (XorMon workloads are write-heavy)
max_wal_size -> 4 GB
checkpoint_completion_target -> 0.9
checkpoint_timeout -> 300s
synchronous_commit -> off
random_page_cost -> HDD → 4, SSD → 1.1, SAN → 1.1
effective_io_concurrency -> HDD → 32, SSD → 200, SAN → 300
max_worker_processes -> 3 + timescaledb.max_background_workers + max_parallel_workers
max_parallel_workers ->  CPU count
max_parallel_workers_per_gather -> ceil(CPU ÷ 2), capped at 4
max_parallel_maintenance_workers -> ceil(CPU ÷ 2), capped at 4
timescaledb.max_background_workers -> max(20, CPU), capped at 32

>Self health monitoring
Rendez-vous dans UI ➡ icône Settings ➡ Help ➡ Self Monitoring

XorMon supervise l’hôte par l’agent OS Linux standard, intégré au logiciel du serveur XorMon.
La base PostgreSQL est elle aussi supervisée, par l’agent PostgreSQL standard.

Vue d’ensemble
Self monitoring

Taille de la base
Self monitoring: DB size

Conseiller de configuration de la base
Self monitoring: DB advisor