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: 8.0 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/8.0/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/8.0/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. 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 integration you need?