友邦人寿可观测体系设计与落地

友邦人寿可观测体系设计与落地

作者:沈斌、右京

事务场景与应战

友邦稳妥是香港联合买卖所上市的人寿稳妥集团,掩盖 18 个商场。截至 2021 年 12 月 31 号,总资产 3400 亿美元。

友邦稳妥于 1992 年在上海设立分公司,是改革开放后最早一批获发个人人身稳妥事务营业执照的非本乡稳妥机构之一,也是第一家将稳妥营销员准则引进国内的稳妥公司。2020 年 6 月,友邦获批将友邦稳妥有限公司上海分公司改建为友邦人寿稳妥有限公司。2020 年 7 月,友邦人寿正式成为中国内地首家外资独资人寿稳妥公司。友邦友享 App 在 2021 年荣获最佳稳妥科技平台。

事务特点和架构

友邦人寿可观测体系设计与落地

为了践行友邦健康长久好日子的 slogan ,上云过程中咱们对运用做了很多微服务化改造,以习惯快速改变的事务要求和功用要求,并将此前在 AS400 里的 core 包程序做了微服务化改造,提高了可用时间。此外,咱们采用了容器化方案,使运用运转在 K8s 上以获得弹性扩容才能和自愈才能。

上述改造导致了运用系统复杂度的提高,因而,观测微服务和 K8s 的运转成为了一大应战。

与此一起,部格外采运用没有源码,不适合做微服务化改造,但咱们依然对这部分运用进行了容器化改造,将它们布置进 K8s;还有一部分运用由于各种原因,不适合上云改造,终究留在了 IDC 机房。因而,服务之间的调用会触及云上到云下、云下到云上等复杂状况。

迁云之后实实在在为咱们带来了 SLA 的提高,但也导致了访问链路和布置复杂度的提高,如何更好地观测运用成为了无法逃避的应战。

可观测性建造痛点和应战

友邦人寿可观测体系设计与落地

建造一个优异的观测系统,会面对以下痛点:

  • 观测复杂度提高:云原生微服务化尽管带来了很高的 HA,但也提高了系统的复杂度,加大了可观测的难度。核保经过率、交单成功率、用户的日活/月活散落在各个事务模块里,事务需求供给大局视角,以调查整个保单生命周期里重要事务节点的运转状况,并获取研制态的具体状况。

  • 技能选型困难:由于前史原因,友邦内部运用技能选型纷歧,版别各异,导致可观测技能和调用链追寻面对很大的困难。

  • 共同观测困难:友邦是一家金融公司,开发系统和运用运维彻底分隔,日志也彻底分隔存储和维护,因而无法将以上数据在同一个大盘里呈现。

  • 目标管理:IaaS层、PaaS 层和运用层有很多目标,奇数据库方面就可能有超过 200 多个目标。如果期望目标到达比较容易理解与追寻的数量,则需求不断地进行回顾、删减。

  • 快速毛病定位:在 IDC 机房年代,没有直观的方法让运用查看自己的资源是否满意。尽管已经有商业 APM 东西,但其价格高昂,不属于经济有效的方法。问题发生时,由于只有少量运用安装了 APM ,所以调用链不完整,无法完成快速毛病定位。

可观测性建造流程和规划

友邦人寿可观测体系设计与落地

可观测系统的建造首要分为调研分析方案规划改造实施上线验证四个阶段。

一个优异的可观测系统至少需求满意五个要求:

  • 服务资源追寻:可以将服务运转节点上的 CPU 内存、网络磁盘、 IO 运用目标进行聚合。问题发生时,可以轻松调查到反常目标。

  • 供给服务 Top 视图:依照服务的调用量、恳求耗时、热门排名,运用可以很便利获知哪些是热门 API、哪些 API 恳求量较高等,可以更好地规划自身的服务资源。

  • 调用链追寻:相关服务上下流,并且最好是无侵入式,可以很方面地从 Trace相关到日志,获取到链路问题所在。

  • 调用时长分布:调查服务的上游与下流,调查异步耗时,恳求慢时可以很便利地判别是服务资源耗时仍是依靠服务资源耗时。

  • 数据库相关操作:协助运用调查到 API 的相关 SQL、慢 SQL、 Redis 的查询存在慢 key 查询 、Mongo 存在慢查询等操作。

实践与落地

可观测性全体规划思路

友邦人寿可观测体系设计与落地

友邦为了满意事务开展需求,在技能层面需求做云原生技能架构的晋级和改造。因而阿里云与友邦在运用容器化和可观测性上展开了深度协作。结合事务状况和监控痛点,经过几十次的讨论和推演,咱们终究清晰了两个重要建造思路:

首先,根据事务价值自上而下规划可观测系统。从事务监控、运用监控和资源监控一直向下推进。如果运用自下而上的规划方法,出现问题时团队会浪费很多时间和精力排查从来不会导致客户受影响的问题,或客户先于监控系统发现了问题。因而,需求最先关注和规划与用户体会、中心买卖相关的事务监控。

