Available solutions
Oracle Cloud Load Balancer by HTTP
Overview
This template monitors Oracle Cloud Infrastructure (OCI) load balancer resources.
This template is not meant to be used independently, but together with Oracle Cloud by HTTP as a template for LLD host prototypes.
For communication with OCI, this template utilizes script items which execute HTTP GET and POST requests.
POST requests are required for OCI Monitoring API as it utilizes Monitoring Query Language (MQL) which uses
the HTTP request body for queries.
Requirements
Zabbix version: 8.0 and higher.
Tested versions
This template has been tested on:
- Oracle Cloud Infrastructure
Configuration
Zabbix should be configured according to the instructions in the Templates out of the box section.
Setup
This template is not meant to be used independently. A host with the Oracle Cloud by HTTP template will
discover OCI load balancers automatically, create host prototypes for each discovered load balancer, and apply
it to this template.
If needed, you can specify an HTTP proxy for the template to use by changing the value of the
{$OCI.HTTP.PROXY} user macro.
If using a proxy, the returned OK HTTP response could change from "200" to a different value. In that case,
please adjust the user macro {$OCI.HTTP.RETURN.CODE.OK}.
The LLD filter values and trigger threshold values can be changed with the respective user macros.
Macros used
| Name | Description | Default |
|---|---|---|
| {$OCI.HTTP.PROXY} | Set an HTTP proxy for OCI API requests if needed. |
|
| {$HTTP.TLS.VERIFY} | TLS certificate verification for script items: "none" - disabled, "peer" - verify the certificate chain and expiration, "full" - full verification. Any other value enables full verification. To override the setting for this template only, define the macro with the context "Oracle Cloud Load Balancer", e.g. {$HTTP.TLS.VERIFY:"Oracle Cloud Load Balancer"}. |
full |
| {$OCI.HTTP.RETURN.CODE.OK} | Set the HTTP return code that represents an OK response from the API. The default is "200", but can vary, for example, if a proxy is used. |
200 |
| {$OCI.HTTP.TIMEOUT} | Set an HTTP request timeout. |
30s |
| {$OCI.LOAD.BALANCER.LISTENER.DISCOVERY.NAME.MATCHES} | Sets the regex string of load balancer listener names to allow in discovery. |
.* |
| {$OCI.LOAD.BALANCER.LISTENER.DISCOVERY.NAME.NOT_MATCHES} | Sets the regex string of load balancer listener names to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.LOAD.BALANCER.LISTENER.DISCOVERY.PORT.MATCHES} | Sets the regex string of load balancer listener ports to allow in discovery. |
.* |
| {$OCI.LOAD.BALANCER.LISTENER.DISCOVERY.PORT.NOT_MATCHES} | Sets the regex string of load balancer listener ports to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.LOAD.BALANCER.BACKEND_SET.DISCOVERY.NAME.MATCHES} | Sets the regex string of load balancer backend set names to allow in discovery. |
.* |
| {$OCI.LOAD.BALANCER.BACKEND_SET.DISCOVERY.NAME.NOT_MATCHES} | Sets the regex string of load balancer backend set names to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.LOAD.BALANCER.BACKEND_SET.DISCOVERY.POLICY.MATCHES} | Sets the regex string of load balancer backend set policy to allow in discovery. |
.* |
| {$OCI.LOAD.BALANCER.BACKEND_SET.DISCOVERY.POLICY.NOT_MATCHES} | Sets the regex string of load balancer backend set policy to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.LOAD.BALANCER.BACKEND.DISCOVERY.NAME.MATCHES} | Sets the regex string of load balancer backend set backend names to allow in discovery. |
.* |
| {$OCI.LOAD.BALANCER.BACKEND.DISCOVERY.NAME.NOT_MATCHES} | Sets the regex string of load balancer backend set backend names to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.LOAD.BALANCER.BACKEND.DISCOVERY.PORT.MATCHES} | Sets the regex string of load balancer backend set backend ports to allow in discovery. |
.* |
| {$OCI.LOAD.BALANCER.BACKEND.DISCOVERY.PORT.NOT_MATCHES} | Sets the regex string of load balancer backend set backend ports to ignore in discovery. |
CHANGE_IF_NEEDED |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get data | Gets the load balancer data. |
Script | oci.lb.data.get |
| Get health data | Gets the load balancer health data. |
Script | oci.lb.data.health.get |
| Get metrics | Gets the load balancer metrics. |
Script | oci.lb.metrics.get |
| Load balancer: Name | Name of the load balancer. |
Dependent item | oci.lb.name Preprocessing
|
| Load balancer: State | The current state of the load balancer. |
Dependent item | oci.lb.state Preprocessing
|
| Shape: Name | Shape name of the load balancer. |
Dependent item | oci.lb.shape.name Preprocessing
|
| Shape: Bandwidth, min | Minimum bandwidth set for shape of the load balancer. |
Dependent item | oci.lb.shape.bandwidth.min Preprocessing
|
| Shape: Bandwidth, max | Maximum bandwidth set for shape of the load balancer. |
Dependent item | oci.lb.shape.bandwidth.max Preprocessing
|
| Load balancer: Health | The current overall health status of the load balancer. |
Dependent item | oci.lb.health.status Preprocessing
|
| Backend sets: Count | The total number of backend sets associated with this load balancer. |
Dependent item | oci.lb.backend.sets.count Preprocessing
|
| Backend sets: State: Unknown | The total number of backend sets that are currently in the |
Dependent item | oci.lb.backend.sets.unknown.count Preprocessing
|
| Backend sets: State: Warning | The total number of backend sets that are currently in the |
Dependent item | oci.lb.backend.sets.warning.count Preprocessing
|
| Backend sets: State: Critical | The total number of backend sets that are currently in the |
Dependent item | oci.lb.backend.sets.critical.count Preprocessing
|
| Connections: Handled | Number of handled connections by the load balancer. |
Dependent item | oci.lb.metrics.connections.handled Preprocessing
|
| Connections: Accepted | Number of accepted connections by the load balancer. |
Dependent item | oci.lb.metrics.connections.accepted Preprocessing
|
| Connections: Active | Number of active connections to the load balancer. |
Dependent item | oci.lb.metrics.connections.active Preprocessing
|
| Connections: Closed | Number of closed connections by the load balancer. |
Dependent item | oci.lb.metrics.connections.closed Preprocessing
|
| SSL: Connections: Active | Number of active SSL connections. |
Dependent item | oci.lb.metrics.connections.active_ssl Preprocessing
|
| SSL: Handshakes: Accepted | Number of accepted SSL handshakes by the load balancer. |
Dependent item | oci.lb.metrics.handshake.accepted_ssl Preprocessing
|
| SSL: Handshakes: Failed | Number of failed SSL handshakes. |
Dependent item | oci.lb.metrics.handshake.failed_ssl Preprocessing
|
| SSL: Failed client certificate verifications | Number of failed client SSL certificate verifications. |
Dependent item | oci.lb.metrics.certificate.failed_ssl Preprocessing
|
| Networking: Bytes received | Bytes received by the load balancer. |
Dependent item | oci.lb.metrics.bytes.in Preprocessing
|
| Networking: Bytes sent | Bytes sent by the load balancer. |
Dependent item | oci.lb.metrics.bytes.out Preprocessing
|
| Networking: Peak bandwidth | Displays the load balancer's peak bandwidth for the duration. |
Dependent item | oci.lb.metrics.bandwidth.peak Preprocessing
|
| Networking: Response time first byte | Displays the load balancer's first byte response time (TCP only). |
Dependent item | oci.lb.metrics.time.response Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| OCI Load Balancer: State has changed | Load balancer state has changed. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.state,#1)<>last(/Oracle Cloud Load Balancer by HTTP/oci.lb.state,#2) |
Info | Manual close: Yes |
| OCI Load Balancer: Backend set count has changed | Backend set count has changed. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.sets.count,#1)<>last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.sets.count,#2) and length(last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.sets.count))>0 |
Info | Manual close: Yes |
LLD rule Listener discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listener discovery | Discover the load balancer's listeners. |
Dependent item | oci.lb.listener.discovery Preprocessing
|
Item prototypes for Listener discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Listener [{#LISTENER.NAME}]: Get data | Get the raw data for the discovered load balancer listener. |
Dependent item | oci.lb.listener.get[{#LISTENER.NAME}] Preprocessing
|
| Listener [{#LISTENER.NAME}]: Port | The communication port for the listener. |
Dependent item | oci.lb.listener.port["{#LISTENER.NAME}"] Preprocessing
|
| Listener [{#LISTENER.NAME}]: Protocol | The protocol on which the listener accepts connection requests. |
Dependent item | oci.lb.listener.protocol["{#LISTENER.NAME}"] Preprocessing
|
Trigger prototypes for Listener discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| OCI Load Balancer: Listener [{#LISTENER.NAME}]: Listener port changed | Port for the listener has changed. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.listener.port["{#LISTENER.NAME}"],#1)<>last(/Oracle Cloud Load Balancer by HTTP/oci.lb.listener.port["{#LISTENER.NAME}"],#2) and length(last(/Oracle Cloud Load Balancer by HTTP/oci.lb.listener.port["{#LISTENER.NAME}"]))>0 |
Info | Manual close: Yes |
| OCI Load Balancer: Listener [{#LISTENER.NAME}]: Listener protocol changed | Protocol for the listener has changed. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.listener.protocol["{#LISTENER.NAME}"],#1)<>last(/Oracle Cloud Load Balancer by HTTP/oci.lb.listener.protocol["{#LISTENER.NAME}"],#2) and length(last(/Oracle Cloud Load Balancer by HTTP/oci.lb.listener.protocol["{#LISTENER.NAME}"]))>0 |
Info | Manual close: Yes |
LLD rule Backend sets discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Backend sets discovery | Discover the load balancer's backend sets. |
Dependent item | oci.lb.backend.sets.discovery Preprocessing
|
Item prototypes for Backend sets discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Backend set [{#BACKEND.SET.NAME}]: Get metrics | Gets the backend set metrics. |
Script | oci.lb.backend.set.metrics.get[{#BACKEND.SET.NAME}] |
| Backend set [{#BACKEND.SET.NAME}]: Backend servers: Total | Number of backend servers in the backend set. |
Dependent item | oci.lb.backend.set.backend.servers[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend servers: Unhealthy | Number of unhealthy backend servers in the backend set. |
Dependent item | oci.lb.backend.set.backend.servers.unhealthy[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Bytes sent | Number of bytes sent across all backend servers. |
Dependent item | oci.lb.backend.set.bytes.sent[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Bytes received | Number of bytes received across all backend servers. |
Dependent item | oci.lb.backend.set.bytes.received[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Inbound requests | Number of incoming client requests to the backend set. |
Dependent item | oci.lb.backend.set.http.requests[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: Total | Number of responses across all backend servers. |
Dependent item | oci.lb.backend.set.http.responses[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: Average HTTP response time | Average response time of backend servers. HTTP only. |
Dependent item | oci.lb.backend.set.response.http[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: Average TCP response time | Average response time of backend servers. TCP only. |
Dependent item | oci.lb.backend.set.response.tcp[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend timeouts | Number of timeouts across all backend servers. |
Dependent item | oci.lb.backend.set.backend.timeouts[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: Invalid header | Number of invalid header responses across all backend servers. |
Dependent item | oci.lb.backend.set.response.invalid[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 200 | Number of HTTP 200 responses. |
Dependent item | oci.lb.backend.set.response.200[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 2xx | Number of HTTP 2xx responses. |
Dependent item | oci.lb.backend.set.response.2xx[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 3xx | Number of HTTP 3xx responses. |
Dependent item | oci.lb.backend.set.response.3xx[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 4xx | Number of HTTP 4xx responses. |
Dependent item | oci.lb.backend.set.response.4xx[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 5xx | Number of HTTP 5xx responses. |
Dependent item | oci.lb.backend.set.response.5xx[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 502 | Number of HTTP 502 responses. |
Dependent item | oci.lb.backend.set.response.502[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Responses: HTTP 504 | Number of HTTP 504 responses. |
Dependent item | oci.lb.backend.set.response.504[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Connections: Active | Number of active connections from the load balancer to all backend servers. |
Dependent item | oci.lb.backend.set.connections.active[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Connections: Keep-alive | Number of keep-alive connections. |
Dependent item | oci.lb.backend.set.connections.keepalive[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Connections: Closed | Number of closed connections. |
Dependent item | oci.lb.backend.set.connections.closed[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Get health data | Gets the backend set health data. |
Script | oci.lb.backend.set.health.get[{#BACKEND.SET.NAME}] |
| Backend set [{#BACKEND.SET.NAME}]: Backend set health | Overall health status of the backend set. |
Dependent item | oci.lb.backend.set.health[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Get data | Gets the raw data for the discovered load balancer backend set. |
Dependent item | oci.lb.backend.set.get[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Policy | Policy for the backend set. |
Dependent item | oci.lb.backend.set.policy[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Number of backends | Total number of backends in the backend set. |
Dependent item | oci.lb.backend.set.total[{#BACKEND.SET.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Health checker: Port | Port for the backend set health checker. |
Dependent item | oci.lb.backend.set.health.port[{#BACKEND.SET.NAME}] Preprocessing
|
Trigger prototypes for Backend sets discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| OCI Load Balancer: Backend set [{#BACKEND.SET.NAME}]: Backend set policy changed | Policy for the backend set has changed. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.policy[{#BACKEND.SET.NAME}],#1)<>last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.policy[{#BACKEND.SET.NAME}],#2) and length(last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.policy[{#BACKEND.SET.NAME}]))>0 |
Info | Manual close: Yes |
| OCI Load Balancer: Backend set [{#BACKEND.SET.NAME}]: Number of backends changed | Total count of backends in the backend set has changed. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.total[{#BACKEND.SET.NAME}],#1)<>last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.total[{#BACKEND.SET.NAME}],#2) and length(last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.total[{#BACKEND.SET.NAME}]))>0 |
Info | Manual close: Yes Depends on:
|
| OCI Load Balancer: Backend set [{#BACKEND.SET.NAME}]: No backends configured | There are no configured backends for the backend set. |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.set.total[{#BACKEND.SET.NAME}],#1)=0 |
Warning |
LLD rule Backends discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Backends discovery | Discover backends of a backend set. |
Nested | oci.lb.backend.discovery[{#BACKEND.SET.NAME}] Preprocessing
|
Item prototypes for Backends discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Get health data | Gets the backend health data. |
Script | oci.lb.backend.health.get[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] |
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Backend health | The general health status of the specified backend server as reported by the primary and standby load balancers. |
Dependent item | oci.lb.backend.health[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Get data | Get the raw data for the discovered load balancer backend. |
Dependent item | oci.lb.backend.get[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Drain status | Whether the load balancer should drain this server. Servers marked "drain" receive no new incoming traffic. |
Dependent item | oci.lb.backend.drain[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Backup status | Whether the load balancer should treat this server as a backup unit. If true, the load balancer forwards no ingress traffic to this backend server unless all other backend servers not marked as "backup" fail the health check policy. |
Dependent item | oci.lb.backend.backup[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Offline status | Whether the load balancer should treat this server as offline. Offline servers receive no incoming traffic. |
Dependent item | oci.lb.backend.offline[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Weight | The load balancing policy weight assigned to the server. Backend servers with a higher weight receive a larger proportion of incoming traffic. For example, a server weighted '3' receives 3 times the number of new connections as a server weighted '1'. |
Dependent item | oci.lb.backend.weight[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
| Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Max connections | The maximum number of simultaneous connections the load balancer can make to the backend. If this is not set or set to 0 then the maximum number of simultaneous connections the load balancer can make to the backend is unlimited. |
Dependent item | oci.lb.backend.connections.max[{#BACKEND.SET.NAME}/{#BACKEND.NAME}] Preprocessing
|
Trigger prototypes for Backends discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| OCI Load Balancer: Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Health in unknown state | Backend is in |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.health[{#BACKEND.SET.NAME}/{#BACKEND.NAME}])<2 |
Info | Depends on:
|
| OCI Load Balancer: Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Health in warning state | Backend is in |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.health[{#BACKEND.SET.NAME}/{#BACKEND.NAME}])=3 |
Warning | Depends on:
|
| OCI Load Balancer: Backend set [{#BACKEND.SET.NAME}]: Backend [{#BACKEND.NAME}]: Health in critical state | Backend is in |
last(/Oracle Cloud Load Balancer by HTTP/oci.lb.backend.health[{#BACKEND.SET.NAME}/{#BACKEND.NAME}])=4 |
High |