Skip to content

mkevenaar/ObjectFirst.Zabbix

Repository files navigation

Object First OOTBI Cluster by HTTP

Version Released GitHub Releases (all releases)

Overview

This template is designed to monitor an Object First OOTBI Cluster.

Requirements

Zabbix version: 7.0 and higher.

Tested versions

This template has been tested on Object First OOTBI 1.5.54.10104 (VSA).

Setup

  1. Download the latest release
  2. Create a user to monitor the service or use an existing user.
  3. Create a host with the name of your cluster and link the Object First OOTBI Cluster by HTTP template to it.
  4. Configure the following macros: {$OOTBI.API.URL}, {$OOTBI.CLUSTER.ID}, {$OOTBI.USER}, and {$OOTBI.PASSWORD} (details)

Template: Object First OOTBI Cluster by HTTP

This template is designed to monitor an Object First OOTBI Cluster.

Screenshots for Object First OOTBI Cluster by HTTP

Items

Triggers

Discovery

Macros for Object First OOTBI Cluster by HTTP

Name Description Default
{$OOTBI.API.URL} The OOTBI Cluster endpoint is a URL or IP in the format <scheme>://<host>:<port>. This needs to be the pointing to the Service Point of your OOTBI Cluster https://localhost:8443
{$OOTBI.CLUSTER.ID} The OOTBI Cluster ID (UUID). The Cluster UUID can be found in Settings. Optional, defaults to first cluster.
{$OOTBI.HTTP.PROXY} Sets the HTTP proxy to http_proxy value. If this parameter is empty, then no proxy is used.
{$OOTBI.PASSWORD} The password of the Object First OOTBI Cluster account. It is used to obtain an access token.
{$OOTBI.USER} The username of the Object First OOTBI Cluster account. It is used to obtain an access token.
{$OOTBI.DATA.TIMEOUT} A response timeout for the API. 10

Items for Object First OOTBI Cluster by HTTP

Name Description Type Key and additional info
Get metrics The result of API requests is expressed in the JSON. Script ootbi.get.metrics
Get errors The errors from API requests. Dependent item ootbi.get.errors
Preprocessing
  • JSON Path: $.error⛔️Custom on fail: Set value to
  • Discard unchanged with heartbeat: 1h
Cluster Status Get the cluster status Dependent item ootbi.get.cluster.status
Preprocessing
  • JSON Path: $.cluster.status
  • Discard unchanged with heartbeat: 1h

Triggers for Object First OOTBI Cluster by HTTP

Name Description Expression Severity Dependencies and additional info
Object First OOTBI: Cluster is not healthy

Cluster reports it's not healthy. Please inspect the cluster.

find(/Object First OOTBI Cluster by HTTP/ootbi.get.cluster.status,,"like","OK")=0 High
Object First OOTBI: There are errors in requests to API

Zabbix has received errors in response to API requests.

length(last(/Object First OOTBI Cluster by HTTP/ootbi.get.errors))>0 Average

LLD rule Node discovery

Name Description Type Key and additional info
Node discovery

Discovery of cluster nodes.

Dependent item ootbi.node.discovery

Preprocessing

  • JSON Path: $.cluster.nodes[:]

  • Discard unchanged with heartbeat: 6h

Host Prototypes for Node discovery

