【DevOps】监控与报警 - hippowc/hippowc.github.io GitHub Wiki
监控平台需要什么能力
监控的挑战
- 监控源的多样化:业务、应用、网络设备、存储设备、物理机、虚拟机、容器、数据库、各种系统软件等等,需要监控的对象越来越多,指标也多种多样,如何以一个统一的视角,监控到所有的数据
- 海量数据的分析处理:如何应对大数据的采集、存储和实时分析展现
- 数据资源的管理分析:如何分析、如何定位问题
监控平台应具有的能力
- 高度抽象模型,扩展监控指标:监控源、指标的多样化,针对于指标要可以动态扩展
- 多种监控视图:监控的数据需要结合实际情况选择最佳的图标展现
- 强大的数据加工能力:海量的数据必须要有足够强大的数据加工、分析处理能力才能得到直观的结果
- 多种数据采集技术:数据源的不同决定了采集的技术也是有区别的
- 多种报警机制:短信、邮件、企业内部通讯工具等等
- 全路径问题跟踪:一个请求有可能牵扯到数个系统、数十个接口的调用,出了问题有可能是其中任何一个环节,也有可能是应用所处运行环境、网络、存储的问题
监控平台架构
监控源
大致可以分为三层
- 业务应用层:应用软件
- 中间件层:数据库、缓存、配置中心等
- 基础设施层:物理机、虚拟机、容器、网络设备、存储设备等
数据采集
从监控指标来看,可以分为三种:
- 业务监控指标:与业务应用相关,业务最关心的数据如:
- 成交笔数
- pv,uv等
- 应用监控指标:
- 可用性
- 异常、错误
- rt
- qps
- 线程情况
- 系统指标
- cpu负载
- 内存负载
- 磁盘使用
- 网络IO
- 进程情况等
数据存储
采集到的数据一般都会存储到文件系统(如HDFS)、索引系统(如elasticsearch)、指标库(如influxdb)、消息队列(如kafka,做消息临时存储或者缓冲)、数据库(如mysql)
数据分析
针对采集到的数据,进行数据的处理。处理分两类:实时处理和批处理。技术包括Map/Reduce计算、全日志检索、流式计算、指标计算等,重点是根据不同的场景需求选择不同的计算方式。
数据展现
将处理的结果进行图表展现
预警
如果在数据处理过程发现了问题,则需要进行异常的分析、风险的预估以及事件的触发或告警。