From 000875f5aacdf1df2b54b88f251d40636318d279 Mon Sep 17 00:00:00 2001 From: James Campbell Date: Sat, 29 Jun 2024 12:59:45 -0400 Subject: [PATCH] Pass agent and cluster names to discovery --- gentoo/files/pgmon_userparameter.conf | 2 +- pgmon-metrics.cfg | 4 +- pgmon.py | 21 +++++--- pgmon_templates.yaml | 74 +++++++++++++-------------- pgmon_userparameter.conf | 2 +- 5 files changed, 55 insertions(+), 48 deletions(-) diff --git a/gentoo/files/pgmon_userparameter.conf b/gentoo/files/pgmon_userparameter.conf index 2f89cf6..1939d40 100644 --- a/gentoo/files/pgmon_userparameter.conf +++ b/gentoo/files/pgmon_userparameter.conf @@ -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" diff --git a/pgmon-metrics.cfg b/pgmon-metrics.cfg index 8c73b1c..c919530 100644 --- a/pgmon-metrics.cfg +++ b/pgmon-metrics.cfg @@ -1,6 +1,6 @@ # 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 +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, $1 AS agent, $2 AS cluster FROM pg_stat_replication # Cluster-wide metrics metric=version:value::SHOW server_version_num diff --git a/pgmon.py b/pgmon.py index 62429a5..666b432 100755 --- a/pgmon.py +++ b/pgmon.py @@ -1109,14 +1109,15 @@ class Server: try: # Split the key into a cluster name, metric name, and list of # metric arguments - parts = key.split(',', 2) - cluster_name = parts[0] - metric_name = parts[1] + parts = key.split(',', 3) + agent_name = parts[0] + cluster_name = parts[1] + metric_name = parts[2] # Parse any metric arguments into a dictionary - args_dict = {} - if len(parts) > 2: - for arg in parts[2].split(','): + args_dict = {'agent': agent_name, 'cluster': cluster_name} + if len(parts) > 3: + for arg in parts[3].split(','): if arg != '': (k, v) = arg.split('=', 1) args_dict[k] = v @@ -1231,10 +1232,16 @@ class Worker(threading.Thread): except KeyError: dbname = None + # Get any positional query args + try: + pos_args = req.args['pos'].split(':') + except KeyError: + pos_args = [] + # Query the database try: 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() except Exception as e: # Handle database errors diff --git a/pgmon_templates.yaml b/pgmon_templates.yaml index 819be5e..78eaf4c 100644 --- a/pgmon_templates.yaml +++ b/pgmon_templates.yaml @@ -13,14 +13,14 @@ zabbix_export: items: - uuid: 818721b38324495a949cfe8c10a00eec 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' tags: - tag: Application value: PostgreSQL - uuid: e73d02840f4043288f5fe5cc8b7c997b name: 'PostgreSQL version' - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},version]' + key: 'pgmon[{#AGENT},{#CLUSTER},version]' delay: 1h description: 'PostgreSQL Server version number' tags: @@ -29,12 +29,12 @@ zabbix_export: discovery_rules: - uuid: 35222acc25d34e008edd88f6b6ff7ad7 name: 'Discover Databases' - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_dbs]' + key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_dbs,pos={$AGDNT_NAME}:{$CLUSTER}]' delay: 10m item_prototypes: - uuid: 4bd8ecf7677a4eed97409ed86d8d0e64 name: 'Database Stats for {#DBNAME}' - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' history: '0' trends: '0' value_type: TEXT @@ -57,7 +57,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -72,7 +72,7 @@ zabbix_export: parameters: - $.numbackends master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -87,7 +87,7 @@ zabbix_export: parameters: - $.blks_hit master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -102,7 +102,7 @@ zabbix_export: parameters: - $.blks_read master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -122,7 +122,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -142,7 +142,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -162,7 +162,7 @@ zabbix_export: error_handler: CUSTOM_VALUE error_handler_params: '0' master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -177,7 +177,7 @@ zabbix_export: parameters: - $.conflicts master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -192,7 +192,7 @@ zabbix_export: parameters: - $.deadlocks master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -212,7 +212,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -228,7 +228,7 @@ zabbix_export: parameters: - $.sessions master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -244,7 +244,7 @@ zabbix_export: parameters: - $.sessions_abandoned master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -260,7 +260,7 @@ zabbix_export: parameters: - $.sessions_fatal master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -276,7 +276,7 @@ zabbix_export: parameters: - $.sessions_killed master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -292,7 +292,7 @@ zabbix_export: parameters: - $.temp_bytes master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -307,7 +307,7 @@ zabbix_export: parameters: - $.temp_files master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -322,7 +322,7 @@ zabbix_export: parameters: - $.tup_deleted master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -337,7 +337,7 @@ zabbix_export: parameters: - $.tup_fetched master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -352,7 +352,7 @@ zabbix_export: parameters: - $.tup_inserted master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -367,7 +367,7 @@ zabbix_export: parameters: - $.tup_returned master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -382,7 +382,7 @@ zabbix_export: parameters: - $.tup_updated master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -397,7 +397,7 @@ zabbix_export: parameters: - $.xact_commit master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -412,7 +412,7 @@ zabbix_export: parameters: - $.xact_rollback master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},db_stats,datname={#DBNAME}]' + key: 'pgmon[{#AGENT},{#CLUSTER},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -473,12 +473,12 @@ zabbix_export: path: $.datname - uuid: fd2db56cbc4d4ad38595d51a8f5c1d1b name: 'Discover Replication' - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_rep]' + key: 'pgmon[{$AGENT_NAME},{$CLUSTER},discover_rep,pos={$AGENT_NAME}:{$CLUSTER}]' delay: 10m item_prototypes: - uuid: 127c3e28248e4b2bb0937e5ea34cc847 name: 'Replication Stats for {#REPID}' - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' history: '0' trends: '0' value_type: TEXT @@ -494,7 +494,7 @@ zabbix_export: parameters: - $.flush_lag master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -513,7 +513,7 @@ zabbix_export: parameters: - $.flush_lsn master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -531,7 +531,7 @@ zabbix_export: parameters: - $.replay_lag master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -550,7 +550,7 @@ zabbix_export: parameters: - $.replay_lsn master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -569,7 +569,7 @@ zabbix_export: parameters: - $.sent_lsn master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -594,7 +594,7 @@ zabbix_export: parameters: - $.state master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -612,7 +612,7 @@ zabbix_export: parameters: - $.write_lag master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -631,7 +631,7 @@ zabbix_export: parameters: - $.write_lsn master_item: - key: 'pgmon[{$AGENT_NAME},{$CLUSTER},rep_stats,repid={#REPID}]' + key: 'pgmon[{#AGENT},{#CLUSTER},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL diff --git a/pgmon_userparameter.conf b/pgmon_userparameter.conf index 296c4af..c8f6a61 100644 --- a/pgmon_userparameter.conf +++ b/pgmon_userparameter.conf @@ -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"