Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/net/cisco/cisco_sdwan_http

Cisco SD-WAN by HTTP

Overview

This template is designed for the effortless deployment of Cisco SD-WAN monitoring by Zabbix via HTTP and doesn't require any external scripts.

Requirements

Zabbix version: 7.2 and higher.

Tested versions

This template has been tested on:

  • Cisco SD-WAN 20.6.0

Configuration

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

Setup

  1. Put your username and password from Cisco SD-WAN vManage into {$SDWAN.API.USERNAME} and {$SDWAN.API.PASSWORD} macros.
  2. Set your Cisco SD-WAN vManage URL as {$SDWAN.API.URL} macro value.

NOTES

The Cisco SD-WAN API token will be generated automatically by the Authentication item every {$SDWAN.AUTH.FREQUENCY}. Don't change the {$SDWAN.AUTH.FREQUENCY} macro value if it's not required.

The generated Cisco SD-WAN API token and the session ID will be used in all Cisco SD-WAN templates and items. These values will be kept in {$SDWAN.AUTH.TOKEN} and {$SDWAN.AUTH.SESSION} macros of each discovered host.

IMPORTANT

Values of {$SDWAN.AUTH.TOKEN} and {$SDWAN.AUTH.SESSION} macros are stored as plain (not secret) text by default.

Please, refer to the vendor documentation about the Cisco SD-WAN REST API Token-Based Authentication.

Macros used

Name Description Default
{$SDWAN.API.URL}

Cisco SD-WAN Monitor API URL.

{$SDWAN.API.USERNAME}

Cisco SD-WAN Monitor API username.

{$SDWAN.API.PASSWORD}

Cisco SD-WAN Monitor API password.

{$SDWAN.AUTH.FREQUENCY}

The update interval for the Cisco SD-WAN Authentication item, which also equals the access token regeneration request frequency. Check the template documentation notes carefully for more details.

1h
{$SDWAN.DATA.TIMEOUT}

A response timeout for an API.

15s
{$SDWAN.DEVICE.NAME.MATCHES}

This macro is used in device discovery. Can be overridden on the host or linked template level.

.*
{$SDWAN.DEVICE.NAME.NOT_MATCHES}

This macro is used in device discovery. Can be overridden on the host or linked template level.

CHANGE_IF_NEEDED
{$SDWAN.HTTP_PROXY}

