首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【云监控游戏行业案例9】欢乐斗地主是如何解决运维焦虑的?

【云监控游戏行业案例9】欢乐斗地主是如何解决运维焦虑的?

作者头像
腾讯云可观测平台
发布于 2022-11-15 02:40:45
发布于 2022-11-15 02:40:45
10.3K0
举报

| 导语 :你是否也曾被“快点儿吧,等到花都谢了”洗脑,为又爱又恨的欢乐豆决战到天亮,为何欢乐斗地主能风靡全国,经久不衰,还一直能平稳流畅运行?其背后究竟有哪些运维小妙招?可让整体研运效率显著提升,节省30%+人力成本?.....

作者简介:Leehom,腾讯游戏专家开发工程师,负责腾讯欢乐游戏大规模分布式服务器架构。有十余年微服务架构经验,擅长分布式系统领域,有丰富的高性能高可用实践经验,目前正带领团队完成云原生技术栈的全面转型。

背景

基本信息:

客户名称:腾讯欢乐斗地主

行业:IT服务/软件 游戏行业

涉及产品:腾讯云 Prometheus 监控服务、Grafana 可视化服务、容器服务

联系邮箱:sevenqishi@tencent.com、seanczxchen@tencent.com

客户介绍:

2008年,欢乐斗地主横空出世。是一款由腾讯公司-欢乐游戏工作室开发和运营的在线棋牌小游戏。在整个国内棋牌游戏领域,《欢乐斗地主》则一直是探索品类边界的领头羊,腾讯游戏家族里普及年龄最广的游戏产品。据 GameLook 了解,自 App Annie 在 2017 年公布全球手游 MAU 数据以来,《欢乐斗地主》一直是中国区全品类手游 MAU 年度前五。目前累计用户数已过亿,其活跃用户长期处于一个较高水平。后台采用分布式微服务架构,承载着数百万 DAU ,在这种大规模平台化的后台系统和复杂多样的业务架构下,给监控运维带来了极大的挑战。

实践背景:

云原生经历了7年多的发展,已经进入了大规模实践阶段,应用极其广泛,互联网、金融、电信、汽车等各大行业均有其身影。近年来,也越来越多的腾讯业务走向云原生。腾讯欢乐斗地主也深入参与其中。

欢乐斗地主业务全面上云后,服务全量部署于 腾讯云容器服务 TKE 之中。上云后,旧的监控方案已无法适用。众所周知,Prometheus 是容器场景的最佳监控工具。但是自建 Prometheus 对于目前项目运维人力,显得成本略高。同时也容易出现性能瓶颈。经过综合考虑,团队决定采用 腾讯云Prometheus 监控服务(TMP) 作为监控系统,抓取并存储指标。本文将分享监控体系实践的一些阶段性经验感悟。

实践效果:

在复杂的游戏业务架构下,经过细致分析和基于云原生技术的持续重构演进,深度结合 K8s 以及 Prometheus 监控服务,最终实现游戏业务场景下架构平稳平滑运行。对于业务模块的可靠性、可观测性、可维护性大幅提高,整体研运效率提升十分明显,每月可有效节省超过30%的人力成本。

Prometheus 监控实践

1.1 指标上报

基于统一规范上报的考虑,在代码框架层面直接收拢了上报的 metric 名,仅通过 label 进行指标的区分。例如:counter 类指标,metric 名统一叫做 hlsvr_business_trigger_count,只是 label 取值不同。目前框架二次封装的接口,根据以往经验,仅需设置两个 label 参数就够用。

注1:该步骤是建立在团队习惯 all in one Dashboard 的基础上,可结合您的业务情况来做实践。 注2:对于一些需要更多 label 的业务场景,业务也可以上报,只是使用另外的接口,metric 名也可以自定义。

1.2 指标采集

通过 servicemonitor 配置采集的任务,根据业务需求,这里只配置一个涵盖所有服务的 servicemonitor。

1.3 指标展示

欢乐斗地主同时还使用云监控提供的Grafana 可视化服务展示监控数据,对于 Grafana Dashboard 的维护,我们有做过两种尝试:Grafana as code 的方式和直接页面维护的方式。

1.3.1  Dashboard 维护方式

Grafana as code 的维护方式,是通过 yaml 来做 Dashboard 的管理,将所有曲线和告警,都写到 yaml 中,然后使用 helm 去做部署。使用 yaml 可以和服务自身内容写在一起,部署服务 yaml 的时候一起部署 Dashboard,将内聚到服务本身的 yaml 之中。

