前言

监控运维模块是区块链BaaS的核心模块之一,我们针对联盟链、主机和系统等多个监控对象提供丰富的监控指标。通过BaaS提供的综合监控大屏,用户可直观洞悉区块链业务全局,实现7*24小时监控全覆盖。

但随着BaaS业务的扩展,对监控运维模块提出了更高的挑战:

1)业务场景日趋丰富,监控对象的种类也在持续增长,这就导致BaaS平台需要不断地对不同监控对象进行适配,一定程度上浪费了大量研发资源;

2)区块链存在很多逻辑概念,例如联盟链、命名空间、通道等,因此每种概念都会落实到不同维度的监控指标,导致指标多维交错、逻辑复杂、指标死板且灵活性差;

3)通常市面上的平台提供的大屏指定了图标类型和展示方式,交付后企业运维人员往往无法自行变更监控图表及对象。

首创BaaS动态化监控系统

为彻底解决上述痛点,BaaS基于Prometheus协议研发了全新的动态化监控系统,实现三大关键能力的突破:

多维监控目标自动匹配能力。通过仪表盘模版标识,为用户自动匹配监控目标所属维度对应的监控指标,最大化覆盖业务端错综复杂的监控需求。

采集端灵活动态化能力。通过自研采集组件进行数据采集,具有数据规模更小、组件独立性更高、高可用等优势。同时,还支持动态库so的方式注入用户自定义采集逻辑,显著增强了运维能力和动态化能力。

动态化配置仪表盘能力。用户所需的个性化指标和个性化交互,均可以通过修改配置(查询语句+图表配置文件)直接呈现,无需修改代码。表盘支持多种图表格式并可对查询数据进行多种格式化处理,能够轻松进行仪表盘定制。

动态化监控平台架构设计

实践中,BaaS的动态化监控平台如何实现质的飞跃?让我们先看看新架构的实现:

可扩展数据采集模块

平台自研了数据采集器,自研采集器是基于Prometheus协议的数据采集组件,在宿主机上启动之后,能够伴随宿主机的生命周期,获取所在宿主机自身及所有进程的监控数据。

针对不同类型的宿主机平台提供不同的基础逻辑,采集器在安装之后会自动进行默认指标的采集,包含CPU、内存占用、带宽使用、磁盘分区等基础数据。除了默认的采集逻辑,采集器还支持注入自定义so动态库进行自定义数据的采集。当用户需要在基础采集逻辑之上新增自定义指标,如交易TPS、区块高度等数据时,只需根据自研采集器提供的标准实现一套自定义so(即自定义采集规则),在so中编写业务逻辑,采集器启动时即可进行采集指标的替换和新增,实现较强的扩展性。

自研采集器提供两种数据获取模式:

拉取模式下,BaaS会主动向采集器拉取监控数据;

推送模式下,采集器会定时向Prometheus推送监控数据,实现灵活的数据采集方式。

通过自研采集器,平台能够对多类型的资源主机进行管理,保证监控数据的完整性、实时性和准确性。

增强版查询引擎

针对 Prom-QL的代理查询引擎进行适配BaaS平台逻辑的兼容化改造,改造后支持在Prom-QL语句中增加变量。用户在编辑Prom-QL时可将指定的资源ID替换为变量,该变量将动态替换为后续真实创建的资源,无需用户手动填写,可极大地增强Prom-QL的灵活性。同时,查询引擎也可以根据变量增强Prom-QL的功能,如增加业务数据鉴权逻辑,以满足监控数据相关业务的权限控制需求。

自动化多维度匹配仪表盘

提供仪表盘编辑功能,企业管理用户可借助管理后台的仪表盘配置功能,结合企业实际运维需求,进行仪表盘的新建和编辑。平台已定义了丰富的metric指标,在编辑好特定的查询语句后,可选择不同的图表类型进行数据展示。更进一步地,支持对仪表盘中的图标进行大小、位置的自定义编辑。最终,查询语句、图标配置、仪表盘配置以及模版标识可统一保存为仪表盘模版,存在模版池中。

用户在查看目标资源的监控数据时,平台会解析目标资源的多维属性,自动在仪表盘模板池为用户寻找属性匹配度最高的仪表盘模板。模板匹配成功之后,代理查询引擎会将查询语句中的变量替换为对应资源的id,并使用组装后的查询语句进行数据查询,最后将数据结果呈现给用户。

动态化配置图表

图表是监控系统中最末端且最重要的环节。通过对不同类型的图表进行排列组织、对不同意义的数据进行标准化处理,不可读的数字将被转化成为可读性强、可视化程度高的数据。平台管理端提供仪表盘的图表编辑功能,用户不仅可以对仪表盘的展示结构如仪表盘图表位置、尺寸大小等进行灵活调整,还可以自定义编辑仪表盘中的图表,如进行修改查询语句、数据格式化类型等处理操作。

小结
相较于当前BaaS市场上普遍流行的监控中心,趣链新版动态化监控中心实现了真正的动态化,通过不同metric和不同图表类型的组合,可创造无限可能,显著降低适配成本,针对不同私有化、不同资源类型,只要按需配置图表即可满足用户诉求。