ARMS 助力假面科技研发运维提效,保障极致游戏体验

客户介绍与项目背景

假面科技成立于 2014 年,致力于打造创新的数字产品,火爆一时的“狼人杀”、“谁是卧底”、“足记相机”都是假面科技旗下产品,公司产品总数超过 40 款,覆盖用户数超过 2 亿人。

随着业务的持续发展,运维开发团队除了保持高效的功能迭代的同时,也在不断的夯实其系统稳定性和应急响应能力。假面科技运维团队于 2024 年年中开始同 ARMS 团队接洽,通过多轮的需求对齐和产品测试验证,假面科技决定引入阿里云 ARMS 应用实时监控服务以提升其研发运维效率,并保障用户获得极致的游戏体验。

阿里云 ARMS  应用实时监控服务作为一款一站式应用性能观测平台,包含用户体验监控、应用监控、链路追踪等模块。 观测对象覆盖 Web&H5、小程序、PC、Mobile 等类型终端应用,Java、Golang、Python 等开发语言的分布式、微服务架构服务端应用,满足不同语言、架构、部署环境的应用性能观测需求。基于全栈应用性能数据的统一观测、端到端全链路分析与代码级持续剖析能力,以及智能告警、根因洞察、影响面分析,高效、精准发现与定位异常根因。并全面兼容 OpenTelemetry、Prometheus 等行业开源标准,实现可观测数据统一管理与应用,有效提升应用性能全面洞察与优化。

项目初期面临的挑战与需求

假面科技在业务初期使用开源工具 Jaeger 为部分核心应用构建了一套链路追踪平台。然而,在实际应用中,团队发现平台存在许多功能上的不足,无法满足企业级需求,导致了一系列业务问题难以得到有效解决,从而影响了研发与运维的效率,给假面科技的排障提效带来了不小的挑战与压力。

性能监控功能不足

传统的监控工具普遍存在无法提供多样化和细颗粒度性能数据的问题,这使得技术团队在遇到故障时难以迅速定位问题的根源,并及时采取相应的解决措施。以开源的 Jaeger 为例,尽管它主要服务于分布式链路追踪,但在各类性能指标的监测、代码级剖析和告警功能方面仍显得力不从心。

这样的局面不仅增加了团队的工作量,还使他们在日常运维过程中需要频繁地在多个监控平台之间进行数据交叉验证和排查,包括日志、告警等不同系统的反复切换和确认,极大地降低了工作效率。这些问题的存在,不仅延长了故障恢复的时间,还可能影响到用户体验与业务运营的稳定性。

运维成本高

开源产品在功能设计上,往往并不能保证用户体验的便捷性和易用性。尽管提供了相对完整的工具用于辅助运维管理,但由于缺乏灵活的用户界面和直观的操作流程,致使排查问题的过程耗时久成本高,导致团队在解决问题时面临效率低下的困境。

此外,开源产品的稳定性建设往往需要投入大量的时间和资源,形成了隐性成本。这些成本的存在可能会影响团队的集中精力与创新能力,最终削弱了整体工作效率。

企业级能力不完善

假面科技有多款爆款游戏,且不同的游戏有不同的观测需求。这就需要观测产品满足监控告警功能的同时,还需要满足针对不同游戏设置不同权限、大盘、配置、规则和集成等企业级能力,并且还需要开放、安全、稳定和持续演进的定制化对接的标准能力,如数据加工、OpenAPI 等。

如何落地跨团队协同的 ChatOps 能力

在生产环境中,系统始终处于运行状态,这也意味着团队无法预测何时会出现异常情况,这就要求团队具备随时应对突发事件的能力。因此,如何迅速实施和落地 ChatOps,成为了运维团队亟待解决的重要议题。

