You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yzl 93958d0fb0
zabbix6.0
1 year ago
..
README.md zabbix6.0 1 year ago
template_app_nginx_plus_http.yaml zabbix6.0 1 year ago

README.md

NGINX Plus by HTTP

Overview

This template is designed for the effortless deployment of Nginx Plus monitoring by Zabbix via HTTP and doesn't require any external scripts.

The monitoring data of the live activity is generated by the NGINX Plus API.

Requirements

Zabbix version: 7.0 and higher.

Tested versions

This template has been tested on:

  • NGINX Plus 1.19.10

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

  1. Enable the NGINX Plus API.

Refer to the vendor documentation.

  1. Set the {$NGINX.API.ENDPOINT} such as <scheme>://<host>:<port>/<location>/.

Note that depending on the number of zones and upstreams discovery operation may be expensive. Therefore, use the following filters with these macros:

  • {$NGINX.LLD.FILTER.HTTP.ZONE.MATCHES}
  • {$NGINX.LLD.FILTER.HTTP.ZONE.NOT_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}

Macros used

Name Description Default
{$NGINX.API.ENDPOINT}

NGINX Plus API URL in the format <scheme>://<host>:<port>/<location>/.

{$NGINX.LLD.FILTER.HTTP.ZONE.MATCHES}

The filter to include the necessary discovered HTTP server zones.

.*
{$NGINX.LLD.FILTER.HTTP.ZONE.NOT_MATCHES}

The filter to exclude discovered HTTP server zones.

CHANGE_IF_NEEDED
{$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.MATCHES}

The filter to include the necessary discovered HTTP location zones.

.*
{$NGINX.LLD.FILTER.HTTP.LOCATION.ZONE.NOT_MATCHES}

The filter to exclude discovered HTTP location zones.

CHANGE_IF_NEEDED
{$NGINX.LLD.FILTER.HTTP.UPSTREAM.MATCHES}

The filter to include the necessary discovered HTTP upstreams.

.*
{$NGINX.LLD.FILTER.HTTP.UPSTREAM.NOT_MATCHES}

The filter to exclude discovered HTTP upstreams.

CHANGE_IF_NEEDED
{$NGINX.LLD.FILTER.STREAM.ZONE.MATCHES}

The filter to include discovered server zones of the "stream" directive.

.*
{$NGINX.LLD.FILTER.STREAM.ZONE.NOT_MATCHES}

The filter to exclude discovered server zones of the "stream" directive.

CHANGE_IF_NEEDED
{$NGINX.LLD.FILTER.STREAM.UPSTREAM.MATCHES}

The filter to include the necessary discovered upstreams of the "stream" directive.

.*
{$NGINX.LLD.FILTER.STREAM.UPSTREAM.NOT_MATCHES}

The filter to exclude discovered upstreams of the "stream" directive

CHANGE_IF_NEEDED
{$NGINX.LLD.FILTER.RESOLVER.MATCHES}

The filter to include the necessary discovered Resolvers.

.*
{$NGINX.LLD.FILTER.RESOLVER.NOT_MATCHES}

The filter to exclude discovered Resolvers.

CHANGE_IF_NEEDED
{$NGINX.DROP_RATE.MAX.WARN}

The critical rate of the dropped connections for a trigger expression.

1
{$NGINX.HTTP.UPSTREAM.4XX.MAX.WARN}

The maximum percentage of errors with the status code 4xx (for a trigger expression).

5
{$NGINX.HTTP.UPSTREAM.5XX.MAX.WARN}

The maximum percentage of errors with the status code 5xx (for a trigger expression).

5

Items

Name Description Type Key and additional info
Nginx: Get info

Return status of the NGINX running instance.

HTTP agent nginx.info
Nginx: Get connections

Returns the statistics of client connections.

HTTP agent nginx.connections
Nginx: Get SSL

Returns the SSL statistics.

HTTP agent nginx.ssl
Nginx: Get requests

Returns the status of the client's HTTP requests.

HTTP agent nginx.requests
Nginx: Get HTTP zones

Returns the status information for each HTTP server zone.

HTTP agent nginx.http.server_zones
Nginx: Get HTTP location zones

Returns the status information for each HTTP location zone.

HTTP agent nginx.http.location_zones
Nginx: Get HTTP upstreams

Returns the status of each HTTP upstream server group and its servers.

HTTP agent nginx.http.upstreams
Nginx: Get Stream server zones

Returns the status information for each server zone configured in the "stream" directive.