其次,需求结合事务规划服务的链路追寻、运用功用监控。比方将某运用的 API 接口翻译成事务可读懂的言语,比方依托保单生效的接口处理时间和处理数量以及接口还调用/依靠了其他哪些服务等来终究清晰问题所在,终究结合运用确诊东西 Arthas、 JVM 的调优东西、运用日志以及资源等级的监控来承认是代码问题仍是底层资源的运用问题。经过从确定事端发生再到定位引起事端的原因,进而承认问题本身来提高毛病发现和问题定位才能。

承认了自上而下的可观测系统后,接下来需求清晰可观测的目标范围。

全生命周期监控目标规划

友邦人寿可观测体系设计与落地

可观测目标不仅是运转态,还需求包含研制态,形成运用全生命周期的监控目标系统。

系统经过云原生改造后,友邦的 CICD 流水线经过 Jenkins 进行自动化。为了提高软件的研制功率,需求笼统出可衡量的目标,比方运用每天的构建次数、构建时长、构建成功率、布置频率或布置成功率,以及形成这些目标的基础元数据信息等。

运转态分为系统层监控、运用层监控和事务层监控三层,监控重要性等级依次升高。资源监控层首要聚焦在 K8s 集群的 node 节点、磁盘网络、运转 Pod 监控、中心云产品等监控目标;运用层首要聚焦于运用的健康度、状况码、功用监控、JVM、GC 等功用目标上;事务层首要监控事务的中心目标,如 PV、UV、投保人数、投保金额、签奇数等,它直接影响着监控系统规划的成败,由于这是最可以表现事务价值的部分。

可观测性架构大图

友邦人寿可观测体系设计与落地

上图为友邦人寿可观测性系统的架构,总体规划思路分为三层:

第一层为收集层。由于要符合友邦的技能架构和建造需求,咱们挑选用 Java 编写流水线的 CICD 数据收集器。研制人员在运用 Jenkins 进行运用的 build 或 deploy 时,该收集器能将运用构建的数据和布置的数据全部存到数据库里。另外,收集数据时加上了相相关的 tag ,完成了元数据的同享。比方流水线构建的运用称号有必要与 K8s 的服务称号共同,构建失败时即可快速找到出错的运用。

此外,针对运用的 APM 探针,社区一般运用字节码增强的无侵入技能。可是由于友邦架构的复杂度,Skywalking 探针无法彻底掩盖友邦的场景。一起,友邦对于深度功用的确诊也有较高要求,期望可以集成阿里开源的 Arthas、 Memory dump 等才能,APM 探针也会影响运用功用,因而咱们终究挑选经过双 11 大规模查验的 ARMS Agent。

各类云产品中间件、集群的监控目标收集首要经过 Prometheus;运用日志首要运用 DaemonSet 的方法进行收集,相比于 Sidecar,其占用资源更少,工程上也更为简略。

第二层为存储层。研制态的元数据和 pipeline 的构建数据因其数据量不大,并且是结构化形态,因而存储在 MySQL 里。Metrics 监控目标的数据存储在阿里云的 Prometheus 产品上,日志和调用链 Tracing 数据存储在阿里云的 SLS 产品上。考虑到事务的增加,未来会产生很多的数据,这两款产品可以保证监控系统的稳定性、可扩展性和高可用性。一起,两款产品都是 Serverless 化持续按量付费,不存在磁盘或空间浪费。

第三层为共同展现层,经过 Grafana 进行汇聚和展现。当时阿里还未推出托管版的 Grafana,因而咱们挑选自建,推荐运用 8.0 以上的版别。为了保证运转的高可用,需求多实例布置,并将装备的数据共同传到数据库里,然后根据此前规划的监控目标,挑选对应的数据源编写查询语句,终究结合 Grafana 丰富的图表进行共同展现。

事务监控的完成是经过将收集到 SLS 里的事务日志和运用日志做统计分析。SLS 的 SQL 查询功用十分丰富,语句编写也十分便利。再经过 SLS Grafana 插件集成到 Grafana 里,终究事务统计数据即可在 Grafana 大盘进行展现。

共同监控平台

友邦人寿可观测体系设计与落地

上图为建造成果。经过大屏、中屏和小屏的方法形成指挥决议计划、研制仪表盘&运用功用展现以及告警推送、多维度的监控才能。

其间左侧大屏展现中心目标,比方容器集群的资源利用率、service Pod 健康度以及联通性等通用目标,为公司决议计划供给支撑。

右上方中屏首要展现流水线的研制功率目标、运用功用的目标以及大局调用链,协助研制人员提高功率和问题定位的速度。

右下方小屏经过前史数据的对比,设置了报警阀值。出现反常时,经过钉钉或短信报警的方法推送到电脑、手机终端,协助运维人员及时发现和处理问题。


关于可观测性咨询服务

友邦人寿可观测体系设计与落地

点击此处 ,了解更多产品详情!