zabbix_export:
  version: '7.0'
  template_groups:
    - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6
      name: Templates/Applications
  templates:
    - uuid: 1cbda0970410435684135884d0cb7090
      template: 'PHP-FPM by Zabbix agent'
      name: 'PHP-FPM by Zabbix agent'
      description: |
        Get PHP-FPM metrics using Zabbix agent running on Linux.
        
        Note that depending on your OS distribution, the PHP-FPM process name may vary. Please, check the actual name in the line "Name" from /proc/<pid>/status file (https://www.zabbix.com/documentation/7.0/manual/appendix/items/proc_mem_num_notes) and change {$PHP_FPM.PROCESS.NAME.PARAMETER} macro if needed.
        
        Generated by official Zabbix template tool "Templator"
      vendor:
        name: Zabbix
        version: 7.0-0
      groups:
        - name: Templates/Applications
      items:
        - uuid: 9ae9e2a8003a48a7a482ef6d6ae9886c
          name: 'Accepted connections per second'
          type: DEPENDENT
          key: php-fpm.conn_accepted.rate
          value_type: FLOAT
          description: 'The number of accepted requests per second.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''accepted conn'']'
            - type: CHANGE_PER_SECOND
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: connections
        - uuid: edc6b68194fe499facfb6b22425ff0d4
          name: 'Listen queue'
          type: DEPENDENT
          key: php-fpm.listen_queue
          description: 'The current number of connections that have been initiated but not yet accepted.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''listen queue'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: listen-queue
        - uuid: aff9f072b06a4b56afb0e0f44b2c83a4
          name: 'Listen queue, len'
          type: DEPENDENT
          key: php-fpm.listen_queue_len
          description: 'The size of the socket queue of pending connections.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''listen queue len'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: listen-queue
        - uuid: de0a543bee5a46c88085b2aba2f4976f
          name: 'Listen queue, max'
          type: DEPENDENT
          key: php-fpm.listen_queue_max
          description: 'The maximum number of requests in the queue of pending connections since this FPM pool was started.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''max listen queue'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: listen-queue
        - uuid: dfabcd55c13449c29a48b70fdce77674
          name: 'Queue usage'
          type: CALCULATED
          key: php-fpm.listen_queue_usage
          value_type: FLOAT
          units: '%'
          params: 'last(//php-fpm.listen_queue)/(last(//php-fpm.listen_queue_len)+(last(//php-fpm.listen_queue_len)=0))*100'
          description: 'The utilization of the queue.'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: a11264f0e1174b7fb81b457dad1a745f
              expression: 'min(/PHP-FPM by Zabbix agent/php-fpm.listen_queue_usage,15m) > {$PHP_FPM.QUEUE.WARN.MAX}'
              name: 'Queue utilization is high'
              event_name: 'Queue utilization is high (over {$PHP_FPM.QUEUE.WARN.MAX}% for 15m)'
              priority: WARNING
              description: |
                The queue for this pool has reached `{$PHP_FPM.QUEUE.WARN.MAX}%` of its maximum capacity. 
                Items in the queue represent the current number of connections that have been initiated on this pool but not yet accepted.
              tags:
                - tag: scope
                  value: capacity
        - uuid: e9d49669cf58492a9d5ef7ff997e1a40
          name: 'Max children reached'
          type: DEPENDENT
          key: php-fpm.max_children
          description: 'The number of times that `pm.max_children` has been reached since the PHP-FPM pool was started.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''max children reached'']'
            - type: SIMPLE_CHANGE
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
        - uuid: 830e04be30f04e50ac0fa4783ecdc677
          name: 'Pool name'
          type: DEPENDENT
          key: php-fpm.name
          value_type: CHAR
          description: 'The name of the current pool.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - $.pool
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
        - uuid: 250f346008984a95829dba08d0f95838
          name: Ping
          type: DEPENDENT
          key: php-fpm.ping
          valuemap:
            name: 'Service state'
          preprocessing:
            - type: REGEX
              parameters:
                - '{$PHP_FPM.PING.REPLY}($|\r?\n)'
                - '1'
              error_handler: CUSTOM_VALUE
              error_handler_params: '0'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.PING.PAGE}","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: health
        - uuid: 8ebee5fc8c854a96b34ed743e3dd0154
          name: 'Processes, active'
          type: DEPENDENT
          key: php-fpm.processes_active
          description: 'The total number of active processes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''active processes'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: system
        - uuid: 11cfd028325242a58d61d9e83aee640b
          name: 'Processes, idle'
          type: DEPENDENT
          key: php-fpm.processes_idle
          description: 'The total number of idle processes.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''idle processes'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: system
        - uuid: 3858218f90684bb19cbe27fc9aedf404
          name: 'Processes, max active'
          type: DEPENDENT
          key: php-fpm.processes_max_active
          description: 'The highest value of "active processes" since the PHP-FPM server was started.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''max active processes'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
        - uuid: a79af6cf38ec45518055c64aa7f1f5a2
          name: 'Processes, total'
          type: DEPENDENT
          key: php-fpm.processes_total
          description: 'The total number of server processes currently running.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''total processes'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: system
        - uuid: 5ab12fc9f4ef49e5bbf7b2c6a840879e
          name: 'Process manager'
          type: DEPENDENT
          key: php-fpm.process_manager
          value_type: CHAR
          description: 'The method used by the process manager to control the number of child processes for this pool.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''process manager'']'
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: 231e0fbfb6e94f34b790576766244602
              expression: 'last(/PHP-FPM by Zabbix agent/php-fpm.process_manager,#1)<>last(/PHP-FPM by Zabbix agent/php-fpm.process_manager,#2)'
              name: 'Manager changed'
              event_name: 'Manager changed (new value received: {ITEM.VALUE})'
              priority: INFO
              description: 'The PHP-FPM manager has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 4d17b6d89ac94d0880eac6962ebf7347
          name: 'Slow requests'
          type: DEPENDENT
          key: php-fpm.slow_requests
          description: 'The number of requests that has exceeded your `request_slowlog_timeout` value.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''slow requests'']'
            - type: SIMPLE_CHANGE
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: f30147d8e92f48aa8fedc2d28b8d7c70
              expression: 'min(/PHP-FPM by Zabbix agent/php-fpm.slow_requests,#3)>0'
              name: 'Detected slow requests'
              priority: WARNING
              description: |
                The PHP-FPM has detected a slow request. 
                The slow request means that it took more time to execute than expected (defined in the configuration of your pool).
              tags:
                - tag: scope
                  value: performance
        - uuid: 4e4d6eda8fbb4dd2ba7f48fba5723473
          name: 'Start time'
          type: DEPENDENT
          key: php-fpm.start_time
          units: unixtime
          description: 'The time when this pool was started.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''start time'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
        - uuid: 2a19b306712a47999e70d3ec30e39b05
          name: Uptime
          type: DEPENDENT
          key: php-fpm.uptime
          units: s
          description: 'It indicates how long has this pool been running.'
          preprocessing:
            - type: JSONPATH
              parameters:
                - '$.[''start since'']'
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: c6966a6c3ff0452ab4fd112c9299e624
              expression: 'last(/PHP-FPM by Zabbix agent/php-fpm.uptime)<10m'
              name: 'Pool has been restarted'
              event_name: 'Pool has been restarted (uptime < 10m)'
              priority: INFO
              description: 'Uptime is less than 10 minutes.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: b53e2e356317468f9d6d3272eb755650
          name: Version
          type: DEPENDENT
          key: php-fpm.version
          value_type: CHAR
          description: 'The current version of the PHP. You can get it from the HTTP-Header "X-Powered-By"; it may not work if you have changed the default HTTP-headers.'
          preprocessing:
            - type: REGEX
              parameters:
                - '^[.\s\S]*X-Powered-By: PHP/([.\d]{1,})'
                - \1
              error_handler: DISCARD_VALUE
            - type: DISCARD_UNCHANGED_HEARTBEAT
              parameters:
                - 3h
          master_item:
            key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.PING.PAGE}","{$PHP_FPM.PORT}"]'
          tags:
            - tag: component
              value: application
          triggers:
            - uuid: fb110a37f0fc4a62b51df72e33bc3448
              expression: 'last(/PHP-FPM by Zabbix agent/php-fpm.version,#1)<>last(/PHP-FPM by Zabbix agent/php-fpm.version,#2) and length(last(/PHP-FPM by Zabbix agent/php-fpm.version))>0'
              name: 'Version has changed'
              event_name: 'Version has changed (new version: {ITEM.VALUE})'
              priority: INFO
              description: 'The PHP-FPM version has changed. Acknowledge to close the problem manually.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
        - uuid: 71ea0957d99a4d48b18e73a21494c849
          name: 'Get processes summary'
          key: 'proc.get[{$PHP_FPM.PROCESS.NAME.PARAMETER},,,summary]'
          history: '0'
          value_type: TEXT
          description: 'The aggregated data of summary metrics for all processes.'
          tags:
            - tag: component
              value: raw
        - uuid: c0c438492c63453496e83938745ffffc
          name: php-fpm_ping
          key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.PING.PAGE}","{$PHP_FPM.PORT}"]'
          history: '0'
          value_type: TEXT
          tags:
            - tag: component
              value: health
        - uuid: 09ec73291f21417ab8f19f56fda3331f
          name: 'Get status page'
          key: 'web.page.get["{$PHP_FPM.HOST}","{$PHP_FPM.STATUS.PAGE}?json","{$PHP_FPM.PORT}"]'
          history: '0'
          value_type: TEXT
          preprocessing:
            - type: REGEX
              parameters:
                - '^[.\s\S]*({.+})'
                - \1
          tags:
            - tag: component
              value: raw
      discovery_rules:
        - uuid: a8abec999ac74339b077d226bdbcfcc9
          name: 'PHP-FPM process discovery'
          type: DEPENDENT
          key: php-fpm.proc.discovery
          filter:
            evaltype: AND
            conditions:
              - macro: '{#PHP_FPM.NAME}'
                value: '{$PHP_FPM.PROCESS_NAME}'
          description: 'The discovery of the PHP-FPM summary processes.'
          item_prototypes:
            - uuid: 985005cdf7b44332a59a5f7da7528d88
              name: 'Get process data'
              type: DEPENDENT
              key: 'php-fpm.proc.get[{#PHP_FPM.NAME}]'
              history: '0'
              value_type: TEXT
              description: 'The summary metrics aggregated by a process `{#PHP_FPM.NAME}`.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - '$.[?(@["name"]=="{#PHP_FPM.NAME}")].first()'
                  error_handler: CUSTOM_VALUE
                  error_handler_params: 'Failed to retrieve process {#PHP_FPM.NAME} data'
              master_item:
                key: 'proc.get[{$PHP_FPM.PROCESS.NAME.PARAMETER},,,summary]'
              tags:
                - tag: component
                  value: raw
            - uuid: ab8dc0d1ce344fe8ae6a22716a168fbd
              name: 'Number of running processes'
              type: DEPENDENT
              key: 'php-fpm.proc.num[{#PHP_FPM.NAME}]'
              description: 'The number of running processes `{#PHP_FPM.NAME}`.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.processes
                  error_handler: CUSTOM_VALUE
                  error_handler_params: '0'
                - type: DISCARD_UNCHANGED_HEARTBEAT
                  parameters:
                    - 1h
              master_item:
                key: 'php-fpm.proc.get[{#PHP_FPM.NAME}]'
              tags:
                - tag: component
                  value: system
              trigger_prototypes:
                - uuid: 21a03d0ada634602ae9089a2cf3b4d70
                  expression: 'last(/PHP-FPM by Zabbix agent/php-fpm.proc.num[{#PHP_FPM.NAME}])=0'
                  name: 'Process is not running'
                  priority: HIGH
                  tags:
                    - tag: scope
                      value: availability
            - uuid: ef771994ec9e482babf872d9f867d500
              name: 'Memory usage, %'
              type: DEPENDENT
              key: 'php-fpm.proc.pmem[{#PHP_FPM.NAME}]'
              value_type: FLOAT
              units: '%'
              description: 'The percentage of real memory used by a process `{#PHP_FPM.NAME}`.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.pmem
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'php-fpm.proc.get[{#PHP_FPM.NAME}]'
              tags:
                - tag: component
                  value: memory
            - uuid: f55a5ef29f864d0a8c1af25df2372f7c
              name: 'Memory usage (rss)'
              type: DEPENDENT
              key: 'php-fpm.proc.rss[{#PHP_FPM.NAME}]'
              units: B
              description: 'The summary of resident set size memory used by a process `{#PHP_FPM.NAME}` expressed in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.rss
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'php-fpm.proc.get[{#PHP_FPM.NAME}]'
              tags:
                - tag: component
                  value: memory
            - uuid: 4efc6da713264e629f987106b8252355
              name: 'Memory usage (vsize)'
              type: DEPENDENT
              key: 'php-fpm.proc.vmem[{#PHP_FPM.NAME}]'
              units: B
              description: 'The summary of virtual memory used by a process `{#PHP_FPM.NAME}` expressed in bytes.'
              preprocessing:
                - type: JSONPATH
                  parameters:
                    - $.vsize
                  error_handler: DISCARD_VALUE
              master_item:
                key: 'php-fpm.proc.get[{#PHP_FPM.NAME}]'
              tags:
                - tag: component
                  value: memory
            - uuid: a709eaae52ad4128a129c618db6525d2
              name: 'CPU utilization'
              key: 'proc.cpu.util[{#PHP_FPM.NAME}]'
              value_type: FLOAT
              units: '%'
              description: 'The percentage of the CPU utilization by a process `{#PHP_FPM.NAME}`.'
              tags:
                - tag: component
                  value: cpu
          trigger_prototypes:
            - uuid: bdf9962aee2049a8aec000b037b94d60
              expression: 'nodata(/PHP-FPM by Zabbix agent/php-fpm.uptime,30m)=1 and last(/PHP-FPM by Zabbix agent/php-fpm.proc.num[{#PHP_FPM.NAME}])>0'
              name: 'Failed to fetch info data'
              event_name: 'Failed to fetch info data (or no data for 30m)'
              priority: INFO
              description: 'Zabbix has not received any data for items for the last 30 minutes.'
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: notice
            - uuid: 10d92102d7a24327ada7869a41119fee
              expression: '(last(/PHP-FPM by Zabbix agent/php-fpm.ping)=0 or nodata(/PHP-FPM by Zabbix agent/php-fpm.ping,3m)=1) and last(/PHP-FPM by Zabbix agent/php-fpm.proc.num[{#PHP_FPM.NAME}])>0'
              name: 'Service is down'
              priority: HIGH
              manual_close: 'YES'
              tags:
                - tag: scope
                  value: availability
          graph_prototypes:
            - uuid: 628b350f5fb6439fb4965f4e053f66d5
              name: 'PHP-FPM: Memory usage[{#PHP_FPM.NAME}]'
              graph_items:
                - drawtype: BOLD_LINE
                  color: 199C0D
                  item:
                    host: 'PHP-FPM by Zabbix agent'
                    key: 'php-fpm.proc.vmem[{#PHP_FPM.NAME}]'
                - sortorder: '1'
                  drawtype: BOLD_LINE
                  color: F63100
                  item:
                    host: 'PHP-FPM by Zabbix agent'
                    key: 'php-fpm.proc.rss[{#PHP_FPM.NAME}]'
          master_item:
            key: 'proc.get[{$PHP_FPM.PROCESS.NAME.PARAMETER},,,summary]'
          lld_macro_paths:
            - lld_macro: '{#PHP_FPM.NAME}'
              path: $.name
      tags:
        - tag: class
          value: application
        - tag: target
          value: php-fpm
      macros:
        - macro: '{$PHP_FPM.HOST}'
          value: localhost
          description: 'The hostname or IP address of the PHP-FPM status for a host or container.'
        - macro: '{$PHP_FPM.PING.PAGE}'
          value: ping
          description: 'The path of the PHP-FPM ping page.'
        - macro: '{$PHP_FPM.PING.REPLY}'
          value: pong
          description: 'The expected reply to the ping.'
        - macro: '{$PHP_FPM.PORT}'
          value: '80'
          description: 'The port of the PHP-FPM status host or container.'
        - macro: '{$PHP_FPM.PROCESS.NAME.PARAMETER}'
          description: 'The process name of the PHP-FPM used in the item key `proc.get`. It could be specified if the correct process name is known.'
        - macro: '{$PHP_FPM.PROCESS_NAME}'
          value: php-fpm
          description: 'The process name filter for the PHP-FPM process discovery. May vary depending on your OS distribution.'
        - macro: '{$PHP_FPM.QUEUE.WARN.MAX}'
          value: '80'
          description: 'The maximum percent of the PHP-FPM queue usage for a trigger expression.'
        - macro: '{$PHP_FPM.STATUS.PAGE}'
          value: status
          description: 'The path of the PHP-FPM status page.'
      dashboards:
        - uuid: aec4ea16594a47719de221154e43d547
          name: 'PHP-FPM: Overview'
          pages:
            - name: Main
              widgets:
                - type: graph
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'PHP-FPM by Zabbix agent'
                        name: 'PHP-FPM: Process'
                    - type: STRING
                      name: reference
                      value: AAAAA
                - type: graph
                  x: '36'
                  width: '36'
                  height: '5'
                  fields:
                    - type: GRAPH
                      name: graphid.0
                      value:
                        host: 'PHP-FPM by Zabbix agent'
                        name: 'PHP-FPM: Queue'
                    - type: STRING
                      name: reference
                      value: AAAAB
      valuemaps:
        - uuid: 1caa1e7c41e14c7492ab8112f93ea068
          name: 'Service state'
          mappings:
            - value: '0'
              newvalue: Down
            - value: '1'
              newvalue: Up
  graphs:
    - uuid: 36cd028132d94585877ad5726f0f9e3d
      name: 'PHP-FPM: Process'
      graph_items:
        - color: 199C0D
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.processes_max_active
        - sortorder: '1'
          color: F63100
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.processes_idle
        - sortorder: '2'
          color: 00611C
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.processes_total
        - sortorder: '3'
          color: F7941D
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.processes_active
    - uuid: 768a3e8aaa4741239887b55be5842f4a
      name: 'PHP-FPM: Queue'
      graph_items:
        - color: 199C0D
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.listen_queue_len
        - sortorder: '1'
          color: F63100
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.listen_queue
        - sortorder: '2'
          color: 00611C
          item:
            host: 'PHP-FPM by Zabbix agent'
            key: php-fpm.listen_queue_max