但从功能角度来看,有时候仅仅想微调监控模块,还需要去变更服务的 yaml,加上 helm 仓库管理操作比较复杂,存在误带出去非监控 yaml 变更的可能。

所以综合考虑,建议将告警都写到一个 Grafana as code 的 yaml 文件之中Dashboard 拆分成多个,但是 yaml 文件只需一份。这样在变更 Dashboard yaml 的时候,只会影响到一个 Dashboard。

采用 Grafana as code 的配置方式,可以结合 git 和流水线,实现自动归档,也方便做一些基于 yaml 的批量修改。由于修改 yaml 来生成 Dashboard,调试期就比较不直观,无法所见即所得,因此还得同时支持页面手工调整,然后反向推送回 git 仓库,但这样一来操作就会显得有些繁琐(改 yaml -- 提交 git -- helm 部署 -- 页面观察 -- 手工调整到理想效果 -- 反向推送回仓库)。

相对地,直接在 Grafana 页面上进行维护的方式,显得十分直观,所见即所得,直接页面改完保存即可。但如果想做批量的修改,可以导出 Json model 批量处理 Json 。

由于我们使用了统一 Dashboard(见下文),不需要创建和维护过多的 Dashboard,因此对批量维护的诉求不高,考虑到操作的简便性,目前采用的是直接在 Grafana 页面上进行维护的方式。

1.3.2 统一 Dashboard

由于 metric 名已被固定,就可以制作一个统一的 Dashboard 来覆盖所有服务,将服务名做成一个下拉框即可选择要观测的目标服务。

图示:统一 Dashboard

上线一个新的服务,直接复用上述 Dashboard 即可。目前欢乐斗地主项目只会在一些特殊情况(例如使用了更多的维度、自定义 metric 名,或者相关指标本身非常重要,希望独立呈现)时,才创建维护额外专属的 Dashboard。

1.4 告警面板

根据欢乐斗地主业务情况,我们做了一个统一监控 Dashboard,通过 Explore 目标曲线以获取到相关的 PromQL 语句,再基于 Panel Library 去创建监控用的 Panel。

对于有些需要单独呈现的告警,也可以单独创建维护,可不放在统一监控 Dashboard 中。

1.5 总体概况

综上,通过欢乐斗地主项目实践总结:

1)使用统一的 metric 名来做上报,方便统一和维护 Dashboard。 2)使用一个全局 servicemonitor 来作为抓取任务。 3)直接通过 Grafana 页面手工维护 Dashboard。 4)对于指标查看,一个统一查看 Dashboard + 一些专属查看 Dashboard。 5)对于指标监控,一个统一监控 Dashboard + 一些专属监控 Dashboard。

Prometheus 真香定律

2.1 核心亮点

2.1.1 维度聚合

使用了基于 label 的数据结构设计,很方便做维度聚合,这点相对于没有维度聚合的监控系统来讲,有点领先一代的真香味儿了!

图示:按 APP  聚类统计错误日志情况

2.1.2 查询接口强大

Prometheus 设计了 PromQL 语句作为查询接口,接口的表达能力非常强大。通过PromQL可以实现对监控数据的查询、聚合。同时 PromQL也被应用于数据可视化(如Grafana)以及告警当中。

上述两个 Prometheus 的亮点,再对比 SQL 类存储的典型能力,会发现有些神似的东西(索引 + group by -- label,sql语句 -- promQL 语句)。

2.2 时序数据库设计思想

小编参阅了 Prometheus 核心开发者 Fabian Reinartz 写的 《Write a time series database from scratch》,又简单看了一些其他时序数据库的资料,发现其中最核心的设计思想,其实不是什么新花招,都是些历久弥新的老方法。

下面就罗列部分关键思想:

1)缓存:通过缓存来做访问加速,可以有多级缓存。 2)顺序写盘 + 合并写入:提高磁盘吞吐。 3)SSD:提高 IO 性能。 4)索引:提高读性能,可以有多级索引、倒排索引。 5)mmap:使用操作系统自己的内存管理。 6)有序化处理:方便做交集、查找、索引。 7)压缩:降低磁盘空间开销。 8)备份:提高可用性。 9)sharding:提高伸缩性。 10)WAL:write ahead log,辅助内存数据的可靠落地、延迟落地。

2.3 为什么选择腾讯云 Prometheus 监控服务

