Add more retrics

This commit is contained in:
James Campbell 2024-05-18 23:04:22 -04:00
parent 1e72d34f5f
commit 7c3fe0ba40
Signed by: james
GPG Key ID: 2287C33A40DC906A
3 changed files with 17 additions and 8 deletions

13
pgmon-metrics.cfg Normal file
View File

@ -0,0 +1,13 @@
# Discovery metrics
metric=discover_dbs:set::SELECT datname FROM pg_database
metric=discover_rep:set::SELECT client_addr || '_' || regexp_replace(application_name, '[ ,]', '_', 'g') AS repid, client_addr, state FROM pg_stat_replication
# Cluster-wide metrics
metric=version:value::SHOW server_version_num
metric=max_frozen_age:value::SELECT max(age(datfrozenxid)) FROM pg_database
# Per-database metrics
metric=db_stats:row::SELECT * FROM pg_stat_database WHERE datname = '{datname}'
# Per-replication metrics
metric=rep_stats:row::SELECT * FROM pg_stat_database WHERE client_addr || '_' || regexp_replace(application_name, '[ ,]', '_', 'g') = '{repid}'

View File

@ -52,6 +52,7 @@
host=/var/run/postgresql host=/var/run/postgresql
#port=5432 #port=5432
#user=postgres #user=postgres
user=zbx_monitor
#password=None #password=None
# Default database to connect to when none is specified for a metric # Default database to connect to when none is specified for a metric
@ -64,9 +65,4 @@ host=/var/run/postgresql
# Metrics # Metrics
#metrics={} #metrics={}
include=/etc/zabbix/pgmon-metrics.cfg
metric=max_frozen_age:value::SELECT max(age(datfrozenxid)) FROM pg_database
metric=db_stats:row::SELECT * FROM pg_stat_database WHERE datname='{datname}'
metric=discover_dbs:set::SELECT datname FROM pg_database

View File

@ -181,7 +181,7 @@ class Config:
raise InvalidConfigError("{}: {}", config_file, line) raise InvalidConfigError("{}: {}", config_file, line)
if key == 'include': if key == 'include':
self.read_file(value, read_metric) self.read_file(value, read_metrics)
elif key == 'pid_file': elif key == 'pid_file':
self.pid_file = value self.pid_file = value
elif key == 'ipc_socket': elif key == 'ipc_socket':
@ -676,7 +676,7 @@ class Worker(threading.Thread):
req.set_result(json.dumps(res[0])) req.set_result(json.dumps(res[0]))
elif metric.type == 'column': elif metric.type == 'column':
req.set_result(json.dumps([list(r.values())[0] for r in res])) req.set_result(json.dumps([list(r.values())[0] for r in res]))
elif metric_type == 'set': elif metric.type == 'set':
req.set_result(json.dumps(res)) req.set_result(json.dumps(res))
try: try: