简介
在工作中,由于监控系统需要能够通过即时聊天工具发送告警的信息,同时在工作中主要使用Skype进行内部的沟通交流,因此萌发了将Zabbix与Skype进行整合的想法。
本文运行环境基于Ubuntu 14.04 LTS,其他Linux平台安装方式可能略微不同。可以将Skype API服务器部署在Linux和Windows服务器上,也可以和Zabbix部署在同一台机器上面。只需要能够顺利调用http://IP:5000/msg接口即可。
系统架构说明:
一、 安装基础环境和Skype
在Linux系统中运行Skype需要使用xvfb启动x11图形界面才能正常运行。所有在ubuntu系统中,使用下面的命令进行安装,具体如下:
#更新系统 root@ubuntu14:~# apt-get update -y #升级系统的软件 root@ubuntu14:~# apt-get upgrade -y #安装Skype基础环境和依赖包 root@ubuntu14:~# apt-get install -y xvfb fluxbox x11vnc dbus libasound2 libqt4-dbus libqt4-network libqtcore4 libqtgui4 libxss1 libpython2.7 libqt4-xml libaudio2 fontconfig liblcms1 lib32stdc++6 libc6-i386 lib32gcc1 nano python-virtualenv #安装x11字体 root@ubuntu14:~# apt-get install xfonts-100dpi xfonts-75dpi xfonts-scalable xfonts-cyrillic #下载Skype安装包,Ubuntu x64 root@ubuntu14:~# wget http://www.skype.com/go/getskype-linux-beta-ubuntu-64 -O skype-linux-beta.deb #下载完毕后,安装Skype安装包 root@ubuntu14:/home/skype#dpkg -i skype-linux-beta.deb
Skype Web下载网址:
http://www.skype.com/en/download-skype/skype-for-computer/
如果安装过程中出现依赖包报错无法安装的情况,可以直接使用下面的命令安装依赖包后继续安装。
root@ubuntu14:/home/skype# dpkg -i skype-ubuntu-precise_4.3.0.37-1_i386_ubuntu-64.deb Selecting previously unselected package skype. (Reading database ... 64536 files and directories currently installed.) Preparing to unpack skype-ubuntu-precise_4.3.0.37-1_i386_ubuntu-64.deb ... Unpacking skype (4.3.0.37-1) ... dpkg: dependency problems prevent configuration of skype: skype depends on libc6 (>= 2.3.6-6~). skype depends on libc6 (>= 2.7). skype depends on libgcc1 (>= 1:4.1.1). skype depends on libqt4-dbus (>= 4:4.5.3). skype depends on libqt4-network (>= 4:4.8.0). skype depends on libqt4-xml (>= 4:4.5.3). skype depends on libqtcore4 (>= 4:4.7.0~beta1). skype depends on libqtgui4 (>= 4:4.8.0). skype depends on libqtwebkit4 (>= 2.2~2011week36). skype depends on libstdc++6 (>= 4.2.1). skype depends on libx11-6. skype depends on libxext6. skype depends on libxss1. skype depends on libxv1. skype depends on libssl1.0.0. skype depends on libpulse0. skype depends on libasound2-plugins. dpkg: error processing package skype (--install): dependency problems - leaving unconfigured Processing triggers for mime-support (3.54ubuntu1.1) ... Errors were encountered while processing: skype
使用下面命令可以修复:
dpkg --add-architecture i386 apt-get update
如果采用最小安装,还需要安装如下软件:
#如果系统未安装unzip sudo apt-get install -y unzip apt-get install -y python-gobject-2 apt-get install -y curl git
二、 VNC远程访问配置Skype
Sevabot运行需要本地运行Skype程序并正常登录后,sevabot才能够正常通过Python的API调用Skype来发送消息。所有需要通过VNC连接到服务端,对Skype进行配置。
2.1. 新增skype系统运行账户
#生成32位随机数密码 root@ubuntu14:~#openssl rand -base64 32 yCNjsTF18qTSEt4jmaZ+yhQ/iigCRoTz2YJC4FTMhkw= root@ubuntu14:~# adduser skype Adding user `skype' ... Adding new group `skype' (1001) ... Adding new user `skype' (1001) with group `skype' ... Creating home directory `/home/skype' ... Copying files from `/etc/skel' ... Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully Changing the user information for skype Enter the new value, or press ENTER for the default Full Name []: skype Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
2.2.下载并解压sevabot
skype@ubuntu14:~$wget https://github.com/opensourcehacker/sevabot/archive/master.zip skype@ubuntu14:~$unzip master.zip skype@ubuntu14:~$mv sevabot-master sevabot & cd sevabot skype@ubuntu14:~/sevabot$chmod +x sevabot ./ -R
2.3 启动xvfb、fluxbox和Skype服务
skype@ubuntu14:~$SERVICES="xvfb fluxbox skype" ~/sevabot/scripts/start-server.sh start
2.4 启动 VNC server服务
第一次启动VNC服务,程序会要求输入Skype用户的VNC Viewer访问的密码,并保存在~/.x11vnc/passwd,如果要重置密码,只需要删除/home/skype/.x11vnc/passwd文件即可。
skype@ubuntu14:~$ ~/sevabot/scripts/start-vnc.sh start Xvfb is running fluxbox is running skype is running OVERALL STATUS: OK Starting x11vnc Enter VNC password: Verify password: Write password to /home/skype/.x11vnc/passwd? [y]/n y
2.5 VNC远程登录
在远程的桌面系统,通过VNC使用skype用户远程登录到服务器,默认端口5900,并在Skype中输入帐号密码,并修改默认的配置。
2.6 Skype初始化配置
图2-2 配置Skype,选择默认语言
图2-3 配置登录的用户名和密码
注意:并勾选“Sign me when Skype status”
2.7 配置Skype隐私选项
- No chat history
- Only people on my list can write me
- Only people on my list can call me
图2-4 Skype Privacy
三、 安装Sevabot
首先使用Skype用户登录的服务器。sevabot默认需要使用python virtualenv配置环境。
安装Sevabot
skype@ubuntu14:~$ cd ~/sevabot/ skype@ubuntu14:~/sevabot$ virtualenv venv New python executable in venv/bin/python Installing setuptools, pip...done. skype@ubuntu14:~/sevabot$ . venv/bin/activate (venv)skype@ubuntu14:~/sevabot$ (venv)skype@ubuntu14:~/sevabot$ python setup.py develop
通过setup.py安装脚本,将能自动安装所需要的依赖文件。sevabot提供了Web界面用于查看Skype chat ID,发送消息。默认监听localhost:5000,我们需要修改settings.py修改配置文件。用于启动sevabot。
#生成一个随机的密码。 root@ubuntu14:~# openssl rand -base64 32 cHBVRom0lrEHMTe0gCYYsMr1iH89N7sXN9XL7kP1tZk= skype@ubuntu14:~/sevabot$ cp settings.py.example settings.py skype@ubuntu14:~/sevabot$vim settings.py
图3-1 settings.py配置
参数说明:
SHARED_SECRET:密钥,用户登录Web控制台和远程调用时使用的密码。
ADMINS:登录Web控制台时的用户名。
HTTP_HOST:程序监听的地址。
HTTP_PORT:程序监听的端口号。
修改完成后,启动sevabot服务:
skype@ubuntu14:~/sevabot$ SERVICES=sevabot ~/sevabot/scripts/start-server.sh start Started Sevabot web server process id
服务启动完毕后,立即登录VNC到服务器,在Skype中接受Skype4Py的API授权请求,并勾选“Remember this selection”
图3-2 Skye4Py API请求授权
配置完毕后,停止VNC Server的服务:
skype@ubuntu14:~$ ~/sevabot/scripts/start-vnc.sh start
启动完毕后,确认服务和端口正常运行,在浏览器中输入IP:5000即可打开控制台。
图3-3 Web控制台登录
在Skype中,将需要与之通讯的好友加入到通讯录中,并向他发送一条“Hello”信息后,相关的Chat ID就会在下面的列表中显示。有时会出现同一个用户有2个Chat Id的问题,现在还不知道问什么。
图3-4 Chat ID
四、 Zabbix集成Sevabot
创建Skype告警脚本
查看Zabbix Server 告警脚本保存目录:
root@ip-172-31-3-76:/home/ubuntu# cat /etc/zabbix/zabbix_server.conf |grep "alert" # How often Zabbix will try to send unsent alerts (in seconds). # Full path to location of custom alert scripts. # AlertScriptsPath=${datadir}/zabbix/alertscripts AlertScriptsPath=/usr/lib/zabbix/alertscripts
创建Skype告警脚本skype_send_message.sh
#!/bin/sh # # Example shell script for sending a message into sevabot # # Give command line parameters [chat id] and [message]. # The message is md5 signed with a shared secret specified in settings.py # Then we use curl do to the request to sevabot HTTP interface. # # chat=$1 msg=${3} secret="zgjEMYY2G7INW8ZPD8A7o/S+LaxX5vssr5kwdXWZn/g=" msgaddress="http://localhost:5000/msg/" md5=`echo -n "$chat$msg$secret" | md5sum` #md5sum prints a '-' to the end. Let's get rid of that. for m in $md5; do break done curl $msgaddress --data-urlencode chat="$chat" --data-urlencode msg="$msg" --data-urlencode md5="$m"
新增Zabbix Media Type
依次打开:Administrator>Media types> Create media type:
新增人员及Skype Chat ID
进入Zabbix控制台,依次打开:administrator > Users > Users,选择需要新增Skype Chat ID的成员。
配置告警发送动作
依次打开:Configuration > Actions > create action,进入Operations新增:
至此,所有Skype和Zabbix的集成就已经配置完成了。需要注意的是微软可能在未来会封锁Skype第三方私有API,这将会导致本文的配置方法可能在未来会失效。
参考文档:
https://sevabot-skype-bot.readthedocs.org/en/latest/ubuntu.html