【DevOps】监控与报警 - hippowc/hippowc.github.io GitHub Wiki

监控平台需要什么能力

监控的挑战

  • 监控源的多样化:业务、应用、网络设备、存储设备、物理机、虚拟机、容器、数据库、各种系统软件等等,需要监控的对象越来越多,指标也多种多样,如何以一个统一的视角,监控到所有的数据
  • 海量数据的分析处理:如何应对大数据的采集、存储和实时分析展现
  • 数据资源的管理分析:如何分析、如何定位问题

监控平台应具有的能力

  • 高度抽象模型,扩展监控指标:监控源、指标的多样化,针对于指标要可以动态扩展
  • 多种监控视图:监控的数据需要结合实际情况选择最佳的图标展现
  • 强大的数据加工能力:海量的数据必须要有足够强大的数据加工、分析处理能力才能得到直观的结果
  • 多种数据采集技术:数据源的不同决定了采集的技术也是有区别的
  • 多种报警机制:短信、邮件、企业内部通讯工具等等
  • 全路径问题跟踪:一个请求有可能牵扯到数个系统、数十个接口的调用,出了问题有可能是其中任何一个环节,也有可能是应用所处运行环境、网络、存储的问题

监控平台架构

监控源

大致可以分为三层

  • 业务应用层:应用软件
  • 中间件层:数据库、缓存、配置中心等
  • 基础设施层:物理机、虚拟机、容器、网络设备、存储设备等

数据采集

从监控指标来看,可以分为三种:

  • 业务监控指标:与业务应用相关,业务最关心的数据如:
    • 成交笔数
    • pv,uv等
  • 应用监控指标:
    • 可用性
    • 异常、错误
    • rt
    • qps
    • 线程情况
  • 系统指标
    • cpu负载
    • 内存负载
    • 磁盘使用
    • 网络IO
    • 进程情况等

数据存储

采集到的数据一般都会存储到文件系统(如HDFS)、索引系统(如elasticsearch)、指标库(如influxdb)、消息队列(如kafka,做消息临时存储或者缓冲)、数据库(如mysql)

数据分析

针对采集到的数据,进行数据的处理。处理分两类:实时处理和批处理。技术包括Map/Reduce计算、全日志检索、流式计算、指标计算等,重点是根据不同的场景需求选择不同的计算方式。

数据展现

将处理的结果进行图表展现

预警

如果在数据处理过程发现了问题,则需要进行异常的分析、风险的预估以及事件的触发或告警。

基于日志的监控的技术栈