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

[经验分享] 用zabbix和openwrt构建低成本的分布式公网监控

[复制链接]

尚未签到

发表于 2019-1-23 08:14:54 | 显示全部楼层 |阅读模式
  目的:用zabbix和放在异地分公司内网的刷了openwrt的路由器以及微信接口来构建一套分布式的公网监控报警系统。用于监控各个地方访问公司的应用的链接连通性,访问时间,dns解析结果
  第一版的效果图

  想折腾这个需要的技能:1 搭建zabbix 环境 2 理解zabbix trapper模式 3 会折腾openwrt 路由器
  软硬件环境:
  主节点:zabbix server ,server端口需要映射至公网
  分布式节点:一台刷了openwrt的路由器(常见的mtk7260 以及ralink等都可以),无需公网ip,但是需要互联网连接,wan口dhcp,怎么折腾,建议参考恩山论坛,安装zabbix sender 软件包

  

  

  

  实现过程:分布式节点的cron 里面每分钟调用zabbix sender命令 发送curl网址的结果,调用时间给 server
  server对收到的信息进行分析,处理。
  难点:1、一个网站如果挂了,所有分布式节点都会报警,那么我的微信是不是会被吵死?
  2、分布式节点没有公网端口,怎么样要增加或者减少网址怎么办?
  3、异地分公司网络环境复杂,误报很多怎么办?
  我的处理方式:1&3 :server收到消息,并触发trigger之后,把相关信息写入数据库,在对数据库信息进行处理 我用的逻辑有以下几条
  (1) 一分钟之内 触发告警并且恢复的不推微信
  (2) 一分钟内,所有触发并且没有恢复的报警合并在一起推微信,并且一个网址的多个节点合并成一起报出来,参看前图
  2、每个节点每小时访问我的server 来同步crontab 的内容,并且每天凌晨重启
  

  附代码
  1 分布式节点检测网址的脚本
  #!/bin/bash
  now=`date +%F-%H-%M-%S`
  

  cd /etc/zabbix/monitor_scripts/timefile
  

  [[ -f time.$now ]]||touch time.$now
  

  { time bash /root/curl1.sh $1; } &> time.$now
  

  TIME=`cat time.$now |grep real|awk -F m '{print $2}'|awk -F s '{print $1}'`
  

  /usr/bin/zabbix_sender -s beijing-unicom -z #ZABBIX HOSTNAME -k "time[$1]" -o $TIME &>/dev/null
  

  find /etc/zabbix/monitor_scripts/timefile -mmin +5 -delete
  

  2 检测数据库的python代码:
  cur.execute('UPDATE zabbix SET SENDTOWECHAT1=1,SENDTOWECHAT2=1  WHERE RESOLVED= 1 and  SENDTOWECHAT1 = 0 and SENDTOWECHAT2=0')
  conn.commit()
  cur.execute('SELECT URL FROM zabbix  WHERE RESOLVED=0 and  SENDTOWECHAT1 = 0 and SENDTOWECHAT2=0')
  resault=cur.fetchall()
  message=''
  for i in set(resault):
  i=i[0]
  cur.execute('SELECT HOST FROM zabbix  WHERE RESOLVED=0 and  SENDTOWECHAT1 = 0 and SENDTOWECHAT2=0 and URL="{0}"'.format(i))
  resault=(set(cur.fetchall()))
  HOST=''
  for j in resault:
  HOST=HOST+str(j[0])+","
  print(HOST)
  message=message+ ("节点{0}访问{1}出现问题。".format(HOST,i))
  代码仅仅是抛砖引玉,

  

  3 发送微信的代码参考我之前博客
  

  

  

  





运维网声明 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-666497-1-1.html 上篇帖子: 运维自动化之zabbix ( low 下篇帖子: Linux监控服务之zabbix客户端安装
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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