Oracle Cloud Infrastructure (OCI)

Oracle Cloud is a cloud computing service offered by Oracle Corporation providing servers, storage, network, applications and services through a global network of Oracle Corporation managed data centers.

Available solutions




This template is for Zabbix version: 7.0
Also available for: 6.4 6.0

Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/cloud/oracle_cloud?at=release/7.0

Oracle Cloud by HTTP

Overview

This template is designed as a master template that discovers various Oracle Cloud Infrastructure (OCI) services and resources, such as:

  • OCI Compute;

  • OCI Autonomous Database (serverless);

  • OCI Object Storage;

  • OCI Virtual Cloud Networks (VCNs);

  • OCI Block Volumes;

  • OCI Boot Volumes.

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 an HTTP request body for queries.

Requirements

Zabbix version: 7.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

Required setup

For this template to work, it needs authentication details to use in requests. To acquire this information, see the following steps:

  1. Log into your administrator account in Oracle Cloud Console.

  2. Create a new user that will be used by Zabbix for monitoring.

  3. Create a new security policy and assign a previously created user to it.

  4. This policy will contain a set of rules that will give monitoring user access to specific resources in your OCI. Make sure to add the following rules to the policy:

    Allow group 'zabbix_api' to read metrics in tenancy
    Allow group 'zabbix_api' to read instances in tenancy
    Allow group 'zabbix_api' to read subnets in tenancy
    Allow group 'zabbix_api' to read vcns in tenancy
    Allow group 'zabbix_api' to read vnic-attachments in tenancy
    Allow group 'zabbix_api' to read volumes in tenancy
    Allow group 'zabbix_api' to read objectstorage-namespaces in tenancy
    Allow group 'zabbix_api' to read buckets in tenancy
    Allow group 'zabbix_api' to read autonomous-databases in tenancy
    

    In this example, zabbix_api is the name of the previously created monitoring user. Rename it to your monitoring user's name.

  5. Generate an API key pair for your monitoring user - open your monitoring user profile and on the left side, press API keys and then, Add API key (if generating a new key pair, do not forget to save the private key).

  6. After this, Oracle Cloud Console will provide additional information that is required for access, such as:

    • Tenancy OCID;

    • User OCID;

    • Fingerprint;

    • Region.

    Save this information somewhere or keep this window open. This information will be required in later steps.

  7. In Zabbix, create a new host and assign this template to it (Oracle Cloud by HTTP).

  8. Open the Macros section of the host you created and set the following user macro values according to the OCI configuration file (from step #6):

    • {$OCI.API.TENANCY} - set the tenancy OCID value;

    • {$OCI.API.USER} - set the user OCID value;

    • {$OCI.API.FINGERPRINT} - set the fingerprint value;

    • {$OCI.API.PRIVATE.KEY} - copy and paste the contents of private key file here.

  9. After the authentication credentials are entered, you need to identify the OCI API endpoints that match your region (as provided by Oracle Cloud Console in step #6). To do so, you can use the OCI API Reference and Endpoints list, where each API service has a dedicated page with the respective API endpoints.

    The required API service endpoints are:

  10. When the API endpoints are identified, you need to set them in Zabbix as user macros to the host that the template is attached to (similarly to step #8):

    • {$OCI.API.CORE.HOST} - Core Services API endpoint, for example, iaas.eu-stockholm-1.oraclecloud.com;

    • {$OCI.API.AUTONOMOUS.DB.HOST} - Database Service API endpoint, for example, database.eu-stockholm-1.oraclecloud.com;

    • {$OCI.API.OBJECT.STORAGE.HOST} - Object Storage Service API endpoint, for example, objectstorage.eu-stockholm-1.oraclecloud.com;

    • {$OCI.API.TELEMETRY.HOST} - Monitoring API endpoint, for example, telemetry.eu-stockholm-1.oraclecloud.com;

    IMPORTANT! API Endpoint URLs need to be entered without the HTTP scheme (https://).

  11. Once you've completed adding the host to Zabbix, and it will automatically discover services and monitor them.

Optional setup

LLD resource filtering by free-form tags of OCI resources

Every LLD rule has pre-added filtering options to avoid discovering unwanted resources, such as terminated OCI compute instances. Most of these filters use specific service item names and states, and values of these filters are defined by the user macros {$....MATCHES} and {$....NOT_MATCHES}.

To add additional filtering options, every discovery script (except VCN discovery), gathers free-form tag data about a specific resource. Since free-form tags are completely custom and format or usage will vary between users, free-from tag filters are not included under LLD filters by default, but can be easily added as they are already being collected by scripts.

Example

  1. In Oracle Cloud Console, add a free-form tag to a resource, for example, a compute instance. The tag key will be location_group and the tag value will be eu-north-1.

  2. Open the Oracle Cloud by HTTP template in Zabbix and go to "Discovery rules". Find "Compute instances discovery" and open it.

  3. Under "LLD macros", add a new macro that will represent this location group tag, for example: {#LOCATION_GROUP} $.tags.location_group.

  4. Under the "Filters" tab, there will already be filters regarding the compute instance name and state. Click "Add" to add a new filter and define the previously created LLD macro and add a matching pattern and value, for example, {#LOCATION_GROUP} matches eu-north-*.

  5. The next time Compute instances discovery is executed, it will only discover OCI compute instances that have the free-form tag location_group that matches the regex of eu-north-*. You can also experiment with the LLD filter pattern matching value to receive different matching results for a specified value.

HTTP proxy usage

If needed, you can specify an HTTP proxy for the template by changing the value of the {$OCI.HTTP.PROXY} user macro.

Custom OK HTTP response

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 value changing

LLD filter values and trigger threshold values can be changed with the respective user macros.

Macros used

Name Description Default
{$OCI.API.CORE.HOST}

Host for OCI Core Services API endpoint.

{$OCI.API.TELEMETRY.HOST}

Host for OCI Monitoring API endpoint.

{$OCI.API.OBJECT.STORAGE.HOST}

Host for OCI Object Storage API endpoint.

{$OCI.API.AUTONOMOUS.DB.HOST}

Host for OCI Autonomous Database API endpoint.

{$OCI.API.COMPARTMENT.COMPUTE}

Compartment OCIDs for compute instances. Can be a single value or a comma separated list of values.

{$OCI.API.COMPARTMENT.VCN}

Compartment OCIDs for virtual cloud networks. Can be a single value or a comma separated list of values.

{$OCI.API.COMPARTMENT.VOLUME.BLOCK}

Compartment OCIDs for block volumes. Can be a single value or a comma separated list of values.

{$OCI.API.COMPARTMENT.VOLUME.BOOT}

Compartment OCIDs for boot volumes. Can be a single value or a comma separated list of values.

{$OCI.API.COMPARTMENT.OBJECT.STORAGE}

Compartment OCIDs for object storage buckets. Can be a single value or a comma separated list of values.

{$OCI.API.COMPARTMENT.AUTONOMOUS.DB}

Compartment OCIDs for autonomous databases. Can be a single value or a comma separated list of values.

{$OCI.API.TENANCY}

OCID of tenancy.

{$OCI.API.USER}

OCID of user.

{$OCI.API.PRIVATE.KEY}

Entire private key for API access.

{$OCI.API.FINGERPRINT}

Fingerprint of private key.

{$OCI.COMPUTE.DISCOVERY.STATE.MATCHES}

Sets the regex string of compute instance states to allow in discovery.

.*
{$OCI.COMPUTE.DISCOVERY.STATE.NOT_MATCHES}

Sets the regex string of compute instance states to ignore in discovery.

TERMINATED
{$OCI.COMPUTE.DISCOVERY.NAME.MATCHES}

Sets the regex string of compute instance names to allow in discovery.

.*
{$OCI.COMPUTE.DISCOVERY.NAME.NOT_MATCHES}

Sets the regex string of compute instance names to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VCN.DISCOVERY.STATE.MATCHES}

Sets the regex string of virtual cloud network states to allow in discovery.

.*
{$OCI.VCN.DISCOVERY.STATE.NOT_MATCHES}

Sets the regex string of virtual cloud network states to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VCN.DISCOVERY.NAME.MATCHES}

Sets the regex string of virtual cloud network names to allow in discovery.

.*
{$OCI.VCN.DISCOVERY.NAME.NOT_MATCHES}

Sets the regex string of virtual cloud network names to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VOLUME.BLOCK.DISCOVERY.STATE.MATCHES}

Sets the regex string of block volume states to allow in discovery.

.*
{$OCI.VOLUME.BLOCK.DISCOVERY.STATE.NOT_MATCHES}

Sets the regex string of block volume states to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VOLUME.BLOCK.DISCOVERY.NAME.MATCHES}

Sets the regex string of block volume names to allow in discovery.

.*
{$OCI.VOLUME.BLOCK.DISCOVERY.NAME.NOT_MATCHES}

Sets the regex string of block volume names to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VOLUME.BOOT.DISCOVERY.STATE.MATCHES}

Sets the regex string of boot volume states to allow in discovery.

.*
{$OCI.VOLUME.BOOT.DISCOVERY.STATE.NOT_MATCHES}

Sets the regex string of boot volume states to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VOLUME.BOOT.DISCOVERY.NAME.MATCHES}

