统一监控平台

李云龙 现任平台研发架构师,微服务与容器化推动者。

简介

从12年至今,7年时间里从零至2万亿交易额,经历了多次数据风暴,系统架构经历了数次更迭;随着微服务架构被广泛用于生产,迫切需要一种,可以发现、解决微服务架构下监控治理的解决方案,因此统一监控平台应运而生。

它的特点:

  1. 多,日处理TB级数据量,年PB以上的数据

  2. 快,real-time 显示视图图表,真的很real-time

  3. 好,支持Events、Metrics、JVM Graph、CPU MEM Graph、TPS&RPS Graph、Business Graph

  4. 省,经济寒冬成本为王,这条最重要

  5. 微服务架构下无缝兼容,接管微服务下的一体化监控

  6. 规则引擎、告警通知,支持微信、SMS、Email、OpenChat、村口大喇叭

  7. 无嵌入,不影响业务、NIAO么悄的就把数据归集起来

  8. 自动服务发现

  9. 发现性能瓶颈原因能力

  10. 发现内存溢出风险能力

发展历程

2.0 基于Zabbix架构

3.0 基于ELK架构

随着数据量的增长,需要一种

ELK 架构图

优势

circle-check

问题

triangle-exclamation

4.0 现在的方案

Features

  1. 多,日处理TB级数据量,年PB以上的数据

  2. 快,real-time 显示视图图表,真的很real-time

  3. 好,支持 Events、Metrics、JVM Graph、CPU MEM Graph、TPS&RPS Graph、Business Graph

  4. 省,经济寒冬成本为王,这条最重要

  5. 向下兼容,兼容过去的架构采集的数据分析

  6. 规则引擎、告警通知,支持微信、SMS、Email、OpenChat、村口大喇叭

  7. 无嵌入,不影响业务、NIAO么悄的就把数据归集起来

  8. 自动服务发现

  9. 发现性能瓶颈原因能力

  10. 发现内存溢出风险能力

现在的架构

现在的方案

我们的需求

  • 小巧的采集端

    • 高可用 不可丢失数据

    • 低功耗 不可和业务系统抢资源

  • ETL 聚合层

    • 高可用 数据落盘防丢失

    • 具备线性业务处理能力

    • 低功耗 低成本

    • 数据无积压

  • 高效存储

    • 年PB存储能力

    • 实时分析能力(至少比ETL更强才可以)

  • 报表能力

    • 发现性能瓶颈原因能力

    • 发现内存溢出风险能力

  • 接管微服务监控治理能力

Behavior Collection 方案设计过程

  • 采集方案选型:

方案

优势

劣势

Logstash

Multiple inputs

Serveral outputs

Lots of filters

Lots of plugins

提取、解析、缓冲和传输

硬伤资源消耗

重启丢数据

Filebeat

大道至简,代码少犯错少😂

低功耗 CPU MEM

记录读取位置,不丢数据

功能少😂

Logagent

Sematext 提供的传输工具

本地缓冲,不丢数据

脱敏

功能少

<b></b>Fluentdarrow-up-right<b></b>

初衷JSON作为日志输出

和 Logstash一样

Lots of plugins

缓冲只存在与输出端

单线程核心,大节点性能受限

硬伤资源消耗

Logtail

阿里云力作

占用资源少

结合阿里云日志服务使用

circle-check

Metrics Collection 方案设计方法

Metrics 采集域,使用简单,无需代码嵌入;通过注册中心自动发现微服务集群Application,然后采集各个App的metrics信息,我们采用一种取巧的形式,兼容prometheus exposer采集点,之所以这样考虑,因为它是Google BorgMon监控系统的开源版本,在google 开源软件生态体系被良好的支持,如:K8S。

我们提供两种方式采集:

  • Pull Metrics 主采,按频次发起请求,采集数据点

  • Push Metrics 被采,在App里主动向Push Gateway 发送测量数据

ETL 聚合层

聚合层做实时数据融合,将Behavior&Metrics收集到缓冲层后,在ETL聚合层内做数据的清洗、转换、最后存储到 Events Storage&Time Series Storage中。

敬请期待……

Time Series Storage

时序存储引擎,负责存储采集到的Metrics数据;我们主要用到三种数据结构:

  • Counter

    • 计数器用于累计值计算

    • 例如:TPS,RPS,Error in Logs

    • 数值一直增加,只有重启之后才会被重置

  • Gauge

    • 常规数值变化,例如:JVM Stack,CPU、Memory

  • Histogram

    • 直方图主要用于跟踪事件放生规模,例如:某请求的成功率 .95 .90 .50 发生规模

数据规模

时序存储能力:

  • 无缝接管Prometheus

  • 大数据存储能力

  • 大数据实时分析能力

Events Storage

事件存储引擎,存储采集来的 Events;

Output Domain

输出域,目前支持JVM Graph、Thread Graph、CPU Graph、Events等;可通过仪表盘轻松分析任何时刻,发现JVM性能瓶颈的原因,找出内存溢出风险的能力。

Alarm 告警

将触发告警的系统指标,推送给该接收的人

未来的路

我们下一步要做的事:

  • 智能监控,监控报告细化到解决方案级

  • 支持容器,Docker、K8S、Rancher等容器内的事件采集

  • 支持更多中间件监控

  • 支持自定义仪表配置

总结

想知道我们的存储引擎是怎么做的吗,JOIN US。

Last updated