Files
netease-modsdk-wiki/docs/mcguide/27-网络游戏/课程5:实用知识/第5节:Grafana监控进阶功能.md
2025-03-17 13:24:39 +08:00

129 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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人数的和也就是实际的在线玩家数
![](./images/grafana_help_15.png)
#### 图表--master统计的登录登出人数
* 全服登录每10秒为一个区间玩家登录成功的人数
* 全服登出每10秒为一个区间玩家离线登出的人次
* 全服转服每10秒为一个区间玩家转服的人次
![](./images/grafana_help_16.png)
### Dashboard--服务器状态
* 此Dashboard上实时显示了各个服务器的状态
* 状态--10有效的服务器配置中存在且未通过滚动更新关闭已连接状态唯一的正常状态
* 状态--0服务器不存在配置中不存在或者已经通过滚动更新关闭
* 状态--1有效的服务器断线状态
* 状态--3有效的服务器正在强制关服
* 状态--4有效的服务器正在优雅关服
* 状态--5部署中的候选服检查ok会成为正常服务器
* 状态--6滚动更新中的候选服检查ok后状态会切换为滚动更新就绪
* 状态--7滚动更新就绪状态服务器不会对外提供服务滚动服都就绪后统一切换为正常服
#### 图表--Proxy状态
* 所有代理服的状态图表
![](./images/grafana_help_18.png)
#### 图表--Lobby状态
* 所有大厅服的状态图表
![](./images/grafana_help_19.png)
#### 图表--Game状态
* 所有游戏服的状态图表因为不同的项目游戏服的具体type都不同所以需要服主自己去设置具体需要关注的游戏服的type
![](./images/grafana_help_20.png)
### Dashboard--当前服务器状态
#### 图表--Proxy状态
* 所有代理服的状态图表,与**服务器状态**中的**Proxy状态**相同
![](./images/grafana_help_21.png)
#### 图表--Lobby状态
* 所有大厅服的状态图表,与**服务器状态**中的**Lobby状态**相同
![](./images/grafana_help_22.png)
#### 图表--异常状态的服务器
* 所有状态异常的服务器状态不为10的服务器的列表假如有某个服务器长期处于异常状态或者长期都有很多服务器都处于异常状态那么多半是服务器确实出了问题
![](./images/grafana_help_17.png)
## 新增Dashboard--进程性能监控
* 服务器管理人员额外提供了服务器进程相关的一些监控数据但是默认的Dashboard中并没有预设对应的监控图表需要的服主可以参考下面的指引创建对应的监控图表
### 新增统计图表--进程基本内存监控
* 步骤1点击左上角的**+**号,选择**Create Dashboard**
![](./images/grafana_help_01.png)
* 步骤2然后点击**Add Query**,新增一个新的图表
![](./images/grafana_help_02.png)
* 步骤3点击图中的**铅笔状图标**,切换进入**SQL**模式
![](./images/grafana_help_03.png)
* 步骤4在查询语句中填入下面的SQL语句并且在**ALIAS BY**中填入**$tag_process_name**
```SQL
SELECT mean("memory_rss") FROM "procstat" WHERE $timeFilter GROUP BY time(10s), "process_name" fill(null)
```
![](./images/grafana_help_04.png)
* 步骤5点击左边的第二个图标切换到**Visualization**配置
![](./images/grafana_help_05.png)
* 步骤6**Draw Modes**中,选择**Fill=0**(不填充曲线,看起来清晰点);以及**Line Width=1**(由于服务器进程一般较多,曲线不宜太粗)![](./images/grafana_help_06.png)
* 步骤7**Axes**中,**Unit**中选择**Data(IEC)-bytes**左边Y轴的数值标注的单位会显示为KBMB
![](./images/grafana_help_07.png)
* 步骤8**Legend**中,打开**As Table**、**To the right**的开关(会将服务器进程名和对应的内存数据显示在图标的右方);以及**Avg**、**Current**的开关(进程内存占用会显示当前值与平均值)
![](./images/grafana_help_08.png)
* 步骤9点击左边的第三个图标切换到**General**配置,在**Title**中可以配置这个统计图的名称
![](./images/grafana_help_09.png)
* 步骤10修改**Title**之后,点击右上角的**磁盘**图标保存这个Dashboard
![](./images/grafana_help_10.png)
* 步骤11把新增的Dashboard命名为**进程性能监控**,然后点击**Save**
![](./images/grafana_help_11.png)
* 步骤12当前在名为**进程性能监控**的**Dashboard**上,有一个名为**进程基本内存监控**的图表这个图表可以像windows的窗口一样通过**拖动边框**调整尺寸
![](./images/grafana_help_12.png)
### 新增统计图表--进程基本CPU监控
* 点击右上角最左边的图标,可以在现有**Dashboard**上新增一个**统计图表**
![](./images/grafana_help_13.png)
* 重复上面的步骤2——步骤10可以新增进程基本的CPU监控图表唯一不太一样的是步骤4中的SQL语句与步骤7Unit单位
* 进程基本CPU监控步骤4中的SQL语句为
```SQL
SELECT mean("cpu_usage") FROM "procstat" WHERE $timeFilter GROUP BY time(1m), "process_name" fill(null)
```
* 进程基本CPU监控步骤7中的**Axes**配置,**Unit**为**Misc--percent(0-100)**CPU占用为百分比显示
![](./images/grafana_help_14.png)
## 新增Dashboard--数据库监控
* 服务器管理人员还额外提供了数据库相关的一些监控数据,需要的服主可以参考下面的指引创建对应的监控图表
### 新增统计图表--MySQL 内存使用率
* 对应SQL语句为
```SQL
SELECT mean("memory_usage") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)
```
### 新增统计图表--MySQL CPU使用率
* 对应SQL语句为
```SQL
SELECT mean("disk_usage") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)
```
### 新增统计图表--MySQL 负载
* 对应SQL语句为
```SQL
SELECT mean("qps") FROM "project"."mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)
```
### 新增统计图表--MySQL 慢请求
* 对应SQL语句为
```SQL
SELECT mean("slow_queries") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)
```
### 新增统计图表--MySQL 磁盘用量
* 对应SQL语句为
```SQL
SELECT mean("disk_usage") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)
```
### 新增统计图表--MySQL 连接数
* 对应SQL语句为
```SQL
SELECT mean("connected_clients") FROM "mysql" WHERE $timeFilter GROUP BY time(1m) fill(null)
```
### 新增统计图表--Redis CPU使用率
* 对应SQL语句为注意这里的**host**需要根据具体分配的Redis数据库来设置
```SQL
SELECT mean("cpu_usage") FROM "redis" WHERE ("host" = 'redis-senior01-xxxxx') AND $timeFilter GROUP BY time(1m) fill(null)
```