在具体实施过程中,运维团队需要将多个功能模块整合到 ChatOps 平台中,包括实时告警通知、系统性能指标查询、日志搜索和分析等。同时,借助 ChatOps 的自动化能力,可以将日常运维操作标准化,例如处理常见故障的流程,快速响应用户请求等。让团队能够将更多精力集中在系统优化和新功能开发上,从而推动业务的持续创新和发展。

从海量可观测数据中挖掘和探索业务价值

可观测数据是业务实际运行状态的直接反映,然而,随着每时每刻都会产生大量的数据,这些海量信息的堆积并不能直接体现出业务的真正价值。为了有效地挖掘数据背后的价值,团队需要明确设定具体的业务场景、业务活动和关键的业务标识。这些要素不仅可以帮助团队梳理出数据之间的关系,更能在复杂的可观测数据海洋中,识别出对业务价值贡献最大的关键链路。

通过这种方式,团队能够更有针对性地进行数据分析,从而推动业务决策的优化和发展。有效的观测及数据利用不仅能够提高运营效率,还能为企业提供必要的战略洞察,助力其在竞争激烈的市场中保持优势。

基于 ARMS 的全链路应用可观测解决方案

针对上述面临的需求和挑战,阿里云 ARMS 团队与假面科技运维团队经过多轮沟通对焦,通力合作共同输出了基于 ARMS 面向假面科技游戏业务场景的全链路应用可观测最佳实践,并成功在“狼人杀”等核心游戏业务中落地,实现了全业务、全场景的监控和告警,全面提升了监控的覆盖率和告警有效率,其中告警平均恢复耗时(MTTR)缩短 50% 以上。

无侵入、开箱即用的产品能力,让假面科技运维团队快速验证测试,最终生产环境全量接入

ARMS 自研的 Java 探针采用字节码增强技术,能够在不干扰业务代码的前提下实现零侵入式安装。通过自动埋点的方式,该探针能够高效采集丰富的性能指标和详细的调用链数据,为开发人员和运维团队提供了强大的数据支持。在假面科技的初期产品测试验证阶段,运维团队同时安装了开源的 Jaeger SDK 和 ARMS Java 探针,这样既能满足链路追踪的基本需求,又能对比分析 ARMS 的产品能力。

在经过一段时间的使用后,假面科技运维团队对 ARMS 的各项优势印象深刻。ARMS 在接入方式的灵活性、产品功能的多样性、系统的稳定性,以及具备极高性价比等多个方面,都显现出其显著的竞争力。最终,运维团队决定全面采用 ARMS 来构建可观测性体系。目前,假面科技的核心游戏业务生产环境已全面接入 ARMS,极大地提升了日常运维的效率和准确性。 通过这一转型,假面科技不仅优化了其运维流程,还为未来的产品迭代和性能优化打下了坚实的基础。ARMS 的强大功能使得团队可以更加专注于业务发展,而无需过多担心底层的性能监控问题,整体运营效率得到了显著提升,业务响应速度和用户体验也得到了明显改善。

面向不同游戏业务的全局场景化大盘,便捷洞察服务运行健康度,错、慢、异常 TopN 一目了然

ARMS 提供了一系列功能强大的全局服务场景化大盘,这些大盘涵盖异常分析、数据库性能分析、请求时延和错误分析以及全链路灰度发布等多种应用场景。假面科技运维团队在这一基础上,借助环境标签和业务标签的方式,将接入 ARMS 的各类应用进行科学合理的分组。这种精细化管理使得团队能够高效构建出针对不同游戏业务的专属可观测大盘,从而实现更精确的监控与分析。

在运维过程中,运维团队定期对出现的错误、请求慢的 TopN 接口,以及新出现的异常和慢 SQL 进行详细的摸排和分析。通过这样的监控和数据分析,团队及时发现瓶颈和问题,并与研发团队紧密合作,制定专项优化方案。这种多方协作的方式极大地提升了服务的性能和稳定性,最终带来了用户体验的显著改善和客户满意度的提升。运维团队的努力不仅增强平台的可用性,也为业务持续增长奠定坚实基础。

