Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/server/dell/dell_r840_http

DELL PowerEdge R840 by HTTP

Overview

This is a template for monitoring DELL PowerEdge R840 servers with iDRAC 8/9 firmware 4.32 and later with Redfish API enabled via Zabbix HTTP agent that works without any external scripts.

Requirements

Zabbix version: 7.2 and higher.

Tested versions

This template has been tested on:

  • DELL PowerEdge R840

Configuration

Zabbix should be configured according to the instructions in the Templates out of the box section.

Setup

1. Enable Redfish API in Dell iDRAC interface of your server.

2. Create a user for monitoring with read-only permissions in Dell iDRAC interface.

3. Create a host for Dell server with iDRAC IP as Zabbix agent interface.

4. Link the template to the host.

5. Customize values of {$API.URL}, {$API.USER}, {$API.PASSWORD} macros.

Macros used

Name Description Default
{$API.URL}

The Dell iDRAC Redfish API URL in the format <scheme>://<host>:<port>.

<Put your URL here>
{$API.USER}

The Dell iDRAC username.

<Put your username here>
{$API.PASSWORD}

The Dell iDRAC user password.

<Put your password here>
{$IFCONTROL}

Link status trigger will be fired only for interfaces that have the context macro equaled 1.

1

Items

Name Description Type Key and additional info
Get system

Returns the metrics of a system.

HTTP agent dell.server.system.get

Preprocessing

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

Overall system health status

This attribute defines the overall rollup status of all components in the system being monitored by the remote access card. Includes system, storage, IO devices, iDRAC, CPU, memory, etc.

Dependent item dell.server.status

Preprocessing

  • JSON Path: $.status

  • Discard unchanged with heartbeat: 6h

Hardware model name

This attribute defines the model name of the system.

Dependent item dell.server.hw.model

Preprocessing

  • JSON Path: $.model

  • Discard unchanged with heartbeat: 6h

Hardware serial number

This attribute defines the service tag of the system.

Dependent item dell.server.hw.serialnumber

Preprocessing

  • JSON Path: $.serialnumber

  • Discard unchanged with heartbeat: 6h

Firmware version

This attribute defines the firmware version of a remote access card.

Dependent item dell.server.hw.firmware

Preprocessing

  • JSON Path: $.firmware

  • Discard unchanged with heartbeat: 6h

Redfish API

The availability of Redfish API on the server.

Possible values:

0 unavailable

1 available

Simple check net.tcp.service[https]

Triggers

Name Description Expression Severity Dependencies and additional info
Server is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.status,,"like","Critical")=1 High
Server is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.status,,"like","Warning")=1 Warning Depends on:
  • Server is in a critical state
Device has been replaced

Device serial number has changed. Acknowledge to close the problem manually.