HTTP proxy for API requests. You can specify it using the format [protocol://][username[:password]@]proxy.example.com[:port]. See the documentation at https://www.zabbix.com/documentation/7.2/manual/config/items/itemtypes/http

Items

Name Description Type Key and additional info
Authentication

Cisco SD-WAN authentication with service account parameters and temporary-generated token usage.

Returns an authentication token and session id; it is required only once and is used for all dependent script items.

A session will expire after 30 minutes of inactivity or after 24 hours, which is the total lifespan of a session.

Check the template documentation for the details.

Script sd_wan.authentication
Authentication item errors

Item for gathering all the data item errors.

Dependent item sd_wan.auth.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get devices

Item for gathering all devices from Cisco SD-WAN API.

Dependent item sd_wan.get.devices

Preprocessing

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

Get devices item errors

Item for gathering all the data item errors.

Dependent item sd_wan.get.devices.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Invalid certificates

Number of invalid certificates.

Dependent item sd_wan.invalid_certificates

Preprocessing

  • JSON Path: $.devices[?(@.cert_valid != "Valid")].length()

Total devices

The total number of all devices.

Dependent item sd_wan.total.devices

Preprocessing

  • JSON Path: $.devices.length()

  • Discard unchanged with heartbeat: 1h

Number of vEdge devices

The total number of vEdge devices.

Dependent item sd_wan.vedge.devices

Preprocessing

  • JSON Path: $.devices[?(@.type == "vedge")].length()

  • Discard unchanged with heartbeat: 1h

Number of vBond devices

The total number of vBond devices.

Dependent item sd_wan.vbond.devices

Preprocessing

  • JSON Path: $.devices[?(@.type == "vbond")].length()

  • Discard unchanged with heartbeat: 1h

Number of vSmart devices

The total number of vSmart devices.

Dependent item sd_wan.vsmart.devices

Preprocessing

  • JSON Path: $.devices[?(@.type == "vsmart")].length()

  • Discard unchanged with heartbeat: 1h

Number of vManage devices

The total number of vManage devices.

Dependent item sd_wan.vmanage.devices

Preprocessing

  • JSON Path: $.devices[?(@.type == "vmanage")].length()

  • Discard unchanged with heartbeat: 1h

Triggers

Name Description Expression Severity Dependencies and additional info
Cisco SD-WAN: Authentication has failed length(last(/Cisco SD-WAN by HTTP/sd_wan.auth.errors))>0 Average
Cisco SD-WAN: There are errors in the 'Get devices' metric length(last(/Cisco SD-WAN by HTTP/sd_wan.get.devices.errors))>0 Warning

LLD rule Devices discovery

Name Description Type Key and additional info
Devices discovery

Discovering devices from Cisco SD-WAN API.

Dependent item sd_wan.devices.discovery

Preprocessing

  • JSON Path: $.devices

Cisco SD-WAN device by HTTP

Macros used

Name Description Default
{$SDWAN.API.URL}

Cisco SD-WAN Monitor API URL.

{$SDWAN.TOKEN}

Cisco SD-WAN Monitor API token.

{$SDWAN.DATA.TIMEOUT}

Response timeout for an API.

15s
{$SDWAN.CPU.UTIL.CRIT}

Critical threshold of the CPU utilization, expressed in %.

90
{$SDWAN.MEMORY.UTIL.MAX}

Critical threshold of the memory utilization, expressed in %.

90
{$SDWAN.MEMORY.AVAILABLE.MIN}

This macro is used as a threshold in the memory available trigger.

100K
{$SDWAN.IF.UTIL.MAX}

This macro is used as a threshold in the interface utilization trigger. Can be used with the interface name as context.

90
{$SDWAN.IF.ERRORS.WARN}

Threshold of the error packets rate for the warning trigger. Can be used with the interface name as context.

2
{$SDWAN.FS.PUSED.MAX.CRIT}

Critical threshold of the filesystem utilization. Can be used with the filesystem name as context.

90
{$SDWAN.FS.PUSED.MAX.WARN}

Warning threshold of the filesystem utilization. Can be used with the filesystem name as context.

80
{$SDWAN.LA.PER.CPU.MAX.WARN}

Load per CPU considered sustainable. Tune if needed.

1.5
{$SDWAN.LLD.FILTER.FSNAME.MATCHES}

Filter of discoverable filesystems by name.

.*
{$SDWAN.LLD.FILTER.FSNAME.NOT_MATCHES}

Filter to exclude discoverable filesystems by name.

CHANGE_IF_NEEDED
{$SDWAN.LLD.FILTER.IFNAME.MATCHES}

Filter of discoverable interfaces by name.

.*
{$SDWAN.LLD.FILTER.IFNAME.NOT_MATCHES}

Filter to exclude discoverable interfaces by name.

CHANGE_IF_NEEDED
{$SDWAN.HTTP_PROXY}

HTTP proxy for API requests. You can specify it using the format [protocol://][username[:password]@]proxy.example.com[:port]. See the documentation at https://www.zabbix.com/documentation/7.2/manual/config/items/itemtypes/http

{$IFCONTROL}

Macro for operational state of the interface for the link down trigger. Can be used with the interface name as context.

1
{$SDWAN.ROUTES.FREQUENCY}

Update interval for the Routes item, expressed in hours.

1h

Items

Name Description Type Key and additional info
Get interfaces data

Item for gathering device interfaces from Cisco SD-WAN API.

Script sd_wan.get.interfaces
Device interfaces item errors

Item for gathering errors of the device interfaces.

Dependent item sd_wan.get.interfaces.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get routes data

Item for gathering device routes from Cisco SD-WAN API.

Script sd_wan.get.routes
Device routes item errors

Item for gathering errors of the device routes.

Dependent item sd_wan.get.routes.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Get device data

Item for gathering device data from Cisco SD-WAN API.

Script sd_wan.get.device
Device data item errors

Item for gathering errors of the device item.

Dependent item sd_wan.get.device.errors

Preprocessing

  • JSON Path: $.error

  • Discard unchanged with heartbeat: 1h

Control connections

The number of control connections.

Dependent item sd_wan.device.control_conn

Preprocessing

  • JSON Path: $.controlConnections

    ⛔️Custom on fail: Set value to: 0

  • Matches regular expression: ^[0-9]+$

    ⛔️Custom on fail: Set value to: 0

Certificate validity

Validity status of the device certificate.

Dependent item sd_wan.device.certificate_validity

Preprocessing

  • JSON Path: $["certificate-validity"]

    ⛔️Custom on fail: Set value to: Unknown

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

Total memory

Total memory, expressed in bytes.

Dependent item sd_wan.device.memory.total

Preprocessing

  • JSON Path: $.mem_total

Available memory

The amount of physical memory (in bytes) immediately available for the allocation to a process or for a system use in the device.

Dependent item sd_wan.device.memory.avail

Preprocessing

  • JSON Path: $.mem_free

Memory (buffers)

The amount of physical memory (in bytes) used by the kernel buffers.

Dependent item sd_wan.device.memory.buffers

Preprocessing

  • JSON Path: $.mem_buffers

Memory (cached)

The amount of physical memory (in bytes) used by the page cache and slabs.

Dependent item sd_wan.device.memory.cached

Preprocessing

  • JSON Path: $.mem_cached

Used memory

The amount of physical memory (in bytes) used by applications on the device.

Dependent item sd_wan.device.memory.used

Preprocessing

  • JSON Path: $.mem_used

Memory utilization

Calculated percentage of the memory used, in %.

Calculated sd_wan.device.memory.util
Number of CPUs

The total number of CPU.

Dependent item sd_wan.device.cpu.num

Preprocessing

  • JSON Path: $.total_cpu_count

Load average (1m avg)

The average number of processes being or waiting executed over past 1 minute.

Dependent item sd_wan.device.cpu.load[avg1]

Preprocessing

  • JSON Path: $.min1_avg

Load average (5m avg)

The average number of processes being or waiting executed over past 5 minutes.

Dependent item sd_wan.device.cpu.load[avg5]

Preprocessing

  • JSON Path: $.min5_avg

Load average (15m avg)

The average number of processes being or waiting executed over past 15 minutes.

Dependent item sd_wan.device.cpu.load[avg15]

Preprocessing

  • JSON Path: $.min15_avg

CPU idle time

The time the CPU has spent doing nothing.

Dependent item sd_wan.device.cpu.util[idle]

Preprocessing

  • JSON Path: $.cpu_idle

CPU system time

The time the CPU has spent running the kernel and its processes.

Dependent item sd_wan.device.cpu.util[system]

Preprocessing

  • JSON Path: $.cpu_system

CPU user time

The time the CPU has spent running users' processes that are not niced.

Dependent item sd_wan.device.cpu.util[user]

Preprocessing

  • JSON Path: $.cpu_user

CPU utilization

CPU utilization, expressed in %.

Dependent item sd_wan.device.cpu.util

Preprocessing

  • JavaScript: return (100 - value);

Device reachability

Reachability to the vManager and/or the entire network.

Dependent item sd_wan.device.reachability

Preprocessing

  • JSON Path: $.reachability

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

Device state

The device current state.

Dependent item sd_wan.device.state

Preprocessing

  • JSON Path: $.state

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

Device state description

The description of the device current state.

Dependent item sd_wan.device.state_descr

Preprocessing

  • JSON Path: $.state_description

  • Discard unchanged with heartbeat: 1h

Operating system

The device operating system.

Dependent item sd_wan.device.os

Preprocessing

  • JSON Path: $["device-os"]

  • Discard unchanged with heartbeat: 1d

Operating system architecture

The architecture of the operating system.

Dependent item sd_wan.device.arch

Preprocessing

  • JSON Path: $.platform

  • Discard unchanged with heartbeat: 1d

Device role

The device role in the network.

Dependent item sd_wan.device.role

Preprocessing

  • JSON Path: $.device_role

    ⛔️Custom on fail: Set value to: -1

Model name

The model name of the device.

Dependent item sd_wan.device.model

Preprocessing

  • JSON Path: $["device-model"]

Number of processes

The total number of processes in any state.

Dependent item sd_wan.device.proc.num

Preprocessing

  • JSON Path: $.procs

Serial Number

The device serial number.

Dependent item sd_wan.device.serialnumber

Preprocessing

  • JSON Path: $["board-serial"]

System name

The system host name.

Dependent item sd_wan.device.hostname

Preprocessing

  • JSON Path: $["host-name"]

  • Discard unchanged with heartbeat: 12h

System uptime

The system uptime is calculated on the basis of boot time.

Dependent item sd_wan.device.uptime

Preprocessing

  • JSON Path: $["uptime-date"]

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

Version

The version of the device software.

Dependent item sd_wan.device.version

Preprocessing

  • JSON Path: $.version

  • Discard unchanged with heartbeat: 12h

Triggers

Name Description Expression Severity Dependencies and additional info
Cisco SD-WAN: There are errors in the 'Get interfaces data' metric length(last(/Cisco SD-WAN device by HTTP/sd_wan.get.interfaces.errors))>0 Warning
Cisco SD-WAN: There are errors in the 'Get routes data' metric length(last(/Cisco SD-WAN device by HTTP/sd_wan.get.routes.errors))>0 Warning
Cisco SD-WAN: There are errors in the 'Get device data' metric length(last(/Cisco SD-WAN device by HTTP/sd_wan.get.device.errors))>0 Warning
Cisco SD-WAN: Device certificate is invalid last(/Cisco SD-WAN device by HTTP/sd_wan.device.certificate_validity)=1 Warning
Cisco SD-WAN: Lack of available memory max(/Cisco SD-WAN device by HTTP/sd_wan.device.memory.avail,5m)<{$SDWAN.MEMORY.AVAILABLE.MIN} and last(/Cisco SD-WAN device by HTTP/sd_wan.device.memory.total)>0 Average
Cisco SD-WAN: High memory utilization

The system is running out of free memory.

min(/Cisco SD-WAN device by HTTP/sd_wan.device.memory.util,5m)>{$SDWAN.MEMORY.UTIL.MAX} Average Depends on:
  • Cisco SD-WAN: Lack of available memory
Cisco SD-WAN: Load average is too high

The load average per CPU is too high. The system might be slow to respond.

min(/Cisco SD-WAN device by HTTP/sd_wan.device.cpu.load[avg1],5m)/last(/Cisco SD-WAN device by HTTP/sd_wan.device.cpu.num)>{$SDWAN.LA.PER.CPU.MAX.WARN} and last(/Cisco SD-WAN device by HTTP/sd_wan.device.cpu.load[avg5])>0 and last(/Cisco SD-WAN device by HTTP/sd_wan.device.cpu.load[avg15])>0 Average
Cisco SD-WAN: High CPU utilization

CPU utilization is too high. The system might be slow to respond.

min(/Cisco SD-WAN device by HTTP/sd_wan.device.cpu.util,5m)>{$SDWAN.CPU.UTIL.CRIT} Warning Depends on:
  • Cisco SD-WAN: Load average is too high
Cisco SD-WAN: Device is not reachable

Device is not reachable to the vManager and/or the entire network.

last(/Cisco SD-WAN device by HTTP/sd_wan.device.reachability)<>0 Warning
Cisco SD-WAN: Device state is not green

The device current state is not green.

last(/Cisco SD-WAN device by HTTP/sd_wan.device.state)<>0 and length(last(/Cisco SD-WAN device by HTTP/sd_wan.device.state_descr))>0 Average
Cisco SD-WAN: Operating system description has changed

Operating system description has changed. Possible reasons that system has been updated or replaced. Ack to close.

last(/Cisco SD-WAN device by HTTP/sd_wan.device.os,#1)<>last(/Cisco SD-WAN device by HTTP/sd_wan.device.os,#2) and length(last(/Cisco SD-WAN device by HTTP/sd_wan.device.os))>0 Info Manual close: Yes
Depends on:
  • Cisco SD-WAN: Device has been replaced
Cisco SD-WAN: Device has been replaced

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

last(/Cisco SD-WAN device by HTTP/sd_wan.device.serialnumber,#1)<>last(/Cisco SD-WAN device by HTTP/sd_wan.device.serialnumber,#2) and length(last(/Cisco SD-WAN device by HTTP/sd_wan.device.serialnumber))>0 Info Manual close: Yes
Cisco SD-WAN: System name has changed

System name has changed. Ack to close.

last(/Cisco SD-WAN device by HTTP/sd_wan.device.hostname,#1)<>last(/Cisco SD-WAN device by HTTP/sd_wan.device.hostname,#2) and length(last(/Cisco SD-WAN device by HTTP/sd_wan.device.hostname))>0 Info Manual close: Yes
Cisco SD-WAN: Device has been restarted

The host uptime is less than 10 minutes

last(/Cisco SD-WAN device by HTTP/sd_wan.device.uptime)<10m Info Manual close: Yes

LLD rule Network interfaces discovery

Name Description Type Key and additional info
Network interfaces discovery

Discovering device interfaces from Cisco SD-WAN API.

Dependent item sd_wan.interfaces.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 3h

Item prototypes for Network interfaces discovery

Name Description Type Key and additional info
Interface ["{#IFNAME}"]: Get data

Item for gathering data for the {#IFNAME} interface.

Dependent item sd_wan.device.if.get_data["{#IFKEY}"]

Preprocessing

  • JSON Path: $.data[?(@["vdevice-dataKey"] == "{#IFKEY}")].first()

    ⛔️Custom on fail: Discard value

Interface ["{#IFNAME}"]: Admin status

Current admin status of the interface.

Dependent item sd_wan.device.if.adm.status["{#IFKEY}"]

Preprocessing

  • JSON Path: $["if-admin-status"]

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

Interface ["{#IFNAME}"]: Operational status

Current operational status of the interface.

Dependent item sd_wan.device.if.status["{#IFKEY}"]

Preprocessing

  • JSON Path: $["if-oper-status"]

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

Interface ["{#IFNAME}"]: Speed

Current bandwidth of the interface.

Dependent item sd_wan.device.if.speed["{#IFKEY}"]

Preprocessing

  • JSON Path: $["speed-mbps"]

  • Custom multiplier: 1000000

Interface ["{#IFNAME}"]: Bits received

The total number of octets received on the interface.

Dependent item sd_wan.device.if.in["{#IFKEY}"]

Preprocessing

  • JSON Path: $["rx-octets"]

    ⛔️Custom on fail: Set value to: 0

  • Change per second
  • Custom multiplier: 8

Interface ["{#IFNAME}"]: Bits sent

The total number of octets transmitted out of the interface.

Dependent item sd_wan.device.if.out["{#IFKEY}"]

Preprocessing

  • JSON Path: $["tx-octets"]

    ⛔️Custom on fail: Set value to: 0

  • Change per second
  • Custom multiplier: 8

Interface ["{#IFNAME}"]: Inbound packets discarded

The number of inbound packets that were chosen to be discarded.

Dependent item sd_wan.device.if.in.discards["{#IFKEY}"]

Preprocessing

  • JSON Path: $["rx-drops"]

    ⛔️Custom on fail: Set value to: 0

Interface ["{#IFNAME}"]: Inbound IPv6 packets discarded

The number of inbound IPv6 packets that were chosen to be discarded.

Dependent item sd_wan.device.if.in.v6.discards["{#IFKEY}"]

Preprocessing

  • JSON Path: $["ipv6-rx-drops"]

    ⛔️Custom on fail: Set value to: -1

Interface ["{#IFNAME}"]: Inbound packets with errors

The number of inbound packets that were contain errors.

Dependent item sd_wan.device.if.in.errors["{#IFKEY}"]

Preprocessing

  • JSON Path: $["rx-errors"]

    ⛔️Custom on fail: Set value to: 0

Interface ["{#IFNAME}"]: Inbound IPv6 packets with errors

The number of inbound IPv4 packets that were contain errors.

Dependent item sd_wan.device.if.in.v6.errors["{#IFKEY}"]

Preprocessing

  • JSON Path: $["ipv6-rx-errors"]

    ⛔️Custom on fail: Set value to: -1

Interface ["{#IFNAME}"]: Outbound packets discarded

The number of outbound packets that were chosen to be discarded.

Dependent item sd_wan.device.if.out.discards["{#IFKEY}"]

Preprocessing

  • JSON Path: $["tx-drops"]

    ⛔️Custom on fail: Set value to: 0

Interface ["{#IFNAME}"]: Outbound IPv6 packets discarded

The number of outbound IPv6 packets that were chosen to be discarded.

Dependent item sd_wan.device.if.out.v6.discards["{#IFKEY}"]

Preprocessing

  • JSON Path: $["ipv6-tx-drops"]

    ⛔️Custom on fail: Set value to: -1

Interface ["{#IFNAME}"]: Outbound packets with errors

The number of outbound packets that were contain errors.

Dependent item sd_wan.device.if.out.errors["{#IFKEY}"]

Preprocessing

  • JSON Path: $["tx-errors"]

    ⛔️Custom on fail: Set value to: 0

Interface ["{#IFNAME}"]: Outbound IPv6 packets with errors

The number of outbound IPv6 packets that were contain errors.

Dependent item sd_wan.device.if.out.v6.errors["{#IFKEY}"]

Preprocessing

  • JSON Path: $["ipv6-tx-errors"]

    ⛔️Custom on fail: Set value to: -1

Trigger prototypes for Network interfaces discovery

Name Description Expression Severity Dependencies and additional info
Cisco SD-WAN: Interface ["{#IFNAME}"]: Link down

This trigger expression works as follows:
1. It can be triggered if the operational 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, it does 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 last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.status["{#IFKEY}"])=1 and (last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.status["{#IFKEY}"],#1)<>last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.status["{#IFKEY}"],#2)) Average Manual close: Yes
Cisco SD-WAN: Interface ["{#IFNAME}"]: Ethernet has changed to lower speed than it was before

This Ethernet connection has transitioned down from its known maximum speed. This might be a sign of autonegotiation issues. Acknowledge to close the problem manually.

change(/Cisco SD-WAN device by HTTP/sd_wan.device.if.speed["{#IFKEY}"])<0 and last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.speed["{#IFKEY}"])>0 and last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.status["{#IFKEY}"])<>0 Info Manual close: Yes
Depends on:
  • Cisco SD-WAN: Interface ["{#IFNAME}"]: Link down
Cisco SD-WAN: Interface ["{#IFNAME}"]: High bandwidth usage

The network interface utilization is close to its estimated maximum bandwidth.

(avg(/Cisco SD-WAN device by HTTP/sd_wan.device.if.in["{#IFKEY}"],15m)>({$SDWAN.IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.speed["{#IFKEY}"]) or avg(/Cisco SD-WAN device by HTTP/sd_wan.device.if.out["{#IFKEY}"],15m)>({$SDWAN.IF.UTIL.MAX:"{#IFNAME}"}/100)*last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.speed["{#IFKEY}"])) and last(/Cisco SD-WAN device by HTTP/sd_wan.device.if.speed["{#IFKEY}"])>0 Warning Manual close: Yes
Depends on:
  • Cisco SD-WAN: Interface ["{#IFNAME}"]: Link down
Cisco SD-WAN: Interface ["{#IFNAME}"]: High error rate

It recovers when it is below 80% of the {$SDWAN.IF.ERRORS.WARN:"{#IFNAME}"} threshold.

min(/Cisco SD-WAN device by HTTP/sd_wan.device.if.in.errors["{#IFKEY}"],5m)>{$SDWAN.IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco SD-WAN device by HTTP/sd_wan.device.if.out.errors["{#IFKEY}"],5m)>{$SDWAN.IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco SD-WAN device by HTTP/sd_wan.device.if.in.v6.errors["{#IFKEY}"],5m)>{$SDWAN.IF.ERRORS.WARN:"{#IFNAME}"} or min(/Cisco SD-WAN device by HTTP/sd_wan.device.if.out.v6.errors["{#IFKEY}"],5m)>{$SDWAN.IF.ERRORS.WARN:"{#IFNAME}"} Warning Manual close: Yes
Depends on:
  • Cisco SD-WAN: Interface ["{#IFNAME}"]: Link down

LLD rule Mounted filesystem discovery

Name Description Type Key and additional info
Mounted filesystem discovery

Discovering device filesystems from Cisco SD-WAN API.

Dependent item sd_wan.fs.discovery

Preprocessing

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

  • Discard unchanged with heartbeat: 3h

Item prototypes for Mounted filesystem discovery

Name Description Type Key and additional info
["{#FSNAME}"]: Get data

Item for gathering data for the {#FSNAME} filesystem.

Dependent item sd_wan.device.fs.get_data["{#FSNAME}"]

Preprocessing

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

["{#FSNAME}"]: Total space

The size of the storage pool, in bytes.

Dependent item sd_wan.device.fs.total["{#FSNAME}"]

Preprocessing

  • JSON Path: $.size

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

["{#FSNAME}"]: Available space

The available size of the storage pool, in bytes.

Dependent item sd_wan.device.fs.avail["{#FSNAME}"]

Preprocessing

  • JSON Path: $.avail

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

["{#FSNAME}"]: Used space

The used size of the dataset, in bytes.

Dependent item sd_wan.device.fs.used["{#FSNAME}"]

Preprocessing

  • JSON Path: $.used

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

["{#FSNAME}"]: Space utilization

Space utilization, expressed in %.

Dependent item sd_wan.device.fs.pused["{#FSNAME}"]

Preprocessing

  • JSON Path: $.use

Trigger prototypes for Mounted filesystem discovery

Name Description Expression Severity Dependencies and additional info
Cisco SD-WAN: ["{#FSNAME}"]: Disk space is critically low

Utilization of the space is above {$VFS.FS.PUSED.MAX.CRIT:"{{FSNAME}}"}

last(/Cisco SD-WAN device by HTTP/sd_wan.device.fs.pused["{#FSNAME}"])>{$SDWAN.FS.PUSED.MAX.CRIT:"{#FSNAME}"} Average Manual close: Yes
Cisco SD-WAN: ["{#FSNAME}"]: Disk space is low

Utilization of the space is above {$VFS.FS.PUSED.MAX.CRIT:"{{FSNAME}}"}

last(/Cisco SD-WAN device by HTTP/sd_wan.device.fs.pused["{#FSNAME}"])>{$SDWAN.FS.PUSED.MAX.WARN:"{#FSNAME}"} Warning Manual close: Yes
Depends on:
  • Cisco SD-WAN: ["{#FSNAME}"]: Disk space is critically low

LLD rule Route discovery

Name Description Type Key and additional info
Route discovery

Discovering Application-Aware routes from Cisco SD-WAN API.

Dependent item sd_wan.routes.discovery

Preprocessing

  • JSON Path: $.data

    ⛔️Custom on fail: Set value to: []

Item prototypes for Route discovery

Name Description Type Key and additional info
Route [{#LOCAL} => {#REMOTE}]: Get data

Item for gathering data for the route {#LOCAL} => {#REMOTE}.

Dependent item sd_wan.routes.get_data[{#LOCAL},{#REMOTE}]

Preprocessing

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

    ⛔️Custom on fail: Discard value

  • Discard unchanged with heartbeat: 3h

Route [{#LOCAL} => {#REMOTE}]: Latency

The amount of time it takes for a data packet to travel through the route.

Dependent item sd_wan.routes.latency[{#LOCAL},{#REMOTE}]

Preprocessing

  • JSON Path: $.latency

Route [{#LOCAL} => {#REMOTE}]: Jitter

A change in the time it takes for a data packet to travel through the route.

Dependent item sd_wan.routes.jitter[{#LOCAL},{#REMOTE}]

Preprocessing

  • JSON Path: $.jitter

Route [{#LOCAL} => {#REMOTE}]: Loss

Lost packets of data not reached the destination after being transmitted through the route.

Dependent item sd_wan.routes.loss[{#LOCAL},{#REMOTE}]

Preprocessing

  • JSON Path: $.loss_percentage

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?