对于欢乐斗地主项目而言,Prometheus 监控服务天然集成 Grafana,腾讯云容器服务(TKE)高度集成,符合项目构建环境,能基本满足欢乐斗地主项目需求。而且 TMP 又是基于开源 Prometheus 构建的高可用、全托管的服务,我们还要啥自行车呢?

图示:小品《卖拐》

Prometheus 踩坑经验之谈

欢乐斗地主使用腾讯云 Prometheus 监控服务作为主要的监控系统,还算能迎刃而解的,总体上没有遇到过太棘手的问题,小编在这里总结了几个小坑,让你可以在监控过程中少走弯路。

踩坑案例

1)为每个服务单独配置了一个 servicemonitor,导致 Prometheus CPU过高。 2)使用 Grafana 做 Dashboard,对上千取值的 label 做 repeated panel,查看对应项出现卡顿。 3)误用 url 作为 label,而 url 中包含了可变参数,导致高基数。

第 2 点和第 3 点其实比较显然,我们的解决办法是避开高基数问题,修改业务的 API 调用代码。

总结

近年来,越来越多开发者选择大规模使用 腾讯云容器服务 TKE 来部署、管理服务。在用户购买 TKE 服务之后,监控其 K8s 环境成为了必须,而 Prometheus 因其强大的指标采集能力、活跃的生态和灵活的 PromSQL 成为了不少研发和运维人员监控 K8s 的第一选择

Prometheus + Grafana 已经成为云原生时代的可观测性事实标准。2022年4月,腾讯云容器服务联合腾讯云 Prometheus 监控服务,推出升级托管 Prometheus 监控,全面支持开源 Prometheus 和开源 Grafana 能力,同时还结合云监控告警和 Prometheus Alertmanager 能力。实现了云原生 K8s 体系下 metric 可观测闭环。

今年,腾讯云 11.11 云上盛惠,腾讯云云监控将联合腾讯云云原生推出年度最大力度优惠,部分产品低于2折!多种优惠券助您将业务部署于 TKE ,并使用Prometheus + Grafana 为您购买的 TKE 保驾护航~

11.11 云上盛惠

盛惠 1

Prometheus 监控服务券后低至4折,每类优惠券可领取30张,满减力度直接拉满,连续一个月享受年度最低优惠,赶紧前往可观测平台会场领取优惠券吧~

盛惠 2

Grafana 可视化服务满减优惠覆盖全套餐,年度首次满减,单次最高可省200元。赶紧前往可观测平台会场领取优惠券吧~

盛惠 3

云原生产品覆盖满减优惠多种节点,挑战全年底价,领券下单更优惠!单次优惠低至2折,赶紧前往云原生产品会场领取优惠券吧~

答应我,11.11别再花冤枉钱了!进入下列会场链接领券后再购买相关服务哦!

可观测平台会场(复制链接访问):

https://cloud.tencent.com/act/pro/observability_20221111

云原生产品会场(复制链接访问):

https://cloud.tencent.com/act/pro/cloudnative

联系我们

如有任何疑问或想体验相关产品

欢迎扫码进入官方交流群~

相关产品介绍

1. Prometheus 监控服务:

https://cloud.tencent.com/product/tmp

2. Grafana 可视化服务:

https://cloud.tencent.com/product/tcmg

3. 容器服务:

https://cloud.tencent.com/product/tke

