docs: update

This commit is contained in:
tangtaoit 2024-12-24 12:45:28 +08:00
parent a347f46e8f
commit 497b55697a
21 changed files with 452 additions and 41 deletions

View File

@ -21,12 +21,12 @@ export const navbar: DefaultTheme.NavItem[] = [
activeMatch: "^/sdk",
items: [
{ text: "iOS", link: "/sdk/iossdk/intro" },
{ text: "Android", link: "/sdk/android" },
{ text: "Android", link: "/sdk/android/intro" },
{ text: "Javascript", link: "/sdk/jssdk/intro" },
{ text: "Flutter", link: "/sdk/flutter" },
{ text: "Flutter", link: "/sdk/flutter/intro" },
{ text: "Uniapp", link: "/sdk/uniapp" },
{ text: "微信小程序", link: "/sdk/smallprogram" },
{ text: "HarmonyOS", link: "/sdk/harmonyos" },
{ text: "HarmonyOS", link: "/sdk/harmonyos/intro" },
],
},
{

View File

@ -103,6 +103,8 @@ export const sidebar: DefaultTheme.Sidebar = {
items: [
{ text: "WSS 配置", link: "/server/config/wss" },
{ text: "认证配置", link: "/server/config/auth" },
{ text: "监控配置", link: "/server/config/monitor" },
{ text: "消息轨迹配置", link: "/server/config/trace" },
],
},
{
@ -124,6 +126,8 @@ export const sidebar: DefaultTheme.Sidebar = {
{ text: "离线消息说明", link: "/server/advance/offlinemsg" },
{ text: "集成到自己系统", link: "/server/advance/integration" },
{ text: "WuKongIM 协议", link: "/server/advance/proto" },
{ text: "部署压力测试", link: "/server/advance/stress" },
// { text: "官方压测报告", link: "/server/advance/stressReport" },
],
},
],
@ -201,7 +205,6 @@ export const sidebar: DefaultTheme.Sidebar = {
{ text: "高级功能", link: "/sdk/jssdk/advance" },
]
},
{ text: "Uniapp", link: "/sdk/uniapp" },
{
text: "Flutter",
collapsed: true,
@ -239,5 +242,6 @@ export const sidebar: DefaultTheme.Sidebar = {
{ text: "示例代码", link: "https://github.com/WuKongIM/WuKongIMHarmonyOSSDK/tree/main/entry" },
]
},
{ text: "Uniapp", link: "/sdk/uniapp" },
]
};

View File

@ -1,14 +1,14 @@
FROM node:18.0.0 as builder
FROM node:20.9.0 as builder
WORKDIR /app
RUN curl -o- -L https://yarnpkg.com/install.sh | bash
RUN npm install -g pnpm
COPY package.json .
COPY yarn.lock .
COPY pnpm-lock.yaml .
# https://registry.npmjs.org/ https://registry.npm.taobao.org
# RUN yarn config set registry https://registry.npm.taobao.org -g
# RUN yarn config set disturl https://npm.taobao.org/dist
RUN yarn install
RUN pnpm install
COPY . .
RUN yarn build
RUN pnpm build
FROM nginx:latest
COPY --from=builder /app/docker-entrypoint.sh /docker-entrypoint2.sh

View File