HTTP agent nginx.stream.server_zones
Nginx: Get Stream upstreams

Returns status of each stream upstream server group and its servers.

HTTP agent nginx.stream.upstreams
Nginx: Get resolvers

Returns the status information for each Resolver zone.

HTTP agent nginx.resolvers
Nginx: Get info error

The description of NGINX errors.

Dependent item nginx.info.error

Preprocessing

  • JSON Path: $.error.text

    Custom on fail: Set value to: ``

  • Discard unchanged with heartbeat: 1h

Nginx: Version

A version number of NGINX.

Dependent item nginx.info.version

Preprocessing

  • JSON Path: $.version

  • Discard unchanged with heartbeat: 3h

Nginx: Address

The address of the server that accepted status request.

Dependent item nginx.info.address

Preprocessing

  • JSON Path: $.address

  • Discard unchanged with heartbeat: 3h

Nginx: Generation

The total number of configuration reloads.

Dependent item nginx.info.generation

Preprocessing

  • JSON Path: $.generation

  • Discard unchanged with heartbeat: 30m

Nginx: Uptime

The server uptime.

Dependent item nginx.info.uptime

Preprocessing

  • JSON Path: $.load_timestamp

    Custom on fail: Discard value

  • JavaScript: The text is too long. Please see the template.

Nginx: Connections accepted, rate

The total number of accepted client connections per second.

Dependent item nginx.connections.accepted.rate

Preprocessing

  • JSON Path: $.accepted

  • Change per second
Nginx: Connections dropped

The total number of dropped client connections.

Dependent item nginx.connections.dropped

Preprocessing

  • JSON Path: $.dropped

Nginx: Connections active

The current number of active client connections.

Dependent item nginx.connections.active

Preprocessing

  • JSON Path: $.active

Nginx: Connections idle

The current number of idle client connections.

Dependent item nginx.connections.idle

Preprocessing

  • JSON Path: $.idle

Nginx: SSL handshakes, rate

The total number of successful SSL handshakes per second.

Dependent item nginx.ssl.handshakes.rate

Preprocessing

  • JSON Path: $.handshakes

  • Change per second
Nginx: SSL handshakes failed, rate

The total number of failed SSL handshakes per second.

Dependent item nginx.ssl.handshakes_failed.rate

Preprocessing

  • JSON Path: $.handshakes_failed

  • Change per second
Nginx: SSL session reuses, rate

The total number of session reuses during SSL handshake per second.

Dependent item nginx.ssl.session_reuses.rate

Preprocessing

  • JSON Path: $.session_reuses

  • Change per second
Nginx: Requests total, rate

The total number of client requests per second.

Dependent item nginx.requests.total.rate

Preprocessing

  • JSON Path: $.total

  • Change per second
Nginx: Requests current

The current number of client requests.

Dependent item nginx.requests.current

Preprocessing

  • JSON Path: $.current

Triggers

Name Description Expression Severity Dependencies and additional info
Nginx: Server response error length(last(/NGINX Plus by HTTP/nginx.info.error))>0 High
Nginx: Version has changed

The Nginx version has changed. Acknowledge to close the problem manually.

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 Manual close: Yes
Nginx: Host has been restarted

Uptime is less than 10 minutes.

last(/NGINX Plus by HTTP/nginx.info.uptime)<10m Info Manual close: Yes
Nginx: Failed to fetch info data

Zabbix has not received any data for metrics for the last 30 minutes

nodata(/NGINX Plus by HTTP/nginx.info.uptime,30m)=1 Warning Manual close: Yes
Nginx: High connections drop rate

The rate of dropped connections is greater than {$NGINX.DROP_RATE.MAX.WARN} for the last 5 minutes.

min(/NGINX Plus by HTTP/nginx.connections.dropped,5m) > {$NGINX.DROP_RATE.MAX.WARN} Warning

LLD rule HTTP server zones discovery

Name Description Type Key and additional info
HTTP server zones discovery Dependent item nginx.http.server_zones.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for HTTP server zones discovery

