Flashcat 产品介绍
Flashcat
是基于开源夜莺(Nightingale)实现的统一可观测性产品,同时针对稳定性保障场景做了大量的增强,目前已经得到了众多开源和商业用户的认可和使用。本文将介绍 Flashcat 都解决了哪些问题,用了哪些方法。
基于大量开源及商业用户的交流,我们总结了很多可观测性领域当前普遍关注的问题点。Flashcat 把这些问题归类到三个层面分别解决:数据、平台、场景。
- 数据: 各类观测对象(程序、设备、组件等)的数据如何采集?存量数据是否都要推翻重来?如何平稳过渡?
- 平台: 统一的可观测平台都有哪些常用功能、核心功能、通用功能?如何支持个性化功能?
- 场景: 稳定性保障是可观测性最大的使用场景,针对这个场景是否有最佳实践和产品上的支持?
Flashcat 产品架构图:
如果把可观测性能力的建设比喻成做一道好菜,那数据就是食材,平台就是锅碗瓢盆各种炊具,场景就是厨师的手艺。
数据:巧妇难为无米之炊
对于观测系统,没有数据一切无从谈起。一个新观测系统的落地,有一半的难度可能来源于数据的采集、获取和相关规范的建设。
数据层面主要包括数据输入和数据规范,这方面当前都有哪些具体的问题呢?
- 传统的监控采集方案已不适应云和容器环境的数据采集。
- 新的采集方案质量和规范良莠不齐,管理成本高,采集到的数据缺少建设规范的最佳实践。
- 各类设备的指标采集需要分别梳理,工作量大,且具备一定的专业性。
- Metrics、Logging、Tracing各类数据的采集方案差异大,缺乏统一的规范,难以融合。
- 落地一个新的观测系统要不要把已有的采集和观测系统推倒重来?
针对这些问题,Flashcat 提供了从零开始数据采集
和直接集成现有数据源
的两种可选方案。
① 数据采集
Flashcat 开源了一个All-in-One的采集器Categraf
,能够用一个采集器,采集各类观测对象的Metrics。包括常见的各类设备、主机、容器、平台、组件等,用户不再需要满世界去找各种exporter,并担心采集器的质量和规范问题。
同时,Categraf 也能够采集Logging、Tracing数据,实现了统一采集。Categraf 采集的数据遵循Opentelemetry协议,指标数据完全兼容Prometheus生态。
为提升采集点的管理效率和体验,Flashcat 针对采集做了中心化的管理。
② 数据源集成
针对重新采集的成本问题,Flashcat 采用了现有数据源集成的方案。Flashcat 能够集成大部分常见的开源数据源,以及公有云监控系统,如Promtheus、Zabbix、ARMS、Elasticsearch、Skywalking、阿里云SLS、腾讯云CLS、ARMS-trace等。
无论是从零开始采集还是集成的数据源,在 Flashcat 平台都对应一个数据源名称。可以在上层的查询、告警、仪表盘等各处引用,实现核心功能的无差别使用。
通过Categraf从零开始采集数据,或是直接集成现有的数据源,用户可以根据需要在 Flashcat 平台灵活选择。这就是 Flashcat 为建设统一观测平台在数据输入层面的解决方案,已获得广泛的使用和验证。
平台:一套趁手的炊具是好厨师的必备
Flashcat 面向研发和运维建设了一个统一的可观测平台,将可观测平台的常用功能、核心功能、通用功能都做全做好。同时,Flashcat 在架构层面做到高可用无单点、可伸缩。
① 常用功能、核心功能
可观测平台的常用功能和核心功能包括基本的数据查询、告警管理、仪表盘配置等。
其中大量的功能开源夜莺已经具备,并得到了广大开源用户的使用和打磨。Flashcat 在夜莺的基础上进一步做了增强和丰富,如日志告警、智能告警、服务拨测、网络探测、程序诊断等。并着重考虑和设计了各个功能的关联,形成一个一体化完备的观测平台。
② 通用功能
除了常用功能、核心功能外,如用户管理、团队管理、权限管理、业务组管理等通用功能,Flashcat也在夜莺的基础上进行了完善,满足中大型企业的管理要求。
③ 高可用架构
Flashcat 在架构的高可用和可伸缩性上做了全面的考虑。高可用和可伸缩的重点是存储,Flashcat 和夜莺一样,指标存储都采用了VictoriaMetrics,该存储是目前指标存储领域最可靠和可运维的选择。同时,Flashcat 自研和引入的组件,也都遵循高可用和可伸缩的架构设计原则。
④ 中心-边缘模式
Flashcat 在架构上的另一个亮点是支持边缘模式,适用于基于多IDC建设统一观测平台的场景,特别是IDC间距离较远,如出海业务同时存在分布全球的海内海外IDC。
⑤ 平台API
作为一个平台,Flashcat 的产品功能完全基于API实现,这些丰富的API可供用户自定义调度以更灵活的适应个性化的场景需求。
场景:不是有了食材和炊具就一定能做好一道菜
有了数据和平台,只是打下了一个良好的基础,而如何用好这些数据和平台是下一步会面临的问题。解决场景中的具体问题,就必须有针对性的拆解实现。
稳定性保障是 Flashcat 针对的场景。Flashcat 总结大型互联网服务的稳定性保障实战经验,为该场景特别是故障处理过程做了细致的拆解和设计。
① 北极星发现 真·故障
Flashcat 北极星系统,引导用户思考和梳理业务/系统的核心指标和生死指标,用以量化一个业务或系统的整体健康状态。典型的toC系统北极星指标如:实时在线用户数、实时订单量、实时支付量、实时流水等。
北极星指标配套有多个维度的异常检测方式,包括智能检测、同环比检测、数据中断检测、阈值条件,可以组合使用,确保指标的异常被准确及时的发现。北极星智能学习指标趋势后,会预置相关参数,用户基本无需配置,如需调整参数也可原地操作。
北极星指标是最为核心的业务指标或系统的生死指标,因此是活动值守、日常巡检的重点。Flashcat 针对北极星做了一键生成大屏的功能,让高端大屏的配置简单到极致,方便活动值守时或日常投屏时使用。
北极星指标的数据来源可以是 Flashcat 采集或集成的绝大部分数据源,包括指标类和日志类,也可以是线上数据库中的一张表,如订单表。北极星可以从这些数据源中生产计算出所需要的时序指标。
此外北极星还有稳定性SLO管理、故障事件管理、下钻问题定位链路等功能,此处不展开。
② 从全局观测IT对象,确定故障范围和故障点(着火点)
北极星发现 真·故障,灭火图则面向故障定位分析的过程。
灭火图首先将IT系统拆解为各类物理的或逻辑的“IT对象”,并通过全局观测IT对象的健康状态来确定系统的故障范围和故障点。
IT对象首先可以按类型分类,如基础设施、中间件、微服务/模块、功能/接口等。
基础设施可进一步拆分为网络设备、主机/虚机/容器、网络专线等。中间件如MySQL、Redis、Kafka等。微服务/模块即研发发布的代码,对应如Kubernetes的deployment、statefulset等。功能/接口则通常对应网关或模块的接口,如域名+地址。
以上IT对象的划分方式在灭火图中可以根据用户习惯的视角自定义,构建一个立体的线上资产及其健康度的视图。
③ 从故障点下钻,完成故障分析
灭火图是 Flashcat 串联融合各维度数据,加速故障定位的关键。灭火图能够将相关的指标、日志、链路、事件、仪表盘等定位信息关联到相关的IT对象上,以便该对象异常时可快速下钻分析。
如通过观察灭火图的“着火点”(飘红),定位到某IT对象异常后,先看相应的Metrics,从异常点进一步点击下钻查看具体的日志,在日志中依据traceid或接口向后trace,在trace到的异常模块上跳转查看模块的Metrics或Logging信息。
灭火图的IT视图和关联信息都可以基于规则动态创建和更新,整个IT系统的对象、健康状态、关联信息都可以随着系统的迭代动态变化,是IT系统整体在可观测系统中动态的、立体的映射。
在故障定位环节,Flashcat 还有日志分析、特征分析、事件墙等分析工具,而在灭火图中这些信息都会按照故障定位的路径被串联融合,共同加速问题分析的效率。
④ 灵活的观测视角
除了常见的分类视角,灭火图可以结合各行业的特点,设置更为直观的观测视角,以门店行业举例:
⑤ 告警降噪、排班值班
观测系统完成建设后,下一步就是基于系统的告警和信息,将稳定性保障工作按流程驱动起来。这个环节需要做的工作包括告警的聚合降噪、抑制屏蔽、值班排班、告警升级、信息统计等。专注在这个环节的工具是Flashduty。更多详情=>Flashduty
关于智能化
各类产品通过大模型来加持增强,已经成为重要的探索方向。Flashcat 也相信大模型一定能够在可观测领域有所作为。而 Flashcat 为可观测构建的视图,具备了很好的可读性和可理解性,能够为大模型发挥价值打下重要基础。
Flashcat 已经尝试智能化的方向包括:基于灭火图视图的智能巡检、基于机器人的智能交互和信息传递、智能故障特征分析、智能异常检测等。相关实践已经取得了不错的效果,还在持续和用户共同打磨提升中。
总结
以上是Flashcat产品设计的核心逻辑和考虑,从数据、平台到场景整个产品一体化实现,既满足观测工具的使用要求,也有大型服务稳定性保障经验的沉淀和面向特定行业的解决方案。这也是Flashcat区别于其它观测产品的最大不同。