Pass agent and cluster names to discovery
This commit is contained in:
parent
7bad418850
commit
000875f5aa
@ -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"
|
||||
|
||||
@ -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
|
||||
|
||||
21
pgmon.py
21
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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user