SaltStack常用组件使用 SaltStack配置文件说明 轻量级DNS、DHCP服务软件DNSMASQ 千万级PV(日)的移动应用架构如何实现 高效运维最佳实践-运维自动化之殇 Ubuntu 14.04 Linux如何配置静态IP地址和DNS服务器 ELK 常见错误与解决办法 Elasticsearch 集群配置管理常用操作 常用数字证书格式相互转换-OpenSSL/Keytool/Jks2pfx ELK 综合日志归档分析系统(2)-Logstash安装配置 Elasticsearch之Shield认证与权限管理 ELK 综合日志归档分析系统(1)-Elasticsearch-Redis安装配置 Redmine 3.2 安装配置指南 CentOS6 大型web系统数据缓存设计 Redis 集群方案 Linux 内核TCP优化详解 SaltStack初始化安装配置 OpenLDAP常用操作 OpenLDAP统一身份认证 [CentOS6/7] 构建Linux Skype Message消息推送API服务(Zabbix集成告警) Tomcat 生产服务器性能优化 Zabbix结合iptables监控网络流量 Linux操作系统环境配置与优先级问题 深入 NGINX: 我们如何设计性能和扩展 Windows SQL Server 性能计数器详细说明 Windows性能计数器说明 Ubuntu安装openntpd报错:Starting openntpd: /etc/openntpd/ntpd.conf: Permission denied locale: Cannot set LC_ALL to default locale: No such file or directory OpenSSL拆解p12证书公约和私钥 Linux sar 统计系统性能(网卡、内存和交换空间、CPU资源等) Linux Shell /dev/null 2>&1 含义 Windows 2003操作系统网络不通 构建私有yum安装源镜像站点(openstack) CentOS6/RedHat6新增网卡识别问题 Ubuntu 14.04 Server优化与使用问题解决 Redhat/CentOS6系统使用ntfs-3g挂载NTFS分区 Linux GPT挂载超过2TB磁盘 Linux系统性能优化、测试和监控工具梳理 修复WIN2003远程桌面服务无法访问 解决CentOS“Zabbix discoverer processes 75% busy”的问题 REHL/CentOS安装phpMyadmin

构建Linux Skype Message消息推送API服务(Zabbix集成告警)

2015年08月14日

简介

在工作中,由于监控系统需要能够通过即时聊天工具发送告警的信息,同时在工作中主要使用Skype进行内部的沟通交流,因此萌发了将Zabbix与Skype进行整合的想法。
本文运行环境基于Ubuntu 14.04 LTS,其他Linux平台安装方式可能略微不同。可以将Skype API服务器部署在Linux和Windows服务器上,也可以和Zabbix部署在同一台机器上面。只需要能够顺利调用http://IP:5000/msg接口即可。

系统架构说明:

1-skype-架构图
图1-Skype架构图

一、 安装基础环境和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-VNC-connection
图2-1 桌面客户端VNC Viewer远程登录服务器

2.6 Skype初始化配置

3-配置Skype选择默认语言

图2-2 配置Skype,选择默认语言

4-skype-login

图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

5-skype-configuration

图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

6-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”
7-allow skype4py api

图3-2 Skye4Py API请求授权

配置完毕后,停止VNC Server的服务:

skype@ubuntu14:~$ ~/sevabot/scripts/start-vnc.sh start

启动完毕后,确认服务和端口正常运行,在浏览器中输入IP:5000即可打开控制台。
8-http-api-services

图3-3 Web控制台登录

在Skype中,将需要与之通讯的好友加入到通讯录中,并向他发送一条“Hello”信息后,相关的Chat ID就会在下面的列表中显示。有时会出现同一个用户有2个Chat Id的问题,现在还不知道问什么。
9-skype-chatid-viewer

图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:
10-zabbix-1

新增人员及Skype Chat ID

进入Zabbix控制台,依次打开:administrator > Users > Users,选择需要新增Skype Chat ID的成员。
11-zabbix-2

配置告警发送动作

依次打开:Configuration > Actions > create action,进入Operations新增:
13-zabbix-3

至此,所有Skype和Zabbix的集成就已经配置完成了。需要注意的是微软可能在未来会封锁Skype第三方私有API,这将会导致本文的配置方法可能在未来会失效。

参考文档:
https://sevabot-skype-bot.readthedocs.org/en/latest/ubuntu.html

转载请注明:自动化运维 » 构建Linux Skype Message消息推送API服务(Zabbix集成告警)