Понадобилось получать некие значения из БД, и рисовать графики.
Вот что вышло.
margin-collect.sh
#!/bin/sh DATABASE=megabase USER=megauser PASS=megapass HOST=1.2.3.4 VHOUR=`date +%H |sed 's/^0//i'` mysql -h $HOST -u$USER -p$PASS $DATABASE -B -N -e 'SELECT SUM(DST_BILL_TIME) as minutes,BILL_DATE,sum(SRC_SYS_PRICE*SRC_BILL_TIME - DST_SYS_PRICE*DST_BILL_TI ME) as profit FROM CDR_BILL201209 WHERE BILL_DATE=(select curdate()) and VHOUR='$VHOUR';' mysql -h $HOST -u$USER -p$PASS $DATABASE -B -N -e 'SELECT SUM(DST_BILL_TIME) as minutes,BILL_DATE,sum(SRC_SYS_PRICE*SRC_BILL_TIME - DST_SYS_PRICE*DST_BILL_TI ME) as profit FROM CDR_BILL201209 WHERE BILL_DATE=(select date_sub(curdate(),interval 1 day)) and VHOUR='$VHOUR';' mysql -h $HOST -u$USER -p$PASS $DATABASE -B -N -e 'SELECT SUM(DST_BILL_TIME) as minutes,BILL_DATE,sum(SRC_SYS_PRICE*SRC_BILL_TIME - DST_SYS_PRICE*DST_BILL_TI ME) as profit FROM CDR_BILL201209 WHERE BILL_DATE=(select date_sub(curdate(),interval 2 day)) and VHOUR='$VHOUR';'
margin-parse.awk
BEGIN {
id=0; } { if ( NF ==3){ id +=1 print "ambs.example.net minutes"id" " $1; print "ambs.example.net margin"id" "$3 fflush() next } }
Вместо ambs.example.net вписать имя мониторящегося хоста, такое как в заббиксе.
margin.sh
/etc/zabbix/scripts/margin-collect.sh |awk '{print $1,$2,$3}'|awk -f /etc/zabbix/scripts/margin-parse.awk | zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -r -i -
В заббиксе создаем айтемы
minutes1
margin1
minutes2
margin2
minutes3
margin3
тип - Zabbix trapper
Allowed hosts - хост сервера с которого приходят данные
Type of information - Numeric (float)
И дальше по крону запускаем margin.sh раз в полчаса, получая таким образом данные от сендера.