背景
随着游戏业务不断增多,业务使用的环境也越来越复杂。此时对于监控的难度也是逐步增大,一方面是监控的数据量大;另一方面是多云之间对于监控及时性的解决方案。腾讯游戏团队与腾讯云监控团队协作,深入研究如何持续解决游戏运维监控问题。最终我们通过构建 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 统计的是:
Summary 统计的是:
注意事项:
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 相关文章推荐:
👇点击阅读原文领取优惠吧~