понедельник, 27 марта 2017 г.

Опять Zabbix

Есть VPN-клиенты с УТМ(Мерката).
Захотелось мониторить некоторую информацию с этих машин.
Написал скрипты:
{{{
#!/bin/sh
hosts=`cat /usr/local/etc/zabbix32/zabbix/externalscripts/3-15`
for host in $hosts
do
host_end=`echo $host | cut -d "." -f 4`
hst=`echo $host_end"-10" | bc -ql`
if [ $hst -lt "10" ]; then
    hst=`echo "0"$hst`
fi
loss=`ping -s 32 -c 5 $host | grep "packet loss" | cut -d "," -f 3 | cut -d "%" -f 1 | cut -d " " -f 2`
code=`curl --connect-timeout 2 -s -I http://$host:8080 | grep HTTP | cut -d " " -f 2`
if [ -z $code ]; then
    code="0"
fi
warn=`curl -s --connect-timeout 2 http://$host:8080 | grep warn`
if [ -z $warn ]; then
    warn="0"
fi
if [ ! -z $warn ]; then
        echo $warn
        zabbix_sender -z 127.0.0.1 -s "Zabbix server" -k remote$hst.warnings -o $warn
fi
done
echo $loss
zabbix_sender -z 127.0.0.1 -s "Zabbix server" -k remote$hst.ping -o $loss
echo $code
zabbix_sender -z 127.0.0.1 -s "Zabbix server" -k remote$hst.httpcode -o $code
}}}
{{{
#!/bin/sh
hosts=`cat /usr/local/etc/zabbix32/zabbix/externalscripts/3-15`
for host in $hosts
do
host_end=`echo $host | cut -d "." -f 4`
hst=`echo $host_end"-10" | bc -ql`
if [ $hst -lt "10" ]; then
    hst=`echo "0"$hst`
fi
fsrar_id=`curl --connect-timeout 2 -s http://$host:8080 | grep FSRAR | grep PKI | cut -d ":" -f 2 | cut -d "-" -f 3 | cut -d " " -f 1`
version=`curl --connect-timeout 2 -s http://$host:8080 | grep version | cut -d ":" -f 2`
serial=`curl --connect-timeout 2 -s http://$host:8080/info/certificate/RSA | grep "SerialNumber" | cut -d "[" -f 2 | cut -d "]" -f 1`
exp=`curl --connect-timeout 2 -s http://$host:8080/info/certificate/RSA | grep "To:" | sed -e 's/]//g' | sed -e 's/  //g' | sed -e 's/To: //g'`
echo "\"Zabbix server\" remote$hst.version \"$version\"" >/tmp/315_daily.tmp
echo "\"Zabbix server\" remote$hst.fsrarid \"$fsrar_id\"" >>/tmp/315_daily.tmp
echo "\"Zabbix server\" remote$hst.serial \"$serial\"" >>/tmp/315_daily.tmp
echo "\"Zabbix server\" remote$hst.expire \"$exp\"" >>/tmp/315_daily.tmp
zabbix_sender -z 127.0.0.1 -i /tmp/315_daily.tmp
done
}}}
Ну ок, думаю, что надо создавать элементы данных для каждого клиента VPN. Один, второй, третий, данунахер!!! Их (клиентов) там 30 штук и внутри каждого по 5-6 элементов данных и прибывают.
Ок, что нам предложит заббикс? Zabbix trapper + discovery.
Для начала напишу скрипт для discovery, подумал я.
{{{
#!/bin/sh
names=`cat /3-15`
data="{\"data\":["
num=0
for name in $names
do
num=`echo $num +1|bc`
if [ $num -lt "10" ]; then
        num=`echo "0"$num`
fi
#echo $num
data=`echo $data"{\"{#REMOTE}\":\"$name\",\"{#NUM}\":\"$num\"},"`
done
data=`echo $data | sed "s/.$//"`
data=`echo $data"]}"`
echo $data
#zabbix_sender -z localhost -p 10051 -s "Zabbix server" -k remote.name -o '$data'
}}}
Ок, создаем шаблон. Делаем новое дисковери, даже называем его как-то. Переходим к созданию прототипов элементов данных и тут заббикс подкладывает свинью - он не умеет в качестве ключа и названия прототипа использовать макросы. Все, приехали.
 Как вариант - надо попробовать прикрутить через API.

Спасибо за внимание.