84 lines
3.3 KiB
Markdown
84 lines
3.3 KiB
Markdown
|
|
||
|
# Network availability by Zabbix agent
|
||
|
|
||
|
## Overview
|
||
|
|
||
|
This template is designed for network availability monitoring by Zabbix via ping and doesn't require any external scripts.
|
||
|
|
||
|
## Requirements
|
||
|
|
||
|
- Zabbix version: 6.0 and higher.
|
||
|
- [`Define user parameters.`](https://git.hmp.today/pavel.muhortov/zabbix/templates/components/network-availability/6.0#define-user-parameters)
|
||
|
|
||
|
## Tested versions
|
||
|
|
||
|
This template has been tested on:
|
||
|
|
||
|
- [Debian GNU/Linux 11](http://ftp.debian.org/debian/dists/bullseye/)
|
||
|
- [Windows 11](https://www.microsoft.com/en-us/windows/windows-11)
|
||
|
|
||
|
### Macros used
|
||
|
|
||
|
|Name|Description|Default|
|
||
|
|----|-----------|-------|
|
||
|
|{$ADDRESS1}|address to check availability|`1.1.1.1`|
|
||
|
|{$ADDRESS2}|address to check availability|`8.8.8.8`|
|
||
|
|{$ADDRESS3}|address to check availability|`9.9.9.9`|
|
||
|
|
||
|
### Items
|
||
|
|
||
|
|Name|Description|Type|Key and additional info|
|
||
|
|----|-----------|----|-----------------------|
|
||
|
|Network address 1 available|Availability of address 1 by ping|Zabbix agent|'network.address1[{$ADDRESS1}]'|
|
||
|
|Network address 2 available|Availability of address 2 by ping|Zabbix agent|'network.address2[{$ADDRESS2}]'|
|
||
|
|Network address 3 available|Availability of address 3 by ping|Zabbix agent|'network.address3[{$ADDRESS3}]'|
|
||
|
|Network default gateway|Network default gateway|Zabbix agent|'network.gateway'|
|
||
|
|
||
|
### Triggers
|
||
|
|
||
|
|Name|Description|Expression|Severity|Dependencies and additional info|
|
||
|
|----|-----------|----------|--------|--------------------------------|
|
||
|
|Network via {ITEM.VALUE4} not available||last(/Network availability by Zabbix agent/network.address1[{$ADDRESS1}],#1)=0 and last(/Network availability by Zabbix agent/network.address2[{$ADDRESS2}],#1)=0 and last(/Network availability by Zabbix agent/network.address3[{$ADDRESS3}],#1)=0 and length(last(/Network availability by Zabbix agent/network.gateway))>0)<7|High|Manual close: No|
|
||
|
|Default gateway has changed (new gateway: {ITEM.VALUE})||last(/Network availability by Zabbix agent/network.gateway,#1)<>last(/Network availability by Zabbix agent/network.gateway,#2) and length(last(/Network availability by Zabbix agent/network.gateway))>0|Average|Manual close: Yes|
|
||
|
|
||
|
### Discovery rules
|
||
|
|
||
|
There are no discovery rules in this template.
|
||
|
|
||
|
### Item prototypes for Clients discovery
|
||
|
|
||
|
There are no item prototypes in this template.
|
||
|
|
||
|
### Define user parameters
|
||
|
|
||
|
for Linux:
|
||
|
|
||
|
```bash
|
||
|
tee -a /etc/zabbix/zabbix_agentd.conf > /dev/null <<'EOF'
|
||
|
Timeout=30
|
||
|
UserParameter=network.gateway, ip ro | grep -e default | awk '{print $3}'
|
||
|
UserParameter=network.address1[*], ping -q -w 3 -c 1 $1 > /dev/null && echo 1 || echo 0
|
||
|
UserParameter=network.address2[*], ping -q -w 3 -c 1 $1 > /dev/null && echo 1 || echo 0
|
||
|
UserParameter=network.address3[*], ping -q -w 3 -c 1 $1 > /dev/null && echo 1 || echo 0
|
||
|
EOF
|
||
|
|
||
|
systemctl restart zabbix-agent
|
||
|
```
|
||
|
|
||
|
for Windows:
|
||
|
|
||
|
```batch
|
||
|
powershell.exe
|
||
|
$text = @"
|
||
|
Timeout=30
|
||
|
UserParameter=network.gateway, powershell.exe -Command "Get-NetRoute -DestinationPrefix '0.0.0.0/0' | Select-Object -ExpandProperty 'NextHop'"
|
||
|
UserParameter=network.address1[*], ping -w 3000 -n 1 $1 > NUL && echo 1 || echo 0
|
||
|
UserParameter=network.address2[*], ping -w 3000 -n 1 $1 > NUL && echo 1 || echo 0
|
||
|
UserParameter=network.address3[*], ping -w 3000 -n 1 $1 > NUL && echo 1 || echo 0
|
||
|
"@
|
||
|
$text | Out-File -Append "$env:ProgramFiles\Zabbix Agent\zabbix_agentd.conf" -Encoding "UTF8"
|
||
|
exit
|
||
|
|
||
|
sc stop "Zabbix Agent" && sc start "Zabbix Agent"
|
||
|
```
|