我的服务器是阿里云里的服务器,由于服务器有限,因此以下操作都是在一台服务器上进行的,也就是我自己监控我自己,不过无伤大雅,微信报警机器人还是会报警的。下面你准备好了麻,要开始辣~

监控环境准备

部署zabbix-server【监控端】

部署zabbix-agent【被监控端】

实现对web服务器监控【监控端】

zabbix 企业微信报警【监控端】

一.监控环境准备

1.1在你的服务器上添加安全组,HTTP端口号80、zabbix-server端口号10051、zabbix-agent端口号10050

zabbix-server和zabbix-agent的安全组规则类似

二.部署zabbix-server【监控端】

2.1 安装zabbix-server

[root@bcf ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm                 (先下载rpm包)

[root@bcf ~]# yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent httpd mariadb mariadb-server

2.2 启动mariadb

[root@bcf ~]# systemctl restart mariadb
[root@bcf ~]# systemctl enable mariadb      // 设置开机自启

2.3 准备数据库及授权

[root@bcf ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 5
Server version: 5.5.64-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> Ctrl-C -- exit!
Aborted

2.4 导入数据库文件

[root@bcf ~]# zcat /usr/share/doc/zabbix-server-mysql-3.4.15/create.sql.gz | mysql -uzabbix -pzabbix zabbix

2.5 修改zabbix配置文件

[root@bcf ~]# vim /etc/zabbix/zabbix_server.conf

DBHost=localhost

DBName=zabbix

DBUser=zabbix

DBPassword=zabbix

注意删除前面的空格

2.6 启动zabbix-server

[root@bcf ~]# systemctl restart zabbix-server zabbix-agent
[root@bcf ~]# systemctl enable zabbix-server zabbix-agent

2.7 修改Apache配置文件,修改时区

[root@bcf ~]# vim /etc/httpd/conf.d/zabbix.conf

php_value date.timezone Asia/Shanghai

2.8 启动Apache服务

[root@bcf ~]# systemctl restart httpd
[root@bcf ~]# systemctl enable httpd

2.9 访问IP

打开浏览器选用公网ip的方式访问: http://101.37.30.108/zabbix

安装成功之后,用户名为:Admin 密码为:zabbix

三、部署zabbix-agent【被监控端】

由于我们只有一台云主机,我们就拿同一台云主机作为被监控端

3.1 zabbix-agent配置

[root@bcf ~]# vim /etc/zabbix/zabbix_agentd.conf

Server=101.37.30.108  //zabbix-server IP 即监控端的IP

ServerActive=101.37.30.108  //zabbix-server IP 即监控端的IP

3.2 启动zabbix-agent

[root@bcf ~]# systemctl restart zabbix-agent
[root@bcf ~]# systemctl enable zabbix-agent

四、 实现对web服务器监控【监控端】

4.1 添加【主机组】

4.2 添加主机

暂不点击添加按钮

4.3 关联http模板

下一步一定要点击,添加,否则不生效

上步做完,再点击添加

4.4 查看或测试触发器效果(如果是2台服务器的话可以将被监控端的http服务down,然后在触发器里面可以看到效果,但是我们目前就一个服务器,如果把它down掉的话,也不能访问这个IP了,所以就不测试了)

测试之前先将主机web1的触发器的更新间隔改为3或5s

五、 zabbix 微信报警【监控端】

5.1 下载企业微信【手机】,创建企业

5.2 企业登录后台【pc】

这里注意可见范围一定要有一个企业,否则可能报警失败,下面需要用记事本保存一些有用的信息

应用:报警机器人

AgentID       1000004

Secret          Ke3oLYC_svLJdBK3OX6qlATpZGYZY5hsN6FuYioDhYU

企业CorpID ww39ce87f07c13a896

部门id          1

5.4 python报警监控脚本

需要修改脚本中的四个信息:

self.__corpid = 'ww39ce87f07c13a896' //公司的corpid

self.__secret = 'Ke3oLYC_svLJdBK3OX6qlATpZGYZY5hsN6FuYioDhYU' //应用的secret

'toparty':1, //部门id

'agentid':"1000004", //应用id

没有这个脚本的在/usr/lib/zabbix/alertscripts/的目录下创建一个wechat.py文件,并给文件加上执行权限

[root@bcf ~]# cd /usr/lib/zabbix/alertscripts/
[root@bcf alertscripts]# ls
wechat.py
[root@bcf alertscripts]# chmod +x wechat.py 
[root@bcf alertscripts]# vim wechat.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib,urllib2,json
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
class WeChat(object):
        __token_id = ''
        # init attribute
        def __init__(self,url):
                self.__url = url.rstrip('/')
                self.__corpid = 'ww39ce87f07c13a896'
                self.__secret = 'Ke3oLYC_svLJdBK3OX6qlATpZGYZY5hsN6FuYioDhYU'
        # Get TokenID
        def authID(self):
                params = {'corpid':self.__corpid, 'corpsecret':self.__secret}
                data = urllib.urlencode(params)
                content = self.getToken(data)
                try:
                        self.__token_id = content['access_token']
                        # print content['access_token']
                except KeyError:
                        raise KeyError
        # Establish a connection
        def getToken(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'gettoken?'
                try:
                        response = urllib2.Request(url + data)
                except KeyError:
                        raise KeyError
                result = urllib2.urlopen(response)
                content = json.loads(result.read())
                return content

# Get sendmessage url
        def postData(self,data,url_prefix='/'):
                url = self.__url + url_prefix + 'message/send?access_token=%s' % self.__token_id
                request = urllib2.Request(url,data)
                try:
                        result = urllib2.urlopen(request)
                except urllib2.HTTPError as e:
                        if hasattr(e,'reason'):
                                print 'reason',e.reason
                        elif hasattr(e,'code'):
                                print 'code',e.code
                        return 0
                else:
                        content = json.loads(result.read())
                        result.close()
                return content

# send message
        def sendMessage(self,touser,message):
                self.authID()
                data = json.dumps({
                        'touser':touser,
                        'toparty':1,
                        'msgtype':"text",
                        'agentid':"1000004",
                        'text':{
                                'content':message
                        },
                        'safe':"0"
                },ensure_ascii=False)
                response = self.postData(data)
                print response

if __name__ == '__main__':
        a = WeChat('https://qyapi.weixin.qq.com/cgi-bin')
        a.sendMessage(sys.argv[1],sys.argv[3])

监控脚本测试:

注:i为上图的企业微信名 test为标题 2为内容,标题和内容均可自定义

[root@bcf alertscripts]# ./wechat.py i test 2

结果是{u'invaliduser': u'', u'errcode': 0, u'errmsg': u'ok'}说明测试成功

5.6 zabbix 创建告警媒介

注:(以哪种方式发送报警信息,短信,脚本等等)

5.7 zabbix 添加告警用户

创建用户组:web-group,包含yangge、alice...等用户

创建用户:yangge、alice...等用户,并关联到微信告警

希望的结果是:发微信到组web-group,组中的用户yangge、alice都能收到

设置用户组web-group对主机群组bcf-webserver拥有读写(发送消息)权限

5.8 Zabbix 添加告别警动作

如果希望中文显示:

告警主机: {HOST.NAME}

告警地址: {HOST.IP}

监控项目: {ITEM.NAME}

告警等级: {TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警时间: {EVENT.DATE} {EVENT.TIME}

5.9 测试微信报警

被监控端操作

[root@bcf ~]# systemctl stop httpd

发现手机企业微信上发来以下短信

以上就是这个项目的全部内容辣,这个项目是千峰的石老师教我们的,还是叫飞哥亲切,这4天的实训中,非常感谢飞哥的付出,每次都会很认真的给我们每个人解决我们出现的问题,嘿嘿,飞哥辛苦辣~~,希望以后有缘江湖再见咯~

云计算实训之项目3-基于微信实现自动化监控报警相关推荐

  1. 学校云计算机室,云计算实训室简介

    云计算技术作为IT行业未来发展趋势,同时作为国家重点发展产业,正处在高速发展时期,人才需求已凸显.然而,目前云计算人才培养体系还处在初级阶段,相关专业人才缺口巨大.因此,学院在2015年投入100余万 ...

  2. 云计算实训室课程体系设计

    云计算课程体系 云计算实训课程体系设计依据 一.培养目标:为全面提高人才培养质量.扩大就业创业.推进经济转型升级.培育经济发展新动能,唯众提供云计算.大数据.人工智能等创新技术,为院校.政府.企业培养 ...

  3. 点宽与江苏大学建设量化金融实训平台项目

    近期,深圳点宽网络科技有限公司中标江苏大学[量化金融实训平台]项目,助力数学科学学院金融数学专业开展量化金融实验室项目建设. 一.量化金融实训项目介绍 点宽为江苏大学金融数学专业建设的"量化 ...

  4. python实训小队项目总结

    python实训小队项目总结 项目展示: 项目总结: 前端 后端 部署 项目展示: 主界面 注册界面 登陆界面 首页介绍 个人中心介绍 项目总结: 前端 通过自己之前学的bootstrap导入再进行网 ...

  5. Linux综合实训案例教程,Linux操作系统教程-实训与项目案例原稿.ppt

    Linux操作系统教程-实训与项目案例原稿分析 第11章 Bash 使用详解 本章内容 Shell概念 Linux下用户Shell的指定 Bash的使用 Bash的常见技巧与快捷键 Bash的变里使用 ...

  6. 嵌入式项目实战——基于QT的视频监控系统设计(二)

    嵌入式项目实战--基于QT的视频监控系统设计(二) 昨天我分享了关于QT的基本使用方法,掌握了这些基本的方法就可以设计一个简单的视频监控界面.下面我们开始分享完成这个嵌入式项目同样重要的知识点--UD ...

  7. 嵌入式项目实战——基于QT的视频监控系统设计(三)

    嵌入式项目实战--基于QT的视频监控系统设计(三) 进入到五一假期第三天,继续我们的项目.本来五一假期还是想好好休息一下的,因为最近学习的状态不太好,刷题都没有思路了,但是身边的同学太卷了,不过我还是 ...

  8. 嵌入式项目实战——基于QT的视频监控系统设计(四)

    嵌入式项目实战--基于QT的视频监控系统设计(四) 进入到五一假期的第四天,通过前三天的分享,相信你应该已经掌握了QT的基本使用.UDP网络编程.v4l2视频处理模块.多线程编程等基本的知识点.其实昨 ...

  9. 嵌入式项目实战——基于QT的视频监控系统设计(一)

    嵌入式项目实战--基于QT的视频监控系统设计(一) 这个五一因为疫情,只能待在家里,想了想不如将我之前做的一个小的嵌入式的练习项目分享出来,供入门嵌入式的同学们学习.基于QT的视频监控系统设计虽然是个 ...

最新文章

  1. NAACL 2021 | 担心GPT-3被喂假消息?谷歌新研究,将知识图谱转成“人话”用于训练...
  2. ansible高级应用示例
  3. 字节,腾讯,百度... Go 工程师面试题大公开
  4. SQL终极优化(包括很多非索引方面的优化和原理)
  5. Linux Shell脚本入门教程系列之(十四) Shell Select教程
  6. linux水滴怎么抓包,tcpdump 抓包
  7. 学习使用ADO.NET Data Services (ADO.NET 数据服务框架) - Part 1
  8. java线程死锁研究
  9. eclipse中基于maven构建多模块项目
  10. 关闭Windows自动更新—大法
  11. mybatis连接oracle
  12. 原理解析!传智播客java基础入门第二版课后答案
  13. OpenGLGamma校正
  14. cad统计面积长度插件vlx_cad计算面积插件免费版
  15. Ubuntu16.04关机后自动重启解决方案
  16. 联想微型计算机快捷键,联想笔记本电脑快捷键大全
  17. 博士论文-基于生成对抗网络的图像合成-阅读笔记
  18. 【TencentOS tiny学习】源码分析(6)——互斥锁
  19. 大数据—数据收集系统介绍(Flume,Sqoop)
  20. 【sv】getenv 【import “DPI-C“】

热门文章

  1. DevOps-jenkins-流水线优化
  2. C++实现二叉树 前、中、后序遍历(递归与非递归)非递归实现过程最简洁版本
  3. Win10 可以联网,但是右下角图标显示无法连接互联网
  4. 4.1 集成运算放大电路概述
  5. 计算机键盘输入法基础知识,电脑打字入门基础知识
  6. 华硕ASUS Prime Z370M-PLUS II黑苹果OpenCore EFI
  7. Unity打包PC包时,在WIN7环境下播放视频崩溃问题的解决记录
  8. java.beans.transient_JavaBeans程序开发
  9. ADC分类及主要技术指标
  10. 【.NET学习】.NET入门及学习路线