分布式系统必不可少的就是系统监控和告警,特别是现在微服务架构下,业务链路特别长,所以针对这些问题,大的互联网公司都有自己自研的一套监控平台,对于中小型公司可以通过使用一些开源的技术方案,达到业务监控告警目的。
业务监控没有统一的解决方案是因为各公司业务复杂性不一致,做不成通用模板。本篇主要谈的是基于应用日志的业务监控告警,实现的方式有多种方式,我们主要采用基于业务方自行配置相应监控规则,将他感兴趣的监控数据推送给他。具体的架构设计如下:
Filebeat:用来采集各应用的业务日志,汇集至Kafka。
SunfireWeb:主要提供各业务组配置相应业务规则。
Sunfire:从Kafka消费日志通过业务规命中数据,组成各种Metrics写入OpenTSDB。
Flink:主要处理计算聚合类的数据,如:同比、环比之类指标数据。
DataSync:数据同步工具,主要针对Flink计算完的结果数据同步至OpenTSDB。
OpenTSDB:时间序列数据库,数据存储在Hbase。
Grafana:汇集业务监控集中展示的可视化工具。
Zookeeper:主要用来协调Kafka、Flink、Hbase集群。
图一是整体的架构设计,图二是业务规则配置以及指标展示, 具体的业务流程如下:FileBeat采集业务应用日志推入Kafka,消费端分成两条业务线对日志消息做处理,其一是Sunfire订阅相应日志,根据SunfireWeb配置的业务规则进行匹配提取,拼装成Metrics存入OpenTSDB;其二是Flink订阅相应日志,根据配置的规则,对需要聚合以及计算类的指标进行处理,并且将结果回写至Kafka,DataSync将回写的数据同步至OpenTSDB。通过Grafana展示所有应用的业务指标。