@ -68,6 +68,10 @@ services:
#### 3. 配置负载均衡
`将以下配置的10.206.0.1010.206.0.1210.206.0.5 三个IM节点的内网地址分别替换你自己节点1节点2节点3的内网ip`
`将以下配置的119.45.33.109 替换成负载均衡的外网IP`
`gateway`节点的安装目录(`~/gateway`)里创建`nginx.conf`文件,内容如下:
```nginx
@ -78,7 +82,10 @@ error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll; # 使用 epoll (Linux) 或 kqueue (BSD),适用于高并发环境
worker_connections 4096; # 每个 worker 进程最大连接数
multi_accept on; # 每次接收多个连接
accept_mutex off; # 禁用 accept_mutex 提高性能
}
http {
include /etc/nginx/mime.types;
@ -157,8 +164,8 @@ http {
proxy_pass http://wukongimws;
proxy_redirect off;
proxy_http_version 1.1;
# nginx接收upstream server数据超时, 默认120s, 如果连续的120s内没有收到1个字节, 连接关闭
proxy_read_timeout 120s;
# nginx接收upstream server数据超时, 默认180s, 如果连续的180s内没有收到1个字节, 连接关闭
proxy_read_timeout 180s;
# nginx发送数据至upstream server超时, 默认120s, 如果连续的120s内没有发送1个字节, 连接关闭
proxy_send_timeout 120s;
# nginx与upstream server的连接超时时间
@ -190,6 +197,8 @@ stream {
#### 4. 配置监控
`将以下配置的10.206.0.1010.206.0.1210.206.0.5 三个IM节点的内网地址分别替换你自己节点1节点2节点3的内网ip`
`gateway`节点的安装目录(`~/gateway`)里创建`prometheus.yml`文件,内容如下:
```yaml
@ -232,6 +241,9 @@ mkdir ~/wukongim
`node1`节点上的安装目录(`~/wukongim`)里创建`docker-compose.yml`文件,内容如下:
`在以下配置的10.206.0.1010.206.0.1210.206.0.5分别替换成你节点1节点2节点3的内网IP119.45.33.109替换成你负载均衡的外网IP10.206.0.2替换成监控的内网地址`
```yaml
version: '3.7'
services:
@ -240,7 +252,7 @@ services:
environment:
- "WK_MODE=release" # release模式
- "WK_CLUSTER_NODEID=1" # 节点id不能大于等于1024
- "WK_EXTERNAL_IP=146.56.249.208" # 当前节点外网ip
- "WK_INTRANET_TCPADDR=10.206.0.10:5100" # 内网长连接地址
- "WK_CLUSTER_APIURL=http://10.206.0.10:5001" # 节点内部通信api url地址这里ip换成自己节点实际的内网ip
- "WK_CLUSTER_SERVERADDR=10.206.0.10:11110" # 节点内部通信请求地址
- "WK_EXTERNAL_WSADDR=ws://119.45.33.109:15200" # web端访问的ws长连接地址这里设置负载均衡的地址即可这样让负载均衡来分配WuKongIM节点
@ -269,6 +281,9 @@ services:
`node2`节点上的安装目录(`~/wukongim`)里创建`docker-compose.yml`文件,内容如下:
`在以下配置的10.206.0.1010.206.0.1210.206.0.5分别替换成你节点1节点2节点3的内网IP119.45.33.109替换成你负载均衡的外网IP10.206.0.2替换成监控的内网地址`
```yaml
version: '3.7'
services:
@ -277,11 +292,11 @@ services:
environment:
- "WK_MODE=release"
- "WK_CLUSTER_NODEID=2"
- "WK_EXTERNAL_IP=129.211.171.99"
- "WK_CLUSTER_APIURL=http://10.206.0.12:5001"
- "WK_CLUSTER_SERVERADDR=10.206.0.12:11110"
- "WK_EXTERNAL_WSADDR=ws://119.45.33.109:15200"
- "WK_EXTERNAL_TCPADDR=119.45.33.109:15100"
- "WK_INTRANET_TCPADDR=10.206.0.12:5100"
- "WK_TRACE_PROMETHEUSAPIURL=http://10.206.0.2:9090"
- "WK_CLUSTER_INITNODES=1@10.206.0.10 2@10.206.0.12 3@10.206.0.5" # 集群节点列表
healthcheck:
@ -307,6 +322,8 @@ services:
`node3`节点上的安装目录(`~/wukongim`)里创建`docker-compose.yml`文件,内容如下:
`在以下配置的10.206.0.1010.206.0.1210.206.0.5分别替换成你节点1节点2节点3的内网IP119.45.33.109替换成你负载均衡的外网IP10.206.0.2替换成监控的内网地址`
```yaml
version: '3.7'
services:
@ -315,11 +332,11 @@ services:
environment:
- "WK_MODE=release"
- "WK_CLUSTER_NODEID=3"
- "WK_EXTERNAL_IP=119.45.175.82"
- "WK_CLUSTER_APIURL=http://10.206.0.5:5001"
- "WK_CLUSTER_SERVERADDR=10.206.0.5:11110"
- "WK_EXTERNAL_WSADDR=ws://119.45.33.109:15200"
- "WK_EXTERNAL_TCPADDR=119.45.33.109:15100"
- "WK_INTRANET_TCPADDR=10.206.0.5:5100"
- "WK_TRACE_PROMETHEUSAPIURL=http://10.206.0.2:9090"
- "WK_CLUSTER_INITNODES=1@10.206.0.10 2@10.206.0.12 3@10.206.0.5"
healthcheck:

View File

@ -123,7 +123,10 @@ pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll; # 使用 epoll (Linux) 或 kqueue (BSD),适用于高并发环境
worker_connections 40960; # 每个 worker 进程最大连接数
multi_accept on; # 每次接收多个连接
accept_mutex off; # 禁用 accept_mutex 提高性能
}

View File

@ -22,11 +22,11 @@
::: code-group
``` bash [amd64]
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.5-20240925/wukongim-linux-amd64
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.7-20241104/wukongim-linux-amd64
```
``` bash [arm64]
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.5-20240925/wukongim-linux-arm64
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.7-20241104/wukongim-linux-arm64
```
:::

View File

@ -39,11 +39,11 @@ WuKongIM集群符合 `2n+1` 原则n表示宕机数量比如允许1台机
::: code-group
``` bash [amd64]
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.5-20240925/wukongim-linux-amd64
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.7-20241104/wukongim-linux-amd64
```
``` bash [arm64]
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.5-20240925/wukongim-linux-arm64
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.7-20241104/wukongim-linux-arm64
```
:::

View File

@ -20,11 +20,11 @@
::: code-group
``` bash [amd64]
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.5-20240925/wukongim-linux-amd64
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.7-20241104/wukongim-linux-amd64
```
``` bash [arm64]
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.5-20240925/wukongim-linux-arm64
curl -L -o wukongim https://github.com/WuKongIM/WuKongIM/releases/download/v2.0.7-20241104/wukongim-linux-arm64
```
:::

View File

@ -1501,7 +1501,7 @@ public class WKReminder {
public String messageID; // 消息ID
public String channelID; // 频道ID
public byte channelType; // 频道类型
public long messageSeq; // 消息序列号(用户唯一,有序)
public long messageSeq; // 消息序列号
public int type; // 提醒类型[1、有人@你][2、群内审核] 等
public int isLocate; // 是否需要进行消息定位
public String text; // 提醒文本

View File

@ -25,21 +25,13 @@ NSArray<WKConversation*> *conversations = [[WKSDK shared].conversationManager ge
WKConversationManagerDelegate说明
```objc
/**
当最近会话被新增的时候会调用此方法
@param conversation 最近会话对象
@param left 会话剩余数量 UI层可以判断left == 0 的时候才刷新 避免频繁刷新UI导致卡顿
*/
- (void)onConversationAdd:(WKConversation*)conversation left:(NSInteger)left;
/**
当最近会话对象更新的时候会调用此方法
@param conversation 最近会话对象
@param left 会话剩余数量 UI层可以判断left == 0 的时候才刷新 避免频繁刷新UI导致卡顿
@param conversations 最近会话集合
*/
- (void)onConversationUpdate:(WKConversation*)conversation left:(NSInteger)left;
- (void)onConversationUpdate:(NSArray<WKConversation*>*)conversations;
/**
最近会话未读数发送改变

Binary file not shown.

After

Width:  |  Height:  |  Size: 325 KiB

View File

@ -438,7 +438,7 @@ CONNACK 报文由服务端所发送,作为对来自客户端的 CONNECT 报文
<tr>
<td>Message Seq</td>
<td>uint32</td>
<td>消息序号(有序递增,用户唯一)</td>
<td>消息序号(有序递增,频道唯一)</td>
</tr>
<tr>
<td>Reason Code</td>
@ -634,7 +634,7 @@ CONNACK 报文由服务端所发送,作为对来自客户端的 CONNECT 报文
<tr>
<td>Message Seq</td>
<td>uint32</td>
<td>服务端的消息序列号(有序递增,用户唯一)</td>
<td>服务端的消息序列号(有序递增,频道唯一)</td>
</tr>
<tr>

Binary file not shown.

After

Width:  |  Height:  |  Size: 549 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 KiB

View File

@ -0,0 +1,254 @@
# 压力测试
`WuKongIM压测功能只有大于或等于v2.0.7-20241104的版本才有`
## 服务器开启压力配置
WuKongIM服务新增配置
::: code-group
```yaml[wk.yaml]
...
stress: true
intranet:
tcpAddr: "ip:port"
...
```
```yaml[environment]
WK_STRESS=true
WK_INTRANET_TCPADDR=ip:port
```
:::
配置说明:
`stress`
> 开启压测配置,只有开启后服务器才能被压测
`intranet.tcpAddr`
> 没配置负载均衡(单机模式):`tcpAddr` 为WuKongIM服务器的内网ip + 5100端口例如 192.168.1.12:5100
> 配置了负载均衡(分布式模式):`tcpAddr` 为负载均衡的内网ip + 15100端口 例如192.168.1.11:15100
## 安装压测机
**配置**
压测机需要内存比较大的服务器建议4核16G或以上。
**安装**
1. 下载执行文件
::: code-group
``` bash [amd64]
sudo curl -L -o wkstress https://github.com/WuKongIM/StressTester/releases/download/v1.0.0/wkstress-linux-amd64
```
``` bash [arm64]
sudo curl -L -o wkstress https://github.com/WuKongIM/StressTester/releases/download/v1.0.0/wkstress-linux-arm64
```
:::
2. 修改执行文件权限
``` bash
sudo chmod +x wkstress
```
**运行**
```bash
nohup ./wkstress &
```
`端口为9466`
**停止**
```bash
kill -9 $(lsof -t -i :9466)
```
## 开始压测
1. 添加压测机器
地址为: http://ip:9466 ip为压测机器的`内网ip`,如下图
![添加压测机](addTester.png)
2. 设置压测指标并运行,如下图
![运行压测](runTester.png)
## 查看压测报告
![报告](report.png)
报告字段解释:
**测试指标**
```
表示当前压测机测试的压测数据。
```
**测试报告**
```
运行时长:开始压测的持续时长
在线人数:模拟的同时在线人数
离线人数:模拟的在线人数,已经掉线的人数
发送消息:向服务器发送的消息总数量
发送速率:向服务器发送消息的当前速率
发送大小:发送消息的总大小
发送流量:发送消息的当前带宽实时流量
发送成功:向服务器发送消息后,收到服务器的响应成功的消息数量
发送错误:向服务器发送消息后,收到服务器的响应失败的消息数量
发送最小延迟:发送消息到服务器至收到服务器响应的来回耗时的最小值称为最小延迟
发送最大延迟:发送消息到服务器至收到服务器响应的来回耗时的最大值称为最大延迟
发送平均延迟:发送消息到服务器至收到服务器响应的来回耗时的平均值称为平均延迟
接收消息:收到消息的总数量
接收速率:收到消息的当前速率
接收大小:收到消息的总大小
接收流量:收到消息的当前带宽流量
接收最小延迟:发送消息到订阅者收到消息的最小耗时称为最小延迟
接收最大延迟:发送消息到订阅者收到消息的最大耗时称为最大延迟
接收平均延迟:发送消息到订阅者收到消息的平均耗时称为平均延迟
```
## 报告分析
核心指标分析
### 发送速率
也称之为发送消息并发数
描述:
> 此指标能呈现服务器能同时处理消息的并发能力, 数值越大,服务器的并发能力越强,能同时支持同一秒发送消息的人数越多。
根据如下算法,可以大概推算出`发送速率``日活用户数DAU`的关系
```
峰值并发数=DAU×峰值活跃用户比例×每用户发送速率
```
假设:
* 每日活跃用户数DAU10万人
* 峰值在线用户比例大概是10%20%。取15%
* 每分钟用户的发送速率 = 6条/分钟 = 0.1条/秒
则:
`峰值发消息并发数=100,000×0.15×0.1=1500条/秒`
结论:
`发送速率在1500条/秒左右大约能支持10万日活用户数。`
> 通过调整峰值在线用户比例和每用户发送速率大概能推算出自己的峰值发送速率,间接的可以通过压测机来验证服务器是否能达标自己的用户日活要求。
### 接收速率
也称之为接收消息并发数
描述:
> 此指标能呈现服务器能同时投递消息的能力, 数值越大,服务器的并发能力越强,能同时支持的单聊,群聊数越多。
如果是群聊场景或广播场景,一条消息可能会被多个用户接收。因此接收并发数也需要计算:
```
峰值接收消息并发数=峰值活跃群数量×每群的平均在线成员数量×每群内的消息发送频率
```
假设:
* 每日活跃群聊数量10,000个
* 每群平均在线成员数量20人
* 峰值活跃群数量大概是10%20%。取15%
* 每群内的消息发送频率0.5条/秒
则:
`峰值接收消息并发数=10,000 × 20 × 0.15 x 0.5 = 15,000条/秒`
结论:
`消息接收速率在15,000条/秒左右大约能支持日活1万个每群在线成员数20人的群聊`
> 通过此公式 + 压测机 + 日活跃群聊数,能压测出需要的服务器资源配置。
### 发送成功和错误
`发送成功和失败`是指客户端发送消息开始到服务器收到并存储完成后返回给客户端成功与否的结果。
`此指标能体现服务器的健康程度,发送成功率越高说明系统越健康。`
### 发送和接收平均延迟
`此指标能观测出服务器的稳定性`
平均延迟越小系统越稳定。
### 发送成功和期望收到消息数量
`此指标能观测有没有漏消息`
期望收到消息数量,点击接受消息指标旁边的问号就能查看。
当停止压测后,再点击查看报告,如果报告里的发送成功消息数等于期望收到消息数量,则表示消息全部被订阅客户端接收到。
`注意:此指标只有在 发送消息 = 发送成功,的时候期望收到消息的指标才有意义`
### 发送流量和接收流量
`此指标能观测出服务器需要支持的带宽的大小`
## 常见问题
1. 长连接上不去,达到几千后,连接数就不再增加了,是什么原因?
```
回答修改WuKongIM和nginx服务器的文件描述符限制
查看当前文件描述符限制:
ulimit -n
临时修改文件描述符限制:
ulimit -n 100000
永久修改文件描述符限制: 编辑 /etc/security/limits.conf 文件,加入以下行:
* soft nofile 100000
* hard nofile 100000
修改nginx配置里的worker_connections可以改为40960左右
```

View File

@ -0,0 +1,77 @@
# 压力测试报告
## 测试目标
### 稳定性
目标描述
测试内容
期望结果
### 可靠性
目标描述
测试内容
期望结果
### 有序性
目标描述
测试内容
期望结果
### 并发量
目标描述
测试内容
期望结果
## 部署说明
3台16核16G的Ubuntu服务器分布式部署WuKongIM
1台8核16G的Ubuntu服务器部署负载均衡nginx
1台8核32G的Ubuntu服务器部署压测机
## 稳定性测试
**测试数据:**
> 5万人在线 + 1000个200人群 + 1000个单聊每个群内和单聊1秒钟刷一条消息持续12小时观察服务是否稳定。
**测试截图:**
**测试报告截图:**
**报告结果分析:**
## 可靠性测试
## 有序性测试
## 并发测试
## 说明
以上测试,均可自行部署压测机进行验证,文档:[部署压测机](stress.html)

View File

@ -134,7 +134,7 @@ start_message_seq=100 end_message_seq=0 limit=10 以limit为准则返回的me
"setting": 0, // 消息设置 消息设置是一个 uint8的数字类型 为1个字节完全由第三方自定义 比如定义第8位为已读未读回执标记开启则为0000 0001 = 1
"message_id": 122323343445, // 消息全局唯一ID
"client_msg_no": "xxxxx", // 客户端消息编号,可用此字段去重
"message_seq": 1, // 消息序列号 用户唯一,有序递增)
"message_seq": 1, // 消息序列号 频道唯一,有序递增)
"from_uid": "xxxx", // 发送者用户id
"channel_id": "xxxx", // 频道ID
"channel_type": 2, // 频道类型 1.个人频道 2.群频道
@ -174,7 +174,7 @@ start_message_seq=100 end_message_seq=0 limit=10 以limit为准则返回的me
"setting": 0, // 消息设置 消息设置是一个 uint8的数字类型 为1个字节完全由第三方自定义 比如定义第8位为已读未读回执标记开启则为0000 0001 = 1
"message_id": 122323343445, // 消息全局唯一ID
"client_msg_no": "xxxxx", // 客户端消息编号,可用此字段去重
"message_seq": 1, // 消息序列号 用户唯一,有序递增)
"message_seq": 1, // 消息序列号 频道唯一,有序递增)
"from_uid": "xxxx", // 发送者用户id
"channel_id": "xxxx", // 频道ID
"channel_type": 2, // 频道类型 1.个人频道 2.群频道

View File

@ -45,7 +45,7 @@ body的数据类似为 [uid1-0-1,uid2-1-0]
`事件名msg.offline`
事件数据:消息数组
事件数据:MessageResp消息对象
```go
@ -55,7 +55,7 @@ type MessageResp struct {
MessageID int64 `json:"message_id"` // 服务端的消息ID(全局唯一)
MessageIDStr string `json:"message_idstr"` // 字符串类型服务端的消息ID(全局唯一)
ClientMsgNo string `json:"client_msg_no"` // 客户端消息唯一编号
MessageSeq uint32 `json:"message_seq"` // 消息序列号 用户唯一,有序递增)
MessageSeq uint32 `json:"message_seq"` // 消息序列号 频道唯一,有序递增)
FromUID string `json:"from_uid"` // 发送者UID
ChannelID string `json:"channel_id"` // 频道ID
ChannelType uint8 `json:"channel_type"` // 频道类型
@ -82,7 +82,7 @@ type MessageResp struct {
MessageID int64 `json:"message_id"` // 服务端的消息ID(全局唯一)
MessageIDStr string `json:"message_idstr"` // 字符串类型服务端的消息ID(全局唯一)
ClientMsgNo string `json:"client_msg_no"` // 客户端消息唯一编号
MessageSeq uint32 `json:"message_seq"` // 消息序列号 用户唯一,有序递增)
MessageSeq uint32 `json:"message_seq"` // 消息序列号 频道唯一,有序递增)
FromUID string `json:"from_uid"` // 发送者UID
ChannelID string `json:"channel_id"` // 频道ID
ChannelType uint8 `json:"channel_type"` // 频道类型

View File

@ -10,7 +10,7 @@
```yaml
## 配置是yaml格式请严格注意缩进.
mode: "release" # 运行模式 模式 debug 测试 release 正式 bench 压力测试
mode: "release" # 运行模式 模式 debug 测试 release 正式
addr: "tcp://0.0.0.0:5100" # tcp监听地址
httpAddr: "0.0.0.0:5001" # http api的监听地址 默认0.0.0.0:5001
rootDir: "./wukongimdata" # 数据存储目录
@ -21,6 +21,7 @@ wsAddr: "ws://0.0.0.0:5200" # websocket ws 监听地址
wssAddr: "wss://0.0.0.0:5210" # websocket wss 监听地址 如果打开则需要进行 wssConfig相关的证书配置
whitelistOffOfPerson: true # 是否关闭个人白名单 默认为true表示关闭个人白名单的验证
ginMode: "release" # gin框架的模式 debug 调试 release 正式 test 测试
stress: false # 是否开启压力测试模式 默认为false
external: # 公网配置
ip: "" # 节点外网IP客户端能够访问到的IP地址如果客户端是内网使用这里也可以填写内网IP
tcpAddr: "" # 默认自动获取, 节点的TCP地址 对外公开APP端长连接通讯 格式: ip:port

View File

@ -0,0 +1,50 @@
# 监控配置
WuKongIM 支持 prometheus 监控,可以通过配置文件或者环境变量来配置 prometheus 的地址。
## `prometheus` 配置
`prometheus` 配置`WuKongIM`的 prometheus 的地址, 例如:
```yaml
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: wukongim1-trace-metrics
static_configs:
- targets: ['node1.example.local:5300']
labels:
id: "1"
- job_name: wukongim2-trace-metrics
static_configs:
- targets: ['node2.example.local:5300']
labels:
id: "2"
- job_name: wukongim3-trace-metrics
static_configs:
- targets: ['node3.example.local:5300']
labels:
id: "3"
```
job_name: 监控名字 建议命名规则为 wukongim[节点Id]-trace-metrics
targets: `WuKongIM`的 prometheus 监控地址 例如:`xxx.xxx.xxx.xxx:5300`
labels: id 为节点Id
## `WuKongIM` 配置
`WuKongIM`配置文件中配置 prometheus 的地址, 例如:
```yaml
trace: # 数据追踪
prometheusApiUrl: "http://xx.xx.xx.xx:9090" # prometheus的内网地址,用于获取监控数据
```

View File

@ -0,0 +1,13 @@
# 轨迹日志配置
消息轨迹是通过收集日志发给`Loki`来分析的,所以需要配置`Loki`的地址
```yaml
logger:
traceOn: true # 开启轨迹日志
loki:
url: "http://xxx.xxx.xxx.xxx:3100" # loki服务的地址
```