代码级性能剖析自适应开启,兼顾性能开销与日常排障效果

ARMS 的持续剖析功能能够深入识别 Java 程序中因 CPU、内存和 IO 等因素引发的性能瓶颈问题。该功能通过方法名称、类名称和行号进行详尽的细分统计,并以火焰图的形式直观展现分析结果,极大地帮助假面科技研发团队迅速定位至方法栈级别的性能瓶颈。这种精确的工具不仅能够提升代码的执行效率,还能为后续的性能调优提供重要依据。

在架构优化工作的推进中,运维团队在测试环境中全面启用这一能力,以确保在优化过程中能够及时发现并解决潜在问题。同时,为了保障生产环境的高效运行并应对可能出现的性能瓶颈,运维团队运用了自定义的 OpenAPI 接口,以潮汐效应的自适应方式灵活启用剖析功能。这种策略让运维团队能够在生产环境中动态监测系统性能,迅速响应并调整,以最小的干扰确保用户体验。

截至目前,ARMS 的性能持续剖析能力在运维团队的架构优化工作中发挥了重要作用,不仅提升应用的稳定性和响应速度,还为后续的优化策略和系统提升提供数据支持。这一切都表明,ARMS 不仅是一个剖析工具,更是推动企业技术进步的重要引擎。

构建 ChatOps 移动运维平台,随时随地查询告警、指标、链路和日志数据

ChatOps 是一种集成了聊天和自动化工具的协作方法和文化,旨在提高团队的协作效率和可见性。ChatOps 的目标是提高工作流程的效率和可见性,并促进团队成员之间的协作和沟通。假面科技的运维团队基于实际业务场景,构建了一套高效的移动运维平台。这一平台不仅服务于研发团队和运维团队,还为指挥决策者提供了实时的信息通道。通过假面 ChatOps 移动运维平台,团队成员可以随时随地获取业务运行的状态信息。如果业务服务遇到异常情况并发出警报,团队可以迅速利用这一平台进行应急处理。

在接到警报后,运维人员能够便捷地进行告警流转,迅速查询与告警对象相关的各种指标、链路和日志数据。这种快速而高效的响应机制有效避免了在特定时间段内,当值班人员无电脑可用时,无法迅速做出应急响应的尴尬局面。通过 ChatOps 平台,团队的协作变得更加灵活和高效,从而提升了整个业务运作的可靠性和响应速度。

后续合作的方向与规划

随着假面游戏业务基于 ARMS 构建可观测体系的推进,假面科技运维团队也在同 ARMS 团队一起探索可观测在游戏场景更多的可能性。

AI 技术的迅猛发展和广泛应用为 AIOps 在可观测领域的落地提供了新的契机。在双方的共同努力下,ARMS 推出针对异常调用链和方法栈火焰图的 Copilot 数据解读、异常检测及解决方案推荐能力。此外,ARMS 还发布新一代智能洞察功能——Problem Insights,旨在利用大模型进行根因定位。这项功能不仅支持实时自巡检与异常告警事件巡检,还提供全面的根因定位、告警收敛及影响面分析能力,极大地提升了运维团队快速解决问题的效率。

与此同时,运维团队也提出了在多种业务场景中需要 ARMS 加强核心业务链路监控能力的需求。基于现有的应用监控和链路追踪能力,他们希望能够引入业务维度来定义和监控核心业务链路,以便更精准地进行告警。这一建议与 ARMS 团队的近期战略规划高度一致,ARMS 计划于 2025 年 3 月重磅推出业务链路分析功能,旨在更好地满足客户的需求,提升整体监控和故障响应能力。通过这一创新功能,ARMS 将助力企业全面掌握核心业务链路的运行健康,进一步推动业务的稳定发展和智能化运维。

业务系统的稳定性和应急响应效率,是品牌口碑和用户体验的基石,阿里云将坚定不移的为客户提供极致“稳定、安全、性能、成本”的产品和方案,助力客户业务再攀高峰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/975277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF的页面设计和实用功能实现

