5.02021-11-21T22:03:57ZTemplates/ApplicationsApp Nginx PlusApp Nginx Plus## Overview
Zabbix NGINX Plus
=================
LLD template for nginx plus.
Please check your api version in template, is macro {$NGINXPLUS\_API\_VER} in defaults is used version 6
Use this command on nginx machine. Higest number is your API version.
curl **<http://127.0.0.1/api/>**
**[1,2,3,4,5,6]**
**Output (Higest is 6)**
TODO: triggers
<p style="font-size: 16px; box-sizing: border-box; margin-t
Templates/ApplicationsNginx+- Nginx+ GeneralHTTP_AGENTnginxplus.basic1d0TEXTNginx+15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/nginx?fields=version,build,generation
- Nginx+ ConnectionsHTTP_AGENTnginxplus.connections1d0TEXTNginx+15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/connections
- acceptedDEPENDENTnginxplus.connections.accepted0Nginx+JSONPATH$.acceptednginxplus.connections
- activeDEPENDENTnginxplus.connections.active0Nginx+JSONPATH$.activenginxplus.connections
- droppedDEPENDENTnginxplus.connections.dropped0Nginx+JSONPATH$.droppednginxplus.connections
- idleDEPENDENTnginxplus.connections.idle0Nginx+JSONPATH$.idlenginxplus.connections
- buildDEPENDENTnginxplus.general.build00CHARNginx+JSONPATH$.buildnginxplus.basic
- generationDEPENDENTnginxplus.general.generation00CHARNginx+JSONPATH$.generationnginxplus.basic
- versionDEPENDENTnginxplus.general.version00CHARNginx+JSONPATH$.versionnginxplus.basic
- Nginx+ HTTP RequestsHTTP_AGENTnginxplus.http.requests1d0TEXTNginx+15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/requests
- currentDEPENDENTnginxplus.http.requests.current0Nginx+JSONPATH$.currentnginxplus.http.requests
- totalDEPENDENTnginxplus.http.requests.total0Nginx+JSONPATH$.totalnginxplus.http.requests
- Nginx+ ProcessesHTTP_AGENTnginxplus.processes1d0TEXTNginx+15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/processes
- respawnedDEPENDENTnginxplus.processes.respawned0Nginx+JSONPATH$.respawnednginxplus.processes
- Nginx+ SSLHTTP_AGENTnginxplus.ssl1d0TEXTNginx+15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/ssl
- handshakesDEPENDENTnginxplus.ssl.handshakes0Nginx+JSONPATH$.handshakesnginxplus.ssl
- handshakes failedDEPENDENTnginxplus.ssl.handshakes_failed0Nginx+JSONPATH$.handshakes_failednginxplus.ssl
- session reusesDEPENDENTnginxplus.ssl.session_reuses0Nginx+JSONPATH$.session_reusesnginxplus.ssl
Nginx+ HTTP caches discoveryHTTP_AGENTnginxplus.http.caches.discovery1hwhen the "fields" param is empty it returns only names of upstreams
creates LLD macro {#CACHE} containing upstream namebypass bytesDEPENDENTnginxplus.http.caches[{#CACHE},bypass_bytes]0Nginx+Nginx+ CacheJSONPATH$.bypass.bytesnginxplus.http.caches[{#CACHE}]bypass bytes writtenDEPENDENTnginxplus.http.caches[{#CACHE},bypass_bytes_written]0Nginx+Nginx+ CacheJSONPATH$.bypass.bytes_writtennginxplus.http.caches[{#CACHE}]bypass responsesDEPENDENTnginxplus.http.caches[{#CACHE},bypass_responses]0Nginx+Nginx+ CacheJSONPATH$.bypass.responsesnginxplus.http.caches[{#CACHE}]bypass responses writtenDEPENDENTnginxplus.http.caches[{#CACHE},bypass_responses_written]0Nginx+Nginx+ CacheJSONPATH$.bypass.responses_writtennginxplus.http.caches[{#CACHE}]coldDEPENDENTnginxplus.http.caches[{#CACHE},cold]00CHARA boolean value indicating whether the "cache loader" process is still loading data from disk into the cache.Nginx+Nginx+ CacheJSONPATH$.coldnginxplus.http.caches[{#CACHE}]expired bytesDEPENDENTnginxplus.http.caches[{#CACHE},expired_bytes]0Nginx+Nginx+ CacheJSONPATH$.expired.bytesnginxplus.http.caches[{#CACHE}]expired bytes writtenDEPENDENTnginxplus.http.caches[{#CACHE},expired_bytes_written]0Nginx+Nginx+ CacheJSONPATH$.expired.bytes_writtennginxplus.http.caches[{#CACHE}]expired responsesDEPENDENTnginxplus.http.caches[{#CACHE},expired_responses]0Nginx+Nginx+ CacheJSONPATH$.expired.responsesnginxplus.http.caches[{#CACHE}]expired responses writtenDEPENDENTnginxplus.http.caches[{#CACHE},expired_responses_written]0Nginx+Nginx+ CacheJSONPATH$.expired.responses_writtennginxplus.http.caches[{#CACHE}]hit bytesDEPENDENTnginxplus.http.caches[{#CACHE},hit_bytes]0Nginx+Nginx+ CacheJSONPATH$.hit.bytesnginxplus.http.caches[{#CACHE}]hit responsesDEPENDENTnginxplus.http.caches[{#CACHE},hit_responses]0Nginx+Nginx+ CacheJSONPATH$.hit.responsesnginxplus.http.caches[{#CACHE}]maxsizeDEPENDENTnginxplus.http.caches[{#CACHE},max_size]0Nginx+Nginx+ CacheJSONPATH$.max_sizenginxplus.http.caches[{#CACHE}]miss bytesDEPENDENTnginxplus.http.caches[{#CACHE},miss_bytes]0Nginx+Nginx+ CacheJSONPATH$.miss.bytesnginxplus.http.caches[{#CACHE}]miss bytes writtenDEPENDENTnginxplus.http.caches[{#CACHE},miss_bytes_written]0Nginx+Nginx+ CacheJSONPATH$.miss.bytes_writtennginxplus.http.caches[{#CACHE}]miss responsesDEPENDENTnginxplus.http.caches[{#CACHE},miss_responses]0Nginx+Nginx+ CacheJSONPATH$.miss.responsesnginxplus.http.caches[{#CACHE}]miss responses writtenDEPENDENTnginxplus.http.caches[{#CACHE},miss_responses_written]0Nginx+Nginx+ CacheJSONPATH$.miss.responses_writtennginxplus.http.caches[{#CACHE}]revalidated bytesDEPENDENTnginxplus.http.caches[{#CACHE},revalidated_bytes]0Nginx+Nginx+ CacheJSONPATH$.revalidated.bytesnginxplus.http.caches[{#CACHE}]revalidated responsesDEPENDENTnginxplus.http.caches[{#CACHE},revalidated_responses]0Nginx+Nginx+ CacheJSONPATH$.revalidated.responsesnginxplus.http.caches[{#CACHE}]sizeDEPENDENTnginxplus.http.caches[{#CACHE},size]0Nginx+Nginx+ CacheJSONPATH$.sizenginxplus.http.caches[{#CACHE}]stale bytesDEPENDENTnginxplus.http.caches[{#CACHE},stale_bytes]0Nginx+Nginx+ CacheJSONPATH$.stale.bytesnginxplus.http.caches[{#CACHE}]stale responsesDEPENDENTnginxplus.http.caches[{#CACHE},stale_responses]0Nginx+Nginx+ CacheJSONPATH$.stale.responsesnginxplus.http.caches[{#CACHE}]updating bytesDEPENDENTnginxplus.http.caches[{#CACHE},updating_bytes]0Nginx+Nginx+ CacheJSONPATH$.updating.bytesnginxplus.http.caches[{#CACHE}]updating responsesDEPENDENTnginxplus.http.caches[{#CACHE},updating_responses]0Nginx+Nginx+ CacheJSONPATH$.updating.responsesnginxplus.http.caches[{#CACHE}]Nginx+ cache {#CACHE}HTTP_AGENTnginxplus.http.caches[{#CACHE}]1d0TEXTNginx+Nginx+ Cache15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/caches/{#CACHE}15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/caches?fields=JAVASCRIPTtry {
var result = new Array();
var valarr = Object.getOwnPropertyNames(JSON.parse(value));
for (var i = 0; i < valarr.length; i++) {
result.push({ "{#CACHE}": valarr[i] });
};
} catch(error) {
result = [];
return error;
}
return JSON.stringify(result);Nginx+ HTTP limit_reqs discoveryHTTP_AGENTnginxplus.http.limit_reqs.discovery1hwhen the "fields" param is empty it returns only names of upstreams
creates LLD macro {#LIMIT_REQ} containing upstream namedelayedDEPENDENTnginxplus.http.limit_reqs[{#LIMIT_REQ},delayed]0Nginx+Nginx+ Limit_ReqsJSONPATH$.delayednginxplus.http.limit_reqs[{#LIMIT_REQ}]delayed dry runDEPENDENTnginxplus.http.limit_reqs[{#LIMIT_REQ},delayed_dry_run]0Nginx+Nginx+ Limit_ReqsJSONPATH$.delayed_dry_runnginxplus.http.limit_reqs[{#LIMIT_REQ}]passedDEPENDENTnginxplus.http.limit_reqs[{#LIMIT_REQ},passed]0Nginx+Nginx+ Limit_ReqsJSONPATH$.passednginxplus.http.limit_reqs[{#LIMIT_REQ}]rejectedDEPENDENTnginxplus.http.limit_reqs[{#LIMIT_REQ},rejected]0Nginx+Nginx+ Limit_ReqsJSONPATH$.rejectednginxplus.http.limit_reqs[{#LIMIT_REQ}]rejected dry runDEPENDENTnginxplus.http.limit_reqs[{#LIMIT_REQ},rejected_dry_run]0Nginx+Nginx+ Limit_ReqsJSONPATH$.rejected_dry_runnginxplus.http.limit_reqs[{#LIMIT_REQ}]Nginx+ limit_req {#LIMIT_REQ}HTTP_AGENTnginxplus.http.limit_reqs[{#LIMIT_REQ}]1d0TEXTNginx+Nginx+ Limit_Reqs15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/limit_reqs/{#LIMIT_REQ}15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/limit_reqs?fields=JAVASCRIPTtry {
var result = new Array();
var valarr = Object.getOwnPropertyNames(JSON.parse(value));
for (var i = 0; i < valarr.length; i++) {
result.push({ "{#LIMIT_REQ}": valarr[i] });
};
} catch(error) {
result = [];
return error;
}
return JSON.stringify(result);Nginx+ HTTP upstreams discoveryHTTP_AGENTnginxplus.http.upstreams.discovery1hwhen the "fields" param is empty it returns only names of upstreams
creates LLD macro {#UPSTREAM} containing upstream namestateDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_0,state]00CHARNginx+Nginx+ HTTP UpstreamsJSONPATH$.statenginxplus.http.upstream[{#UPSTREAM},peer_0]unhealthyDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_0,unhealthy]0Nginx+Nginx+ HTTP UpstreamsJSONPATH$.health_checks.unhealthynginxplus.http.upstream[{#UPSTREAM},peer_0]peer #0DEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_0]01d0TEXTNginx+Nginx+ HTTP UpstreamsJSONPATH$.peers[0]nginxplus.http.upstream[{#UPSTREAM}]stateDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_1,state]00CHARNginx+Nginx+ HTTP UpstreamsJSONPATH$.statenginxplus.http.upstream[{#UPSTREAM},peer_1]unhealthyDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_1,unhealthy]0Nginx+Nginx+ HTTP UpstreamsJSONPATH$.health_checks.unhealthynginxplus.http.upstream[{#UPSTREAM},peer_1]peer #1DEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_1]01d0TEXTNginx+Nginx+ HTTP UpstreamsJSONPATH$.peers[1]nginxplus.http.upstream[{#UPSTREAM}]stateDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_2,state]00CHARNginx+Nginx+ HTTP UpstreamsJSONPATH$.statenginxplus.http.upstream[{#UPSTREAM},peer_2]unhealthyDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_2,unhealthy]0Nginx+Nginx+ HTTP UpstreamsJSONPATH$.health_checks.unhealthynginxplus.http.upstream[{#UPSTREAM},peer_2]peer #2DEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_2]01d0TEXTNginx+Nginx+ HTTP UpstreamsJSONPATH$.peers[2]nginxplus.http.upstream[{#UPSTREAM}]stateDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_3,state]00CHARNginx+Nginx+ HTTP UpstreamsJSONPATH$.statenginxplus.http.upstream[{#UPSTREAM},peer_3]unhealthyDEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_3,unhealthy]0Nginx+Nginx+ HTTP UpstreamsJSONPATH$.health_checks.unhealthynginxplus.http.upstream[{#UPSTREAM},peer_3]peer #3DEPENDENTnginxplus.http.upstream[{#UPSTREAM},peer_3]01d0TEXTNginx+Nginx+ HTTP UpstreamsJSONPATH$.peers[3]nginxplus.http.upstream[{#UPSTREAM}]zombiesDEPENDENTnginxplus.http.upstream[{#UPSTREAM},zombies]0Nginx+Nginx+ HTTP UpstreamsJSONPATH$.zombiesnginxplus.http.upstream[{#UPSTREAM}]Nginx+ HTTP upstream {#UPSTREAM}HTTP_AGENTnginxplus.http.upstream[{#UPSTREAM}]1d0TEXTNginx+Nginx+ HTTP Upstreams15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/upstreams/{#UPSTREAM}15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/upstreams?fields=JAVASCRIPTtry {
var result = new Array();
var valarr = Object.getOwnPropertyNames(JSON.parse(value));
for (var i = 0; i < valarr.length; i++) {
result.push({ "{#UPSTREAM}": valarr[i] });
};
} catch(error) {
result = [];
return error;
}
return JSON.stringify(result);Nginx+ STREAM upstreams discoveryHTTP_AGENTnginxplus.stream.upstreams.discovery1hwhen the "fields" param is empty it returns only names of upstreams
creates LLD macro {#STREAM} containing upstream namestateDEPENDENTnginxplus.stream.upstream[{#STREAM},peer_0,state]00CHARNginx+Nginx+ STREAM UpstreamsJSONPATH$.statenginxplus.stream.upstream[{#STREAM},peer_0]unhealthyDEPENDENTnginxplus.stream.upstream[{#STREAM},peer_0,unhealthy]0Nginx+Nginx+ STREAM UpstreamsJSONPATH$.health_checks.unhealthynginxplus.stream.upstream[{#STREAM},peer_0]peer #0DEPENDENTnginxplus.stream.upstream[{#STREAM},peer_0]01d0TEXTNginx+Nginx+ STREAM UpstreamsJSONPATH$.peers[0]nginxplus.stream.upstream[{#STREAM}]stateDEPENDENTnginxplus.stream.upstream[{#STREAM},peer_1,state]00CHARNginx+Nginx+ STREAM UpstreamsJSONPATH$.statenginxplus.stream.upstream[{#STREAM},peer_1]unhealthyDEPENDENTnginxplus.stream.upstream[{#STREAM},peer_1,unhealthy]0Nginx+Nginx+ STREAM UpstreamsJSONPATH$.health_checks.unhealthynginxplus.stream.upstream[{#STREAM},peer_1]peer #1DEPENDENTnginxplus.stream.upstream[{#STREAM},peer_1]01d0TEXTNginx+Nginx+ STREAM UpstreamsJSONPATH$.peers[1]nginxplus.stream.upstream[{#STREAM}]stateDEPENDENTnginxplus.stream.upstream[{#STREAM},peer_2,state]00CHARNginx+Nginx+ STREAM UpstreamsJSONPATH$.statenginxplus.stream.upstream[{#STREAM},peer_2]unhealthyDEPENDENTnginxplus.stream.upstream[{#STREAM},peer_2,unhealthy]0Nginx+Nginx+ STREAM UpstreamsJSONPATH$.health_checks.unhealthynginxplus.stream.upstream[{#STREAM},peer_2]peer #2DEPENDENTnginxplus.stream.upstream[{#STREAM},peer_2]01d0TEXTNginx+Nginx+ STREAM UpstreamsJSONPATH$.peers[2]nginxplus.stream.upstream[{#STREAM}]zombiesDEPENDENTnginxplus.stream.upstream[{#STREAM},zombies]0Nginx+Nginx+ STREAM UpstreamsJSONPATH$.zombiesnginxplus.stream.upstream[{#STREAM}]Nginx+ STREAM upstream {#STREAM}HTTP_AGENTnginxplus.stream.upstream[{#STREAM}]1d0TEXTNginx+Nginx+ STREAM Upstreams15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/stream/upstreams/{#STREAM}15shttp://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/stream/upstreams?fields=JAVASCRIPTtry {
var result = new Array();
var valarr = Object.getOwnPropertyNames(JSON.parse(value));
for (var i = 0; i < valarr.length; i++) {
result.push({ "{#STREAM}": valarr[i] });
};
} catch(error) {
result = [];
return error;
}
return JSON.stringify(result);{$NGINXPLUS_API_VER}6Nginx+ API version