• Регистрация

1,096 вопросов

1,459 ответов

1,302 комментариев

8,780 пользователей

Добро пожаловать на Ubuntu Ответы, где вы можете задать вопросы и получить ответы от других пользователей сервиса.

Уведомления системы мониторинга Zabbix в групповой чат Skype

0 голосов

Zabbix – мощный инструмент мониторинга. С его помощью и знанием особенностей работы того или иного сервиса можно настроить мониторинг практически любого параметра или процесса. 

В определенный момент нам необходимо было решить вопрос отправки уведомлений мониторинга в групповой чат Skype. Тема это не новая, однако при реализации данного функционала необходимо было решить ряд возникших проблем.

За основу по настройке взаимодействия CLI Zabbix-сервера и Skype было взято известное решение из сети (http://www.qxs.ch/2011/01/07/skype-instant-messages-from-zabbix/).

Настройка выполнялась под Debian 7.

Добавим пользователя для работы Skype:

adduser skype

Устанавливаем необходимые пакеты:
apt-get install xvfb fluxbox x11vnc
apt-get install dbus
apt-get install libasound2 libqt4-dbus libqt4-network libqtcore4 libqtgui4 libxss1 libpython2.6 libqt4-xml libaudio2 libmng1 fontconfig liblcms1 lib32stdc++6 libc6-i386 lib32gcc1

Скачиваем деб-пакет Skype:

wget http://www.skype.com/go/getskype-linux-deb-32 -O skype.deb

Устанавливаем Skype:

dpkg -i skype-linux-beta.deb

В процессе установки могут возникнуть проблемы с зависимостями, которые устраняются с помощью 

apt-get install –f

Установим skype4py

easy_install -v skype4py

Запустим Skype с помощью вспомогательных скриптов:

su skype
./start-server.sh start

Запускаем VNC для конфигурирования авторизации и настройки параметров работы Skype:

./start-vnc.sh start

Выполняем проброс локального порта (из любой Linux-машины с окружением рабочего стола) на удаленный сервер (Zabbix-server)

ssh -L 5900:127.0.0.1:5900 'skype@zabbix-server'

Подключаемся с локальной машины на удаленный VNC любым клиентом, например, TightVNC.

В удаленном VNC принимаем лицензию Skype, вводим данные для авторизации, устанавливаем параметр автоматического входа при запуске и заходим в Skype. Этих параметров вполне достаточно для работы через skype4py, однако можно поправить и другие параметры, например, отключить звуковые уведомления и т.д. В нашем случае также важным параметром было добавление учетной записи мониторинга в групповой чат.

Скрипты отправки уведомления автора направлены на работу с 1 контактом. Поэтому скрипты были исправлены под нашу задачу. После тестирования и преобразования они преобрели вид:

cat /home/skype/sendim.sh
#!/bin/bash
export DISPLAY=:1
to_temp=$1
subject=$2
to=`echo $to_temp | sed -e "s/'//g"`
python /home/skype/sendim.py $to $subject

cat /home/skype/sendim.py
import Skype4Py
import sys
chat = sys.argv[1]
msg = ' '.join(sys.argv[2:])
skype = Skype4Py.Skype(Transport='x11')
skype.Attach()
skype.Chat(chat).SendMessage(msg)

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

В самом zabbix необходимо добавить новый тип уведомления. Для этого идем в «Администрирование-Способы оповещений». Создаем новый способ. Указываем название, тип (скрипт), название скрипта (в нашем случае sendim.sh). После этого идем в конфиг zabbix-сервера и смотрим директорию для скриптов уведомлений

cat /etc/zabbix/zabbix_server.conf | grep AlertScriptsPath | grep -v "#"
AlertScriptsPath=/etc/zabbix/alert.d/

В нашем случае это /etc/zabbix/alert.d/

Назначим нашему скрипту необходимые права, владельца и делаем симлинк:

chown skype:zabbix /home/skype/sendim.*
chmod 770 /home/skype/sendim.*
ln -s /home/skype/sendim.sh /etc/zabbix/alert.d/

Перезапускаем zabbix-server:

/etc/init.d/zabbix-server restart

Далее в профиле пользователя, от которого будут уходить уведомления указываем новый тип уведомления. Для этого заходим в «Профиль-Оповещения», добавляем оповещение через Skype. В строке адреса отправки прописываем название чата в таком виде:

#username/'$'381031e35a270b3a

Это название можно получить, выполнив в окне чата команду /get name

Обратите внимание на экранирования символа $. Это связано с тем, что zabbix при передачи переменной в скрипт отсекает часть имени после этого символа. Эсли эго экранировать, переменная передается в неизменном виде. При этом в самом скрипте предусмотрено снятие экранирования для правильной передачи переменной в следующий скрипт sendim.py.


После этого тестируем работу на тестовом хосте

Вопрос Mar 9, 2016 от and3001 Гуру (24,350 баллов) в категории Серверные системы
Редактирование Mar 9, 2016 от sir_mcnellan
   

Пожалуйста войдите или зарегистрируйтесь для ответа на этот вопрос.

...