目录 一、TextBlock和TextBox 1. 在TextBlock中实时显示当前时间 二、ListView 1.ListView显示数据 三、ComboBox 1. ComboBox和CheckBox组合实现下拉框多选 四、Button 1. 设计Button按钮的边框为圆角,并对指针悬停时的颜色进行设置 一、TextBlock和TextBox…

javaEE-14.spring MVC练习

目录 1.加法计算器 需求分析: 前端页面代码: 后端代码实现功能: 调整前端页面代码: 进行测试: 2.用户登录 需求分析: 定义接口: 1.登录数据校验接口: 2.查询登录用户接口: 前端代码: 后端代码: 调整前端代码: 测试/查错因 后端: 前端: lombok工具 1.引入依赖…

[实现Rpc] 服务端 | RpcRouter实现 | Builder模式

目录 项目服务端独用类的实现 1. RpcRouter类的实现 ServiceDescribe SDescribeFactory ⭕ Builder模式 1. 动机 2. 模式定义 3. 要点总结 4. 代码感受 ServiceManager RpcRouter 4. 代码感受 ServiceManager RpcRouter 前文我们就将 Rpc 通用类都实现完啦&#…

js 实现隔行幻色

构建界面&#xff1a;html&#xff1a; <table cellspacing"0"><!-- 表格中的单元格设为0&#xff0c;没间距 --><thead><tr><td>序号</td><td>姓名</td><td>操作</td></tr></thead><tb…

影刀RPA中级证书-Excel进阶-开票清单

1.操作题需求 请参照视频内容&#xff0c;将开票账单表格中的数据整理成开票清单。请下载 开票账单.xlsx 整理规则如下&#xff1a; 1. 金额为0的数据为赠品&#xff0c;无需开票&#xff0c;需删除2. 开票清单需要从开票账单中获取的数据包括有开票名称、数量、金额、税率&…

tortoiseGit的使用和上传拉取

tortoiseGit的使用和上传拉取 下载TortoiseGit 通过网盘分享的文件&#xff1a;tortoiseGit.zip 链接: https://pan.baidu.com/s/1EOT_UsM9_OysRqXa8gES4A?pwd1234 提取码: 1234 在电脑桌面新建文件夹并进入 右击鼠标 将网址复制上去 用户名和密码是在git注册的用户名和…

从0到1:固件分析

固件分析 0x01 固件提取 1、从厂商官网下载 例如D-link的固件&#xff1a; https://support.dlink.com/resource/products/ 2、代理或镜像设备更新时的流量 发起中间人攻击MITM #启用IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward#配置iptables&#xff0c;将目…

JVM预热

阿里电商平台每年的各种大促活动&#xff0c;对于Java技术来说&#xff0c;其中重要一个操作环节就是预热操作。 目录 预热是什么&#xff1f;为什么要预热&#xff1f; java 程序不预热和预热的调用对比 预热是什么&#xff1f; 预热是指&#xff0c;在 JVM 启动后&#xff0…

Datawhale Ollama教程笔记5

Dify 接入 Ollama 部署的本地模型 Dify 支持接入 Ollama 部署的大型语言模型推理和 embedding 能力。 快速接入 下载 Ollama 访问 Ollama 安装与配置&#xff0c;查看 Ollama 本地部署教程。 运行 Ollama 并与 Llama 聊天 ollama run llama3.1Copy to clipboardErrorCopied …

springboot+dubbo+zookeeper的注册服务和调用实践

目录 zookeeper为什么可作为注册中心zookeeper注册中心优缺点启动zookeeper编写springboot项目提供dubbo服务1. 服务接口2. Springboot引入dubbo实现服务接口2.1 工程目录和依赖2.2 启动程序和application.properties2.3 DubboService 实现服务接口2.4 测试api&#xff0c;用于…

