Welcome to mirror list, hosted at ThFree Co, Russian Federation.

README.md « nginx_plus_http « app « templates - github.com/zabbix/zabbix.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ca4abde89b199db729a6e8c0ead894a4dffef2a2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211

# Nginx Plus by HTTP

## Overview

For Zabbix version: 6.2 and higher  
The template to monitor Nginx Plus by Zabbix that work without any external scripts.
Most of the metrics are collected in one go, thanks to Zabbix bulk data collection.

The live activity monitoring data is generated by the [NGINX Plus API](http://nginx.org/en/docs/http/ngx_http_api_module.html).



This template was tested on:

- Nginx Plus, version 1.19.10

## Setup

> See [Zabbix template operation](https://www.zabbix.com/documentation/6.2/manual/config/templates_out_of_the_box/http) for basic instructions.

1. Enable the API following the [official documentation](https://www.nginx.com/products/nginx/live-activity-monitoring/).
2. Set the {$NGINX.API.ENDPOINT} such as `<scheme>://<host>:<port>/<location>/`.

**Note**, depending on the number of zones and upstreams discovery operation may be expensive. Use filters with macros:

- {$NGINX.LLD.FILTER.HTTP.ZONE.MATCHES}
- {$NGINX.LLD.FILTER.HTTP.ZONE.MATCHES}
- {$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.MATCHES}
- {$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.NOT_MATCHES}
- {$NGINX.LLD.FILTER.HTTP.UPSTREAM.MATCHES}"
- {$NGINX.LLD.FILTER.HTTP.UPSTREAM.NOT_MATCHES}
- {$NGINX.LLD.FILTER.STREAM.ZONE.MATCHES}
- {$NGINX.LLD.FILTER.STREAM.ZONE.NOT_MATCHES}
- {$NGINX.LLD.FILTER.STREAM.UPSTREAM.MATCHES}
- {$NGINX.LLD.FILTER.STREAM.UPSTREAM.NOT_MATCHES}
- {$NGINX.LLD.FILTER.RESOLVER.MATCHES}
- {$NGINX.LLD.FILTER.RESOLVER.NOT_MATCHES}

The live activity monitoring data is generated by the [NGINX Plus API](http://nginx.org/en/docs/http/ngx_http_api_module.html).



## Zabbix configuration

No specific Zabbix configuration is required.

### Macros used

|Name|Description|Default|
|----|-----------|-------|
|{$NGINX.API.ENDPOINT} |<p>NGINX Plus API URL in the format `<scheme>://<host>:<port>/<location>/`</p> |`` |
|{$NGINX.DROP_RATE.MAX.WARN} |<p>The critical rate of the dropped connections for trigger expression.</p> |`1` |
|{$NGINX.HTTP.UPSTREAM.4XX.MAX.WARN} |<p>Maximum percentage of errors with status code 4xx (for trigger expression).</p> |`5` |
|{$NGINX.HTTP.UPSTREAM.5XX.MAX.WARN} |<p>Maximum percentage of errors with status code 4xx (for trigger expression).</p> |`5` |
|{$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.MATCHES} |<p>Filter of discoverable HTTP location zones</p> |`.*` |
|{$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.NOT_MATCHES} |<p>Filter to exclude discovered HTTP location zones</p> |`CHANGE_IF_NEEDED` |
|{$NGINX.LLD.FILTER.HTTP.UPSTREAM.MATCHES} |<p>Filter of discoverable HTTP upstreams</p> |`.*` |
|{$NGINX.LLD.FILTER.HTTP.UPSTREAM.NOT_MATCHES} |<p>Filter to exclude discovered HTTP upstreams</p> |`CHANGE_IF_NEEDED` |
|{$NGINX.LLD.FILTER.HTTP.ZONE.MATCHES} |<p>Filter of discoverable HTTP server zones</p> |`.*` |
|{$NGINX.LLD.FILTER.HTTP.ZONE.NOT_MATCHES} |<p>Filter to exclude discovered HTTP server zones</p> |`CHANGE_IF_NEEDED` |
|{$NGINX.LLD.FILTER.RESOLVER.MATCHES} |<p>Filter of discoverable Resolvers</p> |`.*` |
|{$NGINX.LLD.FILTER.RESOLVER.NOT_MATCHES} |<p>Filter to exclude discovered Resolvers</p> |`CHANGE_IF_NEEDED` |
|{$NGINX.LLD.FILTER.STREAM.UPSTREAM.MATCHES} |<p>Filter of discoverable Stream upstreams</p> |`.*` |
|{$NGINX.LLD.FILTER.STREAM.UPSTREAM.NOT_MATCHES} |<p>Filter to exclude discovered Stream upstreams</p> |`CHANGE_IF_NEEDED` |
|{$NGINX.LLD.FILTER.STREAM.ZONE.MATCHES} |<p>Filter of discoverable Stream server zones</p> |`.*` |
|{$NGINX.LLD.FILTER.STREAM.ZONE.NOT_MATCHES} |<p>Filter to exclude discovered Stream server zones</p> |`CHANGE_IF_NEEDED` |

## Template links

There are no template links in this template.

## Discovery rules

|Name|Description|Type|Key and additional info|
|----|-----------|----|----|
|HTTP location zones discovery |<p>-</p> |DEPENDENT |nginx.http.location_zones.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#NAME} MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.NOT_MATCHES}`</p> |
|HTTP server zones discovery |<p>-</p> |DEPENDENT |nginx.http.server_zones.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#NAME} MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.ZONE.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.ZONE.NOT_MATCHES}`</p> |
|HTTP upstream peers discovery |<p>-</p> |DEPENDENT |nginx.http.upstream.peers.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#UPSTREAM} MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.UPSTREAM.MATCHES}`</p><p>- {#UPSTREAM} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.UPSTREAM.NOT_MATCHES}`</p> |
|HTTP upstreams discovery |<p>-</p> |DEPENDENT |nginx.http.upstreams.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#NAME} MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.UPSTREAM.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.HTTP.UPSTREAM.NOT_MATCHES}`</p> |
|Resolvers discovery |<p>-</p> |DEPENDENT |nginx.resolvers.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#NAME} MATCHES_REGEX `{$NGINX.LLD.FILTER.RESOLVER.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.RESOLVER.NOT_MATCHES}`</p> |
|Stream server zones discovery |<p>-</p> |DEPENDENT |nginx.stream.server_zones.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#NAME} MATCHES_REGEX `{$NGINX.LLD.FILTER.STREAM.ZONE.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.STREAM.ZONE.NOT_MATCHES}`</p> |
|Stream upstream peers discovery |<p>-</p> |DEPENDENT |nginx.stream.upstream.peers.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#UPSTREAM} MATCHES_REGEX `{$NGINX.LLD.FILTER.STREAM.UPSTREAM.MATCHES}`</p><p>- {#UPSTREAM} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.STREAM.UPSTREAM.NOT_MATCHES}`</p> |
|Stream upstreams discovery |<p>-</p> |DEPENDENT |nginx.stream.upstreams.discovery<p>**Preprocessing**:</p><p>- JAVASCRIPT: `The text is too long. Please see the template.`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p><p>**Filter**:</p>AND <p>- {#NAME} MATCHES_REGEX `{$NGINX.LLD.FILTER.STREAM.UPSTREAM.MATCHES}`</p><p>- {#NAME} NOT_MATCHES_REGEX `{$NGINX.LLD.FILTER.STREAM.UPSTREAM.NOT_MATCHES}`</p> |

## Items collected

|Group|Name|Description|Type|Key and additional info|
|-----|----|-----------|----|---------------------|
|Nginx |Nginx: Get info error |<p>Nginx error description.</p> |DEPENDENT |nginx.info.error<p>**Preprocessing**:</p><p>- JSONPATH: `$.error.text`</p><p>⛔️ON_FAIL: `CUSTOM_VALUE -> `</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `1h`</p> |
|Nginx |Nginx: Version |<p>Version of nginx.</p> |DEPENDENT |nginx.info.version<p>**Preprocessing**:</p><p>- JSONPATH: `$.version`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Nginx |Nginx: Address |<p>The address of the server that accepted status request.</p> |DEPENDENT |nginx.info.address<p>**Preprocessing**:</p><p>- JSONPATH: `$.address`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Nginx |Nginx: Generation |<p>The total number of configuration reloads.</p> |DEPENDENT |nginx.info.generation<p>**Preprocessing**:</p><p>- JSONPATH: `$.generation`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `30m`</p> |
|Nginx |Nginx: Uptime |<p>Server uptime.</p> |DEPENDENT |nginx.info.uptime<p>**Preprocessing**:</p><p>- JSONPATH: `$.load_timestamp`</p><p>⛔️ON_FAIL: `DISCARD_VALUE -> `</p><p>- JAVASCRIPT: `return Math.floor((Date.now() - new Date(value)) / 1000);`</p> |
|Nginx |Nginx: Connections accepted, rate |<p>The total number of accepted client connections per second.</p> |DEPENDENT |nginx.connections.accepted.rate<p>**Preprocessing**:</p><p>- JSONPATH: `$.accepted`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Connections dropped |<p>The total number of dropped client connections.</p> |DEPENDENT |nginx.connections.dropped<p>**Preprocessing**:</p><p>- JSONPATH: `$.dropped`</p> |
|Nginx |Nginx: Connections active |<p>The current number of active client connections.</p> |DEPENDENT |nginx.connections.active<p>**Preprocessing**:</p><p>- JSONPATH: `$.active`</p> |
|Nginx |Nginx: Connections idle |<p>The current number of idle client connections.</p> |DEPENDENT |nginx.connections.idle<p>**Preprocessing**:</p><p>- JSONPATH: `$.idle`</p> |
|Nginx |Nginx: SSL handshakes, rate |<p>The total number of successful SSL handshakes per second.</p> |DEPENDENT |nginx.ssl.handshakes.rate<p>**Preprocessing**:</p><p>- JSONPATH: `$.handshakes`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: SSL handshakes failed, rate |<p>The total number of failed SSL handshakes per second.</p> |DEPENDENT |nginx.ssl.handshakes_failed.rate<p>**Preprocessing**:</p><p>- JSONPATH: `$.handshakes_failed`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: SSL session reuses, rate |<p>The total number of session reuses during SSL handshake per second.</p> |DEPENDENT |nginx.ssl.session_reuses.rate<p>**Preprocessing**:</p><p>- JSONPATH: `$.session_reuses`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Requests total, rate |<p>The total number of client requests per second.</p> |DEPENDENT |nginx.requests.total.rate<p>**Preprocessing**:</p><p>- JSONPATH: `$.total`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Requests current |<p>The current number of client requests.</p> |DEPENDENT |nginx.requests.current<p>**Preprocessing**:</p><p>- JSONPATH: `$.current`</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Processing |<p>The number of client requests that are currently being processed.</p> |DEPENDENT |nginx.http.server_zones.processing[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].processing`</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Requests, rate |<p>The total number of client requests received from clients per second.</p> |DEPENDENT |nginx.http.server_zones.requests.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].requests`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Responses 1xx, rate |<p>The number of responses with “1xx” status codes per second.</p> |DEPENDENT |nginx.http.server_zones.responses.1xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.1xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Responses 2xx, rate |<p>The number of responses with “2xx” status codes per second.</p> |DEPENDENT |nginx.http.server_zones.responses.2xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.2xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Responses 3xx, rate |<p>The number of responses with “3xx” status codes per second.</p> |DEPENDENT |nginx.http.server_zones.responses.3xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.3xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Responses 4xx, rate |<p>The number of responses with “4xx” status codes per second.</p> |DEPENDENT |nginx.http.server_zones.responses.4xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.4xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Responses 5xx, rate |<p>The number of responses with “5xx” status codes per second.</p> |DEPENDENT |nginx.http.server_zones.responses.5xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.5xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Responses total, rate |<p>The total number of responses sent to clients per second.</p> |DEPENDENT |nginx.http.server_zones.responses.total.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.total`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Discarded, rate |<p>The total number of requests completed without sending a response per second.</p> |DEPENDENT |nginx.http.server_zones.discarded.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].discarded`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Received, rate |<p>The total number of bytes received from clients per second.</p> |DEPENDENT |nginx.http.server_zones.received.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].received`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP server zone [{#NAME}]: Sent, rate |<p>The total number of bytes sent to clients per second.</p> |DEPENDENT |nginx.http.server_zones.sent.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sent`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Requests, rate |<p>The total number of client requests received from clients per second.</p> |DEPENDENT |nginx.http.location_zones.requests.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].requests`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Responses 1xx, rate |<p>The number of responses with “1xx” status codes per second.</p> |DEPENDENT |nginx.http.location_zones.responses.1xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.1xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Responses 2xx, rate |<p>The number of responses with “2xx” status codes per second.</p> |DEPENDENT |nginx.http.location_zones.responses.2xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.2xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Responses 3xx, rate |<p>The number of responses with “3xx” status codes per second.</p> |DEPENDENT |nginx.http.location_zones.responses.3xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.3xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Responses 4xx, rate |<p>The number of responses with “4xx” status codes per second.</p> |DEPENDENT |nginx.http.location_zones.responses.4xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.4xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Responses 5xx, rate |<p>The number of responses with “5xx” status codes per second.</p> |DEPENDENT |nginx.http.location_zones.responses.5xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.5xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Responses total, rate |<p>The total number of responses sent to clients per second.</p> |DEPENDENT |nginx.http.location_zones.responses.total.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.total`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Discarded, rate |<p>The total number of requests completed without sending a response per second.</p> |DEPENDENT |nginx.http.location_zones.discarded.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].discarded`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Received, rate |<p>The total number of bytes received from clients per second.</p> |DEPENDENT |nginx.http.location_zones.received.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].received`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP location zone [{#NAME}]: Sent, rate |<p>The total number of bytes sent to clients per second.</p> |DEPENDENT |nginx.http.location_zones.sent.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sent`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#NAME}]: Keepalive |<p>The current number of idle keepalive connections.</p> |DEPENDENT |nginx.http.upstreams.keepalive[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].keepalive`</p> |
|Nginx |Nginx: HTTP upstream [{#NAME}]: Zombies |<p>The current number of servers removed from the group but still processing active client requests.</p> |DEPENDENT |nginx.http.upstreams.zombies[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].zombies`</p> |
|Nginx |Nginx: HTTP upstream [{#NAME}]: Zone |<p>The name of the shared memory zone that keeps the group's configuration and run-time state.</p> |DEPENDENT |nginx.http.upstreams.zone[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].zone`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: State |<p>Current state, which may be one of “up”, “draining”, “down”, “unavail”, “checking”, and “unhealthy”.</p> |DEPENDENT |nginx.http.upstream.peer.state[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].state.first()`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Active |<p>The current number of active connections.</p> |DEPENDENT |nginx.http.upstream.peer.active[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].active.first()`</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Requests, rate |<p>The total number of client requests forwarded to this server per second.</p> |DEPENDENT |nginx.http.upstream.peer.requests.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].requests.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 1xx, rate |<p>The number of responses with “1xx” status codes per second.</p> |DEPENDENT |nginx.http.upstream.peer.responses.1xx.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].responses.1xx.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 2xx, rate |<p>The number of responses with “2xx” status codes per second.</p> |DEPENDENT |nginx.http.upstream.peer.responses.2xx.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].responses.2xx.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 3xx, rate |<p>The number of responses with “3xx” status codes per second.</p> |DEPENDENT |nginx.http.upstream.peer.responses.3xx.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].responses.3xx.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 4xx, rate |<p>The number of responses with “4xx” status codes per second.</p> |DEPENDENT |nginx.http.upstream.peer.responses.4xx.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].responses.4xx.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 5xx, rate |<p>The number of responses with “5xx” status codes per second.</p> |DEPENDENT |nginx.http.upstream.peer.responses.5xx.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].responses.5xx.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses total, rate |<p>The total number of responses obtained from this server.</p> |DEPENDENT |nginx.http.upstream.peer.responses.total.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].responses.total.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Sent, rate |<p>The total number of bytes sent to this server per second.</p> |DEPENDENT |nginx.http.upstream.peer.sent.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].sent.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Received, rate |<p>The total number of bytes received from this server per second.</p> |DEPENDENT |nginx.http.upstream.peer.received.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].received.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Fails, rate |<p>The total number of unsuccessful attempts to communicate with the server per second.</p> |DEPENDENT |nginx.http.upstream.peer.fails.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].fails.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Unavail |<p>How many times the server became unavailable for client requests (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold.</p> |DEPENDENT |nginx.http.upstream.peer.unavail.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].unavail.first()`</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Header time |<p>The average time to get the response header from the server.</p> |DEPENDENT |nginx.http.upstream.peer.header_time.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].header_time.first()`</p><p>⛔️ON_FAIL: `DISCARD_VALUE -> `</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Response time |<p>The average time to get the full response from the server.</p> |DEPENDENT |nginx.http.upstream.peer.response_time.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].response_time.first()`</p><p>⛔️ON_FAIL: `DISCARD_VALUE -> `</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, check |<p>The total number of health check requests made.</p> |DEPENDENT |nginx.http.upstream.peer.health_checks.checks[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].health_checks.checks.first()`</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, fails |<p>The number of failed health checks.</p> |DEPENDENT |nginx.http.upstream.peer.health_checks.fails[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].health_checks.fails.first()`</p> |
|Nginx |Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, unhealthy |<p>How many times the server became unhealthy (state “unhealthy”).</p> |DEPENDENT |nginx.http.upstream.peer.health_checks.unhealthy[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].health_checks.unhealthy.first()`</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Processing |<p>The number of client connections that are currently being processed.</p> |DEPENDENT |nginx.stream.server_zones.processing[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].processing`</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Connections, rate |<p>The total number of connections accepted from clients per second.</p> |DEPENDENT |nginx.stream.server_zones.connections.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].connections`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Sessions 2xx, rate |<p>The total number of sessions completed with status codes “2xx” per second.</p> |DEPENDENT |nginx.stream.server_zones.sessions.2xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sessions.2xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Sessions 4xx, rate |<p>The total number of sessions completed with status codes “4xx” per second.</p> |DEPENDENT |nginx.stream.server_zones.sessions.4xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sessions.4xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Sessions 5xx, rate |<p>The total number of sessions completed with status codes “5xx” per second.</p> |DEPENDENT |nginx.stream.server_zones.sessions.5xx.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sessions.5xx`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Sessions total, rate |<p>The total number of completed client sessions per second.</p> |DEPENDENT |nginx.stream.server_zones.sessions.total.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sessions.total`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Discarded, rate |<p>The total number of connections completed without creating a session per second.</p> |DEPENDENT |nginx.stream.server_zones.discarded.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].discarded`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Received, rate |<p>The total number of bytes received from clients per second.</p> |DEPENDENT |nginx.stream.server_zones.received.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].received`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream server zone [{#NAME}]: Sent, rate |<p>The total number of bytes sent to clients per second.</p> |DEPENDENT |nginx.stream.server_zones.sent.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].sent`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream upstream [{#NAME}]: Zombies | |DEPENDENT |nginx.stream.upstreams.zombies[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].zombies`</p> |
|Nginx |Nginx: Stream upstream [{#NAME}]: Zone | |DEPENDENT |nginx.stream.upstreams.zone[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].zone`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: State |<p>Current state, which may be one of “up”, “draining”, “down”, “unavail”, “checking”, and “unhealthy”.</p> |DEPENDENT |nginx.stream.upstream.peer.state[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].state.first()`</p><p>- DISCARD_UNCHANGED_HEARTBEAT: `3h`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Active |<p>The current number of connections.</p> |DEPENDENT |nginx.stream.upstream.peer.active[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].active.first()`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Sent, rate |<p>The total number of bytes sent to this server per second.</p> |DEPENDENT |nginx.stream.upstream.peer.sent.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].sent.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Received, rate |<p>The total number of bytes received from this server per second.</p> |DEPENDENT |nginx.stream.upstream.peer.received.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].received.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Fails, rate |<p>The total number of unsuccessful attempts to communicate with the server per second.</p> |DEPENDENT |nginx.stream.upstream.peer.fails.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].fails.first()`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Unavail |<p>How many times the server became unavailable for client requests (state “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold.</p> |DEPENDENT |nginx.stream.upstream.peer.unavail.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].unavail.first()`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Connections |<p>The total number of client connections forwarded to this server.</p> |DEPENDENT |nginx.stream.upstream.peer.connections.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].connections.first()`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Connect time |<p>The average time to connect to the upstream server.</p> |DEPENDENT |nginx.stream.upstream.peer.connect_time.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].connect_time.first()`</p><p>⛔️ON_FAIL: `DISCARD_VALUE -> `</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: First byte time |<p>The average time to receive the first byte of data.</p> |DEPENDENT |nginx.stream.upstream.peer.first_byte_time.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].first_byte_time.first()`</p><p>⛔️ON_FAIL: `DISCARD_VALUE -> `</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Response time |<p>The average time to receive the last byte of data.</p> |DEPENDENT |nginx.stream.upstream.peer.response_time.rate[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].response_time.first()`</p><p>⛔️ON_FAIL: `DISCARD_VALUE -> `</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, check |<p>The total number of health check requests made.</p> |DEPENDENT |nginx.stream.upstream.peer.health_checks.checks[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].health_checks.checks.first()`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, fails |<p>The number of failed health checks.</p> |DEPENDENT |nginx.stream.upstream.peer.health_checks.fails[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].health_checks.fails.first()`</p> |
|Nginx |Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, unhealthy |<p>How many times the server became unhealthy (state “unhealthy”).</p> |DEPENDENT |nginx.stream.upstream.peer.health_checks.unhealthy[{#UPSTREAM},{#PEER}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].health_checks.unhealthy.first()`</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Requests name, rate |<p>The total number of requests to resolve names to addresses per second.</p> |DEPENDENT |nginx.resolvers.requests.name.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].requests.name`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Requests srv, rate |<p>The total number of requests to resolve SRV records per second.</p> |DEPENDENT |nginx.resolvers.requests.srv.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].requests.srv`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Requests addr, rate |<p>The total number of requests to resolve addresses to names per second.</p> |DEPENDENT |nginx.resolvers.requests.addr.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].requests.addr`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses noerror, rate |<p>The total number of successful responses per second.</p> |DEPENDENT |nginx.resolvers.responses.noerror.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.noerror`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses formerr, rate |<p>The total number of FORMERR (Format error) responses per second.</p> |DEPENDENT |nginx.resolvers.responses.formerr.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.formerr`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses servfail, rate |<p>The total number of SERVFAIL (Server failure) responses per second.</p> |DEPENDENT |nginx.resolvers.responses.servfail.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.servfail`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses nxdomain, rate |<p>The total number of NXDOMAIN (Host not found) responses per second.</p> |DEPENDENT |nginx.resolvers.responses.nxdomain.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.nxdomain`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses notimp, rate |<p>The total number of NOTIMP (Unimplemented) responses per second.</p> |DEPENDENT |nginx.resolvers.responses.notimp.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.notimp`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses refused, rate |<p>The total number of REFUSED (Operation refused) responses per second.</p> |DEPENDENT |nginx.resolvers.responses.refused.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.refused`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses timedout, rate |<p>The total number of timed out requests per second.</p> |DEPENDENT |nginx.resolvers.responses.timedout.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.timedout`</p><p>- CHANGE_PER_SECOND</p> |
|Nginx |Nginx: Resolver [{#NAME}]: Responses unknown, rate |<p>The total number of requests completed with an unknown error per second.</p> |DEPENDENT |nginx.resolvers.responses.unknown.rate[{#NAME}]<p>**Preprocessing**:</p><p>- JSONPATH: `$['{#NAME}'].responses.unknown`</p><p>- CHANGE_PER_SECOND</p> |
|Zabbix raw items |Nginx: Get info |<p>Return status of nginx running instance.</p> |HTTP_AGENT |nginx.info |
|Zabbix raw items |Nginx: Get connections |<p>Returns statistics of client connections.</p> |HTTP_AGENT |nginx.connections |
|Zabbix raw items |Nginx: Get SSL |<p>Returns SSL statistics.</p> |HTTP_AGENT |nginx.ssl |
|Zabbix raw items |Nginx: Get requests |<p>Returns status of client HTTP requests.</p> |HTTP_AGENT |nginx.requests |
|Zabbix raw items |Nginx: Get HTTP zones |<p>Returns status information for each HTTP server zone.</p> |HTTP_AGENT |nginx.http.server_zones |
|Zabbix raw items |Nginx: Get HTTP location zones |<p>Returns status information for each HTTP location zone.</p> |HTTP_AGENT |nginx.http.location_zones |
|Zabbix raw items |Nginx: Get HTTP upstreams |<p>Returns status of each HTTP upstream server group and its servers.</p> |HTTP_AGENT |nginx.http.upstreams |
|Zabbix raw items |Nginx: Get Stream server zones |<p>Returns status information for each stream server zone.</p> |HTTP_AGENT |nginx.stream.server_zones |
|Zabbix raw items |Nginx: Get Stream upstreams |<p>Returns status of each stream upstream server group and its servers.</p> |HTTP_AGENT |nginx.stream.upstreams |
|Zabbix raw items |Nginx: Get resolvers |<p>Returns status information for each resolver zone.</p> |HTTP_AGENT |nginx.resolvers |

## Triggers

|Name|Description|Expression|Severity|Dependencies and additional info|
|----|-----------|----|----|----|
|Nginx: Server response error |<p>-</p> |`length(last(/Nginx Plus by HTTP/nginx.info.error))>0` |HIGH | |
|Nginx: Version has changed |<p>Nginx version has changed. Ack to close.</p> |`last(/Nginx Plus by HTTP/nginx.info.version,#1)<>last(/Nginx Plus by HTTP/nginx.info.version,#2) and length(last(/Nginx Plus by HTTP/nginx.info.version))>0` |INFO |<p>Manual close: YES</p> |
|Nginx: has been restarted |<p>Uptime is less than 10 minutes.</p> |`last(/Nginx Plus by HTTP/nginx.info.uptime)<10m` |INFO |<p>Manual close: YES</p> |
|Nginx: Failed to fetch info data |<p>Zabbix has not received data for metrics for the last 30 minutes</p> |`nodata(/Nginx Plus by HTTP/nginx.info.uptime,30m)=1` |WARNING |<p>Manual close: YES</p> |
|Nginx: High connections drop rate |<p>The dropping rate connections is greater than {$NGINX.DROP_RATE.MAX.WARN} for the last 5 minutes.</p> |`min(/Nginx Plus by HTTP/nginx.connections.dropped,5m) > {$NGINX.DROP_RATE.MAX.WARN}` |WARNING | |
|Nginx: HTTP upstream server is not in UP or DOWN state. |<p>-</p> |`find(/Nginx Plus by HTTP/nginx.http.upstream.peer.state[{#UPSTREAM},{#PEER}],,"like","up")=0 and find(/Nginx Plus by HTTP/nginx.http.upstream.peer.state[{#UPSTREAM},{#PEER}],,"like","down")=0` |WARNING | |
|Nginx: Too many HTTP requests with code 4xx |<p>-</p> |`sum(/Nginx Plus by HTTP/nginx.http.upstream.peer.responses.4xx.rate[{#UPSTREAM},{#PEER}],5m) > (sum(/Nginx Plus by HTTP/nginx.http.upstream.peer.responses.total.rate[{#UPSTREAM},{#PEER}],5m)*({$NGINX.HTTP.UPSTREAM.4XX.MAX.WARN}/100))` |WARNING | |
|Nginx: Too many HTTP requests with code 5xx |<p>-</p> |`sum(/Nginx Plus by HTTP/nginx.http.upstream.peer.responses.5xx.rate[{#UPSTREAM},{#PEER}],5m) > (sum(/Nginx Plus by HTTP/nginx.http.upstream.peer.responses.total.rate[{#UPSTREAM},{#PEER}],5m)*({$NGINX.HTTP.UPSTREAM.5XX.MAX.WARN}/100))` |HIGH | |
|Nginx: Stream upstream server is not in UP or DOWN state. |<p>-</p> |`find(/Nginx Plus by HTTP/nginx.stream.upstream.peer.state[{#UPSTREAM},{#PEER}],,"like","up")=0 and find(/Nginx Plus by HTTP/nginx.stream.upstream.peer.state[{#UPSTREAM},{#PEER}],,"like","down")=0` |WARNING | |

## Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template or ask for help with it at [ZABBIX forums](https://www.zabbix.com/forum/zabbix-suggestions-and-feedback).