Name Templates Host Groups Macros
{#NAME} Object First OOTBI Host by HTTP Object First
  • {$OOTBI.HOST.ID}
  • {#ID}
  • The OOTBI Host ID. This is discovered automatically

Template: Object First OOTBI Host by HTTP

This template is designed to monitor an Object First OOTBI Host and will automatically be attached to hosts discovered from your cluster.

Screenshots for Object First OOTBI Host by HTTP

Items

Triggers

Discovery

Macros for Object First OOTBI Host by HTTP

Name Description Default
{$OOTBI.API.URL} The OOTBI Cluster endpoint is a URL or IP in the format <scheme>://<host>:<port>. This needs to be the pointing to the Service Point of your OOTBI Cluster Inherited from Object First OOTBI Cluster by HTTP, customizable
{$OOTBI.CLUSTER.ID} The OOTBI Cluster ID (UUID). The Cluster UUID can be found in Settings. Optional, defaults to first cluster. Inherited from Object First OOTBI Cluster by HTTP, customizable
{$OOTBI.HTTP.PROXY} Sets the HTTP proxy to http_proxy value. If this parameter is empty, then no proxy is used. Inherited from Object First OOTBI Cluster by HTTP, customizable
{$OOTBI.PASSWORD} The password of the Object First OOTBI Cluster account. It is used to obtain an access token. Inherited from Object First OOTBI Cluster by HTTP, customizable
{$OOTBI.USER} The username of the Object First OOTBI Cluster account. It is used to obtain an access token. Inherited from Object First OOTBI Cluster by HTTP, customizable
{$OOTBI.DATA.TIMEOUT} A response timeout for the API. Inherited from Object First OOTBI Cluster by HTTP, customizable
{$OOTBI.HOST.ID} The OOTBI Host ID. This is discovered automatically Set by Object First OOTBI Cluster by HTTP, customizable

Items for Object First OOTBI Host by HTTP

Name Description Type Key and additional info
Get metrics The result of API requests is expressed in the JSON. Script ootbi.get.metrics
Get errors The errors from API requests. Dependent item ootbi.get.errors
Preprocessing
  • JSON Path: $.error⛔️Custom on fail: Set value to
  • Discard unchanged with heartbeat: 1h
Host Status Get the host status. Dependent item ootbi.get.host.status
Preprocessing
  • JSON Path: $.hosts.members.[?(@.id=='{$OOTBI.HOST.ID}')].status.first()
  • Discard unchanged with heartbeat: 1h
Global Disks Status Get the global disk status Dependent item ootbi.get.disk.status
Preprocessing
  • JSON Path: $.disks.status
  • Discard unchanged with heartbeat: 1h
Uptime The uptime of the node. Dependent item ootbi.get.host.uptime
Preprocessing
  • JSON Path: $.hosts.members.[?(@.id=='{$OOTBI.HOST.ID}')].uptimeInSec.first()

Triggers for Object First OOTBI Host by HTTP

Name Description Expression Severity Dependencies and additional info
Object First OOTBI: Node restarted (uptime < 10m)

The cluster node's uptime is less than 10 minutes.

last(/Object First OOTBI Host by HTTP/ootbi.get.host.uptime)<10 Average
Object First OOTBI Disks not healthy

The host reports its disks are healthy. Please inspect the host.

find(/Object First OOTBI Host by HTTP/ootbi.get.disk.status,,"like","ok")=0 High
Object First OOTBI Host is not healthy

The host reports its not healthy. Please inspect the host.

find(/Object First OOTBI Host by HTTP/ootbi.get.host.status,,"like","Ok")=0 High
Object First OOTBI: There are errors in requests to API

Zabbix has received errors in response to API requests.

length(last(/Object First OOTBI Host by HTTP/ootbi.get.errors))>0 Average

LLD rule Disk Discovery

Name Description Type Key and additional info
Disk Discovery

Discovery of node disks.

Dependent item ootbi.host.disk.discovery

Preprocessing

  • JSON Path: $.disks.disks

  • Discard unchanged with heartbeat: 6h

Item prototypes for Disk Discovery

Name Description Type Key and additional info
Disk [{#SLOT}]: Get data

Gets raw data from the disk in slot [{#SLOT}].

Dependent item ootbi.disk.raw[{#ID}]

Preprocessing

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

Disk Status

The status of the disk.

Dependent item ootbi.disk.status[{#SLOT}]

Preprocessing

  • JSON Path: $.status

Trigger prototypes for Disk Discovery

Name Description Expression Severity Dependencies and additional info
Object First OOTBI: Disk in slot {#SLOT} not ok find(/Object First OOTBI Host by HTTP/ootbi.disk.status[{#SLOT}],,"like","ok")=0 Average Manual close: Yes

Feedback

Please report any issues with the template by opening an Issue on GitHub