本节内容

  1. 为什么要做监控?
  2. 常用监控系统设计讨论
  3. 监控需求讨论
  4. 如何实现监控服务器的水平扩展?
  5. 监控系统架构设计

一、为什么要做监控?

  1. 熟悉IT监控系统的设计原理
  2. 开发一个简版的类Zabbix监控系统
  3. 掌握自动化开发项目的程序设计思路及架构解藕原则

二、常用监控系统设计讨论

成熟的监控

  1. Zabbix
  2. Nagios/cacti
  3. ganglia
  4. openfalcon go

三、监控系统需求讨论

1.可监控常用系统服务、应用、网络设备等

网络层

  1. 网络质量
  2. 流量,丢包率、带宽

系统层

  1. cpu
  2. disk
  3. ram
  4. load
  5. port

应用层

  1. mysql 连接数
  2. nginx 并发数
  3. cdn 命中率
  4. 页面是否被篡改

业务逻辑层

  1. 每小时订单数
  2. 当前在线用户

2.一台主机上可监控多个不同服务、不同服务的监控间隔可不同

服务A:

  1. cpu 30
  2. disk 90
  3. load 120

服务B:

  1. cpu 45
  2. ram 60
  3. mysql 20

3.同一个服务在不同主机上的监控间隔、报警阈值可不同

报警阀值:

  1. 重要的服务 cpu使用率超过80%就报警,要抄送给CTO
  2. 不重要重要的服务 cpu使用率超过100%报警,给运维工程师

4.可以批量的给一批主机添加、删除、修改要监控的服务

监控模板

linuxservices

  1. cpu
  2. disk
  3. memory

5.告警级别:

  • 不同的服务 因为业务重要程度不同,如果出了问题可以设置不同的报警级别

    1. 重要的服务,cup使用率打到80%,就报警
    2. 普通的服务,cup使用百分之98%,报警
  • 可以指定特定的服务或告警级别的事件通知给特定的用户

    1. 重要的服务,抄送给CTO
    2. 不重要的只发送给运维工程师
  • 告警的升级设定

  • 发送给底层运维工程师没处理,就发送给运维经理
  • 再过半个小时没处理,就发送给cto
  • 报警合并

有一个报警池,有一个脚本对池的分析

6.历史数据 的存储和优化

  1. 实现用最少的空间占用量存储最多的有效数据
  2. 如何做到1s中之内取出一台主机上所有服务的5年的监控数据?

监控数据的处理

1、存下来,趋势图
大数据分析 ,视角越大,越失真

  

 

时间越长,越失真

2、报警处理

7. 数据可视化,如何做出简洁美观的用户界面?

8.如何实现单机支持5000+机器监控需求?

  1. 列式存储
  2. redis 支持集群,数据量大加机器就可以

9.采取何种通信方式?主动、被动?

1、server 主动 监控 客户端

  1. 好处:不用装客户端,使用所有的网络设备,snmp,配置简单
  2. 坏处:服务器压力大,不适合大型网络环境,不能监控复杂的指标

2、server 被动 接收 客户端

  1. 好处:大型网络环境、监控复杂的指标、扩展能力强
  2. 坏处:装客户端、网络设备不适用、维护起来相对复杂一点

3、主流的:混合式

1、客户端知道监控什么指标?
客户端主动去问服务器我要监控什么

2、客户端扫描本地所有服务,全部汇报给服务器
openfalcon把机器上所有能检测到的都抓上[2014年自动检测到(支持一千多项)]

四、如何实现监控服务器的水平扩展?

1、采用什么架构?

•Mysql

  1. 数据量太大,mysql超过1千万条查询起来就特别慢,
  2. 我在看趋势图时前端要查好几分钟,为什么zabbix的那么快?
  3. 他们是怎么做的?zabbix优秀是在2000-3000台还可以,要是上万台就会太慢
  4. 不要把你的监控数据存到mysql,因为会存在很多的问题

•主动通信? Snmp,wget…

server 主动 监控 客户端

  1. 好处:不用装客户端,使用所有的网络设备,snmp,配置简单
  2. 坏处:服务器压力大,不适合大型网络环境,不能监控复杂的指标

•被动通信?Agent ---how to communicate with the monitor server

server 被动 接收 客户端

  1. 好处:大型网络环境、监控复杂的指标、扩展能力强
  2. 坏处:装客户端、网络设备不适用、维护起来相对复杂一点

总结:主流的的还是混合模式好

•Socket server –>  Sockect client

不可以,很多坑

•能否用现成的c/s架构? Rabbit mq, redis 订阅发布, http ?

2、采用HTTP好处

1.接口设计简单

2.容易水平扩展做分布式

