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

本文介绍了腾讯游戏如何利用Prometheus进行监控,包括使用Exporter进行Pull方式监控网络质量和通过Pushgateway处理short-lived job的场景。实战部分详细阐述了大厅服与战斗服之间的网络质量监控方案,以及大版本更新时通过Pushgateway主动上报配置检查结果的过程,展示了Prometheus在游戏运维中的应用价值。
摘要由CSDN通过智能技术生成

背景

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

上期我们介绍了 Prometheus 的基础,我简单回顾一下上期重点知识,Prometheus 的四个指标类型分为 Counter(计数器) Gauge(仪表盘), Histogram(直方图), Summary (摘要)。N 台主机向一台主机上报数据指标,推荐使用 Exporter 数据采集方式;N 台主机向一台主机上报指标,推荐使用 Pushgateway 数据采集方式。欢迎点击 腾讯游戏原来是这样使用 Prometheus 的!(上) 了解更多。

在实战之前,我们再来看一下 Prometheus 的架构图:

图片

从上图中可以看出,监控数据采集有三种来源:

  • 通过 Exporter 进行数据 Pull。

  • 对于 short-lived jobs 通过 push 到 pushgateway,然后发送到 Prometheus server。

  • Service Discovery(自动发现)。

下文以腾讯游戏为实践案例,重点介绍 Pull 和 Push 的两种场景,ServiceDiscovery (服务发现)场景常用于 K8S 监控。

Exporter(Pull)

Exporter 方式是 Prometheus 最常用的监控方式。Prometheus 社区提供了丰富的 Exporter 实现,涵盖了从基础设施,中间件以及网络等各个方面的监控功能。这些 Exporter 可以实现大部分通用的监控需求。广义上讲所有可以向Prometheus 提供监控样本数据的程序都可以被称为一个 Exporter。而 Exporter 的一个实例称为 target,如下所示,Prometheus 通过轮询的方式定期从这些 target 中获取样本数据:

图片

背景需求

某项目在全球统一部署时,采用大厅服和不同地区独立部署战斗服的架构,玩家通过就近接入战斗服的方式进行对战,所以大厅服和战斗服之间的稳定性非常重要,为了优化玩家体验,一般通过拉专线的方式来进行保障。而专线的网络质量,我们必须对其进行实时监控,一旦监控发现异常,可及时联系专线提供商进行处理,保障业务稳定运行。

解决方案

1. 大厅服实时探测各个战斗服之间网络质量,采用持续 Ping 方式

2. 大厅服将采集到的数据通过 tlog 落地

3. 使用 grok-exporter 插件解析 tlog 文件,并将结果上报到 Prometheus-agent,最终汇总到 Promethe-server 端。

架构图如下:

图片[点击查看大图]

实施过程

**1.**选取测试节点

我们需要实时监控大厅服和战斗服之间的网络质量,所以必须选择一个大厅服作为源节点,多个战斗服作为目标节点。以欧洲大厅为例:

图片

**2.**搭建 tlog 服务

这里我们只需要前半段,也就是到数据采集这一段:

图片

mkdir/data/home/tlog

上传 tlog.tar.gz 到 /data/home/tlog 目录并解压,修改配置文件 tlogd_bin_vec.xml ,重点修改2个地方即可:

<Url>udp://0.0.0.0:10001</Url>#1、侦听地址和端口

<Device>

     <File>

             <Pattern>/data/home/user00/tlog/logplat/log/tlogd_1/65535_%Y%m%d_%H00.log</Pattern>#2、文件存储路径

             <BuffSize>1024000</BuffSize>

             <SizeLimit>1024000001</SizeLimit>

             <Precision>3600</Precision>

             <MaxRotate>100</MaxRotate>

             <SyncTime>0</SyncTime>

             <NoFindLatest>0</NoFindLatest>

     </File>

</Device>

启动 tlog 服务:

cd/data/home/user00/tlog/tlogd/&&bash  start_tlogd_vec.sh

3. 大厅服部署网络质量采集脚本

catidc_list.txt

1.1.1.1 2.2.2.2 sgame_eu_xxx 1
1.1.1.1 2.2.2.2  sgame_eu_xxx 1
1.1.1.1 2.2.2.2  sga
Prometheus是一个开源的系统监控和告警系统。你可以使用Docker来安装和运行Prometheus。首先,你需要拉取最新的Prometheus镜像,可以使用以下命令:[1] ``` docker pull prom/prometheus:latest ``` 然后,创建一个目录来存储Prometheus的配置文件,可以使用以下命令:[1] ``` mkdir -p ~/dockerdata/prometheus ``` 接下来,你需要编辑Prometheus的配置文件prometheus.yml,可以使用以下命令:[1] ``` vim ~/dockerdata/prometheus/prometheus.yml ``` 在配置文件中,你可以定义监控的目标和规则。配置文件的详细解释可以参考官方文档。[2] 完成配置后,你可以启动Prometheus容器,可以使用以下命令:[2] ``` docker run -d --name prometheus -p 9090:9090 \ -v ~/dockerdata/prometheus:/etc/prometheus \ -v ~/dockerdata/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus:latest ``` 你可以使用以下命令查看Prometheus容器的日志:[2] ``` docker logs prometheus ``` 通过访问http://127.0.0.1:9090,你可以访问Prometheus的原生Web界面。你可以在该界面上查看状态信息和配置详解。[2] 如果你想使用docker-compose来管理Prometheus容器,你可以创建一个docker-compose.yaml文件,并添加以下内容:[3] ``` version: '3' services: prometheus: image: prom/prometheus container_name: prometheus volumes: - "/home/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml" - "/etc/localtime:/etc/localtime" ports: - "9090:9090" ``` 然后,你可以使用以下命令启动Prometheus容器:[3] ``` docker-compose up -d ``` 这样,你就可以使用Prometheus进行系统监控和告警了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值