29

Ежедневный срез/отчет Zabbix по текщим проблемам к примеру для тимлидов.

Ежедневный срез/отчет Zabbix по текщим проблемам к примеру для тимлидов.

Доброго дня коллеги. Как то я озаботился получением утреннего дайджеста, а именно среза текущих проблем на момент времени. Не добившись от мидов ясности в глах и азарта впальцах я наковырял сие (иногда используя кусочки чужуго кода. Публикую - вдруг кому понравится.

Работает с базой Zabbix-3.4

zabbix-daily-report.sh


#!/bin/bash

#Working with Zabbix 3.4 Database

SENDWITH0=0

URL=http://zabbix.slocal

MAIL="***@*** ***@*** #emails with spaces here#"

MAILFROM=zabbix@zabbix.slocal

SMTP="your.smtp.server"

SMTPUSER="******"

SMTPPASS="******"

SQLHOST=$(sed -e '/^DBHost/!d; s/.*=\(.*\)/\1/' /etc/zabbix/zabbix_server.conf)

SQLUSER=$(sed -e '/^DBUser/!d; s/.*=\(.*\)/\1/' /etc/zabbix/zabbix_server.conf)

SQLPASS=$(sed -e '/^DBPassword/!d; s/.*=\(.*\)/\1/' /etc/zabbix/zabbix_server.conf)

SQL='SELECT host, t.description, FROM_UNIXTIME(e.clock) as time, t.value, IF(e.acknowledged=1,"Yes","No") as acknowledged, IF(e.acknowledged=1,a.message,"") as message

FROM triggers t

INNER JOIN functions f ON ( f.triggerid = t.triggerid )

INNER JOIN items i ON ( i.itemid = f.itemid )

INNER JOIN hosts h ON ( i.hostid = h.hostid )

INNER JOIN events e ON ( e.objectid = t.triggerid )

LEFT JOIN acknowledges a ON ( a.eventid = e.eventid )

WHERE (e.eventid DIV 100000000000000)

IN (0)

AND e.object = 0

AND (t.value=1 OR (t.value =0 AND unix_timestamp(now()) - t.lastchange <60))

AND h.status = 0

AND i.status = 0

AND t.status = 0

AND e.eventid = (SELECT max(eventid)

FROM events e

WHERE (e.eventid DIV 100000000000000)

IN (0)

AND e.object = 0

AND (t.value=1 OR (t.value =0 AND unix_timestamp(now()) - t.lastchange <60))

AND h.status = 0

AND i.status = 0

AND t.status = 0

AND e.objectid = t.triggerid

)

GROUP BY host, f.triggerid

ORDER BY t.lastchange DESC;'

echo ${SQL}|mysql -h ${SQLHOST} -u ${SQLUSER} -p${SQLPASS} zabbix -t | sed 's/$/\\n/g; /acknowledged/d; 1d;' > /dev/shm/$(basename $0)

body="This is an automatically generated fokin mail message sent by a script running on zabbix.slocal."

subject="Zabbix daily report by $(date): We have "

num=0

if [ -s /dev/shm/$(basename $0) ]; then

num=$(( $(cat /dev/shm/$(basename $0)|wc -l) -2))

body="${body}

The following triggers are currently active:


`echo -e $(cat /dev/shm/$(basename $0))`"


else


body="${body}


All quiet chef!"


fi


body="${body}


Log in to Zabbix at ${URL}


Regards,

Zabbix Server"


subject="${subject} $num fokin problems."


if [ ${num} -eq 0 ] && [ ${SENDWITH0} -eq 0 ]; then

exit 0;

else

for i in $MAIL

do

echo -e "${body}" | sendemail -s $SMTP -xu $SMTPUSER -xp $SMTPPASS -f $MAILFROM -t $i -u ${subject} > /dev/null 2>&1

done

fi

GNU/Linux

1.2K поста15.6K подписчиков

Правила сообщества

Все дистрибутивы хороши.

Будьте людьми.