Sets the regex string of boot volume names to allow in discovery.

.*
{$OCI.VOLUME.BOOT.DISCOVERY.NAME.NOT_MATCHES}

Sets the regex string of boot volume names to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.OBJECT.STORAGE.DISCOVERY.NAME.MATCHES}

Set an HTTP proxy for OCI API requests if needed.

.*
{$OCI.OBJECT.STORAGE.DISCOVERY.NAME.NOT_MATCHES}

Set an HTTP proxy for OCI API requests if needed.

CHANGE_IF_NEEDED
{$OCI.AUTONOMOUS.DB.DISCOVERY.STATE.MATCHES}

Sets the regex string of autonomous database states to allow in discovery.

.*
{$OCI.AUTONOMOUS.DB.DISCOVERY.STATE.NOT_MATCHES}

Sets the regex string of autonomous database states to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.AUTONOMOUS.DB.DISCOVERY.NAME.MATCHES}

Sets the regex string of autonomous database names to allow in discovery.

.*
{$OCI.AUTONOMOUS.DB.DISCOVERY.NAME.NOT_MATCHES}

Sets the regex string of autonomous database names to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.HTTP.PROXY}

Set an HTTP proxy for OCI API requests if needed.

{$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

LLD rule Compute instances discovery

Name Description Type Key and additional info
Compute instances discovery

Discover compute instances.

Script oci.compute.discovery

LLD rule Virtual cloud networks discovery

Name Description Type Key and additional info
Virtual cloud networks discovery

Discover virtual cloud networks (VCNs).

Script oci.vcn.discovery

LLD rule Block volumes discovery

Name Description Type Key and additional info
Block volumes discovery

Discover block volumes.

Script oci.block.volumes.discovery

LLD rule Boot volumes discovery

Name Description Type Key and additional info
Boot volumes discovery

Discover boot volumes.

Script oci.boot.volumes.discovery

LLD rule Object storage discovery

Name Description Type Key and additional info
Object storage discovery

Discover object storage.

Script oci.object.storage.discovery

LLD rule Autonomous database discovery

Name Description Type Key and additional info
Autonomous database discovery

Discover autonomous databases.

Script oci.object.autonomous.db.discovery

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.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 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.

{$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
Compute instance is not available

Current instance availability.

last(/Oracle Cloud Compute by HTTP/oci.compute.availability.get) = 1 High
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
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
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:
  • Current CPU utilization is too high
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
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:
  • 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
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
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
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:
  • VNIC [{#NAME}]: Current conntrack table utilization is too high
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

Oracle Cloud Object Storage by HTTP

Overview

This template monitors Oracle Cloud Infrastructure (OCI) object storage 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 HTTP request body for queries.

Requirements

Zabbix version: 7.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 object storage buckets automatically, create host prototypes for each discovered bucket, and apply it 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.

{$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

Items

Name Description Type Key and additional info
Get frequent metrics

Gets all metrics related to a specific bucket that have frequent update time (100 milliseconds).

Script oci.obj.storage.metrics.frequent.get
All requests count

The total number of all HTTP requests made in a bucket.

Dependent item oci.obj.storage.requests

Preprocessing

  • JSON Path: $.AllRequests

  • Discard unchanged with heartbeat: 1h

Client-side error count

The total number of 4xx errors for requests made in a bucket.

Dependent item oci.obj.storage.client.errors

Preprocessing

  • JSON Path: $.ClientErrors

  • Discard unchanged with heartbeat: 1h

First byte latency time

The per-request time measured from the time Object Storage receives the complete request to when Object Storage returns the first byte of the response.

Dependent item oci.obj.storage.latency.byte

Preprocessing

  • JSON Path: $.FirstByteLatency

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 1h

Post object request count

The total number of HTTP POST requests made in a bucket.

Dependent item oci.obj.storage.requests.post

Preprocessing

  • JSON Path: $.PostRequests

  • Discard unchanged with heartbeat: 1h

Put object request count

The total number of PutObject requests made in a bucket.

Dependent item oci.obj.storage.requests.put

Preprocessing

  • JSON Path: $.PutRequests

  • Discard unchanged with heartbeat: 1h

Overall latency time

The per-request time from the first byte received by Object Storage to the last byte sent from Object Storage.

Dependent item oci.obj.storage.latency.overall

Preprocessing

  • JSON Path: $.TotalRequestLatency

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 1h

Get hourly metrics

Gets all metrics related to specific bucket that have update time of 1 hour.

Script oci.obj.storage.metrics.hourly.get
Number of objects

The count of objects in the bucket, excluding any multipart upload parts that have not been discarded (aborted) or committed.

Dependent item oci.obj.storage.objects

Preprocessing

  • JSON Path: $.ObjectCount

  • Discard unchanged with heartbeat: 12h

Bucket size

The size of the bucket, excluding any multipart upload parts that have not been discarded (aborted) or committed.

Dependent item oci.obj.storage.size

Preprocessing

  • JSON Path: $.StoredBytes

  • Discard unchanged with heartbeat: 12h

Incomplete multipart upload size

The size of any multipart upload parts that have not been discarded (aborted) or committed.

Dependent item oci.obj.storage.size.incomplete

Preprocessing

  • JSON Path: $.UncommittedParts

  • Discard unchanged with heartbeat: 12h

Get enabled object lifecycle management

Indicates whether a bucket has any executable Object Lifecycle Management policies configured. EnabledOLM emits:

1 - if policies are configured

0 - if no policies are configured

Script oci.obj.storage.metrics.olm.get

Preprocessing

  • Discard unchanged with heartbeat: 1d

Triggers

Name Description Expression Severity Dependencies and additional info
Object lifecycle management policy has changed

The object lifecycle management policy configuration has changed.

last(/Oracle Cloud Object Storage by HTTP/oci.obj.storage.metrics.olm.get,#1)<>last(/Oracle Cloud Object Storage by HTTP/oci.obj.storage.metrics.olm.get,#2) and length(last(/Oracle Cloud Object Storage by HTTP/oci.obj.storage.metrics.olm.get))>0 Info

Oracle Cloud Autonomous Database by HTTP

Overview

This template monitors Oracle Cloud Infrastructure (OCI) autonomous database (serverless) 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.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 autonomous databases automatically, create host prototypes for each discovered database, 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.

{$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.AUTONOMOUS.DB.CPU.UTIL.WARN}

Sets the percentage threshold for creating a "warning" severity event about CPU resource utilization.

75
{$OCI.AUTONOMOUS.DB.CPU.UTIL.HIGH}

Sets the percentage threshold for creating a "high" severity event about CPU resource utilization.

90
{$OCI.AUTONOMOUS.DB.STORAGE.UTIL.WARN}

Sets the percentage threshold for creating a "warning" severity event about storage resource utilization.

75
{$OCI.AUTONOMOUS.DB.STORAGE.UTIL.HIGH}

Sets the percentage threshold for creating a "high" severity event about storage resource utilization.

90

Items

Name Description Type Key and additional info
State

Gets the autonomous database state.

Script oci.aut.db.state

Preprocessing

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

  • Discard unchanged with heartbeat: 1h

Get frequent metrics

Gets all metrics related to the database that have a collection frequency of 1 minute.

Script oci.aut.db.metrics.frequent.get
CPU time

Average rate of accumulation of CPU time by foreground sessions in the database over the selected time interval.

Dependent item oci.aut.db.cpu.time

Preprocessing

  • JSON Path: $.CpuTime

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

  • Discard unchanged with heartbeat: 1h

CPU utilization, in %

The CPU usage expressed as a percentage, aggregated across all consumer groups. The utilization percentage is reported with respect to the number of CPUs the database is allowed to use.

Dependent item oci.aut.db.cpu.util

Preprocessing

  • JSON Path: $.CpuUtilization

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

  • Discard unchanged with heartbeat: 1h

Current logons

The number of successful logons during the selected time interval.

Dependent item oci.aut.db.logons

Preprocessing

  • JSON Path: $.CurrentLogons

  • Discard unchanged with heartbeat: 1h

DB block changes

The number of changes that were part of an update or delete operation that were made to all blocks in the SGA.

Such changes generate redo log entries and thus become permanent changes to the database if the transaction is committed.

This statistic approximates total database work and indicates the rate at which buffers are being dirtied during the selected time interval.

Dependent item oci.aut.db.block.changes

Preprocessing

  • JSON Path: $.DBBlockChanges

  • Discard unchanged with heartbeat: 1h

DB time

The amount of time database user sessions spend executing database code (CPU time + wait time). Database time is used to infer database call latency as it increases in direct proportion to both database call latency (response time) and call volume.

It is calculated as the average rate of accumulation of database time by foreground sessions in the database over the selected time interval.

Dependent item oci.aut.db.time

Preprocessing

  • JSON Path: $.DBTime

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

  • Discard unchanged with heartbeat: 1h

Execute count

The number of user and recursive calls that executed SQL statements during the selected time interval.

Dependent item oci.aut.db.exec.count

Preprocessing

  • JSON Path: $.ExecuteCount

  • Discard unchanged with heartbeat: 1h

Failed connections

The number of failed database connections.

Dependent item oci.aut.db.conn.failed

Preprocessing

  • JSON Path: $.FailedConnections

  • Discard unchanged with heartbeat: 1h

Failed logons

The number of logons that failed because of an invalid user name and/or password during the selected time interval.

Dependent item oci.aut.db.logons.failed

Preprocessing

  • JSON Path: $.FailedLogons

  • Discard unchanged with heartbeat: 1h

Parse count (hard)

The number of parse calls (real parses) during the selected time interval. A hard parse is an expensive operation in terms of memory use as it requires Oracle to allocate a workheap and other memory structures and then build a parse tree.

Dependent item oci.aut.db.parse.count.hard

Preprocessing

  • JSON Path: $.HardParseCount

  • Discard unchanged with heartbeat: 1h

Session logical reads

The sum of db block gets and consistent gets during the selected time interval. This includes logical reads of database blocks from either the buffer cache or process private memory.

Dependent item oci.aut.db.logical.reads.session

Preprocessing

  • JSON Path: $.LogicalReads

  • Discard unchanged with heartbeat: 1h

Parse count (total)

The number of hard and soft parses during the selected time interval.

Dependent item oci.aut.db.parse.count.total

Preprocessing

  • JSON Path: $.ParseCount

  • Discard unchanged with heartbeat: 1h

Parse count (failures)

The number of parse failures during the selected time interval.

Dependent item oci.aut.db.parse.count.failed

Preprocessing

  • JSON Path: $.ParseFailureCount

  • Discard unchanged with heartbeat: 1h

Physical reads

The number of data blocks read from disk during the selected time interval.

Dependent item oci.aut.db.physical.reads

Preprocessing

  • JSON Path: $.PhysicalReads

  • Discard unchanged with heartbeat: 1h

Physical read total bytes

The size in bytes of disk reads by all database instance activity including application reads, backup and recovery, and other utilities during the selected time interval.

Dependent item oci.aut.db.physical.read.bytes

Preprocessing

  • JSON Path: $.PhysicalReadTotalBytes

  • Discard unchanged with heartbeat: 1h

Physical writes

The number of data blocks written to disk during the selected time interval.

Dependent item oci.aut.db.physical.writes

Preprocessing

  • JSON Path: $.PhysicalWrites

  • Discard unchanged with heartbeat: 1h

Physical write total bytes

The size in bytes of all disk writes for the database instance including application activity, backup and recovery, and other utilities during the selected time interval.

Dependent item oci.aut.db.physical.write.bytes

Preprocessing

  • JSON Path: $.PhysicalWriteTotalBytes

  • Discard unchanged with heartbeat: 1h

Queued statements

The number of queued SQL statements aggregated across all consumer groups during the selected time interval.

Dependent item oci.aut.db.queued.statements

Preprocessing

  • JSON Path: $.QueuedStatements

  • Discard unchanged with heartbeat: 1h

Redo generated

Amount of redo generated in bytes during the selected time interval.

Dependent item oci.aut.db.redo.gen

Preprocessing

  • JSON Path: $.RedoGenerated

  • Discard unchanged with heartbeat: 1h

Running statements

The number of running SQL statements aggregated across all consumer groups during the selected time interval.

Dependent item oci.aut.db.statements.running

Preprocessing

  • JSON Path: $.RunningStatements

  • Discard unchanged with heartbeat: 1h

Sessions

The number of sessions in the database.

Dependent item oci.aut.db.sessions

Preprocessing

  • JSON Path: $.Sessions

  • Discard unchanged with heartbeat: 1h

Bytes received via SQL*Net from client

The number of bytes received from the client over Oracle Net Services during the selected time interval.

Dependent item oci.aut.db.sqlnet.bytes.recv.client

Preprocessing

  • JSON Path: $.SQLNetBytesFromClient

  • Discard unchanged with heartbeat: 1h

Bytes received via SQL*Net from DBLink

The number of bytes received from a database link over Oracle Net Services during the selected time interval.

Dependent item oci.aut.db.sqlnet.bytes.recv.dblink

Preprocessing

  • JSON Path: $.SQLNetBytesFromDBLink

  • Discard unchanged with heartbeat: 1h

Bytes sent via SQL*Net to client

The number of bytes sent to the client from the foreground processes during the selected time interval.

Dependent item oci.aut.db.sqlnet.bytes.sent.client

Preprocessing

  • JSON Path: $.SQLNetBytesToClient

  • Discard unchanged with heartbeat: 1h

Bytes sent via SQL*Net to DBLink

The number of bytes sent over a database link during the selected time interval.

Dependent item oci.aut.db.sqlnet.bytes.sent.dblink

Preprocessing

  • JSON Path: $.SQLNetBytesToDBLink

  • Discard unchanged with heartbeat: 1h

Transaction count

The combined number of user commits and user rollbacks during the selected time interval.

Dependent item oci.aut.db.transaction.count

Preprocessing

  • JSON Path: $.TransactionCount

  • Discard unchanged with heartbeat: 1h

User calls

The combined number of logons, parses, and execute calls during the selected time interval.

Dependent item oci.aut.db.user.calls

Preprocessing

  • JSON Path: $.UserCalls

  • Discard unchanged with heartbeat: 1h

User commits

The number of user commits during the selected time interval. When a user commits a transaction, the generated redo that reflects the changes made to database blocks must be written to disk. Commits often represent the closest thing to a user transaction rate.

Dependent item oci.aut.db.user.commits

Preprocessing

  • JSON Path: $.UserCommits

  • Discard unchanged with heartbeat: 1h

User rollbacks

Number of times users manually issue the ROLLBACK statement or an error occurs during a user's transactions during the selected time interval.

Dependent item oci.aut.db.user.rollbacks

Preprocessing

  • JSON Path: $.UserRollbacks

  • Discard unchanged with heartbeat: 1h

Wait time

Average rate of accumulation of non-idle wait time by foreground sessions in the database over the selected time interval.

Dependent item oci.aut.db.wait.time

Preprocessing

  • JSON Path: $.WaitTime

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

  • Discard unchanged with heartbeat: 1h

Get database stats

Gets all metrics related to specific database that have a collection frequency of 5 minutes.

Script oci.aut.db.metrics.stats
Database availability

The database is available for connections in the given minute.

Dependent item oci.aut.db.availability

Preprocessing

  • JSON Path: $.DatabaseAvailability

  • Discard unchanged with heartbeat: 5h

Connection latency

The time taken to connect to an Oracle Autonomous Database Serverless instance in each region from a Compute service virtual machine in the same region.

Dependent item oci.aut.db.latency.conn

Preprocessing

  • JSON Path: $.ConnectionLatency

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 5h

Query latency

The time taken to display the results of a simple query on the user's screen.

Dependent item oci.aut.db.latency.query

Preprocessing

  • JSON Path: $.QueryLatency

  • Custom multiplier: 0.001

  • Discard unchanged with heartbeat: 5h

Get storage stats

Gets all storage metrics related to a specific database that have a collection frequency of 60 minutes.

Script oci.aut.db.metrics.storage.stats
Storage space allocated

Amount of space allocated to the database for all tablespaces during the selected time interval.

Dependent item oci.aut.db.storage.space.alloc

Preprocessing

  • JSON Path: $.StorageAllocated

  • Custom multiplier: 1073741824

  • Discard unchanged with heartbeat: 12h

Maximum storage space

Maximum amount of storage reserved for the database during the selected time interval.

Dependent item oci.aut.db.storage.space.max

Preprocessing

  • JSON Path: $.StorageMax

  • Custom multiplier: 1073741824

  • Discard unchanged with heartbeat: 12h

Storage space used

Maximum amount of space used during the selected time interval.

Dependent item oci.aut.db.storage.space.used

Preprocessing

  • JSON Path: $.StorageUsed

  • Custom multiplier: 1073741824

  • Discard unchanged with heartbeat: 12h

Storage utilization, in %

The percentage of the reserved maximum storage currently allocated for all database tablespaces. Represents the total reserved space for all tablespaces.

Dependent item oci.aut.db.storage.space.util

Preprocessing

  • JSON Path: $.StorageUtilization

  • Discard unchanged with heartbeat: 12h

Triggers

Name Description Expression Severity Dependencies and additional info
Restore has failed

Autonomous database restore has failed.

last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state) = 9 Warning
Database is not available or accessible

Autonomous database is not available or accessible.

last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state) = 19 or last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state) = 20 High
Available, needs attention

Autonomous database is available, but needs attention.

last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state) = 12 Warning
State unknown

Autonomous database state is unknown.

last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state) = 0 Warning
State has changed

Autonomous database state has changed.

last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state,#1)<>last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.state,#2) Info Manual close: Yes
Depends on:
  • Restore has failed
  • Database is not available or accessible
  • Available, needs attention
  • State unknown
Current CPU utilization is too high

Current CPU utilization has exceeded {$OCI.AUTONOMOUS.DB.CPU.UTIL.HIGH}% of the max available value.

min(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.cpu.util,5m) >= {$OCI.AUTONOMOUS.DB.CPU.UTIL.HIGH} High
Current CPU utilization is high

Current CPU utilization has exceeded {$OCI.AUTONOMOUS.DB.CPU.UTIL.WARN}% of the max available value.

min(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.cpu.util,5m) >= {$OCI.AUTONOMOUS.DB.CPU.UTIL.WARN} Warning Depends on:
  • Current CPU utilization is too high
Database is not available

Autonomous database is not available.

last(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.availability) = 0 High Depends on:
  • Database is not available or accessible
Current storage utilization is too high

Current storage utilization has exceeded {$OCI.AUTONOMOUS.DB.STORAGE.UTIL.HIGH}% of the max available value.

min(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.storage.space.util,5m) >= {$OCI.AUTONOMOUS.DB.STORAGE.UTIL.HIGH} High
Current storage utilization is high

Current storage utilization has exceeded {$OCI.AUTONOMOUS.DB.STORAGE.UTIL.WARN}% of the max available value.

min(/Oracle Cloud Autonomous Database by HTTP/oci.aut.db.storage.space.util,5m) >= {$OCI.AUTONOMOUS.DB.STORAGE.UTIL.WARN} Warning Depends on:
  • Current storage utilization is too high

Oracle Cloud Block Volume by HTTP

Overview

This template monitors Oracle Cloud Infrastructure (OCI) block volume 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 HTTP request body for queries.

Requirements

Zabbix version: 7.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 block volumes automatically, create host prototypes for each discovered block volume, and apply it this template.

If needed, you can specify an HTTP proxy for the template to use by changing the value of {$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 respective user macros.

Macros used

Name Description Default
{$OCI.HTTP.PROXY}

Set an HTTP proxy for OCI API requests if needed.

{$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

Items

Name Description Type Key and additional info
State

Gets the block volume state.

Script oci.block.volume.state

Preprocessing

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

  • Discard unchanged with heartbeat: 1h

Get metrics

Gets block volume metrics.

Script oci.block.volume.metrics.get
Volume read throughput

Read throughput. Expressed as bytes read per interval.

Dependent item oci.block.volume.read

Preprocessing

  • JSON Path: $.VolumeReadThroughput

  • Discard unchanged with heartbeat: 1h

Volume write throughput

Write throughput. Expressed as bytes read per interval.

Dependent item oci.block.volume.write

Preprocessing

  • JSON Path: $.VolumeWriteThroughput

  • Discard unchanged with heartbeat: 1h

Volume read operations

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

Dependent item oci.block.volume.read.ops

Preprocessing

  • JSON Path: $.VolumeReadOps

  • Discard unchanged with heartbeat: 1h

Volume write operations

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

Dependent item oci.block.volume.write.ops

Preprocessing

  • JSON Path: $.VolumeWriteOps

  • Discard unchanged with heartbeat: 1h

Volume throttled operations

Total sum of all the I/O operations that were throttled during a given time interval.

Dependent item oci.block.volume.throttled.ops

Preprocessing

  • JSON Path: $.VolumeThrottledIOs

  • Discard unchanged with heartbeat: 1h

Volume guaranteed VPUs/GB

Rate of change for currently active VPUs/GB. Expressed as the average of active VPUs/GB during a given time interval.

Dependent item oci.block.volume.vpu

Preprocessing

  • JSON Path: $.VolumeGuaranteedVPUsPerGB

  • Discard unchanged with heartbeat: 1h

Volume guaranteed IOPS

Rate of change for guaranteed IOPS per SLA. Expressed as the average of guaranteed IOPS during a given time interval.

Dependent item oci.block.volume.iops

Preprocessing

  • JSON Path: $.VolumeGuaranteedIOPS

  • Discard unchanged with heartbeat: 1h

Volume guaranteed throughput

Rate of change for guaranteed throughput per SLA. Expressed as megabytes per interval.

Dependent item oci.block.volume.throughput

Preprocessing

  • JSON Path: $.VolumeGuaranteedThroughput

  • Custom multiplier: 1048576

  • Discard unchanged with heartbeat: 1h

Triggers

Name Description Expression Severity Dependencies and additional info
Block volume terminated or faulty

Block volume state is "terminated"/"terminating" or "faulty".

min(/Oracle Cloud Block Volume by HTTP/oci.block.volume.state,5m) >= 4 High
Block volume state unknown

Block volume state is unknown.

min(/Oracle Cloud Block Volume by HTTP/oci.block.volume.state,5m) = 0 Warning Depends on:
  • Block volume terminated or faulty

Oracle Cloud Boot Volume by HTTP

Overview

This template monitors Oracle Cloud Infrastructure (OCI) boot volume 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 HTTP request body for queries.

Requirements

Zabbix version: 7.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 boot volumes automatically, create host prototypes for each discovered boot volume, and apply it 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 respective user macros.

Macros used

Name Description Default
{$OCI.HTTP.PROXY}

Set an HTTP proxy for OCI API requests if needed.

{$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

Items

Name Description Type Key and additional info
State

Gets the boot volume state.

Script oci.boot.volume.state

Preprocessing

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

  • Discard unchanged with heartbeat: 1h

Get metrics

Gets boot volume metrics.

Script oci.boot.volume.metrics.get
Volume read throughput

Read throughput. Expressed as bytes read per interval.

Dependent item oci.boot.volume.read

Preprocessing

  • JSON Path: $.VolumeReadThroughput

  • Discard unchanged with heartbeat: 1h

Volume write throughput

Write throughput. Expressed as bytes read per interval.

Dependent item oci.boot.volume.write

Preprocessing

  • JSON Path: $.VolumeWriteThroughput

  • Discard unchanged with heartbeat: 1h

Volume read operations

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

Dependent item oci.boot.volume.read.ops

Preprocessing

  • JSON Path: $.VolumeReadOps

  • Discard unchanged with heartbeat: 1h

Volume write operations

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

Dependent item oci.boot.volume.write.ops

Preprocessing

  • JSON Path: $.VolumeWriteOps

  • Discard unchanged with heartbeat: 1h

Volume throttled operations

Total sum of all the I/O operations that were throttled during a given time interval.

Dependent item oci.boot.volume.throttled.ops

Preprocessing

  • JSON Path: $.VolumeThrottledIOs

  • Discard unchanged with heartbeat: 1h

Volume guaranteed VPUs/GB

Rate of change for currently active VPUs/GB. Expressed as the average of active VPUs/GB during a given time interval.

Dependent item oci.boot.volume.vpu

Preprocessing

  • JSON Path: $.VolumeGuaranteedVPUsPerGB

  • Discard unchanged with heartbeat: 1h

Volume guaranteed IOPS

Rate of change for guaranteed IOPS per SLA. Expressed as the average of guaranteed IOPS during a given time interval.

Dependent item oci.boot.volume.iops

Preprocessing

  • JSON Path: $.VolumeGuaranteedIOPS

  • Discard unchanged with heartbeat: 1h

Volume guaranteed throughput

Rate of change for guaranteed throughput per SLA. Expressed as megabytes per interval.

Dependent item oci.boot.volume.throughput

Preprocessing

  • JSON Path: $.VolumeGuaranteedThroughput

  • Custom multiplier: 1048576

  • Discard unchanged with heartbeat: 1h

Triggers

Name Description Expression Severity Dependencies and additional info
Boot volume terminated or faulty

Boot volume state is "terminated"/"terminating" or "faulty".

min(/Oracle Cloud Boot Volume by HTTP/oci.boot.volume.state,5m) >= 4 High
Boot volume state unknown

Boot volume state is unknown.

min(/Oracle Cloud Boot Volume by HTTP/oci.boot.volume.state,5m) = 0 Warning Depends on:
  • Boot volume terminated or faulty

Oracle Cloud Networking by HTTP

Overview

This template monitors Oracle Cloud Infrastructure (OCI) single virtual network card availability and discovers attached subnets and monitors their availability.

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 requests.

Requirements

Zabbix version: 7.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 virtual cloud networks (VCNs) automatically, create host prototypes for each discovered VCN, and apply it this template.

If needed, you can specify an HTTP proxy for the template to use by changing the value of {$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 respective user macros.

Macros used

Name Description Default
{$OCI.HTTP.PROXY}

Set an HTTP proxy for OCI API requests if needed.

{$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.VCN.SUBNET.DISCOVERY.STATE.MATCHES}

Sets the regex string of VCN subnet states to allow in discovery.

.*
{$OCI.VCN.SUBNET.DISCOVERY.STATE.NOT_MATCHES}

Sets the regex string of VCN subnet states to ignore in discovery.

CHANGE_IF_NEEDED
{$OCI.VCN.SUBNET.DISCOVERY.NAME.MATCHES}

Sets the regex string of VCN subnet names to allow in discovery.

.*
{$OCI.VCN.SUBNET.DISCOVERY.NAME.NOT_MATCHES}

Sets the regex string of VCN subnet names to ignore in discovery.

CHANGE_IF_NEEDED

Items

Name Description Type Key and additional info
Get VCN state

State of the virtual cloud network.

Script oci.vcn.state.get

Preprocessing

  • Replace: " ->

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

  • Discard unchanged with heartbeat: 1h

Get subnets

Get data about subnets linked to the particular VCN.

Script oci.vcn.subnets.get

Triggers

Name Description Expression Severity Dependencies and additional info
VCN state terminated

Virtual cloud network state is "terminated" or "terminating".

min(/Oracle Cloud Networking by HTTP/oci.vcn.state.get,5m) = 3 or min(/Oracle Cloud Networking by HTTP/oci.vcn.state.get,5m) = 4 High
VCN state unknown

Virtual cloud network state is unknown.

min(/Oracle Cloud Networking by HTTP/oci.vcn.state.get,5m) = 0 Warning

LLD rule Subnet discovery

Name Description Type Key and additional info
Subnet discovery

Discover subnets linked to the particular VCN.

Dependent item oci.vcn.subnet.discovery

Preprocessing

  • Discard unchanged with heartbeat: 1h

Item prototypes for Subnet discovery

Name Description Type Key and additional info
Subnet [{#NAME}]: Get subnet state

Current state of subnet.

Dependent item oci.vcn.subnet.state[{#ID}]

Preprocessing

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

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

  • Discard unchanged with heartbeat: 1h

Trigger prototypes for Subnet discovery

Name Description Expression Severity Dependencies and additional info
Subnet [{#NAME}]: Subnet state terminated

Virtual cloud network subnet state is "terminated" or "terminating".

min(/Oracle Cloud Networking by HTTP/oci.vcn.subnet.state[{#ID}],5m) = 3 or min(/Oracle Cloud Networking by HTTP/oci.vcn.subnet.state[{#ID}],5m) = 4 High
Subnet [{#NAME}]: Subnet state unknown

Virtual cloud network subnet state is unknown.

min(/Oracle Cloud Networking by HTTP/oci.vcn.subnet.state[{#ID}],5m) = 0 Warning

Feedback

Please report any issues with the template at https://support.zabbix.com

You can also provide feedback, discuss the template, or ask for help at ZABBIX forums

Articles and documentation

+ Propose new article

Vous n’avez pas trouvé ce que vous cherchiez ?