Решаю задачу по мониторингу версий софта (nginx,php,memcached,mysql ...) на рабочих серверах centos. Решил делать через zabbix (2.0.6), т.к. серваки подключены к zabbix`у и уже давно мониторятся, Написал скрипт soft_ver.sh:
Код: Выделить всё
#!/bin/bash
cd /usr/local/zabbix/scripts
export HOME=/usr/local/zabbix/scripts
name=$1
#NGINX
if [ "$name" = "nginx" ] && [ -e /usr/local/nginx/sbin/nginx ]; then
nginx_cur=`lynx --dump http://nginx.org/en/download.html | grep -A 2 -e "Stable version" | awk '{print $2}' | grep nginx | sed -r 's/\[24\]//'`
nginx_srv=`/usr/local/nginx/sbin/nginx -v &> tmp && cat tmp | awk '{print $3}' | sed 's/\//-/g' && rm -f tmp`
if [ "$nginx_srv" == "$nginx_cur" ]; then
echo 1
else
echo 0
fi
fi
#MYSQL
if [ "$name" = "mysql" ] && [ -e /usr/bin/mysql ]; then
mysql_cur=`lynx --dump http://www.percona.com/downloads/Percona-Server-5.5/LATEST/RPM/rhel6/x86_64/ | grep client-55 | sed '2d' | sed -r 's/(\[42\]Percona-Server-client-55-|-rel30.2.509.rhel6.x86_64.rpm)//g' | sed -r 's/\s+//g'`
mysql_srv=`mysql -V | awk '{print $5}' | sed -r 's/,//g'`
if [ "$mysql_srv" == "$mysql_cur" ]; then
echo 1
else
echo 0
fi
fi
...и так далее, для любого софта. В агенте прописал
Код: Выделить всё
UserParameter=soft_ver[*],/usr/local/zabbix/scripts/soft_ver.sh $1Код: Выделить всё
[root@srv scripts]# ll /usr/local/zabbix/scripts/soft_ver.sh
-rwxr-xr-x 1 zabbix zabbix 2509 Май 21 16:31 /usr/local/zabbix/scripts/soft_ver.shСкрипт расплодил на все сервера с помощью fabric`и. Включаю мониторинг и вижу, что частенько мониторинг через этот скрипт становится не поддерживаемым, а на некоторых серверах, я вообще получаю проблему
Код: Выделить всё
[root@ATS scripts]# ../sbin/zabbix_agentd -t soft_ver[mysql]
Сигнал таймера
[root@ATS scripts]#В логах с дебаг-режимом ничего подозрительного в этот момент нет.
Хотя локально скрипт отрабатывает хорошо на всех серверах.
Код: Выделить всё
[root@srv scripts]# ./soft_ver.sh mysql
0
[root@srv scripts]#В связи с этим, у меня вопрос:
- как можно решить эту задачу с мониторингом версий софта и уведомлениями, более грамотно и красиво??
- почему я получаю сообщение "Сигнал таймера" (о котором я говорил выше), вместо нормальной работы?