ngbdf / redis-manager Goto Github PK
View Code? Open in Web Editor NEWRedis 一站式管理平台,支持集群的监控、安装、管理、告警以及基本的数据操作
License: Apache License 2.0
Redis 一站式管理平台,支持集群的监控、安装、管理、告警以及基本的数据操作
License: Apache License 2.0
使用redis版本是redis-4.0.10,搭建redis-cluster环境,并且设置了password了,在下拉框选择 时候,没有下拉数据项,无法query。
1.git clone下来后,运行main方法,报如下错误:
***************************
APPLICATION FAILED TO START
***************************
Description:
The Bean Validation API is on the classpath but no implementation could be found
Action:
Add an implementation, such as Hibernate Validator, to the classpath
解决方法:
pom中增加依赖:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.0.Final</version>
</dependency>
2.处理完1问题后,启动报如下错误:
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServletRequest
解决方法:
修改springboot版本为 1.5.6 ,并且增加依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3.处理完2问题后,启动报如下错误:
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
解决方法:
在 jdbc url后拼接 &serverTimezone=UTC&useSSL=false ,启动成功
上面这些是我遇到的问题,可能由于环境不同导致。
一、基本信息
操作系统:CentOS Linux release 7.2.1511 (Core)
虚拟机配置:4CPU+8G内存
Cluster State: ok
Cluster Master: 3
Cluster Nodes: 6
Slots Assigned(ok/all): 16384/16384
Redis Version: 5.0.4
Redis Mode: cluster
Type: machine
二、问题描述
使用二进制代码安装的最新版,发现运行几小时不等后,可能出现打满CPU的情况。redis是之前就部署好的,目前猜测可能和界面上点击了一些功能、按钮有关,但页面上没有报错。还请帮分析下,如果找不到原因就没法正常使用啊,这个隐患比较大。
CPU异常开始的时间附近,logs/error.log中会有类似下面的报错:
2019-09-30 09:56:48 - [ ERROR ] Unexpected error occurred in scheduled task.
org.springframework.web.socket.sockjs.SockJsTransportFailureException: Failed to write SockJsFrame content='h'; nested exception is java.io.IOException: java.io.IOException: Broken pipe
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:339)
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.sendHeartbeat(AbstractSockJsSession.java:255)
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession$HeartbeatTask.run(AbstractSockJsSession.java:456)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: java.io.IOException: Broken pipe
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:315)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:250)
at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendPartialString(WsRemoteEndpointImplBase.java:223)
at org.apache.tomcat.websocket.WsRemoteEndpointBasic.sendText(WsRemoteEndpointBasic.java:49)
at org.springframework.web.socket.adapter.standard.StandardWebSocketSession.sendTextMessage(StandardWebSocketSession.java:203)
at org.springframework.web.socket.adapter.AbstractWebSocketSession.sendMessage(AbstractWebSocketSession.java:101)
at org.springframework.web.socket.sockjs.transport.session.WebSocketServerSockJsSession.writeFrameInternal(WebSocketServerSockJsSession.java:220)
at org.springframework.web.socket.sockjs.transport.session.AbstractSockJsSession.writeFrame(AbstractSockJsSession.java:322)
... 10 more
Caused by: java.io.IOException: Broken pipe
at sun.nio.ch.FileDispatcherImpl.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:93)
at sun.nio.ch.IOUtil.write(IOUtil.java:65)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:471)
at org.apache.tomcat.util.net.NioChannel.write(NioChannel.java:134)
at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101)
增加redis配置文件修改
监控页面展示内存碎片率变化曲线
查询slave config ,得出来的信息是master config
交流群二维码过期了,发个最新的吧
增加集群同步功能
docker化建议
只能 用于Redis集群?
如果单机是否不可以呢
sed -i "s/password:/password: $MYSQL_PWD/g" ./conf/application.yml
上面的语句,每次执行时都会修改./conf/application.yml中的password,导致密码越来越长
查询页面的db不是db0..是NaN导致查询响应直接400
参数:
clusterId: "1"
db: "NaN"
key: "a"
响应:
error: "Bad Request"
exception: "org.springframework.http.converter.HttpMessageNotReadableException"
message: "Could not read document: Can not deserialize value of type int from String "NaN": not a valid Integer value↵ at [Source: java.io.PushbackInputStream@57aa452a; line: 1, column: 161] (through reference chain: com.newegg.ec.cache.app.model.RedisQueryParam["db"]); nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type int from String "NaN": not a valid Integer value↵ at [Source: java.io.PushbackInputStream@57aa452a; line: 1, column: 161] (through reference chain: com.newegg.ec.cache.app.model.RedisQueryParam["db"])"
path: "/cluster/redisQuery"
status: 400
timestamp: 1548924193981
be slave 操作完成以后当前页面未刷新
添加redis集群诊断功能,依据诊断结果给出相应的维护意见
windows 下集群安装报错
安装了虚拟机之后,会创建虚拟网卡,但是linux服务器只能连那个局域网的ip
NetUtil.getLocalIp()获取到的ip,有可能是虚拟网卡的ip,这样就无法wget到redis_install.sh,后续步骤更无法进行。
可修改获取所有的ip,然后再检测一下哪个ip可连通,然后再继续流程。
1 考虑直接从 redis 官网 http://download.redis.io/releases/ 直接拉取tar包文件加-O参数
2 根据拉取下来的tar包解压编译后,加入我们需要的脚本,重新打成tar包
要考虑以下几个问题
1很多生产场景不容许访问外网,直接拉取可以做为一个方案,或用户自己上传安装包
2 加个代理配置,先点test看通不通再构建安装包
3 用户选择版本的时候要提示,tar保持的位置
增加监控数据七天清理功能
1 提示用户端口最大限制 65535 -10000 redis内部会启动一个用户配置的port + 10000 用于集群通信
能增加console页面吗?页面命令行。
Query使用文档不详细。
用户权限设计
格式:
公司 + 公司站点
Node Manage
注意:仅通过 Redis Manager 平台创建的集群才能使用 Node Manage 功能
在文档中看到上述描述,我想如果把我导入的redis节点信息添加到对应的数据库表中,是不是也是可以的?谢谢!
目前只支持Machine方式创建集群吗?
我使用Docker和Humpback都提示can not support
麻烦支持一下,或是我缺了什么组件安装?
建议弄成中文版
You can add a password when you add a cluster or create a cluster.
Thu Jan 31 16:39:37 CST 2019 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
java.io.FileNotFoundException: ../redis-manager/src/main/resources/public/core/userApi.js (No such file or directory)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:101)
at com.newegg.ec.cache.core.userapi.UserApiUtil.writeStringToFile(UserApiUtil.java:181)
at com.newegg.ec.cache.core.userapi.UserApiUtil.autoGeneriesAllApi(UserApiUtil.java:44)
at com.newegg.ec.cache.backend.InitConfig.initUserApi(InitConfig.java:68)
at com.newegg.ec.cache.backend.InitConfig.onApplicationEvent(InitConfig.java:35)
at com.newegg.ec.cache.backend.InitConfig.onApplicationEvent(InitConfig.java:20)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:167)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:383)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:337)
at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:882)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.finishRefresh(EmbeddedWebApplicationContext.java:144)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:545)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:737)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:370)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:314)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1162)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1151)
at com.newegg.ec.cache.Application.main(Application.java:19)
****************** init success ********************
在user manager页面改用户密码时,没有规则验证。导致重新登陆有问题。
wiki 中的文档要跟着项目一起更新
导入集群最多只能配5个节点嘛? 再点 “create new” 没反应了
第一次启动是默认的admin/admin,然后stop程序,修改application.yml文件,把密码改了,再重启程序,密码还是之前的admin
如果在时区是**的机器上启动redismanager,redis部署在时区比如是在美国的机器上,slowlog列表统计出来的时间是**的时间而不是redis的时间
这是为啥?也不报错,然后自己就退出了。。
启动日志
Jul 30, 2019 3:41:47 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Tomcat
Jul 30, 2019 3:41:47 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.5.11
Jul 30, 2019 3:41:48 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring embedded WebApplicationContext
Jul 30, 2019 3:41:50 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service Tomcat
Jul 30, 2019 3:41:50 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesRmiTargets
WARNING: When running on Java 9 you need to add "--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED" to the JVM command line arguments to enable RMI Target memory leak detection. Alternatively, you can suppress this warning by disabling RMI Target memory leak detection.
jdk信息
java -version
openjdk version "9-Ubuntu"
OpenJDK Runtime Environment (build 9-Ubuntu+0-9b134-2ubuntu1)
OpenJDK 64-Bit Server VM (build 9-Ubuntu+0-9b134-2ubuntu1, mixed mode)
save "" 无法设置
提供测试接口,方便用户测试邮件是否配置正确
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.