diff --git a/pgmon.cfg b/pgmon.cfg index ca4306b..33e49d7 100644 --- a/pgmon.cfg +++ b/pgmon.cfg @@ -3,7 +3,8 @@ ## # Where to write/find the agent PID -#pid_file=/tmp/pgmon.pid +#pid_file=/tmt/pgmon.pid +pid_file=/run/pgmon/pgmon.pid ## # Agent communication settings @@ -11,6 +12,7 @@ # IPC socket #ipc_socket=/tmp/pgmon.sock +ipc_socket=/run/pgmon/pgmon.sock # IPC communication timeout (s) #ipc_timeout=10 diff --git a/pgmon.py b/pgmon.py index d960d3c..f378ea0 100755 --- a/pgmon.py +++ b/pgmon.py @@ -733,7 +733,7 @@ class IPC: self.mode = mode # Set up the connection - self.reconnect() + self.initialize() def initialize(self): """ @@ -1227,12 +1227,6 @@ class Worker(threading.Thread): elif metric.type == 'set': req.set_result(json.dumps(res)) - # Close the database connection - try: - db.close() - except Exception as e: - logger.debug("Failed to close database connection: {}".format(e)) - class Responder(threading.Thread): """ @@ -1305,6 +1299,8 @@ def main(): # Signal the server to reload try: os.kill(pid, signal.SIGHUP) + except: + sys.exit("Failed to signal server: {}".format(e)) else: # Start running in agent mode Agent.run(args.config, args.key) diff --git a/pgmon_templates.yaml b/pgmon_templates.yaml index 63c9ac4..3591272 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[max_frozen_age]' + key: 'pgmon[$(AGENT_NAME},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[version]' + key: 'pgmon[{$AGENT_NAME},version]' delay: 1h description: 'PostgreSQL Server version number' tags: @@ -29,12 +29,12 @@ zabbix_export: discovery_rules: - uuid: 35222acc25d34e008edd88f6b6ff7ad7 name: 'Discover Databases' - key: 'pgmon[discover_dbs]' + key: 'pgmon[$(AGENT_NAME},discover_dbs]' delay: 10m item_prototypes: - uuid: 4bd8ecf7677a4eed97409ed86d8d0e64 name: 'Database Stats for {#DBNAME}' - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' history: '0' trends: '0' value_type: TEXT @@ -57,7 +57,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -72,7 +72,7 @@ zabbix_export: parameters: - $.numbackends master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -87,7 +87,7 @@ zabbix_export: parameters: - $.blks_hit master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -102,7 +102,7 @@ zabbix_export: parameters: - $.blks_read master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -122,7 +122,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -142,7 +142,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},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[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -177,7 +177,7 @@ zabbix_export: parameters: - $.conflicts master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -192,7 +192,7 @@ zabbix_export: parameters: - $.deadlocks master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -212,7 +212,7 @@ zabbix_export: parameters: - '0.001' master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -228,7 +228,7 @@ zabbix_export: parameters: - $.sessions master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -244,7 +244,7 @@ zabbix_export: parameters: - $.sessions_abandoned master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -260,7 +260,7 @@ zabbix_export: parameters: - $.sessions_fatal master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -276,7 +276,7 @@ zabbix_export: parameters: - $.sessions_killed master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -292,7 +292,7 @@ zabbix_export: parameters: - $.temp_bytes master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -307,7 +307,7 @@ zabbix_export: parameters: - $.temp_files master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -322,7 +322,7 @@ zabbix_export: parameters: - $.tup_deleted master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -337,7 +337,7 @@ zabbix_export: parameters: - $.tup_fetched master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -352,7 +352,7 @@ zabbix_export: parameters: - $.tup_inserted master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -367,7 +367,7 @@ zabbix_export: parameters: - $.tup_returned master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -382,7 +382,7 @@ zabbix_export: parameters: - $.tup_updated master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -397,7 +397,7 @@ zabbix_export: parameters: - $.xact_commit master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -412,7 +412,7 @@ zabbix_export: parameters: - $.xact_rollback master_item: - key: 'pgmon[db_stats,datname={#DBNAME}]' + key: 'pgmon[$(AGENT_NAME},db_stats,datname={#DBNAME}]' tags: - tag: Application value: PostgreSQL @@ -473,12 +473,12 @@ zabbix_export: path: $.datname - uuid: fd2db56cbc4d4ad38595d51a8f5c1d1b name: 'Discover Replication' - key: 'pgmon[discover_rep]' + key: 'pgmon[$(AGENT_NAME},discover_rep]' delay: 10m item_prototypes: - uuid: 127c3e28248e4b2bb0937e5ea34cc847 name: 'Replication Stats for {#REPID}' - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' history: '0' trends: '0' value_type: TEXT @@ -494,7 +494,7 @@ zabbix_export: parameters: - $.flush_lag master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -513,7 +513,7 @@ zabbix_export: parameters: - $.flush_lsn master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -531,7 +531,7 @@ zabbix_export: parameters: - $.replay_lag master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -550,7 +550,7 @@ zabbix_export: parameters: - $.replay_lsn master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -569,7 +569,7 @@ zabbix_export: parameters: - $.sent_lsn master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -594,7 +594,7 @@ zabbix_export: parameters: - $.state master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -612,7 +612,7 @@ zabbix_export: parameters: - $.write_lag master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -631,7 +631,7 @@ zabbix_export: parameters: - $.write_lsn master_item: - key: 'pgmon[rep_stats,repid={#REPID}]' + key: 'pgmon[$(AGENT_NAME},rep_stats,repid={#REPID}]' tags: - tag: Application value: PostgreSQL @@ -644,3 +644,7 @@ zabbix_export: path: $.repid - lld_macro: '{#STATE}' path: $.state + macros: + - macro: '{$AGENT_NAME}' + value: pgmon + description: 'The name of the pgmon instance to use' diff --git a/pgmon_userparameter.conf b/pgmon_userparameter.conf index fbfb572..296c4af 100644 --- a/pgmon_userparameter.conf +++ b/pgmon_userparameter.conf @@ -1 +1 @@ -UserParameter=pgmon[*],/usr/local/bin/pgmon.py -c /etc/zabbix/pgmon.cfg "$1,$2,$3,$4,$5,$6,$7,$8,$9" +UserParameter=pgmon[*],/usr/local/bin/pgmon.py -c /etc/pgmon/$1.cfg "$2,$3,$4,$5,$6,$7,$8,$9"