├── discover_vpn_ipp.sh ├── discover_vpn.sh ├── zabbix_agentd.txt ├── README.md └── openvpn.xml /discover_vpn_ipp.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | path=/etc/openvpn/ipp.txt # path to ifconfig-pool-persist file 4 | 5 | echo "{" 6 | echo "\"data\":[" 7 | comma="" 8 | 9 | while read line ; do 10 | IFS="," 11 | set -- $line 12 | user=$1 13 | echo " $comma{\"{#VPNUSER}\":\"$user\"}" 14 | comma="," 15 | done < $path 16 | 17 | echo "]" 18 | echo "}" 19 | -------------------------------------------------------------------------------- /discover_vpn.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | path=/etc/openvpn/ccd # path to certificate directory 4 | 5 | users=`ls -F $path | sed 's/\///g'` # array of certificate name 6 | 7 | echo "{" 8 | echo "\"data\":[" 9 | 10 | comma="" 11 | for user in $users 12 | do 13 | echo " $comma{\"{#VPNUSER}\":\"$user\"}" 14 | comma="," 15 | done 16 | 17 | echo "]" 18 | echo "}" 19 | -------------------------------------------------------------------------------- /zabbix_agentd.txt: -------------------------------------------------------------------------------- 1 | UserParameter=discovery.openvpn,/etc/zabbix/scripts/discover_vpn.sh 2 | UserParameter=user_status.openvpn[*], cat /var/log/openvpn-status.log | grep $1, >/dev/null && echo 1 || echo 0 3 | UserParameter=num_user.openvpn, cat /var/log/openvpn-status.log | sed -n '/Connected Since/,/ROUTING/p' | sed -e '1d' -e '$d' | wc -l 4 | UserParameter=user_byte_received.openvpn[*], if [ "`grep -c $1, /var/log/openvpn-status.log`" != "0" ]; then cat /var/log/openvpn-status.log | grep $1, | tr "," "\n" | sed -n '3p' ; else echo "0" ; fi 5 | UserParameter=user_byte_sent.openvpn[*], if [ "`grep -c $1, /var/log/openvpn-status.log`" != "0" ]; then cat /var/log/openvpn-status.log | grep $1, | tr "," "\n" | sed -n '4p' ; else echo "0" ; fi 6 | 7 | UserParameter=discovery.openvpn.ipp,/etc/zabbix/scripts/discover_vpn_ipp.sh # for discovery with ifconfig-pool-persist 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # zabbix-openvpn 2 | Zabbix 3.0 3 | 4 | Script for OpenVPN users monitoring. 5 | It shows an OpenVPN user’s status, and its uplink and downlink traffic. 6 | The “items” by the files certificates names are made using LLD. 7 | 8 | Setup: 9 | 10 | 1) Copy the file discover_vpn.sh to any directory on the server were OpenVPN is(for example /etc/zabbix/scripts/discover_vpn.sh ). In this file specify the path to directory where OpenVPN certificates are (line №3). 11 | 12 | 2) Copy all lines from “zabbix_agentd.txt” file and paste to the end of zabbix agent config (/etc/zabbix/zabbix_agentd.conf). Probably, will be necessary to change the path to discover_vpn.sh. 13 | 14 | 3) Import openvpn.xml to zabbix template. 15 | 16 | # zabbix-openvpn 17 | Zabbix 3.0 18 | 19 | Скрипт мониторинга пользователей OpenVPN. 20 | Проверяется статус каждого пользователя OpenVPN, и его входящий\исходящий трафик. 21 | 22 | С помощью LLD создаются "элементы данных" по имени файлов сертификатов. 23 | 24 | Установка: 25 | 1) скопировать файл discover_vpn.sh в любую директорию, на сервере с OpenVPN (например, /etc/zabbix/scripts/discover_vpn.sh) 26 | в этом файле указать путь до папки с сетификатами OpenVPN (строка №3). 27 | 28 | 2) из файла zabbix_agentd.txt скопировать все строки в конец конфига zabbix агента (по умолчанию, /etc/zabbix/zabbix_agentd.conf) 29 | возможно потребуется изменить путь до discover_vpn.sh 30 | 31 | 3) импортировать в zabbix шаблон openvpn.xml 32 | -------------------------------------------------------------------------------- /openvpn.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 3.0 4 | 2016-08-17T11:07:00Z 5 | 6 | 7 | Templates 8 | 9 | 10 | 11 | 375 | 376 | 377 | --------------------------------------------------------------------------------