学习经验分享【39】YOLOv12——2025 年 2 月 19 日发布的以注意力为核心的实时目标检测器

YOLO算法更新速度很快&#xff0c;已经出到V12版本&#xff0c;后续大家有想发论文或者搞项目可更新自己的baseline了。 代码&#xff1a;GitHub - sunsmarterjie/yolov12: YOLOv12: Attention-Centric Real-Time Object Detectors 摘要&#xff1a;长期以来&#xff0c;增强 …

什么是方法

System.out.println(),那么它是什么呢&#xff1f; Java方法是语句的集合&#xff0c;它们在一起执行一个功能。 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建&#xff0c;在其他地方被使用 这段Java代码出现错误的原因在于&#xff0c;在…

装win10系统提示“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”解决方法

问题描述 我们在u盘安装原版win10 iso镜像时&#xff0c;发现在选择硬盘时提示了“windows无法安装到这个磁盘,选中的磁盘采用GPT分区形式”&#xff0c;直接导致了无法继续安装下去。出现这种情况要怎么解决呢&#xff1f; 原因分析&#xff1a; 当您在安装Windows操作系统…

ue5.2.1 quixel brideg显示asset not available in uAsset format

我从未见过如此傻x的bug&#xff0c;在ue5.2.1上通过内置quixel下载资源显示 asset not available in uAsset format 解决办法&#xff1a;将ue更新到最新版本&#xff0c;通过fab进入商场选择资源后add to my library 点击view in launcher打开epic launcher&#xff0c;就可…

python: SQLAlchemy (ORM) Simple example using SQLite

领域层&#xff08;Domain Laye&#xff09;&#xff1a;定义了 School 实体类和 SchoolRepository 抽象基类&#xff0c;明确了业务实体和数据访问的契约。 基础设施层&#xff08;Infrastructure Laye&#xff09;&#xff1a;通过 SQLAlchemy 实现了 SchoolRepository 类&am…

蓝桥杯定时器实现led闪烁

step1.配置定时器&#xff0c;TIM1时高级定时&#xff0c;TIM2是通用定时器&#xff0c;用TIM2就行&#xff0c;用内部时钟源&#xff0c;记住相关公式&#xff0c;定时器中断配置时要使能&#xff0c;且生成代码后也要在mian中写使能函数 step2.写代码 配置生成代码后多出的…

【深度学习】Pytorch的深入理解和研究

一、Pytorch核心理解 PyTorch 是一个灵活且强大的深度学习框架&#xff0c;广泛应用于研究和工业领域。要深入理解和研究 PyTorch&#xff0c;需要从其核心概念、底层机制以及高级功能入手。以下是对 PyTorch 的深入理解与研究的详细说明。 1. 概念 动态计算图&#xff08;D…

HAProxy介绍与编译安装

目录 1、HAProxy介绍 2、HAProxy编译安装 Centos 基础环境 Ubuntu 基础环境 编译安装HAProxy 验证HAProxy版本 HAProxy启动脚本 配置文件 启动haproxy 验证haproxy状态 查看haproxy的状态页面 1、HAProxy介绍 HAProxy是法国开发者 威利塔罗(Willy Tarreau) 在2000年…

动静态链接与加载

目录 静态链接 ELF加载与进程地址空间&#xff08;静态链接&#xff09; 动态链接与动态库加载 GOT表 静态链接 对于多个.o文件在没有链接之前互相是不知到对方存在的&#xff0c;也就是说这个.o文件中调用函数的的跳转地址都会被设定为0&#xff08;当然这个函数是在其他.…

无人机遥控器接口作用详解!

USB接口&#xff1a; 功能&#xff1a;USB接口是一种通用串行总线接口&#xff0c;用于连接外部设备&#xff0c;如手机、平板、电脑或充电设备。在无人机遥控器上&#xff0c;USB接口通常用于数据传输和充电。 应用&#xff1a;用户可以通过USB接口将遥控器与电脑连接&#…