Name Description Type Key and additional info
Nginx: HTTP server zone [{#NAME}]: Raw data

The raw data of the HTTP server zone with the name {#NAME} .

Dependent item nginx.http.server_zones.raw[{#NAME}]

Preprocessing

  • JSON Path: $['{#NAME}']

Nginx: HTTP server zone [{#NAME}]: Processing

The number of client requests that are currently being processed.

Dependent item nginx.http.server_zones.processing[{#NAME}]

Preprocessing

  • JSON Path: $.processing

Nginx: HTTP server zone [{#NAME}]: Requests, rate

The total number of client requests received from clients per second.

Dependent item nginx.http.server_zones.requests.rate[{#NAME}]

Preprocessing

  • JSON Path: $.requests

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Responses 1xx, rate

The number of responses with 1xx status code per second.

Dependent item nginx.http.server_zones.responses.1xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.1xx

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Responses 2xx, rate

The number of responses with 2xx status code per second.

Dependent item nginx.http.server_zones.responses.2xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.2xx

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Responses 3xx, rate

The number of responses with 3xx status code per second.

Dependent item nginx.http.server_zones.responses.3xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.3xx

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Responses 4xx, rate

The number of responses with 4xx status code per second.

Dependent item nginx.http.server_zones.responses.4xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.4xx

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Responses 5xx, rate

The number of responses with 5xx status code per second.

Dependent item nginx.http.server_zones.responses.5xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.5xx

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Responses total, rate

The total number of responses sent to clients per second.

Dependent item nginx.http.server_zones.responses.total.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.total

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Discarded, rate

The total number of requests completed without sending a response per second.

Dependent item nginx.http.server_zones.discarded.rate[{#NAME}]

Preprocessing

  • JSON Path: $.discarded

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Received, rate

The total number of bytes received from clients per second.

Dependent item nginx.http.server_zones.received.rate[{#NAME}]

Preprocessing

  • JSON Path: $.received

  • Change per second
Nginx: HTTP server zone [{#NAME}]: Sent, rate

The total number of bytes sent to clients per second.

Dependent item nginx.http.server_zones.sent.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sent

  • Change per second

LLD rule HTTP location zones discovery

Name Description Type Key and additional info
HTTP location zones discovery Dependent item nginx.http.location_zones.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for HTTP location zones discovery

Name Description Type Key and additional info
Nginx: HTTP location zone [{#NAME}]: Raw data

The raw data of the location zone with the name {#NAME}.

Dependent item nginx.http.location_zones.raw[{#NAME}]

Preprocessing

  • JSON Path: $['{#NAME}']

Nginx: HTTP location zone [{#NAME}]: Requests, rate

The total number of client requests received from clients per second.

Dependent item nginx.http.location_zones.requests.rate[{#NAME}]

Preprocessing

  • JSON Path: $.requests

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Responses 1xx, rate

The number of responses with 1xx status code per second.

Dependent item nginx.http.location_zones.responses.1xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.1xx

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Responses 2xx, rate

The number of responses with 2xx status code per second.

Dependent item nginx.http.location_zones.responses.2xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.2xx

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Responses 3xx, rate

The number of responses with 3xx status code per second.

Dependent item nginx.http.location_zones.responses.3xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.3xx

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Responses 4xx, rate

The number of responses with 4xx status code per second.

Dependent item nginx.http.location_zones.responses.4xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.4xx

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Responses 5xx, rate

The number of responses with 5xx status code per second.

Dependent item nginx.http.location_zones.responses.5xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.5xx

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Responses total, rate

The total number of responses sent to clients per second.

Dependent item nginx.http.location_zones.responses.total.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.total

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Discarded, rate

The total number of requests completed without sending a response per second.

Dependent item nginx.http.location_zones.discarded.rate[{#NAME}]

Preprocessing

  • JSON Path: $.discarded

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Received, rate

The total number of bytes received from clients per second.

Dependent item nginx.http.location_zones.received.rate[{#NAME}]

Preprocessing

  • JSON Path: $.received

  • Change per second
Nginx: HTTP location zone [{#NAME}]: Sent, rate

The total number of bytes sent to clients per second.

Dependent item nginx.http.location_zones.sent.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sent

  • Change per second

LLD rule HTTP upstreams discovery

Name Description Type Key and additional info
HTTP upstreams discovery Dependent item nginx.http.upstreams.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for HTTP upstreams discovery

Name Description Type Key and additional info
Nginx: HTTP upstream [{#NAME}]: Raw data

The raw data of the HTTP upstream with the name {#NAME}.

Dependent item nginx.http.upstreams.raw[{#NAME}]

Preprocessing

  • JSON Path: $['{#NAME}']

Nginx: HTTP upstream [{#NAME}]: Keepalive

The current number of idle keepalive connections.

Dependent item nginx.http.upstreams.keepalive[{#NAME}]

Preprocessing

  • JSON Path: $.keepalive

Nginx: HTTP upstream [{#NAME}]: Zombies

The current number of servers removed from the group but still processing active client requests.

Dependent item nginx.http.upstreams.zombies[{#NAME}]

Preprocessing

  • JSON Path: $.zombies

Nginx: HTTP upstream [{#NAME}]: Zone

The name of the shared memory zone that keeps the group's configuration and run-time state.

Dependent item nginx.http.upstreams.zone[{#NAME}]

Preprocessing

  • JSON Path: $.zone

  • Discard unchanged with heartbeat: 3h

LLD rule HTTP upstream peers discovery

Name Description Type Key and additional info
HTTP upstream peers discovery Dependent item nginx.http.upstream.peers.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for HTTP upstream peers discovery

Name Description Type Key and additional info
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Raw data

The raw data of the HTTP upstream with the name [{#UPSTREAM}]and peer with the name[{#PEER}].

Dependent item nginx.http.upstream.peer.raw[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].first()

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: State

The current state, which may be one of “up”, “draining”, “down”, “unavail”, “checking”, and “unhealthy”.

Dependent item nginx.http.upstream.peer.state[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.state

  • Discard unchanged with heartbeat: 3h

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Active

The current number of active connections.

Dependent item nginx.http.upstream.peer.active[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.active

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Requests, rate

The total number of client requests forwarded to this server per second.

Dependent item nginx.http.upstream.peer.requests.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.requests

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 1xx, rate

The number of responses with 1xx status code per second.

Dependent item nginx.http.upstream.peer.responses.1xx.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.responses.1xx

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 2xx, rate

The number of responses with 2xx status code per second.

Dependent item nginx.http.upstream.peer.responses.2xx.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.responses.2xx

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 3xx, rate

The number of responses with 3xx status code per second.

Dependent item nginx.http.upstream.peer.responses.3xx.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.responses.3xx

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 4xx, rate

The number of responses with 4xx status code per second.

Dependent item nginx.http.upstream.peer.responses.4xx.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.responses.4xx

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses 5xx, rate

The number of responses with 5xx status code per second.

Dependent item nginx.http.upstream.peer.responses.5xx.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.responses.5xx

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Responses total, rate

The total number of responses obtained from this server.

Dependent item nginx.http.upstream.peer.responses.total.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.responses.total

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Sent, rate

The total number of bytes sent to this server per second.

Dependent item nginx.http.upstream.peer.sent.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.sent

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Received, rate

The total number of bytes received from this server per second.

Dependent item nginx.http.upstream.peer.received.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.received

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Fails, rate

The total number of unsuccessful attempts to communicate with the server per second.

Dependent item nginx.http.upstream.peer.fails.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.fails

  • Change per second
Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Unavail

Displays how many times the server has become unavailable for client requests (the state - “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold.

Dependent item nginx.http.upstream.peer.unavail.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.unavail

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Header time

The average time to get the response header from the server.

Dependent item nginx.http.upstream.peer.header_time.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.header_time

    Custom on fail: Discard value

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Response time

The average time to get the full response from the server.

Dependent item nginx.http.upstream.peer.response_time.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.response_time

    Custom on fail: Discard value

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, check

The total number of health check requests made.

Dependent item nginx.http.upstream.peer.health_checks.checks[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.health_checks.checks

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, fails

The number of failed health checks.

Dependent item nginx.http.upstream.peer.health_checks.fails[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.health_checks.fails

Nginx: HTTP upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, unhealthy

Displays how many times the server has become unhealthy (the state - “unhealthy”.

Dependent item nginx.http.upstream.peer.health_checks.unhealthy[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.health_checks.unhealthy

Trigger prototypes for HTTP upstream peers discovery

Name Description Expression Severity Dependencies and additional info
Nginx: HTTP upstream server is not in UP or DOWN state. 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 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 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

LLD rule Stream server zones discovery

Name Description Type Key and additional info
Stream server zones discovery Dependent item nginx.stream.server_zones.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for Stream server zones discovery

Name Description Type Key and additional info
Nginx: Stream server zone [{#NAME}]: Raw data

The raw data of server zone with the name {#NAME}, configured in the "stream" directive.

Dependent item nginx.stream.server_zones.raw[{#NAME}]

Preprocessing

  • JSON Path: $['{#NAME}']

Nginx: Stream server zone [{#NAME}]: Processing

The number of client connections that are currently being processed.

Dependent item nginx.stream.server_zones.processing[{#NAME}]

Preprocessing

  • JSON Path: $.processing

Nginx: Stream server zone [{#NAME}]: Connections, rate

The total number of connections accepted from clients per second.

Dependent item nginx.stream.server_zones.connections.rate[{#NAME}]

Preprocessing

  • JSON Path: $.connections

  • Change per second
Nginx: Stream server zone [{#NAME}]: Sessions 2xx, rate

The total number of sessions completed with status code 2xx per second.

Dependent item nginx.stream.server_zones.sessions.2xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sessions.2xx

  • Change per second
Nginx: Stream server zone [{#NAME}]: Sessions 4xx, rate

The total number of sessions completed with status code 4xx per second.

Dependent item nginx.stream.server_zones.sessions.4xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sessions.4xx

  • Change per second
Nginx: Stream server zone [{#NAME}]: Sessions 5xx, rate

The total number of sessions completed with status code 5xx per second.

Dependent item nginx.stream.server_zones.sessions.5xx.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sessions.5xx

  • Change per second
Nginx: Stream server zone [{#NAME}]: Sessions total, rate

The total number of completed client sessions per second.

Dependent item nginx.stream.server_zones.sessions.total.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sessions.total

  • Change per second
Nginx: Stream server zone [{#NAME}]: Discarded, rate

The total number of connections completed without creating a session per second.

Dependent item nginx.stream.server_zones.discarded.rate[{#NAME}]

Preprocessing

  • JSON Path: $.discarded

  • Change per second
Nginx: Stream server zone [{#NAME}]: Received, rate

The total number of bytes received from clients per second.

Dependent item nginx.stream.server_zones.received.rate[{#NAME}]

Preprocessing

  • JSON Path: $.received

  • Change per second
Nginx: Stream server zone [{#NAME}]: Sent, rate

The total number of bytes sent to clients per second.

Dependent item nginx.stream.server_zones.sent.rate[{#NAME}]

Preprocessing

  • JSON Path: $.sent

  • Change per second

LLD rule Stream upstreams discovery

Name Description Type Key and additional info
Stream upstreams discovery Dependent item nginx.stream.upstreams.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for Stream upstreams discovery

Name Description Type Key and additional info
Nginx: Stream upstream [{#NAME}]: Raw data

The raw data of the upstream with the name [{#UPSTREAM}], configured in the "stream" directive.

Dependent item nginx.stream.upstreams.raw[{#NAME}]

Preprocessing

  • JSON Path: $['{#NAME}']

Nginx: Stream upstream [{#NAME}]: Zombies Dependent item nginx.stream.upstreams.zombies[{#NAME}]

Preprocessing

  • JSON Path: $.zombies

Nginx: Stream upstream [{#NAME}]: Zone Dependent item nginx.stream.upstreams.zone[{#NAME}]

Preprocessing

  • JSON Path: $.zone

  • Discard unchanged with heartbeat: 3h

LLD rule Stream upstream peers discovery

Name Description Type Key and additional info
Stream upstream peers discovery Dependent item nginx.stream.upstream.peers.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for Stream upstream peers discovery

Name Description Type Key and additional info
Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Raw data

The raw data of the upstream with the name [{#UPSTREAM}]and peer with the name[{#PEER}], configured in the "stream" directive.

Dependent item nginx.stream.upstream.peer.raw[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $['{#UPSTREAM}'].peers[?(@.server == '{#PEER}')].first()

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: State

The current state, which may be one of “up”, “draining”, “down”, “unavail”, “checking”, and “unhealthy”.

Dependent item nginx.stream.upstream.peer.state[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.state

  • Discard unchanged with heartbeat: 3h

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Active

The current number of connections.

Dependent item nginx.stream.upstream.peer.active[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.active

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Sent, rate

The total number of bytes sent to this server per second.

Dependent item nginx.stream.upstream.peer.sent.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.sent

  • Change per second
Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Received, rate

The total number of bytes received from this server per second.

Dependent item nginx.stream.upstream.peer.received.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.received

  • Change per second
Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Fails, rate

The total number of unsuccessful attempts to communicate with the server per second.

Dependent item nginx.stream.upstream.peer.fails.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.fails

  • Change per second
Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Unavail

Displays how many times the server has become unavailable for client requests (the state - “unavail”) due to the number of unsuccessful attempts reaching the max_fails threshold.

Dependent item nginx.stream.upstream.peer.unavail.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.unavail

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Connections

The total number of client connections forwarded to this server.

Dependent item nginx.stream.upstream.peer.connections.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.connections

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Connect time

The average time to connect to the upstream server.

Dependent item nginx.stream.upstream.peer.connect_time.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.connect_time

    Custom on fail: Discard value

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: First byte time

The average time to receive the first byte of data.

Dependent item nginx.stream.upstream.peer.first_byte_time.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.first_byte_time

    Custom on fail: Discard value

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Response time

The average time to receive the last byte of data.

Dependent item nginx.stream.upstream.peer.response_time.rate[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.response_time

    Custom on fail: Discard value

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, check

The total number of health check requests made.

Dependent item nginx.stream.upstream.peer.health_checks.checks[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.health_checks.checks

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, fails

The number of failed health checks.

Dependent item nginx.stream.upstream.peer.health_checks.fails[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.health_checks.fails

Nginx: Stream upstream [{#UPSTREAM}] peer [{#PEER}]: Health checks, unhealthy

Displays how many times the server has become unhealthy (the state - “unhealthy”).

Dependent item nginx.stream.upstream.peer.health_checks.unhealthy[{#UPSTREAM},{#PEER}]

Preprocessing

  • JSON Path: $.health_checks.unhealthy

Trigger prototypes for Stream upstream peers discovery

Name Description Expression Severity Dependencies and additional info
Nginx: Stream upstream server is not in UP or DOWN state. 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

LLD rule Resolvers discovery

Name Description Type Key and additional info
Resolvers discovery Dependent item nginx.resolvers.discovery

Preprocessing

  • JavaScript: The text is too long. Please see the template.

  • Discard unchanged with heartbeat: 30m

Item prototypes for Resolvers discovery

Name Description Type Key and additional info
Nginx: Resolver [{#NAME}]: Raw data

The raw data of the Resolver with the name {#NAME}.

Dependent item nginx.resolvers.raw[{#NAME}]

Preprocessing

  • JSON Path: $['{#NAME}']

Nginx: Resolver [{#NAME}]: Requests name, rate

The total number of requests to resolve names to addresses per second.

Dependent item nginx.resolvers.requests.name.rate[{#NAME}]

Preprocessing

  • JSON Path: $.requests.name

  • Change per second
Nginx: Resolver [{#NAME}]: Requests srv, rate

The total number of requests to resolve SRV records per second.

Dependent item nginx.resolvers.requests.srv.rate[{#NAME}]

Preprocessing

  • JSON Path: $.requests.srv

  • Change per second
Nginx: Resolver [{#NAME}]: Requests addr, rate

The total number of requests to resolve addresses to names per second.

Dependent item nginx.resolvers.requests.addr.rate[{#NAME}]

Preprocessing

  • JSON Path: $.requests.addr

  • Change per second
Nginx: Resolver [{#NAME}]: Responses noerror, rate

The total number of successful responses per second.

Dependent item nginx.resolvers.responses.noerror.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.noerror

  • Change per second
Nginx: Resolver [{#NAME}]: Responses formerr, rate

The total number of FORMERR (format error) responses per second.

Dependent item nginx.resolvers.responses.formerr.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.formerr

  • Change per second
Nginx: Resolver [{#NAME}]: Responses servfail, rate

The total number of SERVFAIL (server failure) responses per second.

Dependent item nginx.resolvers.responses.servfail.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.servfail

  • Change per second
Nginx: Resolver [{#NAME}]: Responses nxdomain, rate

The total number of NXDOMAIN (host not found) responses per second.

Dependent item nginx.resolvers.responses.nxdomain.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.nxdomain

  • Change per second
Nginx: Resolver [{#NAME}]: Responses notimp, rate

The total number of NOTIMP (unimplemented) responses per second.

Dependent item nginx.resolvers.responses.notimp.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.notimp

  • Change per second
Nginx: Resolver [{#NAME}]: Responses refused, rate

The total number of REFUSED (operation refused) responses per second.

Dependent item nginx.resolvers.responses.refused.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.refused

  • Change per second
Nginx: Resolver [{#NAME}]: Responses timedout, rate

The total number of timed out requests per second.

Dependent item nginx.resolvers.responses.timedout.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.timedout

  • Change per second
Nginx: Resolver [{#NAME}]: Responses unknown, rate

The total number of requests completed with an unknown error per second.

Dependent item nginx.resolvers.responses.unknown.rate[{#NAME}]

Preprocessing

  • JSON Path: $.responses.unknown

  • Change per second

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 at ZABBIX forums