腾讯游戏原来是这样使用 Prometheus 的!(上)
背景
随着游戏业务不断增多,业务使用的环境也越来越复杂。此时对于监控的难度也是逐步增大,一方面是监控的数据量大;另一方面是多云之间对于监控及时性的解决方案。腾讯游戏团队与腾讯云监控团队协作,深入研究如何持续解决游戏运维监控问题。最终我们通过构建 Prometheus 监控专项能力,提供免搭建的高效运维能力,降低了全球业务监控复杂度,提升了监控及时性等棘手问题。
我们将拆分成基础篇和实战篇两期文章,为您详细介绍腾讯游戏是如何使用 Prometheus 的。期望能给您的开发运维之路,带来一些启发~
基础篇
**标题:**腾讯游戏原来是这样使用 Prometheus 的!(上)
内容大纲:
1. 介绍 Prometheus 的背景、架构;
2. PromQL 基础;
3. Exporter 和 Pushgateway 怎么选择?
4. Prometheus 预聚合、标签、变量、可视化等基础介绍;
实战篇
**标题:**腾讯游戏原来是这样使用 Prometheus 的!(下)
内容大纲:
1. 腾讯游戏业务背景介绍;
- 以腾讯游戏项目为例,介绍 Exporter(Pull)、 PushGateway(Push) 的实施过程(包括部署、数据上报、可视化、告警等);
Prometheus 简介
Prometheus 受启发于 Google 的 Borgmon 监控系统,从 2012 年开始由前 Google 工程师在 Soundcloud 以开源软件的形式进行研发,并且于 2015 年对外发布早期版本。2016年5月继 Kubernetes 之后成为第二个正式加入 CNCF 基金会的项目,2018年8月9日,云原生计算基金会(CNCF)宣布开放源代码监控工具 Prometheus 已从孵化状态进入毕业状态,标志着 Prometheus 已经具备稳定性和成熟度,而且得到了市场的认可,已经成为了云原生中指标监控的标准。
Prometheus 架构
一个完整的监控系统包括:**数据采集、数据存储、数据查询和展示、监控告警四大模块。**Prometheus 的结构图如下:
PromQL 基础
Prometheus 实际上不只是一个监控系统,他还包含了一个时序数据库,用于数据存储、查询。既然是数据库,就必须要有它自己的查询语言。Prometheus 的查询语言是 PromQL( PrometheusQuery Language)。它允许用户实时选择和汇聚时间序列数据,从而很方便地在 Prometheus 中查询和检索数据。
PromeQL 是 Prometheus 实战的核心,是 Prometheus 的必修课。数据展示、告警都离不开它。
1. 数据类型、指标类型、选择器
比较难理解的是 Histogram 和 Summary。从字面意思上看的话,一个是直方图,一个是汇总图。
举一个例子:我们通过使用请求响应时间作为考察一个网站的性能指标。
Histogram 统计的是:
总请求次数100次,总响应时间是 10ms,<0.1ms 响应时间的50个,<0.2ms 响应时间的80个,<0.5ms 响应时间的100个,每一个段属于一个 bucket**,个数是累加的**。
以上表示:0~0.1ms的请求是50个,0.1-0.2ms 的请求是80-50=30个,0.2~0.5ms 的请求是100-80=20个。
类似如下效果图:
Summary 统计的是:
总请求次数100次,总响应时间10ms,quantile=“0.5” 0.1ms ,quantile=“0.8” 0.3ms,quantile=“0.95” 0.5ms。
以上表示:50% 的次数响应时间是 0.1ms,80% 的次数响应时间是 0.3ms,95%的次数响应时间是 0.5ms。
类似如下效果图:
注意事项:
a. Summary 的百分位数是客户端计算好直接让 Prometheus 抓取的,不需要 Prometheus 计算,直方图是通过内置函数 histogram_quantile 在 Prometheus 服务端计算求出。
b. Histogram 的 bucket(桶)要设置合理,histogram_quantile 计算的逻辑是假定你的样本是线性分布的,如果 bucket 设置不合理,可能结果会相差很大。
Offset 的使用
效果图:
2. 运算符
3. 向量匹配模式
[点击查看大图]
4. 内置函数
[点击查看大图]
Exporter 和 Pushgateway 怎么选择
上面主要应用了 Exporter 和 Pushgateway 这2种数据采集方式。对于我们实际工作中该怎么选择呢?我这里总结了一下。
1. 当你是一台主机抓取 N 台主机指标,汇总后上报到 Prometheus 的情况,推荐使用 Exporter 方式。
2. 当你是 N 台主机向一台主机上报指标(主要是这 N 台主机不方便安装 Exporter 或者是业务比较重要的主机,怕影响其性能),推荐使用 Pushgateway 的方式。
预聚合
预聚合(RecordingRule)可提前计算相对复杂的指标,并存储到新的数据指标中,查询提前计算的数据比查询原始数据更加高效便捷,适用于 Dashboard 中配置与查询慢的场景。
小标签大用途
在设计 Labels 的时候,需要考虑到后续方便批量查询和展示。比如图上的 area、idc、host、gameid,设计多个维度,查询和展示的时候可以按区、按服、按主机查询。同时,host 命名,也是有规律的。
巧用变量
多选我们经常有这样的场景:有多个组或者集群,然后组或集群下有多个机器使用同一个模板,当然,这里的组或集群可能有多级的关系。例如:项目A–(A大洲、B大洲、C大洲…)–>A大洲(A国家、B国家、C国家…)
可视化
网上有很多制作精美的 Dashboard 可以直接导入:
当然,也可以自己制作 Dashboard,制作效果如下:
总结
了解完 Prometheus 基础知识后,让我们期待下期的实战篇吧, 腾讯游戏高级工程师将从腾讯游戏业务背景到实施过程,为您介绍腾讯游戏是如何使用 Promethues 的,同时还会介绍如何 从非结构化日志数据中导出 Prometheus metrics 哦!让我们一起期待下一期的精彩内容吧~
腾讯游戏原来是这样使用 Prometheus 的!(上)相关推荐
- 腾讯游戏许振文:王者荣耀实时大数据平台黑科技解密
许振文 腾讯游戏 增值服务部后台开发组组长 读完需要 20 分钟 速读仅需 5 分钟 从事游戏大数据相关领域 8 年多,负责游戏数据分析平台 i ...
- 服务国内超过70%游戏公司,腾讯游戏云发布游戏行业最全解决方案
9月10日,在2020腾讯全球数字生态大会游戏专场上,腾讯云发布了全新升级的游戏解决方案及游戏服务器引擎GSE.游戏原生数据库TcaplusDB等多款新产品,进一步提升游戏开发者的效率. 目前,腾讯云 ...
- 剑三 计算机中丢失,剑网3指尖江湖:剑侠情缘中“丢失”的几年,竟在腾讯游戏被找到...
原标题:剑网3指尖江湖:剑侠情缘中"丢失"的几年,竟在腾讯游戏被找到 小编是一位资深剑网三的游戏玩家,在小编玩剑网三这5年中不止一次想到唐简到底为何会出现在稻香村.李复如何与唐简相 ...
- “腾讯电竞”向前,“腾讯游戏”向后
文丨陈选滨 来源 | 螳螂财经 "在这属于中国电竞的最好时刻,腾讯电竞希望携手行业伙伴,抓住时代赋予的机遇,共创中国电竞的黄金时代!" 上个月6月20日,主题为"竞在此刻 ...
- 成都内推 | 腾讯游戏王者荣耀算法团队招聘算法实习生
合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 腾讯 腾讯游戏 (Tencent Games) 成立于 2003 年,是全 ...
- 腾讯游戏主美:二次元卡通渲染有哪些黑科技?
今年,<原神>的出现让行业注意到了三渲二这种独特的画风.但在二次元游戏中,<原神>其实并非第一个吃螃蟹的人.作为腾讯游戏魔方工作室群<王牌战士>项目组的主美,谢海天 ...
- 《王者荣耀》主策划Xavier分享腾讯游戏10年在职经历
本内容出自知乎话题"天美十二周年,你与天美游戏有哪些难忘故事?"以下内容由<王者荣耀>主策划Xavier亲答.GameRes经腾讯天美工作室群授权发布. 大家好,我是X ...
- 混沌工程将成标配?落地腾讯游戏后带来了哪些惊喜?丨Gdevops峰会
时间:2021年5月28日 地点:广州阳光酒店 场次:运维 & DevOps专场 演讲主题:<持续保障系统的稳定性和高可用:腾讯游戏混沌工程实践> 议题要点及收获: 全面理解混沌工 ...
- 腾讯游戏数据应用微服务实战
作者注:本文是作者在GIAC全球互联网大会上的一个分享整理成稿子,介绍了微服务以及腾讯游戏数据应用在微服务中的实践,整理时间仓促,如有偏颇,请联系小编修正. 各位架构师们,大家下午好.我是来自于腾讯游 ...
最新文章
- roadflow2.1版oracle,RoadFlowVue3.0.2更新日志
- mysql 安装以及配置
- MYSQL 分析表、检查表和优化表
- 不负众望,窝窝世界新版放出(内测):P
- Java 写时拷贝容器CopyOnWriteArrayList的测试
- error: gnu/stubs-32.h: No such file or directory
- ApacheCN NodeJS 译文集 20211204 更新
- 执行计算机查错程序,计算机 每次启动过程中总会执行磁盘检查CHKDSK,什么问题???怎么处理??...
- vue 日期面板_VUE项目中如何方便的转换日期和时间
- SQL Server学习之路(一):建立数据库、建立表
- usb key 开发(一)
- easyconnect(mac版)总是初始化问题
- Revit中栏杆扶手、坡道的绘制及插件太多问题
- 考研政治|分析大题复习攻略
- 计算机语言与硬件相关,搞懂程序语言与计算机硬件的关系
- 美国秘密命令谷歌、微软和雅虎交出搜索指定关键词的人员信息
- 山大计算机毕业生去向,985就业:山东大学的毕业生们都被哪些单位录取了?19届就业情况...
- 内网渗透-常用工具免杀
- 快速找出QQ群成员中不在名单内的人
- 正弦波,三角函数,波形
热门文章
- 微信web开发者工具使用教程
- 刚上路的苹果地图:急需提升用户体验
- ConversionPattern参数的格式含义
- BigDecimal 往左移动两位小数_人教版小学数学四年级下册小数点位置移动引起小数大小的变化公开课优质课课件教案视频...
- 百度、谷歌 高级搜索
- 200G大数据学习资料全有!寒假赶紧学一学!
- DXP中如何寻找未连接的网络
- 广和通Cat.1模组与亚华物联智慧燃气表组成“CP”,高效赋能智慧城市建设
- jQuery使用getJSON方法获取json数据完整示例
- cad中lisp文件给恶作剧_最整人的5个CAD问题及解决办法!