Files
netease-bedrock-wiki/mcguide/27-手机网络游戏/课程9:服务器上线/第5节:Grafana监控进阶功能.md
2025-07-31 17:53:14 +08:00

7.3 KiB
Raw Blame History

front, hard, time
front hard time
进阶 60分钟

Grafana监控进阶功能

预设Dashboard说明

  • 下面是一些官方预设的Dashboard的统计图表说明

Dashboard--在线状态

  • 此Dashboard上实时显示了对应游戏的在线人数是最重要的指标一般任何服务器的异常最终都会在在线人数上体现出来

图表--master统计的在线人数

  • lobby人数master统计到的所有lobby类型服务器进程的在线人数之和
  • game人数master统计到的所有game类型服务器进程的在线人数之和
  • proxy连接数master统计到的所有proxy服务器进程的在线人数之和所有的客户端都直接与porxy保持连接proxy连接数会大于lobby人数与game人数的和因为还有部分玩家处于登录中或者转服过程中不属于任何具体的lobby或game服务器。
  • 总在线人数等于lobby人数与game人数的和也就是实际的在线玩家数

图表--master统计的登录登出人数

  • 全服登录每10秒为一个区间玩家登录成功的人数
  • 全服登出每10秒为一个区间玩家离线登出的人次
  • 全服转服每10秒为一个区间玩家转服的人次

Dashboard--服务器状态

  • 此Dashboard上实时显示了各个服务器的状态
  • 状态--10有效的服务器配置中存在且未通过滚动更新关闭已连接状态唯一的正常状态
  • 状态--0服务器不存在配置中不存在或者已经通过滚动更新关闭
  • 状态--1有效的服务器断线状态
  • 状态--3有效的服务器正在强制关服
  • 状态--4有效的服务器正在优雅关服
  • 状态--5部署中的候选服检查ok会成为正常服务器
  • 状态--6滚动更新中的候选服检查ok后状态会切换为滚动更新就绪
  • 状态--7滚动更新就绪状态服务器不会对外提供服务滚动服都就绪后统一切换为正常服

图表--Proxy状态

  • 所有代理服的状态图表

图表--Lobby状态

  • 所有大厅服的状态图表

图表--Game状态

  • 所有游戏服的状态图表因为不同的项目游戏服的具体type都不同所以需要服主自己去设置具体需要关注的游戏服的type

Dashboard--当前服务器状态

图表--Proxy状态

  • 所有代理服的状态图表,与服务器状态中的Proxy状态相同

图表--Lobby状态

  • 所有大厅服的状态图表,与服务器状态中的Lobby状态相同

图表--异常状态的服务器

  • 所有状态异常的服务器状态不为10的服务器的列表假如有某个服务器长期处于异常状态或者长期都有很多服务器都处于异常状态那么多半是服务器确实出了问题

新增Dashboard--进程性能监控

  • 服务器管理人员额外提供了服务器进程相关的一些监控数据但是默认的Dashboard中并没有预设对应的监控图表需要的服主可以参考下面的指引创建对应的监控图表

新增统计图表--进程基本内存监控

  • 步骤1点击左上角的**+号,选择Create Dashboard**
  • 步骤2然后点击Add Query,新增一个新的图表
  • 步骤3点击图中的铅笔状图标,切换进入SQL模式
  • 步骤4在查询语句中填入下面的SQL语句并且在ALIAS BY中填入**$tag_process_name**
SELECT mean("memory_rss") FROM "procstat" WHERE $timeFilter GROUP BY time(10s), "process_name" fill(null)

  • 步骤5点击左边的第二个图标切换到Visualization配置
  • 步骤6Draw Modes中,选择Fill=0(不填充曲线,看起来清晰点);以及Line Width=1(由于服务器进程一般较多,曲线不宜太粗)
  • 步骤7Axes中,Unit中选择Data(IEC)-bytes左边Y轴的数值标注的单位会显示为KBMB
  • 步骤8Legend中,打开As TableTo the right的开关(会将服务器进程名和对应的内存数据显示在图标的右方);以及AvgCurrent的开关(进程内存占用会显示当前值与平均值)
  • 步骤9点击左边的第三个图标切换到General配置,在Title中可以配置这个统计图的名称
  • 步骤10修改Title之后,点击右上角的磁盘图标保存这个Dashboard
  • 步骤11把新增的Dashboard命名为进程性能监控,然后点击Save
  • 步骤12当前在名为进程性能监控Dashboard上,有一个名为进程基本内存监控的图表这个图表可以像windows的窗口一样通过拖动边框调整尺寸

新增统计图表--进程基本CPU监控

  • 点击右上角最左边的图标,可以在现有Dashboard上新增一个统计图表
  • 重复上面的步骤2——步骤10可以新增进程基本的CPU监控图表唯一不太一样的是步骤4中的SQL语句与步骤7Unit单位
  • 进程基本CPU监控步骤4中的SQL语句为
SELECT mean("cpu_usage") FROM "procstat" WHERE $timeFilter GROUP BY time(1m), "process_name" fill(null)
  • 进程基本CPU监控步骤7中的Axes配置,UnitMisc--percent(0-100)CPU占用为百分比显示

新增Dashboard--数据库监控

  • 服务器管理人员还额外提供了数据库相关的一些监控数据,需要的服主可以参考下面的指引创建对应的监控图表

新增统计图表--MySQL 内存使用率

  • 对应SQL语句为
SELECT mean("memory_usage") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)

新增统计图表--MySQL CPU使用率

  • 对应SQL语句为
SELECT mean("disk_usage") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)

新增统计图表--MySQL 负载

  • 对应SQL语句为
SELECT mean("qps") FROM "project"."mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)

新增统计图表--MySQL 慢请求

  • 对应SQL语句为
SELECT mean("slow_queries") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)

新增统计图表--MySQL 磁盘用量

  • 对应SQL语句为
SELECT mean("disk_usage") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)

新增统计图表--MySQL 连接数

  • 对应SQL语句为
SELECT mean("connected_clients") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)

新增统计图表--Redis CPU使用率

  • 对应SQL语句为注意这里的host需要根据具体分配的Redis数据库来设置
SELECT mean("cpu_usage") FROM "redis" WHERE ("host" = 'redis-senior01-xxxxx') AND $timeFilter GROUP BY time(1m) fill(null)