zabbix_export: version: '6.4' template_groups: - uuid: a571c0d144b14fd4a87a9d9b2aa9fcd6 name: Templates/Applications templates: - uuid: 27f6424905884dbb96ab9210d987a56c template: 'Nginx by Zabbix agent' name: 'Nginx by Zabbix agent' description: | Get metrics from stub status module using Zabbix agent running on Linux https://nginx.ru/en/docs/http/ngx_http_stub_status_module.html You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384765-discussion-thread-for-official-zabbix-template-nginx Template tooling version used: 0.42 vendor: name: Zabbix version: 6.4-0 groups: - name: Templates/Applications items: - uuid: 75a7795df3034835bcfd143f7c3e9b94 name: 'Nginx: Service response time' key: 'net.tcp.service.perf[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]' history: 7d value_type: FLOAT units: s tags: - tag: component value: application - tag: component value: health - uuid: f06e76888f464e13b7cc4c3db33e8131 name: 'Nginx: Service status' key: 'net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]' history: 7d valuemap: name: 'Service state' preprocessing: - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 10m tags: - tag: component value: application - tag: component value: health - uuid: 9e2be446ac79491c8be1bcd789392066 name: 'Nginx: Connections accepted per second' type: DEPENDENT key: nginx.connections.accepted.rate delay: '0' history: 7d value_type: FLOAT description: 'The total number of accepted client connections.' preprocessing: - type: REGEX parameters: - 'server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)' - \1 - type: CHANGE_PER_SECOND parameters: - '' master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: 436f2dc87cda418eb8f19ed6910c7bd0 name: 'Nginx: Connections active' type: DEPENDENT key: nginx.connections.active delay: '0' history: 7d description: 'The current number of active client connections including waiting connections.' preprocessing: - type: REGEX parameters: - 'Active connections: ([0-9]+)' - \1 master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: 4027e6db5e024aff98056faa2d4b43cd name: 'Nginx: Connections dropped per second' type: DEPENDENT key: nginx.connections.dropped.rate delay: '0' history: 7d value_type: FLOAT description: 'The total number of dropped client connections.' preprocessing: - type: JAVASCRIPT parameters: - | var a = value.match(/server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)/) if (a) { return a[1]-a[2] } - type: CHANGE_PER_SECOND parameters: - '' master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: 06191636a7104e1bb40d197493b80958 name: 'Nginx: Connections handled per second' type: DEPENDENT key: nginx.connections.handled.rate delay: '0' history: 7d value_type: FLOAT description: 'The total number of handled connections. Generally, the parameter value is the same as for the accepted connections, unless some resource limits have been reached (for example, the `worker_connections limit`).' preprocessing: - type: REGEX parameters: - 'server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)' - \2 - type: CHANGE_PER_SECOND parameters: - '' master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: f5925c78389143c7924432483a5c716c name: 'Nginx: Connections reading' type: DEPENDENT key: nginx.connections.reading delay: '0' history: 7d description: 'The current number of connections where Nginx is reading the request header.' preprocessing: - type: REGEX parameters: - 'Reading: ([0-9]+) Writing: ([0-9]+) Waiting: ([0-9]+)' - \1 master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: d6cfa828ba344ffe948d8d985b849316 name: 'Nginx: Connections waiting' type: DEPENDENT key: nginx.connections.waiting delay: '0' history: 7d description: 'The current number of idle client connections waiting for a request.' preprocessing: - type: REGEX parameters: - 'Reading: ([0-9]+) Writing: ([0-9]+) Waiting: ([0-9]+)' - \3 master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: c038a572f73f4a418ddcc5aeb8b0a547 name: 'Nginx: Connections writing' type: DEPENDENT key: nginx.connections.writing delay: '0' history: 7d description: 'The current number of connections where Nginx is writing a response back to the client.' preprocessing: - type: REGEX parameters: - 'Reading: ([0-9]+) Writing: ([0-9]+) Waiting: ([0-9]+)' - \2 master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: connections - uuid: b28444fb9b834d03a72036882c80b921 name: 'Nginx: Requests total' type: DEPENDENT key: nginx.requests.total delay: '0' history: 7d description: 'The total number of client requests.' preprocessing: - type: REGEX parameters: - 'server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)' - \3 master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: requests - uuid: 2600a696278f490f86cadd8c8836f269 name: 'Nginx: Requests per second' type: DEPENDENT key: nginx.requests.total.rate delay: '0' history: 7d value_type: FLOAT description: 'The total number of client requests.' preprocessing: - type: REGEX parameters: - 'server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)' - \3 - type: CHANGE_PER_SECOND parameters: - '' master_item: key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' tags: - tag: component value: requests - uuid: 3dcc81006977478f92be6dd040d66eb5 name: 'Nginx: Version' type: DEPENDENT key: nginx.version delay: '0' history: 7d trends: '0' status: DISABLED value_type: CHAR preprocessing: - type: REGEX parameters: - 'Server: nginx\/(.+(?last(/Nginx by Zabbix agent/nginx.version,#2) and length(last(/Nginx by Zabbix agent/nginx.version))>0' name: 'Nginx: Version has changed' event_name: 'Nginx: Version has changed (new version: {ITEM.VALUE})' priority: INFO description: 'The Nginx version has changed. Acknowledge (Ack) to close manually.' manual_close: 'YES' tags: - tag: scope value: notice - uuid: d43b4b99b6084076a4feb1fde51ecc40 name: 'Nginx: Get processes summary' key: 'proc.get[,,,summary]' history: 0d trends: '0' value_type: TEXT description: 'The aggregated data of summary metrics for all processes.' tags: - tag: component value: raw - uuid: 52a23a9f6d60490c8f5565b938154f61 name: 'Nginx: Get stub status page' key: 'web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"]' history: 1h trends: '0' value_type: TEXT description: | The following status information is provided: `Active connections` - the current number of active client connections including waiting connections. `Accepted` - the total number of accepted client connections. `Handled` - the total number of handled connections. Generally, the parameter value is the same as for the accepted connections, unless some resource limits have been reached (for example, the `worker_connections` limit). `Requests` - the total number of client requests. `Reading` - the current number of connections where Nginx is reading the request header. `Writing` - the current number of connections where Nginx is writing a response back to the client. `Waiting` - the current number of idle client connections waiting for a request. See also [Module ngx_http_stub_status_module](https://nginx.org/en/docs/http/ngx_http_stub_status_module.html). tags: - tag: component value: application - tag: component value: health discovery_rules: - uuid: f4a898f929c54b3493506e68703fa2cc name: 'Nginx process discovery' type: DEPENDENT key: nginx.proc.discovery delay: '0' filter: evaltype: AND conditions: - macro: '{#NAME}' value: '{$NGINX.PROCESS_NAME}' formulaid: A description: 'The discovery of Nginx process summary.' item_prototypes: - uuid: 632e441011674f04886096475180dcbb name: 'Nginx: Get process data' type: DEPENDENT key: 'nginx.proc.get[{#NAME}]' delay: '0' history: 0d trends: '0' value_type: TEXT description: 'The summary metrics aggregated by a process {#NAME}.' preprocessing: - type: JSONPATH parameters: - '$.[?(@["name"]=="{#NAME}")].first()' error_handler: CUSTOM_VALUE error_handler_params: 'Failed to retrieve process {#NAME} data' master_item: key: 'proc.get[,,,summary]' tags: - tag: component value: raw - uuid: ba3da6baccee4b31947bf20d3cae0e5f name: 'Nginx: Number of running processes' type: DEPENDENT key: 'nginx.proc.num[{#NAME}]' delay: '0' history: 7d description: 'The number of running processes {#NAME}.' preprocessing: - type: JSONPATH parameters: - $.processes error_handler: CUSTOM_VALUE error_handler_params: '0' - type: DISCARD_UNCHANGED_HEARTBEAT parameters: - 1h master_item: key: 'nginx.proc.get[{#NAME}]' tags: - tag: component value: system trigger_prototypes: - uuid: 903e6a1f30154ee49df3f8d87e0164cc expression: 'last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])=0' name: 'Nginx: Process is not running' priority: HIGH tags: - tag: scope value: availability - uuid: 5887d0062bed4233a03d4f408fac7163 name: 'Nginx: Memory usage, %' type: DEPENDENT key: 'nginx.proc.pmem[{#NAME}]' delay: '0' history: 7d value_type: FLOAT units: '%' description: 'The percentage of real memory used by a process {#NAME}.' preprocessing: - type: JSONPATH parameters: - $.pmem error_handler: DISCARD_VALUE master_item: key: 'nginx.proc.get[{#NAME}]' tags: - tag: component value: memory - uuid: 64d208475c034bae953a64cde1833ebb name: 'Nginx: Memory usage (rss)' type: DEPENDENT key: 'nginx.proc.rss[{#NAME}]' delay: '0' history: 7d units: B description: 'The summary of resident set size memory used by a process {#NAME} expressed in bytes.' preprocessing: - type: JSONPATH parameters: - $.rss error_handler: DISCARD_VALUE master_item: key: 'nginx.proc.get[{#NAME}]' tags: - tag: component value: memory - uuid: 21fccb0286fb407c85f1972e994c698e name: 'Nginx: Memory usage (vsize)' type: DEPENDENT key: 'nginx.proc.vmem[{#NAME}]' delay: '0' history: 7d units: B description: 'The summary of virtual memory used by a process {#NAME} expressed in bytes.' preprocessing: - type: JSONPATH parameters: - $.vsize error_handler: DISCARD_VALUE master_item: key: 'nginx.proc.get[{#NAME}]' tags: - tag: component value: memory - uuid: 84c95c1955bf4ccaa12a060a9acdb478 name: 'Nginx: CPU utilization' key: 'proc.cpu.util[{#NAME}]' history: 7d value_type: FLOAT units: '%' description: 'The percentage of the CPU utilization by a process {#NAME}.' tags: - tag: component value: cpu trigger_prototypes: - uuid: a497b80eb03f469c9552881b498003b2 expression: | (find(/Nginx by Zabbix agent/web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"],,"like","HTTP/1.1 200")=0 or nodata(/Nginx by Zabbix agent/web.page.get["{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PATH}","{$NGINX.STUB_STATUS.PORT}"],30m)) and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0 name: 'Nginx: Failed to fetch stub status page' event_name: 'Nginx: Failed to fetch stub status page (or no data for 30m)' priority: WARNING description: 'Zabbix has not received any data for items for the last 30 minutes.' manual_close: 'YES' dependencies: - name: 'Nginx: Service is down' expression: 'last(/Nginx by Zabbix agent/net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"])=0 and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0' tags: - tag: scope value: availability - uuid: f2d431fa9bc446608caa3f80ef27c41b expression: 'min(/Nginx by Zabbix agent/nginx.connections.dropped.rate,5m) > {$NGINX.DROP_RATE.MAX.WARN} and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0' name: 'Nginx: High connections drop rate' event_name: 'Nginx: High connections drop rate (more than {$NGINX.DROP_RATE.MAX.WARN} for 5m)' opdata: 'Current rate: {ITEM.LASTVALUE1}' priority: WARNING description: 'The rate of dropping connections has been greater than {$NGINX.DROP_RATE.MAX.WARN} for the last 5 minutes.' dependencies: - name: 'Nginx: Service is down' expression: 'last(/Nginx by Zabbix agent/net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"])=0 and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0' tags: - tag: scope value: performance - uuid: c043191c22f34522ba4f83430d9f88b1 expression: 'last(/Nginx by Zabbix agent/net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"])=0 and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0' name: 'Nginx: Service is down' priority: AVERAGE manual_close: 'YES' tags: - tag: scope value: availability - uuid: f5db329410a14609a5f3e883ca493cc8 expression: 'min(/Nginx by Zabbix agent/net.tcp.service.perf[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"],5m)>{$NGINX.RESPONSE_TIME.MAX.WARN} and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0' name: 'Nginx: Service response time is too high' event_name: 'Nginx: Service response time is too high (over {$NGINX.RESPONSE_TIME.MAX.WARN}s for 5m)' priority: WARNING manual_close: 'YES' dependencies: - name: 'Nginx: Service is down' expression: 'last(/Nginx by Zabbix agent/net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"])=0 and last(/Nginx by Zabbix agent/nginx.proc.num[{#NAME}])>0' tags: - tag: scope value: performance graph_prototypes: - uuid: 69ca908afa1d468d983a263d06910925 name: 'Nginx: Memory usage[{#NAME}]' graph_items: - drawtype: BOLD_LINE color: 1A7C11 item: host: 'Nginx by Zabbix agent' key: 'nginx.proc.vmem[{#NAME}]' - sortorder: '1' drawtype: BOLD_LINE color: 2774A4 item: host: 'Nginx by Zabbix agent' key: 'nginx.proc.rss[{#NAME}]' master_item: key: 'proc.get[,,,summary]' lld_macro_paths: - lld_macro: '{#NAME}' path: $.name tags: - tag: class value: software - tag: target value: nginx macros: - macro: '{$NGINX.DROP_RATE.MAX.WARN}' value: '1' description: 'The critical rate of the dropped connections for a trigger expression.' - macro: '{$NGINX.PROCESS_NAME}' value: nginx description: 'The process name of the Nginx server.' - macro: '{$NGINX.RESPONSE_TIME.MAX.WARN}' value: '10' description: 'The maximum response time of Nginx expressed in seconds for a trigger expression.' - macro: '{$NGINX.STUB_STATUS.HOST}' value: 0.0.0.0 description: 'The Hostname or an IP addess of the Nginx host or Nginx container of `astub_status`.' - macro: '{$NGINX.STUB_STATUS.PATH}' value: basic_status description: 'The path of the `Nginx stub_status` page.' - macro: '{$NGINX.STUB_STATUS.PORT}' value: '10061' description: 'The port of the `Nginx stub_status` host or container.' dashboards: - uuid: 9d071e3a148c405e85c53ef25d54efaf name: 'Nginx performance' pages: - widgets: - type: graph width: '12' height: '5' fields: - type: INTEGER name: source_type value: '0' - type: GRAPH name: graphid value: host: 'Nginx by Zabbix agent' name: 'Nginx: Connections by state' - type: graph x: '12' width: '12' height: '5' fields: - type: INTEGER name: source_type value: '0' - type: GRAPH name: graphid value: host: 'Nginx by Zabbix agent' name: 'Nginx: Requests per second' - type: graph 'y': '5' width: '12' height: '5' fields: - type: INTEGER name: source_type value: '0' - type: GRAPH name: graphid value: host: 'Nginx by Zabbix agent' name: 'Nginx: Connections per second' valuemaps: - uuid: 53c8528c18814f30a45d1540ab9e5c00 name: 'Service state' mappings: - value: '0' newvalue: Down - value: '1' newvalue: Up graphs: - uuid: ba234158aeca468a8592d944f9aae691 name: 'Nginx: Connections by state' graph_items: - drawtype: BOLD_LINE color: 1A7C11 item: host: 'Nginx by Zabbix agent' key: nginx.connections.active - sortorder: '1' color: 2774A4 item: host: 'Nginx by Zabbix agent' key: nginx.connections.waiting - sortorder: '2' color: F63100 item: host: 'Nginx by Zabbix agent' key: nginx.connections.writing - sortorder: '3' color: A54F10 item: host: 'Nginx by Zabbix agent' key: nginx.connections.reading - uuid: b82a5b89864a47638421458f3e74563d name: 'Nginx: Connections per second' graph_items: - color: 1A7C11 item: host: 'Nginx by Zabbix agent' key: nginx.connections.accepted.rate - sortorder: '1' color: 2774A4 item: host: 'Nginx by Zabbix agent' key: nginx.connections.handled.rate - sortorder: '2' color: F63100 item: host: 'Nginx by Zabbix agent' key: nginx.connections.dropped.rate - uuid: a2d2fec823514df09731381304c245e9 name: 'Nginx: Requests per second' graph_items: - drawtype: GRADIENT_LINE color: 1A7C11 item: host: 'Nginx by Zabbix agent' key: nginx.requests.total.rate