Python之路,Day20 - 分布式监控系统开发   本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则   常用监控系统设计讨论 Zabbix Nagios   监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 2.一台主机上可监控多个不同服务.不同服务的监控间隔可不同 3.同一个服务在不同主机上的监控间隔.报警…
一.目录结构 二.报警策略队列处理 1.入口MonitorServer import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CrazyMonitor.settings") from monitor.backends.management import execute_from_command_line ex…
一.策略和动作多对多的好处坏处 1.好处: 相同服务,相同策略的服务可以不用重复写好多次触发器 2.坏处: 1.策略A给小李和小罗发邮件2.策略B给小胡和小崔发邮件3.策略A是第三部发邮件4.策略B是第五步发邮件 二.解决问题与代码实现 1.trigger发生后,如何报警 1.解决了什么问题 1.问题恢复自定义通知2.触发是触发器决定,报警不报警是报警中心说了算,一个是收集部门,一个是处理部门3.报警的次数报警升级阈值4.通知组别5.脚本名称相当与故障自愈 2.代码实现 class Action…
本节内容 为什么要做监控? 常用监控系统设计讨论 监控需求讨论 如何实现监控服务器的水平扩展? 监控系统架构设计 一.为什么要做监控? 熟悉IT监控系统的设计原理 开发一个简版的类Zabbix监控系统 掌握自动化开发项目的程序设计思路及架构解藕原则 二.常用监控系统设计讨论 成熟的监控 Zabbix Nagios/cacti ganglia openfalcon go 三.监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 网络层 网络质量 流量,丢包率.带宽 系统层 cpu disk…
为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 2.一台主机上可监控多个不同服务.不同服务的监控间隔可不同 3.同一个服务在不同主机上的监控间隔.报警阈值可不同 4.可以批量的给一批主机添加.删除.修改要监控的服务 5.告警级别: 不同的服务 因为业务重要程度不同,如果出了问题可以设置不同的报警级别…
本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则   常用监控系统设计讨论 zabbix (c php) nagios cacti open-falcon (服务器后端 go, 前端python) gridcontrol(perl) ganglia(java) 监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 2.一…
一.需求讨论 1.请问如何解决延迟问题 1000台机器,每1分钟循环一次但是刚好第一次循环第一秒刚处理完了,结果还没等到第二分钟又出问题,你那必须等到第二次循环,假如我这个服务很重要必须实时知道,每次客户端汇报过来的同时,触发trigger检测,就可以实时的实现报警反应 2.这样有什么问题? 前提是它给你汇报,如果客户端网络断了,客户端宕机了,就无法汇报了 3.你要确保客户端存活的检测机制 拿到每台机器的所有触发器,检测阈值,如果超过阈值,存到redis你不用再连redis我给你传(从外部调用…
一.报警自动升级代码解析 发送邮件代码 def action_email(self,action_obj,action_operation_obj,host_id,trigger_data): ''' sending alert email to who concerns. :param action_obj: 触发这个报警的action对象 :param action_operation_obj: 要报警的动作对象 :param host_id: 要报警的目标主机 :param trigger…
一.需求讨论 1.zabbix触发器的模板截图 1.zabbix2.4.7 2.zabbix3.0 2.模板与触发器关联的好处 好处就是可以批量处理,比如我说我有1000机器都要监控cpu.内存.IO的监控 3.模板触发器多对多的优缺点 1.优点: 可以批量引用,不用重复创建相同的模板,比如我说我有1000机器都要监控cpu.内存.IO的监控创建相同的触发器, 2.缺点: 模板1更改触发器的阀值会影响所有的模板 3.生产不建议使用多对多的关系,这样灵活性就会很差,而且修改模板1会影响别的模板,这…
一.负责把达到报警条件的trigger进行分析 ,并根据 action 表中的配置来进行报警 1.目录结构 2.功能如下 1.找到trigger的关联动作, 2.收到的数据传给trigger_msg就是trigger_data 3.trigger_id') == None怎么会等于None 4.每个action都可以直接包含多个主机或主机组 3.实现代码 class ActionHandler(object): ''' 负责把达到报警条件的trigger进行分析 ,并根据 action 表中的配…
一.目录结构 二.入口 1.文件MonitorServer.py import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "CrazyMonitor.settings") from monitor.backends.management import execute_from_command_line execu…
一.画图代码 1.收集处理数据 class GraphGenerator(object): ''' generate graphs ''' def __init__(self,request,redis_obj): self.request = request self.host_id = self.request.GET.get('host_id') self.service_name = self.request.GET.get('service_key') self.index_key =…
一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(models.Model): name = models.CharField(max_length=64,unique=True) ip_addr = models.GenericIPAddressField(unique=True) host_groups = models.ManyToManyFiel…
一.注册站点初始化数据库 1.目录结构 2.初始化数据库 python3 manage.py makemigrations python3 manage.py migrate #django2.0之前是makemigrate 3.创建超级用户 python3 manage.py createsuperuser 4.登陆后台:http://127.0.0.1:8000/admin/monitor/ 二.后台建立主机模板服务 1.创建两台主机 2.创建服务列表 3.创建监控指列表 4.创建主机组 5…
一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端,客户端配置一个server的ip地址,这样服务器端就知道它是谁了 服务器端生成一个唯一值,告诉你这就是你,你记住以后就告诉我你的ID 2.实现代码 总urls from django.conf.urls import url,include from django.contrib import a…
一.目录结构 二.模块方法调用关系总图 三.入口文件main 1.解决了说明问题 1.客户端就干了一件事情,干什么事情 收集数据汇报给服务端? 但是我这个客户端是插件形式2.首先必须要传一个参数,start干了 什么事情? 启动了一个程序,先去服务器端拿去配置信息, 拿到配置信息,根据不同的服务的执行间隔去执行监控3.这个是个死循环,永远执行,服务器断了,客户端也就断了,等服务器重启启动起来,客户端就好了 2.实现代码 from core import client class command_…
一.如何存储 二.目录结构 三.代码调用逻辑关系 四.实现代码 1.data_optimization 1.存筛选出来符合条件的数据 def get_data_slice(self,lastest_data_key,optimization_interval): ''' :param optimization_interval: e.g: 600, means get latest 10 mins real data from redis :return: ''' all_real_data =…
一.数据如何存储方案讨论 1.一个服务存所有主机 2.一台主机的所有服务 3.所有的服务一分钟存一次? 数据量大,浏览器会卡住, 4.最终方案如下 二.解决方案存在问题 1.只能存7天如何处理? 超过一个周就10分钟的平均值,存1个月 2.四种数据如何存?你存的是最近7天的数据 1.看追加时间,左边第一个值,每次存数据的同时把第一个值取出来,判断有没有超过7天拆过就删除2.先初始一个值 3.存一个月的数据都是被这10分钟平均了的,这个应该什么时候存? 每新增10个就往里面存一个, 4.我咋知道几…
在前一篇 分布式监控系统Zabbix3.2跳坑指南 中已安装好服务端和客户端,此处客户端是被监控的服务器,可能有上百台服务器.监控的目的一个是可以查看历史状态,可以对比零晨和工作区间数据的对比,以便后期进行优化指导.还有一个是报警,总不能等到服务器出现异常了才去从头查是什么问题吧.所以这篇主要介绍报警中最基础的一个 配置邮件预警. 通常zabbix提供了 e-mail.sms.jabber.微信等预警方式,sms等前期需要资金投入那就先否决吧,谁叫老板不给钱. 安装邮件发送工具mailx 这里我…
一般来说,Zabbix可以通过多种方式把告警信息发送到指定人,常用的有邮件,短信报警方式,但是现在越来越多的企业开始使用zabbix结合微信作为主要的告警方式,这样可以及时有效的把告警信息推送到接收人,方便告警的及时处理.之前介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(6)-微信报警部署,然而新版微信已取消了企业号,改用企业微信.使用微信号发短信一般会有条数限制,企业微信没有这个限制,而且成员分组也方便.比起之前的微信企业号,企业微信方式在zabbix报警设置上还是有一点不一样的…
一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存储,有连续三次不在合理范围内的数据就报警3)zabbix:结合上面两种工具的优点,又可以存储数据,又可以报警. Zabbix是一个基于Web界面提供分布式系统监视及网络监视功能的企业级开源解决方案.借助Zabbix可很轻松地减轻运维人员们繁重的服务器管理任务,实现业务系统持续运行.下面会逐步介绍Za…
在 分布式监控系统Zabbix3.2跳坑指南 和 分布式监控系统Zabbix3.2给异常添加邮件报警 已经介绍了如何安装以及报警.此篇通过介绍监控数据库的3306端口连接数来了解如何监控其它端口和配置自定义监控项的过程. 添加监控脚本 在要监控的客户端上新建脚本: /usr/local/zabbix/alertscripts/check_3306_port_num.sh 内容如下: #!/bin/bash ss -an|grep 3306|grep ESTAB|wc -l 这个脚本很简单,就是获…
前言 <牧神记>有一句话说的好,破心中神.当不再对分布式,微服务,CLR畏惧迷茫的时候,你就破了心中神. zipkin复习 第一篇: .Net架构篇:思考如何设计一款实用的分布式监控系统? 第二篇:NetCore实践篇:分布式监控客户端ZipkinTracer从入门到放弃之路,我们提到了zipkin的原理和架构说明,以及用zipkintracer实践失败的记录. 今天我们来复习下. zipkin作用 全链路追踪工具(根据依赖关系) 查看每个接口.每个service的执行速度(定位问题发生点或者…
Zabbix想要集中展示图像,唯一的选择是screen,后来zatree解决了screen的问题,但性能不够好.Graphtree 由OneOaaS开发并开源出来,用来解决Zabbix的图形展示问题,性能较好,Graphtree默认只支持3.0.0以上的zabbix版本.Zabbix自带的"聚合图形"和Graphtree图形插件在使用上还是有一定区别的,其中:"聚合图形" 一般是用于同屏展示业务系统所有机器的同一个监控项的图形,而Graphtree 一般是用于同屏展…
分布式监控系统Zabbix-3.0.3的安装记录 环境说明zabbix-server:192.168.1.30     #zabbix的服务端(若要监控本机,则需要配置本机的Zabbix agent,下面会提到)zabbix-agent:192.168.1.7     #zabbix的客户端(被监控端,需要配置Zabbix agent,下面会提到) 一.zabbix-server端的操作记录(192.168.1.30 ) zabbix服务器端要提前安装好LNMP环境(mysql,nginx,ph…
前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择采用Percona Monitoring Plugins监控MySQL.以下就是Zabbix中通过percona监控MySQL的操作记录:…
在前篇分布式监控系统Zabbix3.2监控数据库的连接数 中已经对数据库的端口3306进行了监控,可以看到数据库的连接数历史变化有高有低,那如果达到了数据库连接数的阀值是不是主动通知给运维人员去检查问题呢,总不能实时盯着看吧,下面就怎么配置预警作简单介绍. 在这里我们是针对模板级别来进行配置,而有些园友如果只针对某台服务进行预警那也是可以的,只需要在此台服务器上的触发器列表中添加一项即可,配置步骤一样. 配置触发器 找到Template App MySQL模板 >触发器>创建触发器 在新增页面…
前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择采用Percona Monitoring Plugins监控MySQL.Percona有比较详细的监控Mysql的模版以及脚本,它提升了在高负载情况下的InnoDB的性能.为运维人员提供一些非常有用的性能诊断工具:另外它有更多的参数和命令来控制服务器行为.废话不多说,下面记录下使用Percona M…
https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitServers:zabbix-server:10.6.1.181zabbix-client-1:10.6.1.182 1. 环境部署前面,我们简单介绍了一下Zabbix,那么在本章,我们就来把Zabbix的环境部署起来,然后再在下一张详细的讲解其使用方法.由于Zabbix采用的是分布式架构,因此我们采用两…
1.为什么要使用监控系统? 我们知道一个系统不管怎么讲它都会出故障,我们为了保证线上业务的最大化的可用性,通常我们要给关键业务做高可用:做高可用的目的是为了让故障发生时,能够有一个备用的解决方案,将故障转移,从而实现服务的高可用性:那么问题来了,我们怎么知道系统发生了故障或者将要发生故障呢?怎么去把将要发生的故障扼杀在摇篮里呢?这个时候我们就需要用到监控系统:监控系统本质上不是业务系统,没有监控系统,线上业务系统也是可以正常运行的,它的存在主要是方便我们对业务系统的重要指标数据做采集.分析,使得…