Oracle Cloud Compute

Oracle Cloud Infrastructure Compute provides virtual machine and bare metal instances, sized and scaled independently of their storage.

Available solutions

Zabbix version 7.4 7.2 7.0 6.4 6.0
Source: templates/cloud/oracle_cloud

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

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

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.CpuUtilization

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Memory utilization, in %

Space currently in use, measured in pages. Expressed as a percentage of used pages.

Dependent item oci.compute.mem.util

Preprocessing

  • JSON Path: $.MemoryUtilization

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Memory allocation stalls

Number of times page reclaim was called directly.

Dependent item oci.compute.mem.stalls

Preprocessing

  • JSON Path: $.MemoryAllocationStalls

  • Discard unchanged with heartbeat: 1h

Load average

Average system load calculated over a 1-minute period. Expressed as a number of processes.

Dependent item oci.compute.load.avg

Preprocessing

  • JSON Path: $.LoadAverage

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Disk bytes read

Read throughput. Expressed as bytes read per interval.

Dependent item oci.compute.disk.read

Preprocessing

  • JSON Path: $.DiskBytesRead

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Disk bytes written

Write throughput. Expressed as bytes written per interval.

Dependent item oci.compute.disk.written

Preprocessing

  • JSON Path: $.DiskBytesWritten

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Disk read I/O

Activity level from I/O reads. Expressed as reads per interval.

Dependent item oci.compute.disk.io.read

Preprocessing

  • JSON Path: $.DiskIopsRead

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Disk write I/O

Activity level from I/O writes. Expressed as writes per interval.

Dependent item oci.compute.disk.io.write

Preprocessing

  • JSON Path: $.DiskIopsWritten

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Network bytes in

Network bytes in for the compute instance.

Dependent item oci.compute.network.in

Preprocessing

  • JSON Path: $.NetworksBytesIn

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

Network bytes out

Network bytes out for the compute instance.

Dependent item oci.compute.network.out

Preprocessing

  • JSON Path: $.NetworksBytesOut

  • JavaScript: return Math.round(value * 100) / 100;

  • Discard unchanged with heartbeat: 1h

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 {$OCI.COMPUTE.CPU.UTIL.HIGH}% of the max available value.

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 {$OCI.COMPUTE.CPU.UTIL.WARN}% of the max available value.

min(/Oracle Cloud Compute by HTTP/oci.compute.cpu.util,5m) >= {$OCI.COMPUTE.CPU.UTIL.WARN} Warning Depends on:
  • OCI Compute: Current CPU utilization is too high
OCI Compute: Current memory utilization is too high

Current memory utilization has exceeded {$OCI.COMPUTE.MEM.UTIL.HIGH}% of the max available value.

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 {$OCI.COMPUTE.MEM.UTIL.WARN}% of the max available value.

min(/Oracle Cloud Compute by HTTP/oci.compute.mem.util,5m) >= {$OCI.COMPUTE.MEM.UTIL.WARN} Warning Depends on:
  • OCI Compute: Current memory utilization is too high

LLD rule VNIC discovery

Name Description Type Key and additional info
VNIC discovery

Discover compute instance VNICs.

Dependent item oci.compute.vnic.discovery

Preprocessing

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $[?(@.id == '{#ID}')].state.first()

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

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicEgressDropsSecurityList

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicIngressDropsSecurityList

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicFromNetworkBytes

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicToNetworkBytes

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicFromNetworkPackets

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicToNetworkPackets

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicIngressDropsThrottle

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicEgressDropsThrottle

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicIngressDropsConntrackFull

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicEgressDropsConntrackFull

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicConntrackUtilPercent

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.VnicConntrackIsFull

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.SmartnicBufferDropsFromNetwork

  • Discard unchanged with heartbeat: 1h

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

  • JSON Path: $.SmartnicBufferDropsFromHost

  • Discard unchanged with heartbeat: 1h

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 {$OCI.COMPUTE.VNIC.CONNTRACK.UTIL.HIGH}% of the max available value.

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 {$OCI.COMPUTE.VNIC.CONNTRACK.UTIL.WARN}% of the max available value.

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}]: Current conntrack table utilization is too high
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

Articles and documentation

+ Propose new article

Не нашли то, что искали?