zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: 748ad4d098d447d492bb935c907f652f
      name: Templates/Databases
  templates:
    - uuid: d0ef7d659a8f4beaaabfc4b6134e737a
      template: 'PostgreSQL by Zabbix agent 2'
      name: 'PostgreSQL by Zabbix agent 2'
      description: |
        This template is designed for the deployment of PostgreSQL monitoring by Zabbix via Zabbix agent 2 and uses a loadable plugin to run SQL queries.
        
        Setup:
        
        1. Deploy Zabbix agent 2 with the PostgreSQL plugin. Starting with Zabbix versions 6.0.10 / 6.2.4 / 6.4 PostgreSQL metrics are moved to a loadable plugin and require installation of a separate package or compilation of the plugin from sources (https://www.zabbix.com/documentation/7.0/manual/extensions/plugins/build).
        
        2. Create the PostgreSQL user for monitoring (`<password>` at your discretion) and inherit permissions from the default role `pg_monitor`:
        CREATE USER zbx_monitor WITH PASSWORD '<PASSWORD>' INHERIT;
        GRANT pg_monitor TO zbx_monitor;
        
        3. Edit the `pg_hba.conf` configuration file to allow connections for the user `zbx_monitor`. You can check the PostgreSQL documentation for examples (https://www.postgresql.org/docs/current/auth-pg-hba-conf.html).
        
        4. Set the connection string for the PostgreSQL instance in the `{$PG.CONNSTRING}` macro as URI, such as `<protocol(host:port)>`, or specify the named session - `<sessionname>`.
        
        Note: if you want to use SSL/TLS encryption to protect communications with the remote PostgreSQL instance, a named session must be used. In that case, the instance URI should be specified in the `Plugins.PostgreSQL.Sessions.*.Uri` parameter in the PostgreSQL plugin configuration files alongside all the encryption parameters (type, cerfiticate/key filepaths if needed etc.).
        
        You can check the PostgreSQL plugin documentation (https://git.zabbix.com/projects/AP/repos/postgresql/browse?at=refs%2Fheads%2Frelease%2F7.0) for details about agent plugin parameters and named sessions.
        
        Also, it is assumed that you set up the PostgreSQL instance to work in the desired encryption mode. Check the PostgreSQL documentation (https://www.postgresql.org/docs/current/ssl-tcp.html) for details.
        
        Note that plugin TLS certificate validation relies on checking the Subject Alternative Names (SAN) instead of the Common Name (CN), check the cryptography package documentation (https://pkg.go.dev/crypto/x509) for details.
        
        For example, to enable required encryption in transport mode without identity checks you could create the file `/etc/zabbix/zabbix_agent2.d/postgresql_myconn.conf` with the following configuration for the named session `myconn` (replace `<instanceip>` with the address of the PostgreSQL instance):
        Plugins.PostgreSQL.Sessions.myconn.Uri=tcp://<instanceip>:5432
        Plugins.PostgreSQL.Sessions.myconn.TLSConnect=required
        
        Then set the `{$PG.CONNSTRING}` macro to `myconn` to use this named session.
        
        5. Set the password that you specified in step 2 in the macro `{$PG.PASSWORD}`.
        
        You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384190-%C2%A0discussion-thread-for-official-zabbix-template-db-postgresql
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Databases
      items:
        - uuid: 04b1c83463f247b0a42f17c5d0a9ce14
          name: 'Archive: Count of archived files'
          type: DEPENDENT
          key: pgsql.archive.count_archived_files
          value_type: FLOAT
          description: 'Count of archived files.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.archived_count
          master_item:
            key: 'pgsql.archive["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: archive
        - uuid: 729208d50ef64e50b0bb342899e211c2
          name: 'Archive: Count of files in archive_status need to archive'
          type: DEPENDENT
          key: pgsql.archive.count_files_to_archive
          value_type: FLOAT
          description: 'Count of files to archive.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.count_files
          master_item:
            key: 'pgsql.archive["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: archive
        - uuid: b60523c62afc4813aeb64cf9598fb7bd
          name: 'Archive: Count of failed attempts to archive files'
          type: DEPENDENT
          key: pgsql.archive.failed_trying_to_archive
          value_type: FLOAT
          description: 'Count of failed attempts to archive files.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.failed_count
          master_item:
            key: 'pgsql.archive["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: archive
        - uuid: 285f434f79864d24a4e66d5a49c539e9
          name: 'Archive: Size of files need to archive'
          type: DEPENDENT
          key: pgsql.archive.size_files_to_archive
          value_type: FLOAT
          description: 'Size of files to archive.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.size_files
          master_item:
            key: 'pgsql.archive["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: archive
        - uuid: e9f4284fd3a1459e9c519dbdd8ee3425
          name: 'Get archive'
          key: 'pgsql.archive["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Collect archive status metrics.'
          tags:
            - tag: component
              value: raw
        - uuid: d9169b4b31554063b9d01d0d27b4beee
          name: 'Count of autovacuum workers'
          key: 'pgsql.autovacuum.count["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          value_type: FLOAT
          description: 'Number of autovacuum workers.'
          tags:
            - tag: component
              value: system
        - uuid: c49f777ae0db48879bc946989bfc36f6
          name: 'Bgwriter: Buffers allocated per second'
          type: DEPENDENT
          key: pgsql.bgwriter.buffers_alloc.rate
          value_type: FLOAT
          description: 'Number of buffers allocated per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.buffers_alloc
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 1624e89567824e0493492a3dcc979788
          name: 'Bgwriter: Buffers written directly by a backend per second'
          type: DEPENDENT
          key: pgsql.bgwriter.buffers_backend.rate
          value_type: FLOAT
          description: 'Number of buffers written directly by a backend per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.buffers_backend
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 6e5990d8a0854efd83b3e6a57aa2c2f9
          name: 'Bgwriter: Times a backend executed its own fsync per second'
          type: DEPENDENT
          key: pgsql.bgwriter.buffers_backend_fsync.rate
          value_type: FLOAT
          description: 'Number of times a backend had to execute its own fsync call per second (normally the background writer handles those even when the backend does its own write).'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.buffers_backend_fsync
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 3bf0496d313f4dfea67c95010be54372
          name: 'Checkpoint: Buffers written during checkpoints per second'
          type: DEPENDENT
          key: pgsql.bgwriter.buffers_checkpoint.rate
          value_type: FLOAT
          description: 'Number of buffers written during checkpoints per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.buffers_checkpoint
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 65f4aeedbc7d40ed9a14e0dbd8024c4b
          name: 'Checkpoint: Buffers written by the background writer per second'
          type: DEPENDENT
          key: pgsql.bgwriter.buffers_clean.rate
          value_type: FLOAT
          description: 'Number of buffers written by the background writer per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.buffers_clean
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 23fcb5ee8c19436b827001114961eb16
          name: 'Checkpoint: Requested per second'
          type: DEPENDENT
          key: pgsql.bgwriter.checkpoints_req.rate
          value_type: FLOAT
          description: 'Number of requested checkpoints that have been performed per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.checkpoints_req
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 9c578a8e072940728cc00d94f52cec8d
          name: 'Checkpoint: Scheduled per second'
          type: DEPENDENT
          key: pgsql.bgwriter.checkpoints_timed.rate
          value_type: FLOAT
          description: 'Number of scheduled checkpoints that have been performed per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.checkpoints_timed
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: b94507037a584b9391f610e59dd34e6c
          name: 'Checkpoint: Checkpoint sync time per second'
          type: DEPENDENT
          key: pgsql.bgwriter.checkpoint_sync_time.rate
          value_type: FLOAT
          units: s
          description: 'Total amount of time per second that has been spent in the portion of checkpoint processing where files are synchronized to disk.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.checkpoint_sync_time
            - type: MULTIPLIER
              parameters:
                - '0.001'
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 26839587c46043caa2991e973962b954
          name: 'Checkpoint: Checkpoint write time per second'
          type: DEPENDENT
          key: pgsql.bgwriter.checkpoint_write_time.rate
          value_type: FLOAT
          units: s
          description: 'Total amount of time per second that has been spent in the portion of checkpoint processing where files are written to disk.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.checkpoint_write_time
            - type: MULTIPLIER
              parameters:
                - '0.001'
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: b83939ecfb094a7e9eb42cd9a7e2695c
          name: 'Bgwriter: Number of bgwriter cleaning scan stopped per second'
          type: DEPENDENT
          key: pgsql.bgwriter.maxwritten_clean.rate
          value_type: FLOAT
          description: 'Number of times the background writer stopped a cleaning scan because it had written too many buffers per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.maxwritten_clean
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: bgwriter
        - uuid: 6020e17c25104cbfba182e9cddfe6336
          name: 'Get bgwriter'
          key: 'pgsql.bgwriter["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: |
            Collect all metrics from pg_stat_bgwriter:
            https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-BGWRITER-VIEW
          tags:
            - tag: component
              value: raw
        - uuid: b98d2328694f44598f2177b3f93d4b90
          name: 'Cache hit ratio, %'
          type: CALCULATED
          key: pgsql.cache.hit
          value_type: FLOAT
          units: '%'
          params: 'last(//pgsql.dbstat.sum.blks_hit.rate) * 100 / (last(//pgsql.dbstat.sum.blks_hit.rate) + last(//pgsql.dbstat.sum.blks_read.rate))'
          description: 'Cache hit ratio.'
          tags:
            - tag: component
              value: cache
        - uuid: 2ea55460f0d34063ae4ab65b74ec852c
          name: 'Connections sum: Active'
          type: DEPENDENT
          key: pgsql.connections.sum.active
          description: 'Total number of connections executing a query.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.active
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: 69f14028e98b48d489fbd7345c2213dd
          name: 'Connections sum: Disabled'
          type: DEPENDENT
          key: pgsql.connections.sum.disabled
          description: 'Total number of disabled connections.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.disabled
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: 62a2401041724b4888bf058035dc6a0c
          name: 'Connections sum: Fastpath function call'
          type: DEPENDENT
          key: pgsql.connections.sum.fastpath_function_call
          description: 'Total number of connections executing a fast-path function.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.fastpath_function_call
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: fc3b357cc8a24c4aad60784d1bfb7e18
          name: 'Connections sum: Idle'
          type: DEPENDENT
          key: pgsql.connections.sum.idle
          description: 'Total number of connections waiting for a new client command.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.idle
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: b900a8123dfa48e0ac8fd4b92ae8678d
          name: 'Connections sum: Idle in transaction'
          type: DEPENDENT
          key: pgsql.connections.sum.idle_in_transaction
          description: 'Total number of connections in a transaction state but not executing a query.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.idle_in_transaction
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: 99b0a3e14af44924b0319a0a9f6c16c7
          name: 'Connections sum: Idle in transaction (aborted)'
          type: DEPENDENT
          key: pgsql.connections.sum.idle_in_transaction_aborted
          description: 'Total number of connections in a transaction state but not executing a query, and where one of the statements in the transaction caused an error.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.idle_in_transaction_aborted
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: 194c41f88e9e44879a70033913dd41d3
          name: 'Connections sum: Prepared'
          type: DEPENDENT
          key: pgsql.connections.sum.prepared
          description: |
            Total number of prepared transactions:
            https://www.postgresql.org/docs/current/sql-prepare-transaction.html
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.prepared
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: 1ec042e5853b430d9d7982c53c3fcf14
          name: 'Connections sum: Total'
          type: DEPENDENT
          key: pgsql.connections.sum.total
          description: 'Total number of connections.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.total
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: 101149dd68994084a1cdab82c9d064f0
          name: 'Connections sum: Total, %'
          type: DEPENDENT
          key: pgsql.connections.sum.total_pct
          units: '%'
          description: 'Total number of connections, in percentage.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.total_pct
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
          triggers:
            - uuid: 1d0903401af64d93ac16761808d672ca
              expression: 'min(/PostgreSQL by Zabbix agent 2/pgsql.connections.sum.total_pct,5m) > {$PG.CONN_TOTAL_PCT.MAX.WARN}'
              name: 'Total number of connections is too high'
              event_name: 'Total number of connections is too high (over {$PG.CONN_TOTAL_PCT.MAX.WARN} in 5m)'
              priority: AVERAGE
              description: 'Total number of current connections exceeds the limit of {$PG.CONN_TOTAL_PCT.MAX.WARN}% out of the maximum number of concurrent connections to the database server (the "max_connections" setting).'
              tags:
                - tag: scope
                  value: performance
        - uuid: f2c298008b914434b96da85a985e4a54
          name: 'Connections sum: Waiting'
          type: DEPENDENT
          key: pgsql.connections.sum.waiting
          description: |
            Total number of waiting connections:
            https://www.postgresql.org/docs/current/monitoring-stats.html#WAIT-EVENT-TABLE
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.waiting
          master_item:
            key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: connections
        - uuid: e926ecd967f342bf90e9923825147d64
          name: 'Get connections sum'
          key: 'pgsql.connections["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: |
            Collect all metrics from pg_stat_activity:
            https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-ACTIVITY-VIEW
          tags:
            - tag: component
              value: raw
        - uuid: 1cab825fac8a49ba96dfbf7a696be729
          name: 'Custom queries'
          key: 'pgsql.custom.query["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}",""]'
          history: 1h
          value_type: TEXT
          status: DISABLED
          description: 'Execute custom queries from file *.sql (check for option Plugins.Postgres.CustomQueriesPath at agent configuration).'
          tags:
            - tag: component
              value: application
        - uuid: 5c6de0fe332043bfb35c999b10893e4c
          name: 'Dbstat: Hit blocks read per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.blks_hit.rate
          value_type: FLOAT
          description: 'Number of times per second disk blocks were found already in the buffer cache'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.blks_hit
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: cache
        - uuid: 4dc3f2c23dfd4dfebe024a5c2d4409ae
          name: 'Dbstat: Disk blocks read per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.blks_read.rate
          value_type: FLOAT
          description: 'Number of disk blocks read per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.blks_read
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: storage
        - uuid: 619211cc2afa4a159f36abf1a17d5476
          name: 'Dbstat: Blocks read time'
          type: DEPENDENT
          key: pgsql.dbstat.sum.blk_read_time
          value_type: FLOAT
          units: s
          description: 'Time spent reading data file blocks by backends.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.blk_read_time
            - type: MULTIPLIER
              parameters:
                - '0.001'
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: storage
        - uuid: fba3b51d644c4c16ac71b3eda1be1701
          name: 'Dbstat: Blocks write time'
          type: DEPENDENT
          key: pgsql.dbstat.sum.blk_write_time
          value_type: FLOAT
          units: s
          description: 'Time spent writing data file blocks by backends.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.blk_write_time
            - type: MULTIPLIER
              parameters:
                - '0.001'
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: storage
        - uuid: 1b98b9c95b32424baa68c354496ed2de
          name: 'Dbstat: Checksum failures per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.checksum_failures.rate
          value_type: FLOAT
          description: 'Number of data page checksum failures per second detected (or on a shared object), or NULL if data checksums are not enabled. This metric is available since PostgreSQL 12.'
          valuemap:
            name: 'PostgreSQL checksum failure status'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.checksum_failures
            - type: MATCHES_REGEX
              parameters:
                - '^\d*$'
              error_handler: CUSTOM_VALUE
              error_handler_params: '-2'
            - type: CHANGE_PER_SECOND
              error_handler: CUSTOM_VALUE
              error_handler_params: '-1'
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: system
          triggers:
            - uuid: 1d67b13f47134a538708c2a14dcfa6b1
              expression: 'last(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.sum.checksum_failures.rate)>0'
              name: 'Dbstat: Checksum failures detected'
              priority: AVERAGE
              description: |
                Data page checksum failures were detected on that DB instance:
                https://www.postgresql.org/docs/current/checksums.html
              tags:
                - tag: scope
                  value: availability
        - uuid: 0106dfc55ace4dacaff00ce2c98de2ea
          name: 'Dbstat: Conflicts per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.conflicts.rate
          value_type: FLOAT
          description: 'Number of queries canceled per second due to conflicts with recovery (conflicts occur only on standby servers; see pg_stat_database_conflicts for details).'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.conflicts
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: queries
        - uuid: e5d3838e5cf84be9ae83cacf22dc99af
          name: 'Dbstat: Deadlocks per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.deadlocks.rate
          value_type: FLOAT
          description: 'Number of deadlocks detected per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.deadlocks
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: deadlocks
        - uuid: c61f60e6f7d24ffe99db480f6bbd9613
          name: 'Dbstat: Backends connected'
          type: DEPENDENT
          key: pgsql.dbstat.sum.numbackends
          description: 'Number of connected backends.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.numbackends
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: backends
        - uuid: 96cb6b388b2c480ead1568293dd81e70
          name: 'Dbstat: Number temp bytes per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.temp_bytes.rate
          value_type: FLOAT
          units: b
          description: 'Total amount of data written per second to temporary files by queries.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.temp_bytes
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: storage
        - uuid: bea47c8a95074ad3997aff64fcfcf49b
          name: 'Dbstat: Number temp files per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.temp_files.rate
          value_type: FLOAT
          description: 'Number of temporary files created by queries per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.temp_files
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: storage
        - uuid: 731f4adac9d34eaaaa1f8d5080fdf6ce
          name: 'Dbstat: Rows deleted per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.tup_deleted.rate
          value_type: FLOAT
          description: 'Number of rows deleted by queries per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.tup_deleted
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: queries
        - uuid: 4eb6cc273484453bab1233de085363f5
          name: 'Dbstat: Rows fetched per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.tup_fetched.rate
          value_type: FLOAT
          description: 'Number of rows fetched by queries per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.tup_fetched
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: queries
        - uuid: ae250ffa30c94df187c2010011e794aa
          name: 'Dbstat: Rows inserted per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.tup_inserted.rate
          value_type: FLOAT
          description: 'Number of rows inserted by queries per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.tup_inserted
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: queries
        - uuid: 3253ed1c96db4a84974e62b85d80bc0f
          name: 'Dbstat: Rows returned per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.tup_returned.rate
          value_type: FLOAT
          description: 'Number of rows returned by queries per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.tup_returned
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: queries
        - uuid: 13feadafa00a4bd293fcf1a98ddf1f39
          name: 'Dbstat: Rows updated per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.tup_updated.rate
          value_type: FLOAT
          description: 'Number of rows updated by queries per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.tup_updated
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: queries
        - uuid: bc8a3b29a6684b7f8a70a54b962f0e7e
          name: 'Dbstat: Committed transactions per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.xact_commit.rate
          value_type: FLOAT
          description: 'Number of transactions that have been committed per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.xact_commit
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: transactions
        - uuid: 8aedfe3e385b447eb75b85f92301665a
          name: 'Dbstat: Roll backed transactions per second'
          type: DEPENDENT
          key: pgsql.dbstat.sum.xact_rollback.rate
          value_type: FLOAT
          description: 'Number of transactions that have been rolled back per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.xact_rollback
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: transactions
        - uuid: ddddde3084d54f55838b970f44290523
          name: 'Get dbstat sum'
          key: 'pgsql.dbstat.sum["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: |
            Collect all metrics from pg_stat_database as sums for all databases:
            https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-DATABASE-VIEW
          tags:
            - tag: component
              value: raw
        - uuid: 3be06ec14cba44d0892f3271a599c473
          name: 'Get dbstat'
          key: 'pgsql.dbstat["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: |
            Collect all metrics from pg_stat_database per database:
            https://www.postgresql.org/docs/current/monitoring-stats.html#PG-STAT-DATABASE-VIEW
          tags:
            - tag: component
              value: raw
        - uuid: 7112eeb300c14d959c79715462bf9563
          name: 'Get locks'
          key: 'pgsql.locks["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: |
            Collect all metrics from pg_locks per database:
            https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-TABLES
          tags:
            - tag: component
              value: raw
        - uuid: 0377fe6f2f8d4539b649c636ab012415
          name: 'Age of oldest xid'
          key: 'pgsql.oldest.xid["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          value_type: FLOAT
          description: 'Age of oldest xid.'
          tags:
            - tag: component
              value: transactions
          triggers:
            - uuid: 2a5c11571d9d46f093ed9081f9d51504
              expression: 'last(/PostgreSQL by Zabbix agent 2/pgsql.oldest.xid["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]) > 18000000'
              name: 'Oldest xid is too big'
              priority: AVERAGE
              tags:
                - tag: scope
                  value: availability
        - uuid: 56323e572fa443228987c62039153825
          name: Ping
          key: 'pgsql.ping["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          description: 'Used to test a connection to see if it is alive. It is set to 0 if the query is unsuccessful.'
          valuemap:
            name: 'Service state'
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1h
          tags:
            - tag: component
              value: application
            - tag: component
              value: health
          triggers:
            - uuid: 48a24a78519d47349200f0b41ceec56a
              expression: 'last(/PostgreSQL by Zabbix agent 2/pgsql.ping["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"])=0'
              name: 'Service is down'
              priority: HIGH
              description: 'Last test of a connection was unsuccessful.'
              tags:
                - tag: scope
                  value: availability
        - uuid: 01123126fcd54adc84c3bbfa227d9c0c
          name: 'Get queries'
          key: 'pgsql.queries["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}","{$PG.QUERY_ETIME.MAX.WARN}"]'
          history: '0'
          value_type: TEXT
          description: 'Collect all metrics by query execution time.'
          tags:
            - tag: component
              value: raw
        - uuid: a171db459d6144e4ad294579fb8dc56d
          name: 'Replication: Standby count'
          key: 'pgsql.replication.count["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          description: 'Number of standby servers.'
          tags:
            - tag: component
              value: replication
        - uuid: da9ce769f9444a3f9600ce64c4ab2857
          name: 'Replication: Lag in bytes'
          key: 'pgsql.replication.lag.b["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          units: B
          description: 'Replication lag with master, in bytes.'
          tags:
            - tag: component
              value: replication
        - uuid: 5a9eb8ee4a484911903688e620eb618b
          name: 'Replication: Lag in seconds'
          key: 'pgsql.replication.lag.sec["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          units: s
          description: 'Replication lag with master, in seconds.'
          tags:
            - tag: component
              value: replication
        - uuid: 4120befb754d47e9a931f868c28badb9
          name: 'Get replication'
          key: 'pgsql.replication.process["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          history: '0'
          value_type: TEXT
          description: 'Collect metrics from the pg_stat_replication, which contains information about the WAL sender process, showing statistics about replication to that sender''s connected standby server.'
          tags:
            - tag: component
              value: raw
        - uuid: 4085b836bf614f3d910818074c386845
          name: 'Replication: Recovery role'
          key: 'pgsql.replication.recovery_role["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          description: 'Replication role: 1 — recovery is still in progress (standby mode), 0 — master mode.'
          valuemap:
            name: 'PostgreSQL recovery role'
          tags:
            - tag: component
              value: replication
        - uuid: 3c83904cbad74ff7a0d10136a233e6c6
          name: 'Replication: Status'
          key: 'pgsql.replication.status["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          description: 'Replication status: 0 — streaming is down, 1 — streaming is up, 2 — master mode.'
          valuemap:
            name: 'PostgreSQL replication status'
          tags:
            - tag: component
              value: replication
        - uuid: efa946a67e5844ecb905c68a2a6b85bb
          name: Uptime
          key: 'pgsql.uptime["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          value_type: FLOAT
          units: s
          description: 'Time since the server started.'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 5fbabc5f60b74a369a13a260d25cce3c
              expression: 'last(/PostgreSQL by Zabbix agent 2/pgsql.uptime["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]) < 10m'
              name: 'Service has been restarted'
              event_name: 'Service has been restarted (uptime < 10m)'
              priority: AVERAGE
              description: 'PostgreSQL uptime is less than 10 minutes.'
              tags:
                - tag: scope
                  value: notice
        - uuid: 523528aad175455fbd1daba161365651
          name: Version
          key: 'pgsql.version["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          delay: 15m
          value_type: CHAR
          description: 'PostgreSQL version.'
          preprocessing:
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 1d
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 6b3ac2a19e114e1390e6e0793728f576
              expression: 'last(/PostgreSQL by Zabbix agent 2/pgsql.version["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"],#1)<>last(/PostgreSQL by Zabbix agent 2/pgsql.version["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"],#2) and length(last(/PostgreSQL by Zabbix agent 2/pgsql.version["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]))>0'
              name: 'Version has changed'
              event_name: 'Version has changed (new version value received: {ITEM.VALUE})'
              priority: INFO
              tags:
                - tag: scope
                  value: notice
        - uuid: 6d5aa6213cf248749cbffdea9aff694f
          name: 'WAL: Segments count'
          type: DEPENDENT
          key: pgsql.wal.count
          description: 'Number of WAL segments.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.count
          master_item:
            key: 'pgsql.wal.stat["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: wal
        - uuid: 0e58a74b8a2d47d28f596196405b22b5
          name: 'WAL: Bytes received'
          type: DEPENDENT
          key: pgsql.wal.receive
          units: B
          description: 'WAL receive, in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.receive
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.wal.stat["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: wal
        - uuid: c3d96741af454f6b9a3a49b6117c31be
          name: 'Get WAL'
          key: 'pgsql.wal.stat["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          delay: 5m
          history: '0'
          value_type: TEXT
          description: 'Collect write-ahead log (WAL) metrics.'
          tags:
            - tag: component
              value: raw
        - uuid: 95f67516be544daf9ad8a1cad2e46114
          name: 'WAL: Bytes written'
          type: DEPENDENT
          key: pgsql.wal.write
          units: B
          description: 'WAL write, in bytes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.write
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'pgsql.wal.stat["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          tags:
            - tag: component
              value: wal
      discovery_rules:
        - uuid: b1a4bfe1031a40529a7c38ac6bed3c6d
          name: 'Database discovery'
          key: 'pgsql.db.discovery["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          delay: 1h
          filter:
            evaltype: AND
            conditions:
              - macro: '{#DBNAME}'
                value: '{$PG.LLD.FILTER.DBNAME}'
          description: |
            Discovers databases (DB) in the database management system (DBMS), except:
            - templates;
            - DBs that do not allow connections.
          item_prototypes:
            - uuid: 1419ff1331734a4088349332e118ca94
              name: 'DB [{#DBNAME}]: Database age'
              key: 'pgsql.db.age["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]'
              delay: 10m
              description: 'Database age.'
              tags:
                - tag: component
                  value: application
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 4367ba7fdffd459ea2b18e1877bc74ca
              name: 'DB [{#DBNAME}]: Bloating tables'
              key: 'pgsql.db.bloating_tables["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]'
              description: 'Number of bloating tables.'
              tags:
                - tag: component
                  value: tables
                - tag: database
                  value: '{#DBNAME}'
            - uuid: b614a0909eec40bc841bf7446e842544
              name: 'DB [{#DBNAME}]: Database size'
              key: 'pgsql.db.size["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]'
              delay: 5m
              units: B
              description: 'Database size.'
              tags:
                - tag: component
                  value: storage
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 4b1b1a4374c0429cb1790e774f181512
              name: 'DB [{#DBNAME}]: Blocks hit per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.blks_hit.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of times per second disk blocks were found already in the buffer cache, so that a read was not necessary.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.blks_hit
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: cache
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 841496e662cc43cf8db7728e96fcba76
              name: 'DB [{#DBNAME}]: Disk blocks read per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.blks_read.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of disk blocks read per second in this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.blks_read
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: storage
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 0313d02ce8274bc9bcaee54d062300c8
              name: 'DB [{#DBNAME}]: Disk blocks read time per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.blk_read_time.rate["{#DBNAME}"]'
              value_type: FLOAT
              units: s
              description: 'Time spent reading data file blocks by backends per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.blk_read_time
                - type: MULTIPLIER
                  parameters:
                    - '0.001'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: storage
                - tag: database
                  value: '{#DBNAME}'
            - uuid: e746a7760d554a0e9d41ba01c3be9db5
              name: 'DB [{#DBNAME}]: Disk blocks write time'
              type: DEPENDENT
              key: 'pgsql.dbstat.blk_write_time.rate["{#DBNAME}"]'
              value_type: FLOAT
              units: s
              description: 'Time spent writing data file blocks by backends per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.blk_write_time
                - type: MULTIPLIER
                  parameters:
                    - '0.001'
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: storage
                - tag: database
                  value: '{#DBNAME}'
            - uuid: d44335162082498bbc42e29e938a4de7
              name: 'DB [{#DBNAME}]: Checksum failures'
              type: DEPENDENT
              key: 'pgsql.dbstat.checksum_failures.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Number of data page checksum failures detected in this database.'
              valuemap:
                name: 'PostgreSQL checksum failure status'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.checksum_failures
                - type: MATCHES_REGEX
                  parameters:
                    - '^\d*$'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '-2'
                - type: CHANGE_PER_SECOND
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '-1'
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: system
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 5995403b904349d296227647ca318f5b
                  expression: 'last(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.checksum_failures.rate["{#DBNAME}"])>0'
                  name: 'DB [{#DBNAME}]: Checksum failures detected'
                  priority: AVERAGE
                  description: |
                    Data page checksum failures were detected on that database:
                    https://www.postgresql.org/docs/current/checksums.html
                  tags:
                    - tag: scope
                      value: availability
            - uuid: 4eb67f16bc2948a7927ed58c9d037466
              name: 'DB [{#DBNAME}]: Detected conflicts per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.conflicts.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of queries canceled due to conflicts with recovery in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.conflicts
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 05ac4216e1a941df8880224ffd38b806
                  expression: 'min(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.conflicts.rate["{#DBNAME}"],5m) > {$PG.CONFLICTS.MAX.WARN:"{#DBNAME}"}'
                  name: 'DB [{#DBNAME}]: Too many recovery conflicts'
                  event_name: 'DB [{#DBNAME}]: Too many recovery conflicts (over {$PG.CONFLICTS.MAX.WARN:"{#DBNAME}"} in 5m)'
                  priority: AVERAGE
                  description: |
                    The primary and standby servers are in many ways loosely connected. Actions on the primary will have an effect on the standby. As a result, there is potential for negative interactions or conflicts between them.
                    https://www.postgresql.org/docs/current/hot-standby.html#HOT-STANDBY-CONFLICT
                  tags:
                    - tag: scope
                      value: performance
            - uuid: d53da0cc702f4fe381e4d13d454ec229
              name: 'DB [{#DBNAME}]: Detected deadlocks per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.deadlocks.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of detected deadlocks in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.deadlocks
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: deadlocks
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: dd948e3ec19c419e8c9a62ace8d1695f
                  expression: 'min(/PostgreSQL by Zabbix agent 2/pgsql.dbstat.deadlocks.rate["{#DBNAME}"],5m) > {$PG.DEADLOCKS.MAX.WARN:"{#DBNAME}"}'
                  name: 'DB [{#DBNAME}]: Deadlock occurred'
                  event_name: 'DB [{#DBNAME}]: Deadlock occurred (over {$PG.DEADLOCKS.MAX.WARN:"{#DBNAME}"} in 5m)'
                  priority: HIGH
                  description: 'Number of deadlocks detected per second exceeds {$PG.DEADLOCKS.MAX.WARN:"{#DBNAME}"} for 5m.'
                  tags:
                    - tag: scope
                      value: availability
            - uuid: 7ebf1570bebe4b9cb82474fe5aea0562
              name: 'DB [{#DBNAME}]: Get dbstat'
              type: DEPENDENT
              key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              history: '0'
              value_type: TEXT
              description: 'Get dbstat metrics for database "{#DBNAME}".'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[''{#DBNAME}'']'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'pgsql.dbstat["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
              tags:
                - tag: component
                  value: raw
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 2e31986867d24bca930d141cc5d9cc0f
              name: 'DB [{#DBNAME}]: Backends connected'
              type: DEPENDENT
              key: 'pgsql.dbstat.numbackends["{#DBNAME}"]'
              description: 'Number of backends currently connected to this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.numbackends
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: backends
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 82a2f4b2dc4f4dfe9a0a42144f603a8a
              name: 'DB [{#DBNAME}]: Temp_bytes written per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.temp_bytes.rate["{#DBNAME}"]'
              units: B
              description: 'Total amount of data written to temporary files by queries in this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.temp_bytes
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: storage
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 480ffc23ca8d41e3ac86bb162007065f
              name: 'DB [{#DBNAME}]: Temp_files created per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.temp_files.rate["{#DBNAME}"]'
              description: 'Total number of temporary files created by queries in this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.temp_files
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: storage
                - tag: database
                  value: '{#DBNAME}'
            - uuid: cf288751fb894e5291b2d539b4c1a6a1
              name: 'DB [{#DBNAME}]: Tuples deleted per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.tup_deleted.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of rows deleted by queries in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tup_deleted
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: a512a7a075244ccb90ab6824125a405e
              name: 'DB [{#DBNAME}]: Tuples fetched per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.tup_fetched.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of rows fetched by queries in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tup_fetched
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 2f24c195df5842f1bdf65a11dea3a315
              name: 'DB [{#DBNAME}]: Tuples inserted per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.tup_inserted.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of rows inserted by queries in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tup_inserted
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 175c5051ef0c4a31b76270cacbdd7ed5
              name: 'DB [{#DBNAME}]: Tuples returned per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.tup_returned.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Number of rows returned by queries in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tup_returned
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 9888b495d3f04cceb373c341bd4f1941
              name: 'DB [{#DBNAME}]: Tuples updated per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.tup_updated.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of rows updated by queries in this database per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tup_updated
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 5b0ecb9c928c49a6a01b5df6aec931dd
              name: 'DB [{#DBNAME}]: Commits per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.xact_commit.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Number of transactions in this database that have been committed per second.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.xact_commit
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: transactions
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 1d280198e31649fcb053d4c87a0e869d
              name: 'DB [{#DBNAME}]: Rollbacks per second'
              type: DEPENDENT
              key: 'pgsql.dbstat.xact_rollback.rate["{#DBNAME}"]'
              value_type: FLOAT
              description: 'Total number of transactions in this database that have been rolled back.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.xact_rollback
                - type: CHANGE_PER_SECOND
              master_item:
                key: 'pgsql.dbstat.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: transactions
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 8eb2bd907a0e4385bcac9e0f467f9748
              name: 'DB [{#DBNAME}]: Num of accessexclusive locks'
              type: DEPENDENT
              key: 'pgsql.locks.accessexclusive["{#DBNAME}"]'
              description: 'Number of accessexclusive locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.accessexclusive
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 5f783de0d6124fc0ae14522a4ad89189
              name: 'DB [{#DBNAME}]: Num of accessshare locks'
              type: DEPENDENT
              key: 'pgsql.locks.accessshare["{#DBNAME}"]'
              description: 'Number of accessshare locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.accessshare
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 3c754430815f411e9aa8dde593f6333a
              name: 'DB [{#DBNAME}]: Num of exclusive locks'
              type: DEPENDENT
              key: 'pgsql.locks.exclusive["{#DBNAME}"]'
              description: 'Number of exclusive locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.exclusive
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 2c7759f4c9e442cb80bd54ea3323501b
              name: 'DB [{#DBNAME}]: Get locks'
              type: DEPENDENT
              key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              history: '0'
              value_type: TEXT
              description: 'Get locks metrics for database "{#DBNAME}".'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[''{#DBNAME}'']'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'pgsql.locks["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
              tags:
                - tag: component
                  value: raw
                - tag: database
                  value: '{#DBNAME}'
            - uuid: b1ccea7698264d768da1299ec9d13738
              name: 'DB [{#DBNAME}]: Num of rowexclusive locks'
              type: DEPENDENT
              key: 'pgsql.locks.rowexclusive["{#DBNAME}"]'
              description: 'Number of rowexclusive locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.rowexclusive
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: b4b1402b99284f3bbf0ac0dff493449f
              name: 'DB [{#DBNAME}]: Num of rowshare locks'
              type: DEPENDENT
              key: 'pgsql.locks.rowshare["{#DBNAME}"]'
              description: 'Number of rowshare locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.rowshare
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 15eb93e90c1241a99aaff834d69cc5be
              name: 'DB [{#DBNAME}]: Num of sharerowexclusive locks'
              type: DEPENDENT
              key: 'pgsql.locks.sharerowexclusive["{#DBNAME}"]'
              description: 'Number of total sharerowexclusive for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.sharerowexclusive
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 04e6cec0423f4dddb09e6643561bdf77
              name: 'DB [{#DBNAME}]: Num of shareupdateexclusive locks'
              type: DEPENDENT
              key: 'pgsql.locks.shareupdateexclusive["{#DBNAME}"]'
              description: 'Number of shareupdateexclusive locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.shareupdateexclusive
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 8a410cf1f0be41fbb5a976f368f07430
              name: 'DB [{#DBNAME}]: Num of share locks'
              type: DEPENDENT
              key: 'pgsql.locks.share["{#DBNAME}"]'
              description: 'Number of share locks for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.share
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: a982064d710644db85ebc1cde67bfe4d
              name: 'DB [{#DBNAME}]: Num of locks total'
              type: DEPENDENT
              key: 'pgsql.locks.total["{#DBNAME}"]'
              description: 'Total number of locks in this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.total
              master_item:
                key: 'pgsql.locks.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: locks
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 75e704af5cb545fd9f83bec3f147dd04
              name: 'DB [{#DBNAME}]: Get queries'
              type: DEPENDENT
              key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              history: '0'
              value_type: TEXT
              description: 'Get queries metrics for database "{#DBNAME}".'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[''{#DBNAME}'']'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'pgsql.queries["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{$PG.DATABASE}","{$PG.QUERY_ETIME.MAX.WARN}"]'
              tags:
                - tag: component
                  value: raw
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 4c8934820b7f46a195115c7214d4379c
              name: 'DB [{#DBNAME}]: Queries slow maintenance count'
              type: DEPENDENT
              key: 'pgsql.queries.mro.slow_count["{#DBNAME}"]'
              description: 'Slow maintenance query count for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.mro_slow_count
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 612c8f83e228406f86e70e8486a51f9b
              name: 'DB [{#DBNAME}]: Queries max maintenance time'
              type: DEPENDENT
              key: 'pgsql.queries.mro.time_max["{#DBNAME}"]'
              units: s
              description: 'Max maintenance query time for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.mro_time_max
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 9cde2701b5814142b064696dc974f45d
              name: 'DB [{#DBNAME}]: Queries sum maintenance time'
              type: DEPENDENT
              key: 'pgsql.queries.mro.time_sum["{#DBNAME}"]'
              units: s
              description: 'Sum maintenance query time for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.mro_time_sum
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 9e1191f80c3a4e9aa0d3aba2b2740fef
              name: 'DB [{#DBNAME}]: Queries slow query count'
              type: DEPENDENT
              key: 'pgsql.queries.query.slow_count["{#DBNAME}"]'
              description: 'Slow query count for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.query_slow_count
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
              trigger_prototypes:
                - uuid: 2bb34a2a7dee451cb5419a146d883601
                  expression: 'min(/PostgreSQL by Zabbix agent 2/pgsql.queries.query.slow_count["{#DBNAME}"],5m)>{$PG.SLOW_QUERIES.MAX.WARN:"{#DBNAME}"}'
                  name: 'DB [{#DBNAME}]: Too many slow queries'
                  event_name: 'DB [{#DBNAME}]: Too many slow queries (over {$PG.SLOW_QUERIES.MAX.WARN:"{#DBNAME}"} in 5m)'
                  priority: WARNING
                  description: 'The number of detected slow queries exceeds the limit of {$PG.SLOW_QUERIES.MAX.WARN:"{#DBNAME}"}.'
                  tags:
                    - tag: scope
                      value: performance
            - uuid: 73712df30d66494998bf11566eba409f
              name: 'DB [{#DBNAME}]: Queries max query time'
              type: DEPENDENT
              key: 'pgsql.queries.query.time_max["{#DBNAME}"]'
              units: s
              description: 'Max query time for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.query_time_max
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: ba95d84bc11b4df4aece8ddb51042339
              name: 'DB [{#DBNAME}]: Queries sum query time'
              type: DEPENDENT
              key: 'pgsql.queries.query.time_sum["{#DBNAME}"]'
              units: s
              description: 'Sum query time for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.query_time_sum
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: d31701d52f5941d5a24241c95db52373
              name: 'DB [{#DBNAME}]: Queries slow transaction count'
              type: DEPENDENT
              key: 'pgsql.queries.tx.slow_count["{#DBNAME}"]'
              description: 'Slow transaction query count for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tx_slow_count
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: ecc24b3143254dd4b2fc01c12cefb345
              name: 'DB [{#DBNAME}]: Queries max transaction time'
              type: DEPENDENT
              key: 'pgsql.queries.tx.time_max["{#DBNAME}"]'
              units: s
              description: 'Max transaction query time for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tx_time_max
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
            - uuid: 178926a753614bb58206d82f68280097
              name: 'DB [{#DBNAME}]: Queries sum transaction time'
              type: DEPENDENT
              key: 'pgsql.queries.tx.time_sum["{#DBNAME}"]'
              units: s
              description: 'Sum transaction query time for this database.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.tx_time_sum
              master_item:
                key: 'pgsql.queries.get_metrics["{#DBNAME}"]'
              tags:
                - tag: component
                  value: queries
                - tag: database
                  value: '{#DBNAME}'
          graph_prototypes:
            - uuid: af6eac83efc94d2a9f4a3501207fb5ce
              name: 'DB [{#DBNAME}]: Locks'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.total["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.accessexclusive["{#DBNAME}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.accessshare["{#DBNAME}"]'
                - sortorder: '3'
                  color: F7941D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.exclusive["{#DBNAME}"]'
                - sortorder: '4'
                  color: FC6EA3
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.rowexclusive["{#DBNAME}"]'
                - sortorder: '5'
                  color: 6C59DC
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.rowshare["{#DBNAME}"]'
                - sortorder: '6'
                  color: C7A72D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.sharerowexclusive["{#DBNAME}"]'
                - sortorder: '7'
                  color: BA2A5D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.shareupdateexclusive["{#DBNAME}"]'
                - sortorder: '8'
                  color: F230E0
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.locks.share["{#DBNAME}"]'
            - uuid: 9a518b4bf0f04609863bf9dc4c7f1ea2
              name: 'DB [{#DBNAME}]: Number of bloating tables'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.db.bloating_tables["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]'
            - uuid: 4d46d39a1d1146c19a57b2b5b8086708
              name: 'DB [{#DBNAME}]: pg_stat_database metrics'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.blks_hit.rate["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.blks_read.rate["{#DBNAME}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.conflicts.rate["{#DBNAME}"]'
                - sortorder: '3'
                  color: F7941D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.deadlocks.rate["{#DBNAME}"]'
                - sortorder: '4'
                  color: FC6EA3
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.temp_bytes.rate["{#DBNAME}"]'
                - sortorder: '5'
                  color: 6C59DC
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.temp_files.rate["{#DBNAME}"]'
                - sortorder: '6'
                  color: C7A72D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.tup_deleted.rate["{#DBNAME}"]'
                - sortorder: '7'
                  color: BA2A5D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.tup_fetched.rate["{#DBNAME}"]'
                - sortorder: '8'
                  color: F230E0
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.tup_inserted.rate["{#DBNAME}"]'
                - sortorder: '9'
                  color: 5CCD18
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.tup_returned.rate["{#DBNAME}"]'
                - sortorder: '10'
                  color: BB2A02
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.tup_updated.rate["{#DBNAME}"]'
                - sortorder: '11'
                  color: AC41A5
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.xact_commit.rate["{#DBNAME}"]'
                - sortorder: '12'
                  color: 89ABF8
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.dbstat.xact_rollback.rate["{#DBNAME}"]'
            - uuid: 98f4c88e15b742fb80e1ecd8aeab970d
              name: 'DB [{#DBNAME}]: Queries'
              ymin_type_1: FIXED
              graph_items:
                - color: 199C0D
                  yaxisside: RIGHT
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.mro.time_max["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  yaxisside: RIGHT
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.query.time_max["{#DBNAME}"]'
                - sortorder: '2'
                  color: 00611C
                  yaxisside: RIGHT
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.tx.time_max["{#DBNAME}"]'
                - sortorder: '3'
                  drawtype: GRADIENT_LINE
                  color: F7941D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.mro.time_sum["{#DBNAME}"]'
                - sortorder: '4'
                  drawtype: GRADIENT_LINE
                  color: FC6EA3
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.query.time_sum["{#DBNAME}"]'
                - sortorder: '5'
                  drawtype: GRADIENT_LINE
                  color: 6C59DC
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.tx.time_sum["{#DBNAME}"]'
            - uuid: 86853d8590344bad84aab1deb3d1cffc
              name: 'DB [{#DBNAME}]: Size'
              graph_items:
                - drawtype: GRADIENT_LINE
                  color: 199C0D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.db.size["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}","{#DBNAME}"]'
            - uuid: 918a6fd8bd0e49c98f759778f44ab606
              name: 'DB [{#DBNAME}]: Slow queries'
              ymin_type_1: FIXED
              graph_items:
                - color: 199C0D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.mro.slow_count["{#DBNAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.query.slow_count["{#DBNAME}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.queries.tx.slow_count["{#DBNAME}"]'
        - uuid: e94f9017c06644a2bbcb48697381556d
          name: 'Replication discovery'
          key: 'pgsql.replication.process.discovery["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
          delay: 15m
          filter:
            evaltype: AND
            conditions:
              - macro: '{#APPLICATION_NAME}'
                value: '{$PG.LLD.FILTER.APPLICATION}'
          description: 'Discovers replication lag metrics.'
          item_prototypes:
            - uuid: a77e5e6702ff41af9defe102cbeeea74
              name: 'Application [{#APPLICATION_NAME}]: Get replication'
              type: DEPENDENT
              key: 'pgsql.replication.get_metrics["{#APPLICATION_NAME}"]'
              history: '0'
              value_type: TEXT
              description: 'Collect metrics from the "pg_stat_replication" about the application "{#APPLICATION_NAME}" that is connected to this WAL sender, which contains information about the WAL sender process, showing statistics about replication to that sender''s connected standby server.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$[''{#APPLICATION_NAME}'']'
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'pgsql.replication.process["{$PG.CONNSTRING}","{$PG.USER}","{$PG.PASSWORD}"]'
              tags:
                - tag: application
                  value: '{#APPLICATION_NAME}'
                - tag: component
                  value: raw
            - uuid: 15b83330044042668e618501160c37e4
              name: 'Application [{#APPLICATION_NAME}]: Replication flush lag'
              type: DEPENDENT
              key: 'pgsql.replication.process.flush_lag["{#APPLICATION_NAME}"]'
              value_type: FLOAT
              units: s
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.flush_lag
              master_item:
                key: 'pgsql.replication.get_metrics["{#APPLICATION_NAME}"]'
              tags:
                - tag: application
                  value: '{#APPLICATION_NAME}'
                - tag: component
                  value: replication
            - uuid: 0daf6e3c7843488cb3160a2bd6b09fbf
              name: 'Application [{#APPLICATION_NAME}]: Replication replay lag'
              type: DEPENDENT
              key: 'pgsql.replication.process.replay_lag["{#APPLICATION_NAME}"]'
              value_type: FLOAT
              units: s
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.replay_lag
              master_item:
                key: 'pgsql.replication.get_metrics["{#APPLICATION_NAME}"]'
              tags:
                - tag: application
                  value: '{#APPLICATION_NAME}'
                - tag: component
                  value: replication
            - uuid: 2d96bc517d3a4c3fbcae8a7f1436bf72
              name: 'Application [{#APPLICATION_NAME}]: Replication write lag'
              type: DEPENDENT
              key: 'pgsql.replication.process.write_lag["{#APPLICATION_NAME}"]'
              value_type: FLOAT
              units: s
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.write_lag
              master_item:
                key: 'pgsql.replication.get_metrics["{#APPLICATION_NAME}"]'
              tags:
                - tag: application
                  value: '{#APPLICATION_NAME}'
                - tag: component
                  value: replication
          graph_prototypes:
            - uuid: e79dfe2d436d49da898772a9e7345825
              name: 'Application [{#APPLICATION_NAME}]: Replication lag'
              graph_items:
                - color: 199C0D
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.replication.process.flush_lag["{#APPLICATION_NAME}"]'
                - sortorder: '1'
                  color: F63100
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.replication.process.replay_lag["{#APPLICATION_NAME}"]'
                - sortorder: '2'
                  color: 00611C
                  item:
                    host: 'PostgreSQL by Zabbix agent 2'
                    key: 'pgsql.replication.process.write_lag["{#APPLICATION_NAME}"]'
      tags:
        - tag: class
          value: database
        - tag: target
          value: postgresql
      macros:
        - macro: '{$PG.CONFLICTS.MAX.WARN}'
          value: '0'
          description: 'Maximum number of recovery conflicts for trigger expression.'
        - macro: '{$PG.CONNSTRING}'
          value: 'tcp://localhost:5432'
          description: 'URI or named session of the PostgreSQL instance.'
        - macro: '{$PG.CONN_TOTAL_PCT.MAX.WARN}'
          value: '90'
          description: 'Maximum percentage of current connections for trigger expression.'
        - macro: '{$PG.DATABASE}'
          value: postgres
          description: 'Default PostgreSQL database for the connection.'
        - macro: '{$PG.DEADLOCKS.MAX.WARN}'
          value: '0'
          description: 'Maximum number of detected deadlocks for trigger expression.'
        - macro: '{$PG.LLD.FILTER.APPLICATION}'
          value: .+
          description: 'Filter of discoverable applications.'
        - macro: '{$PG.LLD.FILTER.DBNAME}'
          value: .+
          description: 'Filter of discoverable databases.'
        - macro: '{$PG.PASSWORD}'
          value: '<Put the password here>'
          description: 'PostgreSQL user password.'
        - macro: '{$PG.QUERY_ETIME.MAX.WARN}'
          value: '30'
          description: 'Execution time limit for count of slow queries.'
        - macro: '{$PG.SLOW_QUERIES.MAX.WARN}'
          value: '5'
          description: 'Slow queries count threshold for a trigger.'
        - macro: '{$PG.USER}'
          value: zbx_monitor
          description: 'PostgreSQL username.'
      dashboards:
        - uuid: e3ae726b06cc4663a3eef5a73909f796
          name: 'PostgreSQL databases'
          pages:
            - widgets:
                - type: graphprototype
                  width: '36'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'PostgreSQL by Zabbix agent 2'
                        name: 'DB [{#DBNAME}]: pg_stat_database metrics'
                    - type: STRING
                      name: reference
                      value: AAAAA
                - type: graphprototype
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'PostgreSQL by Zabbix agent 2'
                        name: 'DB [{#DBNAME}]: Size'
                    - type: STRING
                      name: reference
                      value: AAAAC
                - type: graphprototype
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'PostgreSQL by Zabbix agent 2'
                        name: 'DB [{#DBNAME}]: Queries'
                    - type: STRING
                      name: reference
                      value: AAAAE
                - type: graphprototype
                  x: '36'
                  width: '36'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'PostgreSQL by Zabbix agent 2'
                        name: 'DB [{#DBNAME}]: Locks'
                    - type: STRING
                      name: reference
                      value: AAAAB
                - type: graphprototype
                  x: '36'
                  'y': '5'
                  width: '36'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'PostgreSQL by Zabbix agent 2'
                        name: 'DB [{#DBNAME}]: Number of bloating tables'
                    - type: STRING
                      name: reference
                      value: AAAAD
                - type: graphprototype
                  x: '36'
                  'y': '10'
                  width: '36'
                  height: '5'
                  fields:
                    - type: INTEGER
                      name: columns
                      value: '1'
                    - type: GRAPH_PROTOTYPE
                      name: graphid.0
                      value:
                        host: 'PostgreSQL by Zabbix agent 2'
                        name: 'DB [{#DBNAME}]: Slow queries'
                    - type: STRING
                      name: reference
                      value: AAAAF
      valuemaps:
        - uuid: cd2d975b0d7e4f8e89afb1033fce4ce2
          name: 'PostgreSQL checksum failure status'
          mappings:
            - value: '-2'
              newvalue: 'null'
        - uuid: 9f38c01c325248d4b538c0582432b541
          name: 'PostgreSQL recovery role'
          mappings:
            - value: '0'
              newvalue: Master
            - value: '1'
              newvalue: Standby
        - uuid: 0fba38eefa4c4073b46d3f8579fda314
          name: 'PostgreSQL replication status'
          mappings:
            - value: '0'
              newvalue: Down
            - value: '1'
              newvalue: Up
            - value: '2'
              newvalue: Master
        - uuid: 6619a58602a44e83950d3d4b5180c0e9
          name: 'Service state'
          mappings:
            - value: '0'
              newvalue: Down
            - value: '1'
              newvalue: Up
