分布式监控系统开发【day37】:需求讨论(一)
本节内容
- 为什么要做监控?
- 常用监控系统设计讨论
- 监控需求讨论
- 如何实现监控服务器的水平扩展?
- 监控系统架构设计
一、为什么要做监控?
- 熟悉IT监控系统的设计原理
- 开发一个简版的类Zabbix监控系统
- 掌握自动化开发项目的程序设计思路及架构解藕原则
二、常用监控系统设计讨论
成熟的监控
- Zabbix
- Nagios/cacti
- ganglia
- openfalcon go
三、监控系统需求讨论
1.可监控常用系统服务、应用、网络设备等
网络层
- 网络质量
- 流量,丢包率、带宽
系统层
- cpu
- disk
- ram
- load
- port
应用层
- mysql 连接数
- nginx 并发数
- cdn 命中率
- 页面是否被篡改
业务逻辑层
- 每小时订单数
- 当前在线用户
2.一台主机上可监控多个不同服务、不同服务的监控间隔可不同
服务A:
- cpu 30
- disk 90
- load 120
服务B:
- cpu 45
- ram 60
- mysql 20
3.同一个服务在不同主机上的监控间隔、报警阈值可不同
报警阀值:
- 重要的服务 cpu使用率超过80%就报警,要抄送给CTO
- 不重要重要的服务 cpu使用率超过100%报警,给运维工程师
4.可以批量的给一批主机添加、删除、修改要监控的服务
监控模板
linuxservices
- cpu
- disk
- memory
5.告警级别:
不同的服务 因为业务重要程度不同,如果出了问题可以设置不同的报警级别
- 重要的服务,cup使用率打到80%,就报警
- 普通的服务,cup使用百分之98%,报警
可以指定特定的服务或告警级别的事件通知给特定的用户
- 重要的服务,抄送给CTO
- 不重要的只发送给运维工程师
告警的升级设定
- 发送给底层运维工程师没处理,就发送给运维经理
- 再过半个小时没处理,就发送给cto
报警合并
有一个报警池,有一个脚本对池的分析
6.历史数据 的存储和优化
- 实现用最少的空间占用量存储最多的有效数据
- 如何做到1s中之内取出一台主机上所有服务的5年的监控数据?
监控数据的处理
1、存下来,趋势图
大数据分析 ,视角越大,越失真
时间越长,越失真
2、报警处理
7. 数据可视化,如何做出简洁美观的用户界面?
8.如何实现单机支持5000+机器监控需求?
- 列式存储
- redis 支持集群,数据量大加机器就可以
9.采取何种通信方式?主动、被动?
1、server 主动 监控 客户端
- 好处:不用装客户端,使用所有的网络设备,snmp,配置简单
- 坏处:服务器压力大,不适合大型网络环境,不能监控复杂的指标
2、server 被动 接收 客户端
- 好处:大型网络环境、监控复杂的指标、扩展能力强
- 坏处:装客户端、网络设备不适用、维护起来相对复杂一点
3、主流的:混合式
1、客户端知道监控什么指标?
客户端主动去问服务器我要监控什么
2、客户端扫描本地所有服务,全部汇报给服务器
openfalcon把机器上所有能检测到的都抓上[2014年自动检测到(支持一千多项)]
四、如何实现监控服务器的水平扩展?
1、采用什么架构?
•Mysql
- 数据量太大,mysql超过1千万条查询起来就特别慢,
- 我在看趋势图时前端要查好几分钟,为什么zabbix的那么快?
- 他们是怎么做的?zabbix优秀是在2000-3000台还可以,要是上万台就会太慢
- 不要把你的监控数据存到mysql,因为会存在很多的问题
•主动通信? Snmp,wget…
server 主动 监控 客户端
- 好处:不用装客户端,使用所有的网络设备,snmp,配置简单
- 坏处:服务器压力大,不适合大型网络环境,不能监控复杂的指标
•被动通信?Agent ---how to communicate with the monitor server
server 被动 接收 客户端
- 好处:大型网络环境、监控复杂的指标、扩展能力强
- 坏处:装客户端、网络设备不适用、维护起来相对复杂一点
总结:主流的的还是混合模式好
•Socket server –> Sockect client
不可以,很多坑
•能否用现成的c/s架构? Rabbit mq, redis 订阅发布, http ?
2、采用HTTP好处
1.接口设计简单
2.容易水平扩展做分布式
3.Socket稳定成熟,省去较多的通信维护精力
3、Http特性:
1.短连接
2.无状态
3.安全认证
4.被动通信
五、监控系统架构设计
分布式监控系统开发【day37】:需求讨论(一)的更多相关文章
- Python之路,Day20 - 分布式监控系统开发
Python之路,Day20 - 分布式监控系统开发 本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...
- 分布式监控系统开发【day37】:表结构设计(二)
一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(mod ...
- 分布式监控系统开发【day37】:监控客户端开发(五)
一.目录结构 二.模块方法调用关系总图 三.入口文件main 1.解决了说明问题 1.客户端就干了一件事情,干什么事情 收集数据汇报给服务端? 但是我这个客户端是插件形式2.首先必须要传一个参数,st ...
- Python之分布式监控系统开发
为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求 ...
- day26 分布式监控系统开发
本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...
- 分布式监控系统开发【day38】:监控trigger表结构设计(一)
一.需求讨论 1.zabbix触发器的模板截图 1.zabbix2.4.7 2.zabbix3.0 2.模板与触发器关联的好处 好处就是可以批量处理,比如我说我有1000机器都要监控cpu.内存.IO ...
- 分布式监控系统开发【day38】:报警阈值程序逻辑解析(三)
一.需求讨论 1.请问如何解决延迟问题 1000台机器,每1分钟循环一次但是刚好第一次循环第一秒刚处理完了,结果还没等到第二分钟又出问题,你那必须等到第二次循环,假如我这个服务很重要必须实时知道,每次 ...
- 分布式监控系统开发【day37】:填充表配置项目(三)
一.注册站点初始化数据库 1.目录结构 2.初始化数据库 python3 manage.py makemigrations python3 manage.py migrate #django2.0之前 ...
- 分布式监控系统开发【day37】:服务端生成配置数据(四)
一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端 ...
随机推荐
- 网络中的NAT模式
一.概述 NAT英文全称是"Network Address Translation",中文意思是"网络地址转换",它是一个IETF(Internet Engin ...
- python3 int(整型)
__abs__(返回绝对值) n = -5 print(n.__abs__()) #输出:5 __add__(相加,运算符:+) n = 3 print(n.__add__(5)) #输出:8 __a ...
- 复制命令(COPY)
COPY 命令: // 描述: 将一个或多个文件从一个位置复制到另一个位置. ### 注意:如果想复制文件夹,请使用 XCOPY . // 语法: copy [/a] [/b] [/d] [/v] ...
- LeetCode算法题-Search in a Binary Search Tree(Java实现)
这是悦乐书的第295次更新,第314篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第163题(顺位题号是700).给定一个二叉搜索树(BST)的和正整数val. 你需要在 ...
- LeetCode算法题-Student Attendance Record I(Java实现)
这是悦乐书的第258次更新,第271篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第125题(顺位题号是551).您将获得一个表示学生出勤记录的字符串. 该记录仅包含以下 ...
- 黑客游戏榜中榜 第一期writeup
[榜中榜 第一期传送门] 注:作者对游戏过程中右键点击进行了限制,下文所提到的"查看源代码",均通过在url头前加上"view-source:"来实现 第一题 ...
- React.js开发的基本配置(配了两天)
记录下心酸的过程: 1.安装npm 安装node.js,这时候你就可以使用npm了. 因为官方的源下载npm的包比较慢,所以可以用淘宝的源,这时候使用nrm来进行npm源的切换 在cmd中执行 npm ...
- 网络流问题 P2763 试题库问题
题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性.现要从题库中抽取m 道题组成试卷.并要求试卷包含指定类型的试题.试设计一个满足要求的组卷算法. ...
- day4-python基础-编码相关
目录 1.编码的历史 2.python 3.x中的bytes与str 3.编码的转换 正文开始 1.编码的历史与发展 1.1编码历史变更 编码可以理解为谍战片中电报的密码本,如果要想让电脑识别要输入的 ...
- log4cplus 简单记录
请注意区别对待: 1.2.1 : 不支持 C++11,比如 std::move 就会 fail. 2.0.1 : 支持 C++11,比如 std::move 就 ok. 完.