3.Socket稳定成熟,省去较多的通信维护精力

3、Http特性:

1.短连接

2.无状态

3.安全认证

4.被动通信

五、监控系统架构设计

分布式监控系统开发【day37】:需求讨论(一)的更多相关文章

  1. Python之路,Day20 - 分布式监控系统开发

    Python之路,Day20 - 分布式监控系统开发   本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个 ...

  2. 分布式监控系统开发【day37】:表结构设计(二)

    一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(mod ...

  3. 分布式监控系统开发【day37】:监控客户端开发(五)

    一.目录结构 二.模块方法调用关系总图 三.入口文件main 1.解决了说明问题 1.客户端就干了一件事情,干什么事情 收集数据汇报给服务端? 但是我这个客户端是插件形式2.首先必须要传一个参数,st ...

  4. Python之分布式监控系统开发

    为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求 ...

  5. day26 分布式监控系统开发

    本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设 ...

  6. 分布式监控系统开发【day38】:监控trigger表结构设计(一)

    一.需求讨论 1.zabbix触发器的模板截图 1.zabbix2.4.7 2.zabbix3.0 2.模板与触发器关联的好处 好处就是可以批量处理,比如我说我有1000机器都要监控cpu.内存.IO ...

  7. 分布式监控系统开发【day38】:报警阈值程序逻辑解析(三)

    一.需求讨论 1.请问如何解决延迟问题 1000台机器,每1分钟循环一次但是刚好第一次循环第一秒刚处理完了,结果还没等到第二分钟又出问题,你那必须等到第二次循环,假如我这个服务很重要必须实时知道,每次 ...

  8. 分布式监控系统开发【day37】:填充表配置项目(三)

    一.注册站点初始化数据库 1.目录结构 2.初始化数据库 python3 manage.py makemigrations python3 manage.py migrate #django2.0之前 ...

  9. 分布式监控系统开发【day37】:服务端生成配置数据(四)

    一.目录结构 二.引子与代码 1.客户端获取服务列表接口 1.解决了什么问题 客户端要给我获取服务列表的的时候,他肯定要告诉他是谁?他怎么告诉我,客户端必须有一个id号 Saltsack你装一个客户端 ...

随机推荐

  1. asp.net --> 初识WCF

    对于刚开始接触wcf的同志,可以有效的理解wcf的使用场景. 引用该文章(点击查看),简单的介绍wcf的使用.另一篇文章(点击查看),和上述文章内容差不多.

  2. 进程命令(tasklist)

    TaskList命令: // 描述: 显示本地或远程计算机上正在运行的进程列表信息. // 语法: tasklist [/s <computer> [ /u [<domain> ...

  3. [原创]GDB调试指南-断点设置

    前言 上篇<GDB调试指南-启动调试>我们讲到了GDB启动调试的多种方式,分别应用于多种场景.今天我们来介绍一下断点设置的多种方式. 为何要设置断点 在介绍之前,我们首先需要了解,为什么需 ...

  4. eclipse search java 可以搜到 source.jar里的

    eclipse search java 可以搜到 source.jar里的

  5. windows环境:idea或者eclipse指定用户名操作hadoop集群

    方法 在系统的环境变量或java JVM变量添加HADOOP_USER_NAME(具体值视情况而定). 比如:idea里面可以如下添加HADOOP_USER_NAME=hdfs 原理:直接看源码 /h ...

  6. 关于idea在运行web项目时部署的位置

    (转) 以前一直很好奇,在idea中运行tomcat,把项目部署到其中,运行起来,然后我去tomcat目录下去看,根本找不到我部署的项目 那我的项目是咋运行的啊… - - 后来我就查啊查 ,纠结啊纠结 ...

  7. SQL NULL 值

    NULL 值是遗漏的未知数据. 默认地,表的列可以存放 NULL 值. 本章讲解 IS NULL 和 IS NOT NULL 操作符. SQL NULL 值 如果表中的某个列是可选的,那么我们可以在不 ...

  8. android开发学习 ------- 关于getSupportFragmentManager()不可用的问题

    在Android开发中,少不了Fragment的运用. 目前在实际运用中,有v-4包下支持的Fragment以及app包下的Fragment,这两个包下的FragmentManager获取方式有点区别 ...

  9. STM32F40G-EVAL_UC/OS III

    micrum官网下载uc/os程序包: 包含文件cotex_M4.h:

  10. [Oracle]Sqlplus 中使用 new_value

    通过再sqlplus 中使用 new_value,可以把从表中查询出来的值,放置到 变量中.然后使用变量时,类似与宏定义一样,就可以像使用表中字段一样方便. 这使得sqlplus 的脚本具备和pl/s ...