This commit is contained in:
vongosling
2021-08-26 16:40:30 +08:00
parent b1752d6dd6
commit ef25e37ca6
4 changed files with 0 additions and 1 deletions

102
docs/1_0_0/Milestone.md Normal file
View File

@@ -0,0 +1,102 @@
#Deploy Plan
we will deploy the first rocketmq-console-ng use rocketmq-tools 3.5.8(or 4.0.0),base on [rocket-console](https://github.com/didapinchegit/rocket-console)thanks didapinche.com
## Framework
* 0. we use spring-boot + bootstrap + angularjs
## something to improve
* 0. clean code (checkStyle codeStyle to be done)
* 1. international
* 2. compress fe'resource
* 3. navigation bar can improve
* 4. write operation need confirm,action show the detail result
* 5. layout/UI should improve
* 6. change to spring-boot
## something to fix
* query Message by topic and time is not accurate will lost some message
* consumer can consume the message when topic has been deleted
* can't show producerList,we can only query a online producer use topic and groupName,not easy to use.
* resetOffset should be improve,online consumer can return the reset result but offline's can't
* we can't set clusterName when create topic or consumer
* when create a new consumer,if not be consumed,can't be found in consumerList
## something to add
* 1. dashboard
# Roadmap
## Improve
- [x] clean code (checkStyle codeStyle to be done) -- StyleTang
- [x] international -- Deploy by [tcrow](https://github.com/tcrow)
- [x] layout/UI -- Deploy by [tcrow](https://github.com/tcrow)
- [x] compress fe'resource
- [x] navigation bar can improve
- [x] write operation need confirm,action show the detail result || already have
- [x] layout/UI should improve
- [x] change to spring-boot -- Deploy by syzjava
- [x] change to bootstrap angularjs -- Deploy by [tcrow](https://github.com/tcrow)
- [x] improve search message --StyleTang
## Fix
- [x] query Message by topic and time is not accurate will lost some message -- StyleTang (need test)
- [x] consumer can consume the message when topic has been deleted // offset be clear.if have problem,reopen it.
- [ ] can't show producerList,we can only query a online producer use topic and groupName,not easy to use. [need this issues](https://issues.apache.org/jira/browse/ROCKETMQ-49)(next milestone)
- [ ] resetOffset should be improve,online consumer can return the reset result but offline's can't //this version(3.5.8) may be can't fix (next milestone)
- [x] we can't set clusterName when create topic or consumer -- StyleTang
- [x] when create a new consumer,if not be consumed,can't be found in consumerList //it Fixed,But this page is too slow,need improve --StyleTang
- [x] message view page,resend message (version >=3.5.8) have bug -- StyleTang
## Add
- [ ] DashboardController -- Deploy by [tcrow](https://github.com/tcrow)
- [x] rocketmq topic tps 5m line chart
- [x] rocketmq topic top10 table
- [x] broker load 5m line chart
- [x] broker load top10 table
- [ ] topic exception table(next milestone)
## Already Have (Deploy by StyleTang) But Can Improve
### Cluster
- [x] ClusterController
- [x] Cluster OverView
- [x] Broker Status
- [x] Broker Config
### Topic
- [x] TopicController
- [x] TopicList
- [x] Topic Status
- [x] Topic Router
- [x] View Topic Config
- [x] Topci Add / Update
- [X] Send A Test Topic
- [x] Reset ConsumerGroup's Offset Under This Topic
- [x] Delete This Topic
### Producer
- [x] ProducerController
- [x] Producer Client Info
### Consumer
- [x] ConsumerController
- [x] ConsumerList
- [x] Consumer Client Info
- [x] Topic Consume Status Under This Consumer Group
- [x] View Consumer Config
- [x] Consumer Add / Update
- [x] Delete This Consumer
### Message
- [x] MessageController
- [x] Query By Topic And Time
- [x] Query By Topic And Key
- [x] Query By MessageId(OffsetMessageId)
- [x] A Nice Message Detail View
- [x] Message Consume Status
- [x] Resend Message To A Consume Group

115
docs/1_0_0/UserGuide_CN.md Executable file
View File

@@ -0,0 +1,115 @@
# RocketMQ使用文档
## 运维页面
* 你可以修改这个服务使用的namesrv的地址
* 你可以修改这个服务是否使用VIPChannel(如果你的mq server版本小于3.5.8,请设置不使用)
## 驾驶舱
* 查看broker的消息量总量/5分钟图
* 查看单一主题的消息量(总量/趋势图)
## 集群页面
* 查看集群的分布情况
* cluster与broker关系
* broker
* 查看broker具体信息/运行信息
* 查看broker配置信息
## 主题页面
* 展示所有的主题,可以通过搜索框进行过滤
* 筛选 普通/重试/死信 主题
* 添加/更新主题
* clusterName 创建在哪几个cluster上
* brokerName 创建在哪几个broker上
* topicName 主题名
* writeQueueNums 写队列数量
* readQueueNums 读队列数量
* perm //2是写 4是读 6是读写
* 状态 查询消息投递状态投递到哪些broker/哪些queue/多少量等)
* 路由 查看消息的路由现在你发这个主题的消息会发往哪些broker对应broker的queue信息
* CONSUMER管理这个topic都被哪些group消费了消费情况何如
* topic配置查看变更当前的配置
* 发送消息(向这个主题发送一个测试消息)
* 重置消费位点(分为在线和不在线两种情况,不过都需要检查重置是否成功)
* 删除主题 会删除掉所有broker以及namesrv上的主题配置和路由信息
## 消费者页面
* 展示所有的消费组,可以通过搜索框进行过滤
* 刷新页面/每隔五秒定时刷新页面
* 按照订阅组/数量/TPS/延迟 进行排序
* 添加/更新消费组
* clusterName 创建在哪几个集群上
* brokerName 创建在哪几个broker上
* groupName 消费组名字
* consumeEnable //是否可以消费 FALSE的话将无法进行消费
* consumeBroadcastEnable //是否可以广播消费
* retryQueueNums //重试队列的大小
* brokerId //正常情况从哪消费
* whichBrokerWhenConsumeSlowly//出问题了从哪消费
* 终端 在线的消费客户端查看,包括版本订阅信息和消费模式
* 消费详情 对应消费组的消费明细查看这个消费组订阅的所有Topic的消费情况每个queue对应的消费client查看包括Retry消息
* 配置 查看变更消费组的配置
* 删除 在指定的broker上删除消费组
## 发布管理页面
* 通过Topic和Group查询在线的消息生产者客户端
* 信息包含客户端主机 版本
## 消息查询页面
* 根据Topic和时间区间查询
*由于数据量大 最多只会展示2000条多的会被忽略
* 根据Topic和Key进行查询
* 最多只会展示64条
* 根据消息主题和消息Id进行消息的查询
* 消息详情可以展示这条消息的详细信息,查看消息对应到具体消费组的消费情况(如果异常,可以查看具体的异常信息)。可以向指定的消费组重发消息。
## HTTPS 方式访问Dashboard
* HTTPS功能实际上是使用SpringBoot提供的配置功能即可完成首先需要有一个SSL KeyStore来存放服务端证书可以使用本工程所提供的测试密钥库:
resources/rmqcngkeystore.jks, 它可以通过如下keytool命令生成
```
#生成库并以rmqcngKey别名添加秘钥
keytool -genkeypair -alias rmqcngKey -keyalg RSA -validity 3650 -keystore rmqcngkeystore.jks
#查看keystore内容
keytool -list -v -keystore rmqcngkeystore.jks
#转换库格式
keytool -importkeystore -srckeystore rmqcngkeystore.jks -destkeystore rmqcngkeystore.jks -deststoretype pkcs12
```
* 配置resources/application.properties, 打开SSL的相关选项, 启动dashboard后即开启了HTTPS.
```
#设置https端口
server.port=8443
### SSL setting
#server.ssl.key-store=classpath:rmqcngkeystore.jks
#server.ssl.key-store-password=rocketmq
#server.ssl.keyStoreType=PKCS12
#server.ssl.keyAlias=rmqcngkey
```
## 登录访问Dashboard
在访问Dashboard时支持按用户名和密码登录控制台在操作完成后登出。需要做如下的设置:
* 1.在Spring配置文件resources/application.properties中修改 开启登录功能
```$xslt
# 开启登录功能
rocketmq.config.loginRequired=true
# Dashboard文件目录登录用户配置文件所在目录
rocketmq.config.dataPath=/tmp/rocketmq-console/data
```
* 2.确保${rocketmq.config.dataPath}定义的目录存在,并且该目录下创建登录配置文件"users.properties", 如果该目录下不存在此文件则默认使用resources/users.properties文件。
users.properties文件格式为:
```$xslt
# 该文件支持热修改即添加和修改用户时不需要重新启动console
# 格式, 每行定义一个用户, username=password[,N] #N是可选项可以为0 (普通用户) 1 (管理员)
#定义管理员
admin=admin,1
#定义普通用户
user1=user1
user2=user2
```
* 3. 启动控制台则开启了登录功能

118
docs/1_0_0/UserGuide_EN.md Normal file
View File

@@ -0,0 +1,118 @@
# RocketMQ User Guide
## OPS Page
* You can change dashboard's namesrvAddr here
* You can change the value of useVIPChannel here (if you rocketMQ version < 3.5.8,the value of useVIPChannel should be false)
## DashBoard Page
* broker's message count (broker total message count/5 min trend)
* topic's message counttopic total message count/5 min trend
## Cluster Page
* Cluster Detail
* relation between cluster and broker
* broker's master / salve node
* broker'a detail info(runtime info)
* broker's config
## Topic Page
* show all the topics,you can filter topic by search bar
* filter (Normal/retry/dead) topic
* Add/Update Topic
* clusterName (create on which cluster)
* brokerName (create on which broker)
* topicName
* writeQueueNums
* readQueueNums
* perm //2 for write 4 for read 6 for write and read
* STATUS look over message send status(send to which broker/which queue/how many messages)
* ROUTER look update topic's routerthis topic send to which brokerthe broker's queue info
* CONSUMER MANAGEthis topic consume by which group,how about the consume state
* TOPIC CONFIGcheck or change the topic's config
* SEND MESSAGEsend a test message
* Reset CONSUMER OFFSET (the consumer online or not online is different,you need check the reset result)
* DELETE will delete the topic on all broker and namesrv
## Consumer Page
* show all the consumers,you can filter consumer by search bar
* refresh page/refresh page per 5 seconds
* order by SubscriptionGroup/Quantity/TPS/Delay
* Add/Update Consumer
* clusterName (create on which cluster)
* brokerName (create on which broker)
* groupName (consumer group name)
* consumeEnable (this group can't consume message if this is false)
* consumeBroadcastEnable (can't use broadcast is this is false)
* retryQueueNums
* brokerId (consume form where when broker is normal)
* whichBrokerWhenConsumeSlowly(consume form where when broker has problem)
* CLIENT (look over online consumer's client,include subscribe info and consume mode)
* CONSUME DETAIL (look over this consumer's consume detail,broker offset and the consumer offset,queue consumed by which client)
* CONFIG check or change the consumer's config
* DELETE (delete the consumer group on selected group)
## Producer Page
* Query online producer client by topic and group
* show client's server / version
## Message Page
* Query By Topic And Time
*Only Return 2000 Messagesthe message more than 2000 will be hide
* Query By Topic And Key
* Only Return 64 Messages
* Query By Topic And MessageId
* look over this message's detail info.you can see the message's consume state(each group has one line),show the exception message if has exception.
you can send this message to the group you selected
## Access Dashboard with HTTPS
* SpringBoot itself has provided the SSL configuration. You can use the project test Keystore:resources/rmqcngkeystore.jks. The store is generated with the following unix keytool commands:
```
#Generate Keystore and add alias rmqcngKey
keytool -genkeypair -alias rmqcngKey -keyalg RSA -validity 3650 -keystore rmqcngkeystore.jks
#View keystore content
keytool -list -v -keystore rmqcngkeystore.jks
#Transfer type as official
keytool -importkeystore -srckeystore rmqcngkeystore.jks -destkeystore rmqcngkeystore.jks -deststoretype pkcs12
```
* Uncomment the following SSL properties in resources/application.properties. restart Dashboard then access with HTTPS.
```
#Set https port
server.port=8443
### SSL setting
server.ssl.key-store=classpath:rmqcngkeystore.jks
server.ssl.key-store-password=rocketmq
server.ssl.keyStoreType=PKCS12
server.ssl.keyAlias=rmqcngkey
```
## Login/Logout on Dashboard
Access Dashboard with username and password and logout to leave the dashboardTo stage the function on, we need the steps below:
* 1.Turn on the property in resources/application.properties.
```$xslt
# open the login func
rocketmq.config.loginRequired=true
# Directory of ashboard & login user configure file
rocketmq.config.dataPath=/tmp/rocketmq-console/data
```
* 2.Make sure the directory defined in property ${rocketmq.config.dataPath} exists and the file "users.properties" is created under it.
The dashboard system will use the resources/users.properties by default if a customized file is not found。
The format in the content of users.properties:
```$xslt
# This file supports hot change, any change will be auto-reloaded without Console restarting.
# Format: a user per line, username=password[,N] #N is optional, 0 (Normal User); 1 (Admin)
# Define Admin
admin=admin,1
# Define Normal users
user1=user1
user2=user2
```
* 3. Restart Dashboard Application after above configuration setting well.