Pass agent and cluster names to discovery

This commit is contained in:
James Campbell 2024-06-29 12:59:45 -04:00
parent 7bad418850
commit 000875f5aa
5 changed files with 55 additions and 48 deletions

View File

@ -1 +1 @@
UserParameter=pgmon[*],/usr/bin/pgmon -s "/run/pgmon/$1.socket" "$2,$3,$4,$5,$6,$7,$8,$9" UserParameter=pgmon[*],/usr/bin/pgmon -s "/run/pgmon/$1.socket" "$1,$2,$3,$4,$5,$6,$7,$8,$9"

View File

@ -1,6 +1,6 @@
# Discovery metrics # Discovery metrics
metric=discover_dbs:set::SELECT datname FROM pg_database metric=discover_dbs:set::SELECT datname, $1 AS agent, $2 AS cluster FROM pg_database
metric=discover_rep:set::SELECT client_addr || '_' || regexp_replace(application_name, '[ ,]', '_', 'g') AS repid, client_addr, state FROM pg_stat_replication metric=discover_rep:set::SELECT client_addr || '_' || regexp_replace(application_name, '[ ,]', '_', 'g') AS repid, client_addr, state, $1 AS agent, $2 AS cluster FROM pg_stat_replication
# Cluster-wide metrics # Cluster-wide metrics
metric=version:value::SHOW server_version_num metric=version:value::SHOW server_version_num

View File

@ -1109,14 +1109,15 @@ class Server:
try: try:
# Split the key into a cluster name, metric name, and list of # Split the key into a cluster name, metric name, and list of
# metric arguments # metric arguments
parts = key.split(',', 2) parts = key.split(',', 3)
cluster_name = parts[0] agent_name = parts[0]
metric_name = parts[1] cluster_name = parts[1]
metric_name = parts[2]
# Parse any metric arguments into a dictionary # Parse any metric arguments into a dictionary
args_dict = {} args_dict = {'agent': agent_name, 'cluster': cluster_name}
if len(parts) > 2: if len(parts) > 3:
for arg in parts[2].split(','): for arg in parts[3].split(','):
if arg != '': if arg != '':
(k, v) = arg.split('=', 1) (k, v) = arg.split('=', 1)
args_dict[k] = v args_dict[k] = v
@ -1231,10 +1232,16 @@ class Worker(threading.Thread):
except KeyError: except KeyError:
dbname = None dbname = None
# Get any positional query args
try:
pos_args = req.args['pos'].split(':')
except KeyError:
pos_args = []
# Query the database # Query the database
try: try:
db = DB(self.config, req.cluster_name, dbname) db = DB(self.config, req.cluster_name, dbname)
res = db.query(mv.get_sql(req.args)) res = db.query(mv.get_sql(req.args), pos_args)
db.close() db.close()
except Exception as e: except Exception as e:
# Handle database errors # Handle database errors

View File

