Available solutions
Oracle Cloud Compute by HTTP
Overview
This template monitors Oracle Cloud Infrastructure (OCI) single compute instance resources and discovers attached virtual network interface cards (VNICs) and monitors their 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: 7.4 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 compute instances automatically, create host prototypes for each discovered instance,
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}.
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 Compute", e.g. {$HTTP.TLS.VERIFY:"Oracle Cloud Compute"}. |
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.COMPUTE.VNIC.DISCOVERY.STATE.MATCHES} | Sets the regex string of VNIC states to allow in discovery. |
.* |
| {$OCI.COMPUTE.VNIC.DISCOVERY.STATE.NOT_MATCHES} | Sets the regex string of VNIC states to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.COMPUTE.VNIC.DISCOVERY.NAME.MATCHES} | Sets the regex string of VNIC names to allow in discovery. |
.* |
| {$OCI.COMPUTE.VNIC.DISCOVERY.NAME.NOT_MATCHES} | Sets the regex string of VNIC names to ignore in discovery. |
CHANGE_IF_NEEDED |
| {$OCI.COMPUTE.CPU.UTIL.WARN} | Sets the percentage threshold for creating a "warning" severity event about CPU resource utilization. |
75 |
| {$OCI.COMPUTE.CPU.UTIL.HIGH} | Sets the percentage threshold for creating a "high" severity event about CPU resource utilization. |
90 |
| {$OCI.COMPUTE.MEM.UTIL.WARN} | Sets the percentage threshold for creating a "warning" severity event about memory resource utilization. |
75 |
| {$OCI.COMPUTE.MEM.UTIL.HIGH} | Sets the percentage threshold for creating a "high" severity event about memory resource utilization. |
90 |
| {$OCI.COMPUTE.VNIC.CONNTRACK.UTIL.WARN} | Sets the percentage threshold for creating a "warning" severity event about VNIC connection tracking table utilization. |
75 |
| {$OCI.COMPUTE.VNIC.CONNTRACK.UTIL.HIGH} | Sets the percentage threshold for creating a "high" severity event about VNIC connection tracking table utilization. |
90 |
Items
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| Get instance availability | The accessibility status of a virtual machine instance. A value of "1" indicates that the instance is unresponsive due to an issue with the infrastructure or the instance itself. A value of "0" indicates that an accessibility issue has not been detected. If the instance is stopped, then the metric does not have a value. |
Script | oci.compute.availability.get |
| State | The current state of the instance. |
Script | oci.compute.state.get Preprocessing
|
| Get VNICs | Gets information about all virtual network interface cards attached to the instance. |
Script | oci.compute.vnic.get |
| Get compute metrics | Gets compute instance metrics. |
Script | oci.compute.metrics.get |
| CPU utilization, in % | Activity level from the CPU. Expressed as a percentage of the total time. |
Dependent item | oci.compute.cpu.util Preprocessing
|
| Memory utilization, in % | Space currently in use, measured in pages. Expressed as a percentage of used pages. |
Dependent item | oci.compute.mem.util Preprocessing
|
| Memory allocation stalls | Number of times page reclaim was called directly. |
Dependent item | oci.compute.mem.stalls Preprocessing
|
| Load average | Average system load calculated over a 1-minute period. Expressed as a number of processes. |
Dependent item | oci.compute.load.avg Preprocessing
|
| Disk bytes read | Read throughput. Expressed as bytes read per interval. |
Dependent item | oci.compute.disk.read Preprocessing
|
| Disk bytes written | Write throughput. Expressed as bytes written per interval. |
Dependent item | oci.compute.disk.written Preprocessing
|
| Disk read I/O | Activity level from I/O reads. Expressed as reads per interval. |
Dependent item | oci.compute.disk.io.read Preprocessing
|
| Disk write I/O | Activity level from I/O writes. Expressed as writes per interval. |
Dependent item | oci.compute.disk.io.write Preprocessing
|
| Network bytes in | Network bytes in for the compute instance. |
Dependent item | oci.compute.network.in Preprocessing
|
| Network bytes out | Network bytes out for the compute instance. |
Dependent item | oci.compute.network.out Preprocessing
|
Triggers
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| OCI Compute: Compute instance is not available | Current instance availability. |
last(/Oracle Cloud Compute by HTTP/oci.compute.availability.get) = 1 |
High | |
| OCI Compute: State has changed | Compute instance state has changed. |
last(/Oracle Cloud Compute by HTTP/oci.compute.state.get,#1)<>last(/Oracle Cloud Compute by HTTP/oci.compute.state.get,#2) |
Info | Manual close: Yes |
| OCI Compute: Current CPU utilization is too high | Current CPU utilization has exceeded |
min(/Oracle Cloud Compute by HTTP/oci.compute.cpu.util,5m) >= {$OCI.COMPUTE.CPU.UTIL.HIGH} |
High | |
| OCI Compute: Current CPU utilization is high | Current CPU utilization has exceeded |
min(/Oracle Cloud Compute by HTTP/oci.compute.cpu.util,5m) >= {$OCI.COMPUTE.CPU.UTIL.WARN} |
Warning | Depends on:
|
| OCI Compute: Current memory utilization is too high | Current memory utilization has exceeded |
min(/Oracle Cloud Compute by HTTP/oci.compute.mem.util,5m) >= {$OCI.COMPUTE.MEM.UTIL.HIGH} |
High | |
| OCI Compute: Current memory utilization is high | Current memory utilization has exceeded |
min(/Oracle Cloud Compute by HTTP/oci.compute.mem.util,5m) >= {$OCI.COMPUTE.MEM.UTIL.WARN} |
Warning | Depends on:
|
LLD rule VNIC discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| VNIC discovery | Discover compute instance VNICs. |
Dependent item | oci.compute.vnic.discovery Preprocessing
|
Item prototypes for VNIC discovery
| Name | Description | Type | Key and additional info |
|---|---|---|---|
| VNIC [{#NAME}]: Attachment state | Current attachment state of the VNIC. |
Dependent item | oci.compute.vnic.attachment[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Get metrics | Gets virtual network interface card metrics. |
Script | oci.compute.vnic.metrics.get[{#ID}] |
| VNIC [{#NAME}]: Egress packets dropped by security list | Packets sent by the VNIC, destined for the network, dropped due to security rule violations. |
Dependent item | oci.compute.vnic.egress.packets.dropped[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Ingress packets dropped by security list | Packets received from the network, destined for the VNIC, dropped due to security rule violations. |
Dependent item | oci.compute.vnic.ingress.packets.dropped[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Bytes from network | Bytes received at the VNIC from the network, after drops. |
Dependent item | oci.compute.vnic.net.bytes.ingr[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Bytes to network | Bytes sent from the VNIC to the network, before drops. |
Dependent item | oci.compute.vnic.net.bytes.egr[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Packets from network | Packets received at the VNIC from the network, after drops. |
Dependent item | oci.compute.vnic.net.packets.ingr[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Packets to network | Packets sent from the VNIC to the network, before drops. |
Dependent item | oci.compute.vnic.net.packets.egr[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Throttled ingress packets | Packets received from the network, destined for the VNIC, dropped due to throttling. |
Dependent item | oci.compute.vnic.net.packets.ingr.throttled[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Throttled egress packets | Packets sent from the VNIC, destined for the network, dropped due to throttling. |
Dependent item | oci.compute.vnic.net.packets.egr.throttled[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Ingress packets dropped by full connection tracking table | Packets received from the network, destined for the VNIC, dropped due to the full connection tracking table. |
Dependent item | oci.compute.vnic.net.packets.ingr.drop[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Egress packets dropped by full connection tracking table | Packets sent from the VNIC, destined for the network, dropped due to the full connection tracking table. |
Dependent item | oci.compute.vnic.net.packets.egr.drop[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Connection tracking table utilization, in % | Total utilization percentage (0-100%) of the connection tracking table. |
Dependent item | oci.compute.vnic.net.conntrack.util[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Connection tracking table full | Boolean (0/false, 1/true) that indicates the connection tracking table is full. |
Dependent item | oci.compute.vnic.net.conntrack.full[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Smartnic buffer drops from network | Number of packets dropped in SmartNIC from the network due to buffer exhaustion. This metric is available only for Bare Metal Instances. For virtual machines, these metric values are zero. |
Dependent item | oci.compute.vnic.net.smartnic.drops[{#ID}] Preprocessing
|
| VNIC [{#NAME}]: Smartnic buffer drops from host | Number of packets dropped in SmartNIC from the host due to buffer exhaustion. This metric is available only for Bare Metal Instances. For virtual machines, these metric values are zero. |
Dependent item | oci.compute.vnic.host.smartnic.drops[{#ID}] Preprocessing
|
Trigger prototypes for VNIC discovery
| Name | Description | Expression | Severity | Dependencies and additional info |
|---|---|---|---|---|
| OCI Compute: VNIC [{#NAME}]: VNIC is not attached | Virtual network interface card attachment status. |
min(/Oracle Cloud Compute by HTTP/oci.compute.vnic.attachment[{#ID}],5m) >= 3 |
High | |
| OCI Compute: VNIC [{#NAME}]: Current conntrack table utilization is too high | Current conntrack table utilization has exceeded |
min(/Oracle Cloud Compute by HTTP/oci.compute.vnic.net.conntrack.util[{#ID}],5m) >= {$OCI.COMPUTE.VNIC.CONNTRACK.UTIL.HIGH} |
High | |
| OCI Compute: VNIC [{#NAME}]: Current conntrack table utilization is high | Current conntrack table utilization has exceeded |
min(/Oracle Cloud Compute by HTTP/oci.compute.vnic.net.conntrack.util[{#ID}],5m) >= {$OCI.COMPUTE.VNIC.CONNTRACK.UTIL.WARN} |
Warning | Depends on:
|
| OCI Compute: VNIC [{#NAME}]: Conntrack table full | Virtual network interface card connection tracking table is full. |
min(/Oracle Cloud Compute by HTTP/oci.compute.vnic.net.conntrack.full[{#ID}],5m) = 1 |
High |