description |
---|
李云龙 现任平台研发架构师,微服务与容器化推动者。 |
从12年至今,7年时间里从零至2万亿交易额,经历了多次数据风暴,系统架构经历了数次更迭;随着微服务架构被广泛用于生产,迫切需要一种,可以发现、解决微服务架构下监控治理的解决方案,因此统一监控平台应运而生。
它的特点:
- 多,日处理TB级数据量,年PB以上的数据
- 快,real-time 显示视图图表,真的很real-time
- 好,支持Events、Metrics、JVM Graph、CPU MEM Graph、TPS&RPS Graph、Business Graph
- 省,经济寒冬成本为王,这条最重要
- 微服务架构下无缝兼容,接管微服务下的一体化监控
- 规则引擎、告警通知,支持微信、SMS、Email、OpenChat、村口大喇叭
- 无嵌入,不影响业务、NIAO么悄的就把数据归集起来
- 自动服务发现
- 发现性能瓶颈原因能力
- 发现内存溢出风险能力
随着数据量的增长,需要一种
{% hint style="success" %} 好用 {% endhint %}
{% hint style="danger" %} 巨额投入,10 * (32U 128G)+ PB 总价**W+ ,有钱也不能这么花,何况资本寒冬 {% endhint %}
- 多,日处理TB级数据量,年PB以上的数据
- 快,real-time 显示视图图表,真的很real-time
- 好,支持 Events、Metrics、JVM Graph、CPU MEM Graph、TPS&RPS Graph、Business Graph
- 省,经济寒冬成本为王,这条最重要
- 向下兼容,兼容过去的架构采集的数据分析
- 规则引擎、告警通知,支持微信、SMS、Email、OpenChat、村口大喇叭
- 无嵌入,不影响业务、NIAO么悄的就把数据归集起来
- 自动服务发现
- 发现性能瓶颈原因能力
- 发现内存溢出风险能力
- 小巧的采集端
- 高可用 不可丢失数据
- 低功耗 不可和业务系统抢资源
- ETL 聚合层
- 高可用 数据落盘防丢失
- 具备线性业务处理能力
- 低功耗 低成本
- 数据无积压
- 高效存储
- 年PB存储能力
- 实时分析能力(至少比ETL更强才可以)
- 报表能力
- 发现性能瓶颈原因能力
- 发现内存溢出风险能力
- 接管微服务监控治理能力
- 采集方案选型:
方案 | 优势 | 劣势 |
---|---|---|
Logstash |
Multiple inputs Serveral outputs Lots of filters Lots of plugins 提取、解析、缓冲和传输 |
硬伤资源消耗 重启丢数据 |
Filebeat |
大道至简,代码少犯错少😂 低功耗 CPU MEM 记录读取位置,不丢数据 |
功能少😂 |
Logagent |
Sematext 提供的传输工具 本地缓冲,不丢数据 脱敏 |
功能少 |
<b></b>Fluentd<b></b> |
初衷JSON作为日志输出 和 Logstash一样 Lots of plugins 缓冲只存在与输出端 单线程核心,大节点性能受限 |
硬伤资源消耗 |
Logtail |
阿里云力作 占用资源少 |
结合阿里云日志服务使用 |
我们选择了 Filebeat👏,他具备我们【小巧采集端】的要求。 {% endhint %}
Metrics 采集域,使用简单,无需代码嵌入;通过注册中心自动发现微服务集群Application,然后采集各个App的metrics信息,我们采用一种取巧的形式,兼容prometheus exposer采集点,之所以这样考虑,因为它是_Google_ BorgMon监控系统的开源版本,在google 开源软件生态体系被良好的支持,如:K8S。
我们提供两种方式采集:
- Pull Metrics 主采,按频次发起请求,采集数据点
- Push Metrics 被采,在App里主动向Push Gateway 发送测量数据
聚合层做实时数据融合,将Behavior&Metrics收集到缓冲层后,在ETL聚合层内做数据的清洗、转换、最后存储到 Events Storage&Time Series Storage中。
敬请期待……
时序存储引擎,负责存储采集到的Metrics数据;我们主要用到三种数据结构:
- Counter
- 计数器用于累计值计算
- 例如:TPS,RPS,Error in Logs
- 数值一直增加,只有重启之后才会被重置
- Gauge
- 常规数值变化,例如:JVM Stack,CPU、Memory
- Histogram
- 直方图主要用于跟踪事件放生规模,例如:某请求的成功率 .95 .90 .50 发生规模
每秒一个点,每个点采集数种性能指标, 采集数百个微服务节点。每天处理量:11396\(每个点至少字节数\) \* 86400/5\(5秒一个采集一个点\) = 939MB \* 100\(app数量\) = 91GB。
时序存储能力:
- 无缝接管Prometheus
- 大数据存储能力
- 大数据实时分析能力
事件存储引擎,存储采集来的 Events;
输出域,目前支持JVM Graph、Thread Graph、CPU Graph、Events等;可通过仪表盘轻松分析任何时刻,发现JVM性能瓶颈的原因,找出内存溢出风险的能力。
将触发告警的系统指标,推送给该接收的人
我们下一步要做的事:
- 智能监控,监控报告细化到解决方案级
- 支持容器,Docker、K8S、Rancher等容器内的事件采集
- 支持更多中间件监控
- 支持自定义仪表配置
想知道我们的存储引擎是怎么做的吗,JOIN US。