@ -13,14 +13,14 @@ zabbix_export:
items: items:
- uuid: 818721b38324495a949cfe8c10a00eec - uuid: 818721b38324495a949cfe8c10a00eec
name: 'Max Frozen XID Age' name: 'Max Frozen XID Age'
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},max_frozen_age]' key: 'pgmon[{#AGENT},{#CLUSTER},max_frozen_age]'
description: 'Maximum age of any frozen XID in any database' description: 'Maximum age of any frozen XID in any database'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
- uuid: e73d02840f4043288f5fe5cc8b7c997b - uuid: e73d02840f4043288f5fe5cc8b7c997b
name: 'PostgreSQL version' name: 'PostgreSQL version'
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},version]' key: 'pgmon[{#AGENT},{#CLUSTER},version]'
delay: 1h delay: 1h
description: 'PostgreSQL Server version number' description: 'PostgreSQL Server version number'
tags: tags:
@ -29,12 +29,12 @@ zabbix_export:
discovery_rules: discovery_rules:
- uuid: 35222acc25d34e008edd88f6b6ff7ad7 - uuid: 35222acc25d34e008edd88f6b6ff7ad7
name: 'Discover Databases' name: 'Discover Databases'
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_dbs]' key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_dbs,pos={$AGDNT_NAME}:{$CLUSTER}]'
delay: 10m delay: 10m
item_prototypes: item_prototypes:
- uuid: 4bd8ecf7677a4eed97409ed86d8d0e64 - uuid: 4bd8ecf7677a4eed97409ed86d8d0e64
name: 'Database Stats for {#DBNAME}' name: 'Database Stats for {#DBNAME}'
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
history: '0' history: '0'
trends: '0' trends: '0'
value_type: TEXT value_type: TEXT
@ -57,7 +57,7 @@ zabbix_export:
parameters: parameters:
- '0.001' - '0.001'
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -72,7 +72,7 @@ zabbix_export:
parameters: parameters:
- $.numbackends - $.numbackends
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -87,7 +87,7 @@ zabbix_export:
parameters: parameters:
- $.blks_hit - $.blks_hit
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -102,7 +102,7 @@ zabbix_export:
parameters: parameters:
- $.blks_read - $.blks_read
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -122,7 +122,7 @@ zabbix_export:
parameters: parameters:
- '0.001' - '0.001'
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -142,7 +142,7 @@ zabbix_export:
parameters: parameters:
- '0.001' - '0.001'
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -162,7 +162,7 @@ zabbix_export:
error_handler: CUSTOM_VALUE error_handler: CUSTOM_VALUE
error_handler_params: '0' error_handler_params: '0'
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -177,7 +177,7 @@ zabbix_export:
parameters: parameters:
- $.conflicts - $.conflicts
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -192,7 +192,7 @@ zabbix_export:
parameters: parameters:
- $.deadlocks - $.deadlocks
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -212,7 +212,7 @@ zabbix_export:
parameters: parameters:
- '0.001' - '0.001'
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -228,7 +228,7 @@ zabbix_export:
parameters: parameters:
- $.sessions - $.sessions
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -244,7 +244,7 @@ zabbix_export:
parameters: parameters:
- $.sessions_abandoned - $.sessions_abandoned
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -260,7 +260,7 @@ zabbix_export:
parameters: parameters:
- $.sessions_fatal - $.sessions_fatal
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -276,7 +276,7 @@ zabbix_export:
parameters: parameters:
- $.sessions_killed - $.sessions_killed
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -292,7 +292,7 @@ zabbix_export:
parameters: parameters:
- $.temp_bytes - $.temp_bytes
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -307,7 +307,7 @@ zabbix_export:
parameters: parameters:
- $.temp_files - $.temp_files
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -322,7 +322,7 @@ zabbix_export:
parameters: parameters:
- $.tup_deleted - $.tup_deleted
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -337,7 +337,7 @@ zabbix_export:
parameters: parameters:
- $.tup_fetched - $.tup_fetched
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -352,7 +352,7 @@ zabbix_export:
parameters: parameters:
- $.tup_inserted - $.tup_inserted
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -367,7 +367,7 @@ zabbix_export:
parameters: parameters:
- $.tup_returned - $.tup_returned
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -382,7 +382,7 @@ zabbix_export:
parameters: parameters:
- $.tup_updated - $.tup_updated
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -397,7 +397,7 @@ zabbix_export:
parameters: parameters:
- $.xact_commit - $.xact_commit
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -412,7 +412,7 @@ zabbix_export:
parameters: parameters:
- $.xact_rollback - $.xact_rollback
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -473,12 +473,12 @@ zabbix_export:
path: $.datname path: $.datname
- uuid: fd2db56cbc4d4ad38595d51a8f5c1d1b - uuid: fd2db56cbc4d4ad38595d51a8f5c1d1b
name: 'Discover Replication' name: 'Discover Replication'
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_rep]' key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_rep,pos={$AGENT_NAME}:{$CLUSTER}]'
delay: 10m delay: 10m
item_prototypes: item_prototypes:
- uuid: 127c3e28248e4b2bb0937e5ea34cc847 - uuid: 127c3e28248e4b2bb0937e5ea34cc847
name: 'Replication Stats for {#REPID}' name: 'Replication Stats for {#REPID}'
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
history: '0' history: '0'
trends: '0' trends: '0'
value_type: TEXT value_type: TEXT
@ -494,7 +494,7 @@ zabbix_export:
parameters: parameters:
- $.flush_lag - $.flush_lag
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -513,7 +513,7 @@ zabbix_export:
parameters: parameters:
- $.flush_lsn - $.flush_lsn
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -531,7 +531,7 @@ zabbix_export:
parameters: parameters:
- $.replay_lag - $.replay_lag
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -550,7 +550,7 @@ zabbix_export:
parameters: parameters:
- $.replay_lsn - $.replay_lsn
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -569,7 +569,7 @@ zabbix_export:
parameters: parameters:
- $.sent_lsn - $.sent_lsn
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -594,7 +594,7 @@ zabbix_export:
parameters: parameters:
- $.state - $.state
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -612,7 +612,7 @@ zabbix_export:
parameters: parameters:
- $.write_lag - $.write_lag
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL
@ -631,7 +631,7 @@ zabbix_export:
parameters: parameters:
- $.write_lsn - $.write_lsn
master_item: master_item:
key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]'
tags: tags:
- tag: Application - tag: Application
value: PostgreSQL value: PostgreSQL

View File

@ -1 +1 @@
UserParameter=pgmon[*],/usr/local/bin/pgmon.py -c /etc/pgmon/$1.cfg "$2,$3,$4,$5,$6,$7,$8,$9" UserParameter=pgmon[*],/usr/local/bin/pgmon.py -c /etc/pgmon/$1.cfg "$1,$2,$3,$4,$5,$6,$7,$8,$9"