last(/DELL PowerEdge R840 by HTTP/dell.server.hw.serialnumber,#1)<>last(/DELL PowerEdge R840 by HTTP/dell.server.hw.serialnumber,#2) and length(last(/DELL PowerEdge R840 by HTTP/dell.server.hw.serialnumber))>0 Info Manual close: Yes
Firmware has changed

Firmware version has changed. Acknowledge to close the problem manually.

last(/DELL PowerEdge R840 by HTTP/dell.server.hw.firmware,#1)<>last(/DELL PowerEdge R840 by HTTP/dell.server.hw.firmware,#2) and length(last(/DELL PowerEdge R840 by HTTP/dell.server.hw.firmware))>0 Info Manual close: Yes
Redfish API service is unavailable

The service is unavailable or does not accept TCP connections.

last(/DELL PowerEdge R840 by HTTP/net.tcp.service[https])=0 High

LLD rule Temperature discovery

Name Description Type Key and additional info
Temperature discovery

Discovery of temperature sensors.

HTTP agent temp.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for Temperature discovery

Name Description Type Key and additional info
{#SENSOR_NAME} Get sensor

Returns the metrics of a sensor.

HTTP agent dell.server.sensor.temp.get[{#SENSOR_NAME}]
{#SENSOR_NAME} Value

The sensor value.

Dependent item dell.server.sensor.temp.value[{#SENSOR_NAME}]

Preprocessing

  • JSON Path: $.Reading

{#SENSOR_NAME} Status

The status of the job. Possible values: OK, Warning, Critical.

Dependent item dell.server.sensor.temp.status[{#SENSOR_NAME}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Temperature discovery

Name Description Expression Severity Dependencies and additional info
{#SENSOR_NAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.sensor.temp.status[{#SENSOR_NAME}],,"like","Critical")=1 High
{#SENSOR_NAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.sensor.temp.status[{#SENSOR_NAME}],,"like","Warning")=1 Warning Depends on:
  • {#SENSOR_NAME} is in a critical state

LLD rule PSU discovery

Name Description Type Key and additional info
PSU discovery

Discovery of PSU sensors.

HTTP agent psu.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for PSU discovery

Name Description Type Key and additional info
{#SENSOR_NAME} Get sensor

Returns the metrics of a sensor.

HTTP agent dell.server.sensor.psu.get[{#SENSOR_NAME}]
{#SENSOR_NAME} Status

The status of the job. Possible values: OK, Warning, Critical.

Dependent item dell.server.sensor.psu.status[{#SENSOR_NAME}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for PSU discovery

Name Description Expression Severity Dependencies and additional info
{#SENSOR_NAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.sensor.psu.status[{#SENSOR_NAME}],,"like","Critical")=1 High
{#SENSOR_NAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.sensor.psu.status[{#SENSOR_NAME}],,"like","Warning")=1 Warning Depends on:
  • {#SENSOR_NAME} is in a critical state

LLD rule FAN discovery

Name Description Type Key and additional info
FAN discovery

Discovery of FAN sensors.

HTTP agent fan.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for FAN discovery

Name Description Type Key and additional info
{#SENSOR_NAME} Get sensor

Returns the metrics of a sensor.

HTTP agent dell.server.sensor.fan.get[{#SENSOR_NAME}]
{#SENSOR_NAME} Speed

The sensor value.

Dependent item dell.server.sensor.fan.speed[{#SENSOR_NAME}]

Preprocessing

  • JSON Path: $.Reading

{#SENSOR_NAME} Status

The status of the job. Possible values: OK, Warning, Critical.

Dependent item dell.server.sensor.fan.status[{#SENSOR_NAME}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for FAN discovery

Name Description Expression Severity Dependencies and additional info
{#SENSOR_NAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.sensor.fan.status[{#SENSOR_NAME}],,"like","Critical")=1 High
{#SENSOR_NAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.sensor.fan.status[{#SENSOR_NAME}],,"like","Warning")=1 Warning Depends on:
  • {#SENSOR_NAME} is in a critical state

LLD rule Array controller discovery

Name Description Type Key and additional info
Array controller discovery

Discovery of disk array controllers.

HTTP agent array.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for Array controller discovery

Name Description Type Key and additional info
{#CNTLR_NAME} in slot {#SLOT} Status

The status of the job. Possible values: OK, Warning, Critical.

HTTP agent dell.server.hw.diskarray.status[{#CNTLR_NAME}{#SLOT}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Array controller discovery

Name Description Expression Severity Dependencies and additional info
{#CNTLR_NAME} in slot {#SLOT} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.diskarray.status[{#CNTLR_NAME}{#SLOT}],,"like","Critical")=1 High
{#CNTLR_NAME} in slot {#SLOT} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.diskarray.status[{#CNTLR_NAME}{#SLOT}],,"like","Warning")=1 Warning Depends on:
  • {#CNTLR_NAME} in slot {#SLOT} is in a critical state

LLD rule Array controller cache discovery

Name Description Type Key and additional info
Array controller cache discovery

Discovery of a cache of disk array controllers.

HTTP agent array.cache.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for Array controller cache discovery

Name Description Type Key and additional info
{#BATTERY_NAME} Status

The status of the job. Possible values: OK, Warning, Critical.

HTTP agent dell.server.hw.diskarray.cache.battery.status[{#BATTERY_NAME}]

Preprocessing

  • JSON Path: $.Oem.Dell.DellControllerBattery.PrimaryStatus

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Array controller cache discovery

Name Description Expression Severity Dependencies and additional info
{#BATTERY_NAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.diskarray.cache.battery.status[{#BATTERY_NAME}],,"like","Critical")=1 High
{#BATTERY_NAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.diskarray.cache.battery.status[{#BATTERY_NAME}],,"like","Warning")=1 Warning Depends on:
  • {#BATTERY_NAME} is in a critical state

LLD rule Physical disk discovery

Name Description Type Key and additional info
Physical disk discovery

Discovery of physical disks.

HTTP agent physicaldisk.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for Physical disk discovery

Name Description Type Key and additional info
{#DISK_NAME} Get disk

Returns the metrics of a physical disk.

HTTP agent dell.server.hw.physicaldisk.get[{#DISK_NAME}]
{#DISK_NAME} Status

The status of the job. Possible values: OK, Warning, Critical.

Dependent item dell.server.hw.physicaldisk.status[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Serial number

The serial number of this drive.

Dependent item dell.server.hw.physicaldisk.serialnumber[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.SerialNumber

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Model name

The model number of the drive.

Dependent item dell.server.hw.physicaldisk.model[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Model

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Media type

The type of media contained in this drive. Possible values: HDD, SSD, SMR, null.

Dependent item dell.server.hw.physicaldisk.media_type[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.MediaType

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Size

The size, in bytes, of this drive.

Dependent item dell.server.hw.physicaldisk.size[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.CapacityBytes

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Physical disk discovery

Name Description Expression Severity Dependencies and additional info
{#DISK_NAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.physicaldisk.status[{#DISK_NAME}],,"like","Critical")=1 High
{#DISK_NAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.physicaldisk.status[{#DISK_NAME}],,"like","Warning")=1 Warning Depends on:
  • {#DISK_NAME} is in a critical state
{#DISK_NAME} has been replaced

{#DISK_NAME} serial number has changed. Acknowledge to close the problem manually.

last(/DELL PowerEdge R840 by HTTP/dell.server.hw.physicaldisk.serialnumber[{#DISK_NAME}],#1)<>last(/DELL PowerEdge R840 by HTTP/dell.server.hw.physicaldisk.serialnumber[{#DISK_NAME}],#2) and length(last(/DELL PowerEdge R840 by HTTP/dell.server.hw.physicaldisk.serialnumber[{#DISK_NAME}]))>0 Info Manual close: Yes

LLD rule Virtual disk discovery

Name Description Type Key and additional info
Virtual disk discovery

Discovery of virtual disks.

HTTP agent virtualdisk.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for Virtual disk discovery

Name Description Type Key and additional info
{#DISK_NAME} Get disk

Returns the metrics of a virtual disk.

HTTP agent dell.server.hw.virtualdisk.get[{#DISK_NAME}]
{#DISK_NAME} Status

The status of the job. Possible values: OK, Warning, Critical.

Dependent item dell.server.hw.virtualdisk.status[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} RAID status

This property represents the RAID specific status. Possible values: Blocked, Degraded, Failed, Foreign, Offline, Online, Ready, Unknown, null.

Dependent item dell.server.hw.virtualdisk.raidstatus[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Oem.Dell.DellVirtualDisk.RaidStatus

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Size

The size in bytes of this Volume.

Dependent item dell.server.hw.virtualdisk.size[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.CapacityBytes

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Current state

The known state of the Resource, for example, enabled. Possible values: Enabled, Disabled, StandbyOffline, StandbySpare, InTest, Starting, Absent, UnavailableOffline, Deferring, Quiesced, Updating, Qualified.

Dependent item dell.server.hw.virtualdisk.state[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Status.State

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Read policy

Indicates the read cache policy setting for the Volume. Possible values: ReadAhead, AdaptiveReadAhead, Off.

Dependent item dell.server.hw.virtualdisk.readpolicy[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Oem.Dell.DellVirtualDisk.ReadCachePolicy

  • Discard unchanged with heartbeat: 6h

{#DISK_NAME} Write policy

Indicates the write cache policy setting for the Volume. Possible values: WriteThrough, ProtectedWriteBack, UnprotectedWriteBack.

Dependent item dell.server.hw.virtualdisk.writepolicy[{#DISK_NAME}]

Preprocessing

  • JSON Path: $.Oem.Dell.DellVirtualDisk.WriteCachePolicy

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Virtual disk discovery

Name Description Expression Severity Dependencies and additional info
{#DISK_NAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.virtualdisk.status[{#DISK_NAME}],,"like","Critical")=1 High
{#DISK_NAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.hw.virtualdisk.status[{#DISK_NAME}],,"like","Warning")=1 Warning Depends on:
  • {#DISK_NAME} is in a critical state

LLD rule Network interface discovery

Name Description Type Key and additional info
Network interface discovery

The NetworkInterface schema describes links to the NetworkAdapter and represents the functionality available to the containing system.

HTTP agent net.if.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 6h

Item prototypes for Network interface discovery

Name Description Type Key and additional info
{#IFNAME} Get interface

Returns the metrics of a network interface.

HTTP agent dell.server.net.if.get[{#IFNAME}]
{#IFNAME} Speed

Network port current link speed.

Dependent item dell.server.net.if.speed[{#IFNAME}]

Preprocessing

  • JSON Path: $.CurrentLinkSpeedMbps

  • Discard unchanged with heartbeat: 6h

{#IFNAME} Link status

The status of the link between this port and its link partner. Possible values: Down, Up, null.

Dependent item dell.server.net.if.status[{#IFNAME}]

Preprocessing

  • JSON Path: $.LinkStatus

  • Discard unchanged with heartbeat: 6h

{#IFNAME} State

The known state of the Resource, for example, enabled. Possible values: Enabled, Disabled, StandbyOffline, StandbySpare, InTest, Starting, Absent, UnavailableOffline, Deferring, Quiesced, Updating, Qualified.

Dependent item dell.server.net.if.state[{#IFNAME}]

Preprocessing

  • JSON Path: $.Status.State

  • Discard unchanged with heartbeat: 6h

{#IFNAME} Status

The status of the job. Possible values: OK, Warning, Critical.

Dependent item dell.server.net.if.health[{#IFNAME}]

Preprocessing

  • JSON Path: $.Status.Health

  • Discard unchanged with heartbeat: 6h

Trigger prototypes for Network interface discovery

Name Description Expression Severity Dependencies and additional info
{#IFNAME} Link down

This trigger expression works as follows:
1. It can be triggered if the operations status is down.
2. {$IFCONTROL:"{#IFNAME}"}=1 - a user can redefine context macro to value - 0. That marks this interface as not important. No new trigger will be fired if this interface is down.
3. {TEMPLATE_NAME:METRIC.diff()}=1 - the trigger fires only if the operational status was up to (1) sometime before (so, do not fire for the 'eternal off' interfaces.)

WARNING: if closed manually - it will not fire again on the next poll, because of .diff.

{$IFCONTROL:"{#IFNAME}"}=1 and (find(/DELL PowerEdge R840 by HTTP/dell.server.net.if.status[{#IFNAME}],,"like")="Down" and last(/DELL PowerEdge R840 by HTTP/dell.server.net.if.status[{#IFNAME}],#1)<>last(/DELL PowerEdge R840 by HTTP/dell.server.net.if.status[{#IFNAME}],#2)) Average Manual close: Yes
{#IFNAME} is in a critical state

Please check the device for faults.

find(/DELL PowerEdge R840 by HTTP/dell.server.net.if.health[{#IFNAME}],,"like","Critical")=1 High
{#IFNAME} is in warning state

Please check the device for warnings.

find(/DELL PowerEdge R840 by HTTP/dell.server.net.if.health[{#IFNAME}],,"like","Warning")=1 Warning Depends on:
  • {#IFNAME} is in a critical state

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

Didn't find what you are looking for?