设为首页 收藏本站
查看: 1259|回复: 0

[经验分享] 结合docker添加zabbix的skype告警方式

[复制链接]

尚未签到

发表于 2019-1-25 11:23:03 | 显示全部楼层 |阅读模式
  一 应用场景描述

  如果在工作中使用Skype即时聊天通讯软件作为沟通工具,那么利用Skype来接收zabbix报警信息就有必要。
  

  二 部署Skype环境
  在部署Skype环境的时候也折腾了不少时间,刚开始是想通过zabbix本机的CentOS6.4上安装Skype环境,但是CentOS6.4上安装Skype确实非常不容易,参考国外的资料都是在Ubuntu上面部署Skype。我们平时也不使用Ubuntu系统,清一色的CentOS。怎么办,怎么办?突然想起可以使用Docker创建一个Ubuntu server容器,再到这个容器里面去部署Skype环境,还可以将操作过程写成Dockerfile供以后直接使用。
  利用Skype发送消息的思路是通过Skype的python api连接本地Linux上的Skype然后发送消息。这里选择使用一个基于Skype4Py的工具sevabot,它的好处就是可以通过HTTP方式来连接Skype发送消息。这样Skype就不需要和zabbix部署在一起了。
  

  1.从docker hub上拉取镜像

#docker pull ubuntu:12.04  

  2.使用docker run根据ubuntu 12.04的镜像创建一个docker容器,改名为sevabot
#docker run -p 5900:5900 -p 5000:5000   --name sevabot    -it ubuntu:12.04 /bin/bash  
3.安装Skype和sevabot运行所依赖的软件
#apt-get install net-tools ping -y
#apt-get update
#apt-get install -y xvfb fluxbox x11vnc dbus libasound2 libqt4-dbus libqt4-network libqtcore4 libqtgui4 libxss1 libpython2.7 libqt4-xml libaudio2 libmng1 fontconfig liblcms1 lib32stdc++6 lib32asound2 ia32-libs libc6-i386 lib32gcc1 nano python-virtualenv
#wget http://www.skype.com/go/getskype-linux-beta-ubuntu-64 -O skype-linux-beta.deb
#dpkg -i skype-linux-beta.deb
#apt-get install -y python-gobject-2
#apt-get install -y  git curl  

  4.设置Skype和远程VNC环境
  Skype需要在非root账号下运行,同时运行Skype需要配置VNC环境,Windows下可以通过vnc viewer连接到VNC环境。
#adduser  --disabled-password --gecos "" skype
#su - skype
#git clone git://github.com/opensourcehacker/sevabot.git

SERVICES="xvfb fluxbox skype" ~/sevabot/scripts/start-server.sh start
~/sevabot/scripts/start-vnc.sh start  

  在本地Windows下通过Real VNC Viewer连接到VNC,IP应该是Docker主机的IP
  

DSC0000.png

  

  

  

DSC0001.png

  

  

DSC0002.png

  

  

  5.安装Sevabot
  在切换到skype用户后

  $cd sevabot/
  $virtualenv venv
  $ . venv/bin/activate
  $python setup.py develop
  $cp settings.py.example  settings.py
  

  编辑settings.py这个文件,更改几个参数
  SHARED_SECRET   设置通过HTTP方式发送消息的密码
  HTTP_HOST      sevabot的HTTP接口监听的IP地址,这里填Docker容器的内网IP就行了,应为Docker主机通过端口映射会转发到这个IP
  HTTP_PORT      默认的监听端口是5000
  

  然后启动sevabot

SERVICES=sevabot ~/sevabot/scripts/start-server.sh start  

  通过VNC允许Skype4Py连接到Skype
DSC0003.png

  

  再从新启动所有服务
~/sevabot/scripts/start-server.sh restart
然后通过
  访问sevabot在Shared secret框内输入密码后点击Show chat list按钮会列出每个联系人的Chat id和账号名称
前提是你必须把这些账号添加为好友才行

然后就可以通过页面向好友发送Skype消息了,还可以打电话哟  三 为zabbix添加skype报警
  进入到zabbix的自定义报警脚本目录

  cd ~/zabbix/share/zabbix/alertscripts
  创建一个名为sendskype.sh的文件
#!/bin/bash
#
# 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 id comes as Send To parameter from Zabbix
chat=$1
# Message is the second parameter
msg=${@:2}
# Our Skype bot shared secret
secret="xxxx"
# The Skype bot HTTP msg interface
msgaddress="http://172.xxx.xxx.xxx: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 -d "chat=$chat&msg=$msg&md5=$m"$1是需要发送消息的接收方和这个skype机器人建立聊天时生成的ID,这个ID是唯一的,并且sevabot还通过MD5对ID进行了加密处理.
可以通过sevabot的代码进行了解
def get_chat_id(chat):
    """
    Get unique internal persistent id of the chat object.
    All ids are URL safe.
    This is the same id as in the web interface.
    :param chat: Skype4Py.chat.Chat instance
    """
    m = hashlib.md5()
    m.update(chat.Name)
    return m.hexdigest()

这里顺便提一下,干运维虽然不一定要求像开发那样熟悉业务开发,但是常规的工具开发能力和看各种代码的能力还是需要具备的,特别是涉及到一些自己看文档不是太清楚的时候,就可以直接看代码帮助自己理解.

脚本中${@:2}使用的是shell的高级变量,表示脚本运行的第2个参数到后面的参数,既是需要通过这个脚本发送的内容

# chmod a+x sendskype.sh  脚本测试
# sh sendskype.sh 35257268e691e0cc458976e9bab83a9e  this is a test message from sevabot  

  这时就可以在这个ID对应的接收方那端收到以下消息:
  this is a test message from sevabot
  

  脚本测试通过后就可以在zabbix的主页面配置skype报警功能了
  选择Administrator-->Media types-->Create media type
  Name填skype
  Type选择Script
  Script name填sendskype.sh
  Enabled 打勾
  

  再选择Configuration-->Actions-->Triggers
  然后把Report problems to Zabbix administrators via Email这个克隆一下,把Email相关的换成改由skype发送就行了
  

  好,大功告成。现在就可以通过skype接收zabbix报警消息了
  

  

  

  四 扩展问题
  有两个可以扩展的问题需要解决,一个就是把sevabot的部署过程写成Dockerfile,另外一个问题就是通过shell脚本发送消息给skype的时候,skype接收后显示成为一行,最好是能够分行显示。
  

  

  

  

  

  

  参考文档:
  https://github.com/Skype4Py/Skype4Py
  https://github.com/opensourcehacker/sevabot
  https://sevabot-skype-bot.readthedocs.org/en/latest/ubuntu.html
  http://www.qxs.ch/2011/01/07/skype-instant-messages-from-zabbix/
  https://www.realvnc.com/download/
  

  

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-667399-1-1.html 上篇帖子: 解决zabbix 3.0中1151端口不能运行问题 下篇帖子: (玩转zabbix)硬盘硬件健康状态监控,部件寿命监控
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表