👇点击阅读原文可进入可观测平台11.11会场

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云可观测 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
客户案例|某车企建设统一监控平台实践
导语:文章主要介绍腾讯云 Prometheus 在监控出行行业的突出优势与解决方案,为客户运维团队降低了很多成本。
腾讯云可观测平台
2025/02/11
4770
客户案例|某车企建设统一监控平台实践
「可观测」如何为「新能源车企」缓解运维焦虑?
导语:本文将探讨某新能源车企如何借助腾讯云可观测平台,实施可观测性方案,从而缓解运维焦虑,实现更高效的系统管理。
腾讯云可观测平台
2025/02/11
2370
「可观测」如何为「新能源车企」缓解运维焦虑?
揭秘可观测利器:腾讯云 APM 深度融合 OpenTelemetry 和 Prometheus,助力高效指标采集与处理
导语:文章主要介绍腾讯云应用性能监控(APM)服务端通过对数据的处理将 OpenTelemetry 指标转换成 Prometheus 指标,输出到腾讯云 Prometheus 监控服务中,做到让用户只需要进行简单的关联后,应用直接通过 OpenTelemetry API 上报指标,并提供多种可自定义的图表展示方式。
腾讯云可观测平台
2025/02/11
4920
揭秘可观测利器:腾讯云 APM 深度融合 OpenTelemetry 和 Prometheus,助力高效指标采集与处理
kubernetes系列教程(二十)prometheus提供完备监控系统
上一个章节中kubernetes系列教程(十九)使用metric-server让HPA弹性伸缩愉快运行介绍了在kubernetes中的监控架构,通过安装和使用metric-server提供kubernetes中的核心监控指标:提供node节点和pod容器CPU和内存的监控能力,核心监控指标提供的监控维度和指标相对有限,需要更好的扩展监控能力,需要使用自定义监控来实现,本文介绍prometheus提供更更加丰富的自定义监控能力。
HappyLau谈云计算
2020/01/31
6.2K0
kubernetes系列教程(二十)prometheus提供完备监控系统
Prometheus 开源监控解决方案 之 基本架构及部署
Prometheus把所有的数据按时序列进行存储, 所有采集上来的数据在都被打了时间戳并按时间先后顺序进行流化,这些数据属于相同的指标名以及一组标签维度(labeled dimensions)
王录华
2019/07/31
4.1K0
Prometheus 开源监控解决方案 之 基本架构及部署
0元体验|使用 Prometheus 监控 Kubernetes 的最佳实践
前言:本文主要介绍了 Kubernetes 的监控场景、监控选型,以及使用腾讯云 Prometheus 监控 Kubernetes 的完整路径。
腾讯云可观测平台
2025/02/11
2860
0元体验|使用 Prometheus 监控 Kubernetes 的最佳实践
游戏案例|Service Mesh 在欢乐游戏的应用演变和实践
陈智伟,腾讯 12 级后台专家工程师,现负责欢乐游戏工作室公共后台技术研发以及团队管理工作。在微服务分布式架构以及游戏后台运维研发有丰富的经验。 前言 欢乐游戏工作室后台是分布式微服务架构,目前稳定承载着多款游戏,数千万 DAU 以及数百万级在线。原有云下架构脱胎于 QQGame 后台,核心架构已有 10 多年的历史,其中使用了多套目的不同的自研开发框架,自研基础组件,并为适应繁杂的业务场景,衍生出不同的服务模型,最终积累了数百个微服务,整体简化架构如下所示: 在这种大规模平台化的后台系统和复杂多样的
腾讯云原生
2021/12/08
8810
赋能 AI 运维革新:Prometheus 容器化 GPU 监控一站式解决方案
在人工智能(AI)蓬勃发展的当下,图形处理单元(GPU)凭借其强大的并行计算能力,成为了 AI 训练和推理工作负载的核心驱动力。从大规模的深度学习模型训练到实时的图像识别和自然语言处理任务,GPU 的高效运行直接决定了 AI 应用的性能和效率。
腾讯云可观测平台
2025/04/26
3290
赋能 AI 运维革新:Prometheus 容器化 GPU 监控一站式解决方案
分布式云场景下的多集群监控方案最佳实践
杨濡溪,腾讯云后台开发工程师,目前主要负责腾讯云 Prometheus 监控服务、TKE集群巡检等技术研发工作。 杨鹏,腾讯云后台开发工程师,曾负责腾讯云专有云后台技术研发工作,目前主要负责腾讯云 Prometheus 监控服务、TKE集群后台技术研发工作。 引言 Prometheus 作为云原生时代最流行的监控组件,已然成为社区监控事实上的标准,但是在多集群,大集群等场景下,只使用 Prometheus 是远远不够的;单集群场景下我们一般主要关注指标采集、存储、告警、可视化等基础监控能力,随着集群规模的
腾讯云原生
2022/11/24
2.3K0
分布式云场景下的多集群监控方案最佳实践
自建的 K8s 如何接入 Prometheus 监控服务?
‍ 前言 今年6月,Kubernetes (K8s)迎来了8周岁。K8s 大幅降低了容器化应用部署的门槛,目前已在容器编排领域的事实标准。但随着 K8s 上的业务类型越来越丰富,它的配置也越来越复杂,给开发和运维同学带来了不少困难。 在 K8s 环境中,应用程序运行在跨集群内的多个节点,同时服务也将分布在多个集群或者多个云厂商中,这就使得追踪、监控这些应用程序及其所依赖的基础设施的健康状况,具有非常大的挑战性。 在这样的环境下,Prometheus 应运而生,天然支持 K8s,成为容器场景的最佳监控工具。在
腾讯云可观测平台
2022/07/06
1.1K0
自建的 K8s 如何接入 Prometheus 监控服务?
grafana&prometheus生产级容器化监控-4:使用kube-prometheus监控k8s集群
(1).关于prometheus-operator和kube-prometheus
千里行走
2019/12/26
3.2K0
Prometheus和Grafana监控Kubernetes以及未来
了解使用 Prometheus 和 Grafana 监控 Kubernetes 的优势和挑战,以及他们的潜在继任者。
云云众生s
2024/03/28
2740
Prometheus和Grafana监控Kubernetes以及未来
如何通过TMP监控TKE独立集群的etcd
现在很多业务为了能否在k8s上进行一些定制的二次开发,都会选择tke的独立集群,独立集群,用户可以自行管理master做一下定制化配置,如果是托管集群,需要工单联系后端修改。
聂伟星
2023/06/13
5980
Kubernetes 实战:用 Prometheus 提高 K8s 集群弹性伸缩能力的准确性
导语:本文主要通过 Prometheus 在观测 Kubernetes 方面的独特优势,来阐述如何利用 Prometheus 提高 kubernetes 自动弹性伸缩能力的准确性。
腾讯云可观测平台
2025/04/30
2000
Kubernetes 实战:用 Prometheus 提高 K8s 集群弹性伸缩能力的准确性
企业级 Kubernetes 监控体系设计与实践
主要都是 kube-state-metrics 收集的, K8s 内置的资源对象 , 只需要添加启动参数即可
SRE运维进阶之路
2025/04/01
2860
企业级 Kubernetes 监控体系设计与实践
我的 Grafana 能对接你的 Prometheus 监控服务吗?
简介 前言感谢各位用户在云监控用户交流群中的积极发言,踊跃提问,感谢大家的支持,在此把 Grafana 插件和 Prometheus 监控服务相关的一些问题整理如下。 Grafana 插件 腾讯云于 4 月 20 日宣布与开源数据可视化平台 Grafana 的 Grafana Labs 合作,为全球云用户提供腾讯云 Grafana 云监控应用程序插件。用户可通过此插件,在简单易用的平台上快速监控与整合指标和数据。目前已经支持 30+ 款腾讯云基础产品的接入展示。点击此处了解 Grafana 插件 Q:se
腾讯云可观测平台
2021/06/18
1.3K0
使用 Prometheus + Grafana 打造 TiDB 监控整合方案
Prometheus + Grafana 作为一套普适的监控系统广泛应用于各种应用环境中。
PingCAP
2021/06/07
2.4K0
6月腾讯云容器产品技术月报|参与互动赢好礼!
2022年6月 VOL:26 腾小云告诉你最前线的产品新特性, 总有一款让你心动~ 云说新品 容器产品新特性6月上新 腾讯云弹性容器服务EKS 安全稳定的无服务器 Kubernetes 服务 弹性容器服务(Elastic Kubernetes Service,EKS)是腾讯云容器服务推出的无须用户购买节点即可部署工作负载的服务模式。 EKS上线包年包月模式超级节点,针对常驻业务提供超高性价比的Serverless容器服务。详情参考: EKS上线磁盘清理能力,支持使用annotatio
腾讯云原生
2022/07/04
1.5K0
6月腾讯云容器产品技术月报|参与互动赢好礼!
开源监控系统 Prometheus 最佳实践
作者:jimmiehan(韩金明)  腾讯PCG后台开发工程师 ,Prometheus/Thanos contributor Prometheus 是目前最流行的开源监控系统之一, 这里以我在基于 Prometheus 构建天机阁 2.0Metrics 子系统的实践谈一谈 Prometheus 的一些最佳实践, 最佳实践的理念是 Prometheus 系统简单稳定高效运行的关键。(注: 天机阁 2.0 是新一代云原生可观测性系统) PART ONE 埋点思路 最好将原始指标暴露给 Prometheus
腾源会
2021/11/17
1.5K0
Kubernetes 排障实战:用 Prometheus 提升集群可用性和排障效率
导语:本文主要探讨 Prometheus 在观测 Kubernetes 方面的独特优势和最佳实践,包括如何在 Kubernetes 不同层次和维度上实现全面的可观测性,如何排查最常见的 Kubernetes 故障,以及维护集群稳定高效运行的最佳实践。
腾讯云可观测平台
2025/02/11
3960
Kubernetes 排障实战:用 Prometheus 提升集群可用性和排障效率
推荐阅读
相关推荐
客户案例|某车企建设统一监控平台实践
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档