前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯游戏原来是这样使用 Prometheus 的!(上)

腾讯游戏原来是这样使用 Prometheus 的!(上)

作者头像
腾讯云可观测平台
发布2022-06-24 18:04:21
6980
发布2022-06-24 18:04:21
举报

背景

随着游戏业务不断增多,业务使用的环境也越来越复杂。此时对于监控的难度也是逐步增大,一方面是监控的数据量大;另一方面是多云之间对于监控及时性的解决方案。腾讯游戏团队与腾讯云监控团队协作,深入研究如何持续解决游戏运维监控问题。最终我们通过构建 Prometheus 监控专项能力,提供免搭建的高效运维能力,降低了全球业务监控复杂度,提升了监控及时性等棘手问题。

我们将拆分成基础篇和实战篇两期文章,为您详细介绍腾讯游戏是如何使用 Prometheus 的。期望能给您的开发运维之路,带来一些启发~

基础篇

标题:腾讯游戏原来是这样使用 Prometheus 的!(上)

内容大纲:

1.  介绍 Prometheus 的背景、架构;

2. PromQL 基础;

3. Exporter 和 Pushgateway 怎么选择?

4. Prometheus 预聚合、标签、变量、可视化等基础介绍;

实战篇

标题:腾讯游戏原来是这样使用 Prometheus 的!(下)

内容大纲:

1. 腾讯游戏业务背景介绍;

2. 以腾讯游戏项目为例,介绍 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 监控服务年中大促正在进行中,满减券低至6折,限量无门槛券免费领取。赶紧点击文末阅读领取优惠吧~

联系我们

如有任何疑问

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

Prometheus 相关文章推荐:

👇点击阅读原文领取优惠吧~

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
Prometheus 监控服务
Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档