Git Product home page Git Product logo

ngbdf / redis-manager Goto Github PK

View Code? Open in Web Editor NEW
2.9K 108.0 709.0 116.23 MB

Redis 一站式管理平台,支持集群的监控、安装、管理、告警以及基本的数据操作

License: Apache License 2.0

Shell 0.13% Java 66.58% CSS 0.90% HTML 0.84% JavaScript 3.57% Vue 27.83% Dockerfile 0.15%
redismanager redis-manager redis-monitor redismonitor redis-create redis-slowlog redisquery redis-query rediscluster redis-tool

redis-manager's Introduction

Redis Manager

Build Status License

Redis Manager 是 Redis 一站式管理平台,支持集群(cluster、master-replica、sentinel)的监控、安装(除sentinel)、管理、告警以及基本的数据操作功能
集群监控:支持监控 Memory、Clients 等 Redis 重要指标;可实时查看 Redis Info、Redis Config 和 Slow Log
集群创建:支持 Docker、Machine、Humpback方式
集群管理:支持节点Forget、Replicate Of、Failover、Move Slot、Start、Stop、Restart、Delete、修改配置等功能
集群告警:支持 Memory、Clients 等指标(同监控指标),支持邮件、企业微信APP、企业微信Webhook、钉钉告警
工具箱:支持 Query、Scan 以及基本的数据操作

使用手册

安装

快速启动

Docker容器启动

Dockerhub

$sudo docker run -d --net=host --name redis-manager  \
-e DATASOURCE_DATABASE='redis_manager' \
-e DATASOURCE_URL='jdbc:mysql://127.0.0.1:3306/redis_manager?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2b8' \
-e DATASOURCE_USERNAME='root' \
-e DATASOURCE_PASSWORD='******' \
reasonduan/redis-manager

二进制包

releases

联系方式

您在使用产品的过程中如果遇到问题或者发现需要改进的地方可以通过以下方式直接联系我们或 Pull Request。

Redis Manager 钉钉交流群

知乎专栏 https://zhuanlan.zhihu.com/c_1055846842708930560

云栖社区 https://yq.aliyun.com/album/227?spm=a2c4e.11155435.0.0.3ece24f0lQw15C

产品主要功能介绍

Dashboard

展示当前用户组监控的所有集群

集群导入

导入已存在集群

集群监控

监控 Memory、Clients 等 Redis 重要指标; 查询 Slow Log

集群管理

支持节点Forget、Replicate Of、Failover、Move Slot、Start、Stop、Restart、Delete、修改配置等功能

修改配置文件

集群告警

支持邮件、企业微信APP、企业微信Webhook、钉钉告警

数据操作

支持简单的数据操作

创建集群

目前支持 Redis Cluster、Standalone 模式的创建,包括机器安装、Docker 安装和 Humpback 安装方式

用户组管理

用户管理

用户手册

用户手册主要介绍如何使用 Redis Manager

快速启动
导入已存在集群
集群监控
节点管理
数据操作
集群告警
机器管理
集群安装
组和用户

License

RedisManager is Open Source software released under the Apache 2.0 license

redis-manager's People

Contributors

dr-kyle avatar hujiexuan avatar junfu0814 avatar linzhouzhi avatar loernl avatar reasonduan avatar sjh724 avatar trumandu avatar wu-junjie avatar zhouyuhx avatar zouhuajian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

redis-manager's Issues

idea中运行main方法报错

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 ,启动成功

上面这些是我遇到的问题,可能由于环境不同导致。

用户密码验证

在user manager页面改用户密码时,没有规则验证。导致重新登陆有问题。

修改admin密码不生效啊

第一次启动是默认的admin/admin,然后stop程序,修改application.yml文件,把密码改了,再重启程序,密码还是之前的admin

console

能增加console页面吗?页面命令行。
Query使用文档不详细。

Slowlog列表统计时间时区问题

如果在时区是**的机器上启动redismanager,redis部署在时区比如是在美国的机器上,slowlog列表统计出来的时间是**的时间而不是redis的时间

be slave bug

be slave 操作完成以后当前页面未刷新

集群安装加入限制

1 提示用户端口最大限制 65535 -10000 redis内部会启动一个用户配置的port + 10000 用于集群通信

config bug

查询slave config ,得出来的信息是master config

CPU异常飙高

一、基本信息
操作系统: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是之前就部署好的,目前猜测可能和界面上点击了一些功能、按钮有关,但页面上没有报错。还请帮分析下,如果找不到原因就没法正常使用啊,这个隐患比较大。
image

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 tar包

1 考虑直接从 redis 官网 http://download.redis.io/releases/ 直接拉取tar包文件加-O参数
2 根据拉取下来的tar包解压编译后,加入我们需要的脚本,重新打成tar包
要考虑以下几个问题
1很多生产场景不容许访问外网,直接拉取可以做为一个方案,或用户自己上传安装包
2 加个代理配置,先点test看通不通再构建安装包
3 用户选择版本的时候要提示,tar保持的位置

关于管理Node Manage功能使用

Node Manage
注意:仅通过 Redis Manager 平台创建的集群才能使用 Node Manage 功能

在文档中看到上述描述,我想如果把我导入的redis节点信息添加到对应的数据库表中,是不是也是可以的?谢谢!

启动报错,但是web页面可以访问,但是query查询有问题

查询页面的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

创建集群方式

目前只支持Machine方式创建集群吗?
我使用Docker和Humpback都提示can not support
麻烦支持一下,或是我缺了什么组件安装?

query下拉框无法选择

使用redis版本是redis-4.0.10,搭建redis-cluster环境,并且设置了password了,在下拉框选择 时候,没有下拉数据项,无法query。

support redis 4.x

You can add a password when you add a cluster or create a cluster.

query按钮bug

image
这个query 第一次点了之后 关闭再打开 就变成这样了 没法再点

启动问题,

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 ********************

启动无错误但是进程退出了

这是为啥?也不报错,然后自己就退出了。。

启动日志

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.