<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export><version>5.0</version><date>2021-11-21T22:03:57Z</date><groups><group><name>Templates/Applications</name></group></groups><templates><template><template>App Nginx Plus</template><name>App Nginx Plus</name><description>## 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 **&lt;http://127.0.0.1/api/&gt;** 


**[1,2,3,4,5,6]**


**Output (Higest is 6)**


TODO: triggers


 


&lt;p style=&quot;font-size: 16px; box-sizing: border-box; margin-t

</description><groups><group><name>Templates/Applications</name></group></groups><applications><application><name>Nginx+</name></application></applications><items><item><name>Nginx+ General</name><type>HTTP_AGENT</type><key>nginxplus.basic</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/nginx?fields=version,build,generation</url></item><item><name>Nginx+ Connections</name><type>HTTP_AGENT</type><key>nginxplus.connections</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/connections</url></item><item><name>accepted</name><type>DEPENDENT</type><key>nginxplus.connections.accepted</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.accepted</params></step></preprocessing><master_item><key>nginxplus.connections</key></master_item></item><item><name>active</name><type>DEPENDENT</type><key>nginxplus.connections.active</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.active</params></step></preprocessing><master_item><key>nginxplus.connections</key></master_item></item><item><name>dropped</name><type>DEPENDENT</type><key>nginxplus.connections.dropped</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.dropped</params></step></preprocessing><master_item><key>nginxplus.connections</key></master_item></item><item><name>idle</name><type>DEPENDENT</type><key>nginxplus.connections.idle</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.idle</params></step></preprocessing><master_item><key>nginxplus.connections</key></master_item></item><item><name>build</name><type>DEPENDENT</type><key>nginxplus.general.build</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.build</params></step></preprocessing><master_item><key>nginxplus.basic</key></master_item></item><item><name>generation</name><type>DEPENDENT</type><key>nginxplus.general.generation</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.generation</params></step></preprocessing><master_item><key>nginxplus.basic</key></master_item></item><item><name>version</name><type>DEPENDENT</type><key>nginxplus.general.version</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.version</params></step></preprocessing><master_item><key>nginxplus.basic</key></master_item></item><item><name>Nginx+ HTTP Requests</name><type>HTTP_AGENT</type><key>nginxplus.http.requests</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/requests</url></item><item><name>current</name><type>DEPENDENT</type><key>nginxplus.http.requests.current</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.current</params></step></preprocessing><master_item><key>nginxplus.http.requests</key></master_item></item><item><name>total</name><type>DEPENDENT</type><key>nginxplus.http.requests.total</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.total</params></step></preprocessing><master_item><key>nginxplus.http.requests</key></master_item></item><item><name>Nginx+ Processes</name><type>HTTP_AGENT</type><key>nginxplus.processes</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/processes</url></item><item><name>respawned</name><type>DEPENDENT</type><key>nginxplus.processes.respawned</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.respawned</params></step></preprocessing><master_item><key>nginxplus.processes</key></master_item></item><item><name>Nginx+ SSL</name><type>HTTP_AGENT</type><key>nginxplus.ssl</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/ssl</url></item><item><name>handshakes</name><type>DEPENDENT</type><key>nginxplus.ssl.handshakes</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.handshakes</params></step></preprocessing><master_item><key>nginxplus.ssl</key></master_item></item><item><name>handshakes failed</name><type>DEPENDENT</type><key>nginxplus.ssl.handshakes_failed</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.handshakes_failed</params></step></preprocessing><master_item><key>nginxplus.ssl</key></master_item></item><item><name>session reuses</name><type>DEPENDENT</type><key>nginxplus.ssl.session_reuses</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><preprocessing><step><type>JSONPATH</type><params>$.session_reuses</params></step></preprocessing><master_item><key>nginxplus.ssl</key></master_item></item></items><discovery_rules><discovery_rule><name>Nginx+ HTTP caches discovery</name><type>HTTP_AGENT</type><key>nginxplus.http.caches.discovery</key><delay>1h</delay><description>when the &quot;fields&quot; param is empty it returns only names of upstreams&#13;
creates LLD macro {#CACHE} containing upstream name</description><item_prototypes><item_prototype><name>bypass bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},bypass_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.bypass.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>bypass bytes written</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},bypass_bytes_written]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.bypass.bytes_written</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>bypass responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},bypass_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.bypass.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>bypass responses written</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},bypass_responses_written]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.bypass.responses_written</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>cold</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},cold]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><description>A boolean value indicating whether the &quot;cache loader&quot; process is still loading data from disk into the cache.</description><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.cold</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>expired bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},expired_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.expired.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>expired bytes written</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},expired_bytes_written]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.expired.bytes_written</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>expired responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},expired_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.expired.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>expired responses written</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},expired_responses_written]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.expired.responses_written</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>hit bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},hit_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.hit.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>hit responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},hit_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.hit.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>maxsize</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},max_size]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.max_size</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>miss bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},miss_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.miss.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>miss bytes written</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},miss_bytes_written]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.miss.bytes_written</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>miss responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},miss_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.miss.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>miss responses written</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},miss_responses_written]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.miss.responses_written</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>revalidated bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},revalidated_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.revalidated.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>revalidated responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},revalidated_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.revalidated.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>size</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},size]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.size</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>stale bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},stale_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.stale.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>stale responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},stale_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.stale.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>updating bytes</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},updating_bytes]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.updating.bytes</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>updating responses</name><type>DEPENDENT</type><key>nginxplus.http.caches[{#CACHE},updating_responses]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.updating.responses</params></step></preprocessing><master_item><key>nginxplus.http.caches[{#CACHE}]</key></master_item></item_prototype><item_prototype><name>Nginx+ cache {#CACHE}</name><type>HTTP_AGENT</type><key>nginxplus.http.caches[{#CACHE}]</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Cache</name></application_prototype></application_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/caches/{#CACHE}</url></item_prototype></item_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/caches?fields=</url><preprocessing><step><type>JAVASCRIPT</type><params>try {
  var result = new Array();
  var valarr = Object.getOwnPropertyNames(JSON.parse(value));

  for (var i = 0; i &lt; valarr.length; i++) {
    result.push({ &quot;{#CACHE}&quot;: valarr[i] });
  };

} catch(error) {
  result = [];
  return error;
}

return JSON.stringify(result);</params></step></preprocessing></discovery_rule><discovery_rule><name>Nginx+ HTTP limit_reqs discovery</name><type>HTTP_AGENT</type><key>nginxplus.http.limit_reqs.discovery</key><delay>1h</delay><description>when the &quot;fields&quot; param is empty it returns only names of upstreams&#13;
creates LLD macro {#LIMIT_REQ} containing upstream name</description><item_prototypes><item_prototype><name>delayed</name><type>DEPENDENT</type><key>nginxplus.http.limit_reqs[{#LIMIT_REQ},delayed]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Limit_Reqs</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.delayed</params></step></preprocessing><master_item><key>nginxplus.http.limit_reqs[{#LIMIT_REQ}]</key></master_item></item_prototype><item_prototype><name>delayed dry run</name><type>DEPENDENT</type><key>nginxplus.http.limit_reqs[{#LIMIT_REQ},delayed_dry_run]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Limit_Reqs</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.delayed_dry_run</params></step></preprocessing><master_item><key>nginxplus.http.limit_reqs[{#LIMIT_REQ}]</key></master_item></item_prototype><item_prototype><name>passed</name><type>DEPENDENT</type><key>nginxplus.http.limit_reqs[{#LIMIT_REQ},passed]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Limit_Reqs</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.passed</params></step></preprocessing><master_item><key>nginxplus.http.limit_reqs[{#LIMIT_REQ}]</key></master_item></item_prototype><item_prototype><name>rejected</name><type>DEPENDENT</type><key>nginxplus.http.limit_reqs[{#LIMIT_REQ},rejected]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Limit_Reqs</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.rejected</params></step></preprocessing><master_item><key>nginxplus.http.limit_reqs[{#LIMIT_REQ}]</key></master_item></item_prototype><item_prototype><name>rejected dry run</name><type>DEPENDENT</type><key>nginxplus.http.limit_reqs[{#LIMIT_REQ},rejected_dry_run]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Limit_Reqs</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.rejected_dry_run</params></step></preprocessing><master_item><key>nginxplus.http.limit_reqs[{#LIMIT_REQ}]</key></master_item></item_prototype><item_prototype><name>Nginx+ limit_req {#LIMIT_REQ}</name><type>HTTP_AGENT</type><key>nginxplus.http.limit_reqs[{#LIMIT_REQ}]</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ Limit_Reqs</name></application_prototype></application_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/limit_reqs/{#LIMIT_REQ}</url></item_prototype></item_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/limit_reqs?fields=</url><preprocessing><step><type>JAVASCRIPT</type><params>try {
  var result = new Array();
  var valarr = Object.getOwnPropertyNames(JSON.parse(value));

  for (var i = 0; i &lt; valarr.length; i++) {
    result.push({ &quot;{#LIMIT_REQ}&quot;: valarr[i] });
  };

} catch(error) {
  result = [];
  return error;
}

return JSON.stringify(result);</params></step></preprocessing></discovery_rule><discovery_rule><name>Nginx+ HTTP upstreams discovery</name><type>HTTP_AGENT</type><key>nginxplus.http.upstreams.discovery</key><delay>1h</delay><description>when the &quot;fields&quot; param is empty it returns only names of upstreams&#13;
creates LLD macro {#UPSTREAM} containing upstream name</description><item_prototypes><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_0,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_0]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_0,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_0]</key></master_item></item_prototype><item_prototype><name>peer #0</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_0]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[0]</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM}]</key></master_item></item_prototype><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_1,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_1]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_1,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_1]</key></master_item></item_prototype><item_prototype><name>peer #1</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_1]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[1]</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM}]</key></master_item></item_prototype><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_2,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_2]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_2,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_2]</key></master_item></item_prototype><item_prototype><name>peer #2</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_2]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[2]</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM}]</key></master_item></item_prototype><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_3,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_3]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_3,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM},peer_3]</key></master_item></item_prototype><item_prototype><name>peer #3</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},peer_3]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[3]</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM}]</key></master_item></item_prototype><item_prototype><name>zombies</name><type>DEPENDENT</type><key>nginxplus.http.upstream[{#UPSTREAM},zombies]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.zombies</params></step></preprocessing><master_item><key>nginxplus.http.upstream[{#UPSTREAM}]</key></master_item></item_prototype><item_prototype><name>Nginx+ HTTP upstream {#UPSTREAM}</name><type>HTTP_AGENT</type><key>nginxplus.http.upstream[{#UPSTREAM}]</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ HTTP Upstreams</name></application_prototype></application_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/upstreams/{#UPSTREAM}</url></item_prototype></item_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/http/upstreams?fields=</url><preprocessing><step><type>JAVASCRIPT</type><params>try {
  var result = new Array();
  var valarr = Object.getOwnPropertyNames(JSON.parse(value));

  for (var i = 0; i &lt; valarr.length; i++) {
    result.push({ &quot;{#UPSTREAM}&quot;: valarr[i] });
  };

} catch(error) {
  result = [];
  return error;
}

return JSON.stringify(result);</params></step></preprocessing></discovery_rule><discovery_rule><name>Nginx+ STREAM upstreams discovery</name><type>HTTP_AGENT</type><key>nginxplus.stream.upstreams.discovery</key><delay>1h</delay><description>when the &quot;fields&quot; param is empty it returns only names of upstreams&#13;
creates LLD macro {#STREAM} containing upstream name</description><item_prototypes><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_0,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM},peer_0]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_0,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM},peer_0]</key></master_item></item_prototype><item_prototype><name>peer #0</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_0]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[0]</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM}]</key></master_item></item_prototype><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_1,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM},peer_1]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_1,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM},peer_1]</key></master_item></item_prototype><item_prototype><name>peer #1</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_1]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[1]</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM}]</key></master_item></item_prototype><item_prototype><name>state</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_2,state]</key><delay>0</delay><trends>0</trends><value_type>CHAR</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.state</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM},peer_2]</key></master_item></item_prototype><item_prototype><name>unhealthy</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_2,unhealthy]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.health_checks.unhealthy</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM},peer_2]</key></master_item></item_prototype><item_prototype><name>peer #2</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},peer_2]</key><delay>0</delay><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.peers[2]</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM}]</key></master_item></item_prototype><item_prototype><name>zombies</name><type>DEPENDENT</type><key>nginxplus.stream.upstream[{#STREAM},zombies]</key><delay>0</delay><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><preprocessing><step><type>JSONPATH</type><params>$.zombies</params></step></preprocessing><master_item><key>nginxplus.stream.upstream[{#STREAM}]</key></master_item></item_prototype><item_prototype><name>Nginx+ STREAM upstream {#STREAM}</name><type>HTTP_AGENT</type><key>nginxplus.stream.upstream[{#STREAM}]</key><history>1d</history><trends>0</trends><value_type>TEXT</value_type><applications><application><name>Nginx+</name></application></applications><application_prototypes><application_prototype><name>Nginx+ STREAM Upstreams</name></application_prototype></application_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/stream/upstreams/{#STREAM}</url></item_prototype></item_prototypes><timeout>15s</timeout><url>http://{HOST.NAME}.alz.lcl/api/{$NGINXPLUS_API_VER}/stream/upstreams?fields=</url><preprocessing><step><type>JAVASCRIPT</type><params>try {
  var result = new Array();
  var valarr = Object.getOwnPropertyNames(JSON.parse(value));

  for (var i = 0; i &lt; valarr.length; i++) {
    result.push({ &quot;{#STREAM}&quot;: valarr[i] });
  };

} catch(error) {
  result = [];
  return error;
}

return JSON.stringify(result);</params></step></preprocessing></discovery_rule></discovery_rules><macros><macro><macro>{$NGINXPLUS_API_VER}</macro><value>6</value><description>Nginx+ API version</description></macro></macros></template></templates></zabbix_export>
