Source: https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/net/cisco/cisco_sdwan_http
This template is designed for the effortless deployment of Cisco SD-WAN monitoring by Zabbix via HTTP and doesn't require any external scripts.
Zabbix version: 7.2 and higher.
This template has been tested on:
Zabbix should be configured according to the instructions in the Templates out of the box section.
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.
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 |
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
|
Get devices | Item for gathering all devices from Cisco SD-WAN API. |
Dependent item | sd_wan.get.devices Preprocessing
|
Get devices item errors | Item for gathering all the data item errors. |
Dependent item | sd_wan.get.devices.errors Preprocessing
|
Invalid certificates | Number of invalid certificates. |
Dependent item | sd_wan.invalid_certificates Preprocessing
|
Total devices | The total number of all devices. |
Dependent item | sd_wan.total.devices Preprocessing
|
Number of vEdge devices | The total number of vEdge devices. |
Dependent item | sd_wan.vedge.devices Preprocessing
|
Number of vBond devices | The total number of vBond devices. |
Dependent item | sd_wan.vbond.devices Preprocessing
|
Number of vSmart devices | The total number of vSmart devices. |
Dependent item | sd_wan.vsmart.devices Preprocessing
|
Number of vManage devices | The total number of vManage devices. |
Dependent item | sd_wan.vmanage.devices Preprocessing
|
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Authentication has failed | length(last(/Cisco SD-WAN by HTTP/sd_wan.auth.errors))>0 |
Average | ||
There are errors in the 'Get devices' metric | length(last(/Cisco SD-WAN by HTTP/sd_wan.get.devices.errors))>0 |
Warning |
Name | Description | Type | Key and additional info |
---|---|---|---|
Devices discovery | Discovering devices from Cisco SD-WAN API. |
Dependent item | sd_wan.devices.discovery Preprocessing
|
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 |
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
|
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
|
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
|
Control connections | The number of control connections. |
Dependent item | sd_wan.device.control_conn Preprocessing
|
Certificate validity | Validity status of the device certificate. |
Dependent item | sd_wan.device.certificate_validity Preprocessing
|
Total memory | Total memory, expressed in bytes. |
Dependent item | sd_wan.device.memory.total Preprocessing
|
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
|
Memory (buffers) | The amount of physical memory (in bytes) used by the kernel buffers. |
Dependent item | sd_wan.device.memory.buffers Preprocessing
|
Memory (cached) | The amount of physical memory (in bytes) used by the page cache and slabs. |
Dependent item | sd_wan.device.memory.cached Preprocessing
|
Used memory | The amount of physical memory (in bytes) used by applications on the device. |
Dependent item | sd_wan.device.memory.used Preprocessing
|
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
|
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
|
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
|
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
|
CPU idle time | The time the CPU has spent doing nothing. |
Dependent item | sd_wan.device.cpu.util[idle] Preprocessing
|
CPU system time | The time the CPU has spent running the kernel and its processes. |
Dependent item | sd_wan.device.cpu.util[system] Preprocessing
|
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
|
CPU utilization | CPU utilization, expressed in %. |
Dependent item | sd_wan.device.cpu.util Preprocessing
|
Device reachability | Reachability to the vManager and/or the entire network. |
Dependent item | sd_wan.device.reachability Preprocessing
|
Device state | The device current state. |
Dependent item | sd_wan.device.state Preprocessing
|
Device state description | The description of the device current state. |
Dependent item | sd_wan.device.state_descr Preprocessing
|
Operating system | The device operating system. |
Dependent item | sd_wan.device.os Preprocessing
|
Operating system architecture | The architecture of the operating system. |
Dependent item | sd_wan.device.arch Preprocessing
|
Device role | The device role in the network. |
Dependent item | sd_wan.device.role Preprocessing
|
Model name | The model name of the device. |
Dependent item | sd_wan.device.model Preprocessing
|
Number of processes | The total number of processes in any state. |
Dependent item | sd_wan.device.proc.num Preprocessing
|
Serial Number | The device serial number. |
Dependent item | sd_wan.device.serialnumber Preprocessing
|
System name | The system host name. |
Dependent item | sd_wan.device.hostname Preprocessing
|
System uptime | The system uptime is calculated on the basis of boot time. |
Dependent item | sd_wan.device.uptime Preprocessing
|
Version | The version of the device software. |
Dependent item | sd_wan.device.version Preprocessing
|
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
There are errors in the 'Get interfaces data' metric | length(last(/Cisco SD-WAN device by HTTP/sd_wan.get.interfaces.errors))>0 |
Warning | ||
There are errors in the 'Get routes data' metric | length(last(/Cisco SD-WAN device by HTTP/sd_wan.get.routes.errors))>0 |
Warning | ||
There are errors in the 'Get device data' metric | length(last(/Cisco SD-WAN device by HTTP/sd_wan.get.device.errors))>0 |
Warning | ||
Device certificate is invalid | last(/Cisco SD-WAN device by HTTP/sd_wan.device.certificate_validity)=1 |
Warning | ||
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 | ||
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:
|
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 | |
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:
|
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 | |
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 | |
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:
|
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 |
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 |
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 |
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
|
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
|
Interface ["{#IFNAME}"]: Admin status | Current admin status of the interface. |
Dependent item | sd_wan.device.if.adm.status["{#IFKEY}"] Preprocessing
|
Interface ["{#IFNAME}"]: Operational status | Current operational status of the interface. |
Dependent item | sd_wan.device.if.status["{#IFKEY}"] Preprocessing
|
Interface ["{#IFNAME}"]: Speed | Current bandwidth of the interface. |
Dependent item | sd_wan.device.if.speed["{#IFKEY}"] Preprocessing
|
Interface ["{#IFNAME}"]: Bits received | The total number of octets received on the interface. |
Dependent item | sd_wan.device.if.in["{#IFKEY}"] Preprocessing
|
Interface ["{#IFNAME}"]: Bits sent | The total number of octets transmitted out of the interface. |
Dependent item | sd_wan.device.if.out["{#IFKEY}"] Preprocessing
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
Interface ["{#IFNAME}"]: Link down | This trigger expression works as follows: |
{$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 |
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:
|
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:
|
Interface ["{#IFNAME}"]: High error rate | It recovers when it is below 80% of the |
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:
|
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
|
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
|
["{#FSNAME}"]: Total space | The size of the storage pool, in bytes. |
Dependent item | sd_wan.device.fs.total["{#FSNAME}"] Preprocessing
|
["{#FSNAME}"]: Available space | The available size of the storage pool, in bytes. |
Dependent item | sd_wan.device.fs.avail["{#FSNAME}"] Preprocessing
|
["{#FSNAME}"]: Used space | The used size of the dataset, in bytes. |
Dependent item | sd_wan.device.fs.used["{#FSNAME}"] Preprocessing
|
["{#FSNAME}"]: Space utilization | Space utilization, expressed in %. |
Dependent item | sd_wan.device.fs.pused["{#FSNAME}"] Preprocessing
|
Name | Description | Expression | Severity | Dependencies and additional info |
---|---|---|---|---|
["{#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 |
["{#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:
|
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
|
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
|
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
|
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
|
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
|
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