用zabbix和openwrt构建低成本的分布式公网监控

简介:

目的:用zabbix和放在异地分公司内网的刷了openwrt的路由器以及微信接口来构建一套分布式的公网监控报警系统。用于监控各个地方访问公司的应用的链接连通性,访问时间,dns解析结果

第一版的效果图

wKiom1d3qd2QMCtCAAJpKj9v1_U908.png-wh_50

想折腾这个需要的技能:1 搭建zabbix 环境 2 理解zabbix trapper模式 3 会折腾openwrt 路由器 

软硬件环境:

主节点:zabbix server ,server端口需要映射至公网

分布式节点:一台刷了openwrt的路由器(常见的mtk7260 以及ralink等都可以),无需公网ip,但是需要互联网连接,wan口dhcp,怎么折腾,建议参考恩山论坛,安装zabbix sender 软件包




实现过程:分布式节点的cron 里面每分钟调用zabbix sender命令 发送curl网址的结果,调用时间给 server wKioL1d3rKGT2oPBAAB3ID_P-jo879.png-wh_50

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 发送微信的代码参考我之前博客




本文转自 superbigsea 51CTO博客,原文链接:http://blog.51cto.com/superbigsea/1795197

相关文章
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
58 23
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
49 22
|
1月前
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
66 25
|
2月前
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
64 9
|
2月前
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
124 7
|
3月前
|
存储 运维 负载均衡
构建高可用性GraphRAG系统:分布式部署与容错机制
【10月更文挑战第28天】作为一名数据科学家和系统架构师,我在构建和维护大规模分布式系统方面有着丰富的经验。最近,我负责了一个基于GraphRAG(Graph Retrieval-Augmented Generation)模型的项目,该模型用于构建一个高可用性的问答系统。在这个过程中,我深刻体会到分布式部署和容错机制的重要性。本文将详细介绍如何在生产环境中构建一个高可用性的GraphRAG系统,包括分布式部署方案、负载均衡、故障检测与恢复机制等方面的内容。
232 4
构建高可用性GraphRAG系统:分布式部署与容错机制
|
3月前
|
监控 Java Shell
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
62 5
|
4月前
|
运维 供应链 安全
SD-WAN分布式组网:构建高效、灵活的企业网络架构
本文介绍了SD-WAN(软件定义广域网)在企业分布式组网中的应用,强调其智能化流量管理、简化的网络部署、弹性扩展能力和增强的安全性等核心优势,以及在跨国企业、多云环境、零售连锁和制造业中的典型应用场景。通过合理设计网络架构、选择合适的网络连接类型、优化应用流量优先级和定期评估网络性能等最佳实践,SD-WAN助力企业实现高效、稳定的业务连接,加速数字化转型。
SD-WAN分布式组网:构建高效、灵活的企业网络架构
|
3月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
185 7
|
3月前
|
数据采集 存储 监控
公司监控软件:基于 PHP 的分布式监控系统设计
本文介绍了基于 PHP 的分布式监控系统的设计与实现。该系统包括监控节点、数据采集模块、数据传输模块和监控中心,能够高效地收集、传输和分析各节点的数据,确保系统的稳定运行和安全防护。通过示例代码展示了数据采集、传输及存储的具体实现方法,并强调了安全与可靠性的重要性。
67 3

热门文章

最新文章

推荐镜像

更多