Учим Zabbix отправлять SMS оповещения

This topic has been discussed on the Net before. But I’d like to show my method. There are two ways to send SMS:

  • Through modem/telephone
  • Through SMS-gateway

If you are the only administrator in the system, you can send Zabbix notifications through the modem (the example of the script for the modem I will show at the end of the article). But if you have two or more administrators, who should get the notifications, you may face some problems with sending SMS. That is why I have chosen the second way to notify the administrators. Of course, if there is a problem with Zabbix itself, you won’t get any SMS. In this case you can combine both ways and use the modem only to notify of the problem with Zabbix-server.

Тема стара как Мир, и давно избита. Но я бы хотел внести свои 5 копеек. Есть всего 2 способа отправлять SMS:

  • Через модем/телефон
  • Через SMS-шлюз

Если вы один администратор в системе, то вам вполне можно отправлять уведомления Zabbix через модем (пример скрипта для модема я покажу в конце статьи). Но если у вас 2 и более администраторов, которые должны получать уведомления, вы можете столкнуться с коллизиями при отправке SMS. Поэтому я выбрал для оповещений администраторов 2-й вариант. Конечно в случае если произойдет проблема с самим Zabbix-сервером, то вы об этом SMS не получите. Но в этом случае возможно объединить эти 2 способа, оставив модем только для оповещений на случай проблем с самим Zabbix-сервером.

(далее…)

Установка zabbix agentd в Centos

Установка zabbix-агента на сервере происходит очень просто. Для начала скачаем сам zabbix агент с официального сайта, выбрав необходимую нам версию. В моем случае это будет версия для Linux 2.6.23 i386.

Далее распакуем его в домашний каталог и скопируем необходимые файлы в систему.

[[email protected] zabbix]# tar -xzvf zabbix_agents_2.0.4.linux2_6_23.i386.tar.gz
[[email protected] zabbix]# cp ./sbin /usr/local/
[[email protected] zabbix]# cp ./bin /usr/local/
[[email protected] zabbix]# cp ./usr/local/conf/zabbix_agentd.conf /usr/local/etc

Установка zabbix-агента на сервере происходит очень просто. Для начала скачаем сам zabbix агент с официального сайта, выбрав необходимую нам версию. В моем случае это будет версия для Linux 2.6.23 i386.

Далее распакуем его в домашний каталог и скопируем необходимые файлы в систему.

[[email protected] zabbix]# tar -xzvf zabbix_agents_2.0.4.linux2_6_23.i386.tar.gz
[[email protected] zabbix]# cp ./sbin /usr/local/
[[email protected] zabbix]# cp ./bin /usr/local/
[[email protected] zabbix]# cp ./usr/local/conf/zabbix_agentd.conf /usr/local/etc

Далее отредактируем файл /etc/local/etc/zabbix_agentd.conf. Для этого откроем его в любом удобном вам редакторе и найдем параметр Server=127.0.0.1. Где 127.0.0.1 заменим на IP-адрес вашего zabbix сервера. Сохраняем файл и выходим.

Дальше необходимо добавить нового пользователя zabbix:

[[email protected] zabbix]# useradd zabbix

После этого создадим файл /etc/init.d/zabbix_agentd со следующим содержимым:

#!/bin/bash
#
#       /etc/rc.d/init.d/zabbix_agentd
#
# Starts the zabbix_agentd daemon
#
# chkconfig: - 95 5
# description: Zabbix Monitoring Agent
# processname: zabbix_agentd
# pidfile: /tmp/zabbix_agentd.pid

# Modified for Zabbix 2.0.0
# May 2012, Zabbix SIA

# Source function library.

. /etc/init.d/functions

RETVAL=0
prog="Zabbix Agent"
ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"

if [ ! -x ${ZABBIX_BIN} ] ; then
        echo -n "${ZABBIX_BIN} not installed! "
        # Tell the user this has skipped
        exit 5
fi

start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix_agentd
        echo
}

stop() {
        echo -n $"Stopping $prog: "
        killproc $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix_agentd
        echo
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload|restart)
        stop
        sleep 10
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/zabbix_agentd ]; then
            stop
            start
        fi
        ;;
  status)
        status $ZABBIX_BIN
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
        exit 1
esac

exit $RETVAL

Сохраняем файл /etc/init.d/zabbix_agentd и выполняем команду, которая включит агента в автозагрузку:

[[email protected] zabbix]# chkconfig zabbix_agentd on

После чего zabbix_agentd можно запускать

[[email protected] zabbix]# /sbin/service zabbix_agentd start

Если установка прошла успешно вы увидите надпись
Запускается Zabbix Agent:                                  [  OK  ]

Если нет — проблему можно увидеть в логах сервера. По-умолчанию /tmp/zabbix_agentd.log.
Далее отредактируем файл /etc/local/etc/zabbix_agentd.conf. Для этого откроем его в любом удобном вам редакторе и найдем параметр Server=127.0.0.1. Где 127.0.0.1 заменим на IP-адрес вашего zabbix сервера. Сохраняем файл и выходим.

Дальше необходимо добавить нового пользователя zabbix:

[[email protected] zabbix]# useradd zabbix

После этого создадим файл /etc/init.d/zabbix_agentd со следующим содержимым:

#!/bin/bash
#
#       /etc/rc.d/init.d/zabbix_agentd
#
# Starts the zabbix_agentd daemon
#
# chkconfig: - 95 5
# description: Zabbix Monitoring Agent
# processname: zabbix_agentd
# pidfile: /tmp/zabbix_agentd.pid

# Modified for Zabbix 2.0.0
# May 2012, Zabbix SIA

# Source function library.

. /etc/init.d/functions

RETVAL=0
prog="Zabbix Agent"
ZABBIX_BIN="/usr/local/sbin/zabbix_agentd"

if [ ! -x ${ZABBIX_BIN} ] ; then
        echo -n "${ZABBIX_BIN} not installed! "
        # Tell the user this has skipped
        exit 5
fi

start() {
        echo -n $"Starting $prog: "
        daemon $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/zabbix_agentd
        echo
}

stop() {
        echo -n $"Stopping $prog: "
        killproc $ZABBIX_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/zabbix_agentd
        echo
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  reload|restart)
        stop
        sleep 10
        start
        RETVAL=$?
        ;;
  condrestart)
        if [ -f /var/lock/subsys/zabbix_agentd ]; then
            stop
            start
        fi
        ;;
  status)
        status $ZABBIX_BIN
        RETVAL=$?
        ;;
  *)
        echo $"Usage: $0 {condrestart|start|stop|restart|reload|status}"
        exit 1
esac

exit $RETVAL

Сохраняем файл /etc/init.d/zabbix_agentd и выполняем команду, которая включит агента в автозагрузку:

[[email protected] zabbix]# chkconfig zabbix_agentd on

После чего zabbix_agentd можно запускать

[[email protected] zabbix]# /sbin/service zabbix_agentd start

Если установка прошла успешно вы увидите надпись
Запускается Zabbix Agent:                                  [  OK  ]

Если нет — проблему можно увидеть в логах сервера. По-умолчанию /tmp/zabbix_agentd.log.