Giter Site home page Giter Site logo

relumin's Introduction

CircleCI codecov

Relumin (Redis cluster admin)

What's Relumin ?

Relumin is a REdis cLUster adMIN tool.

Main feature is ...

  • Visualize Redis cluster status
  • Operating Cluster
    • Add node, Resharding, Delete node, Replicate, Failover...etc
  • Visualize Redis node metrics as chart
  • Alert
    • You can set threshold freely.

Why develop ?

So I developed.

Screenshot

Cluster status SS1

Metics chart SS2

Setting alert SS3

Getting start

Very easy.

1. Download JAR file

Please download from this.
https://github.com/be-hase/relumin/releases

2. Install Java8 on your server

Install Java8 on your server.
( I tested Oracle JDK. )

3. Install Redis(not cluster) on your server

Install Redis on your server.

Redis is used for store meta data and metrics data.

Memory is expensive. So I will support MySQL. Prease wait...

4. Write "relumin.yml" (config file)

Please write config file.
Specify this config path when you start Relumin.

Example:

host: 10.10.10.10

server:
  port: 8080
  monitorPort: 20080

redis:
  host: localhost
  port: 10000

auth:
  enabled: true
  allowAnonymous: true

notice:
  mail:
    host: smtp.example.com
    port: 25
    from: [email protected]

scheduler:
  collectStaticsInfoMaxCount: 10000

This is property table.

property name default required description
host Host or IP of server which Relumin running on.
This is used for alert mail.
server.port 8080 Port of Relumin server.
server.monitorPort 20080 Port of Relumin server for monitoring.
redis.prefixKey _relumin Prefix key of Redis. This prefix key is used for meta data and metrics data.
redis.host Y Redis's host.
redis.port Y Redis's port
auth.enabled false If this value is false, Every user can execute all operation.
(Cluster operation, User CRUD, Notification CRUD...etc)
auth.allowAnonymous false If this value is true, anonymous user can access Relumin.
But only view.
notice.mail.host Host of SMTP server.
notice.mail.port Port of SMTP server.
notice.mail.user User of SMTP Auth.
notice.mail.password Password of SMTP Auth.
notice.mail.charset UTF-8 Charset of alert mail.
notice.mail.from "From" mail address. This value can be overriden by cluster setting.
scheduler.refreshClustersIntervalMillis 120000 Interval(milliseconds) of refresh meta data of Redis cluster.
Recommend default.
scheduler.collectStaticsInfoIntervalMillis 120000 Interval(milliseconds) of collect metrics data. If threshold condition is satisfied, send notice.
scheduler.collectStaticsInfoMaxCount 1500 Save count of metrics data.
If you want save latest 1 week, you specify "5040".

(60 * 24 * 7) / 2 = 5040
scheduler.collectSlowLogMaxCount 1500 Save count of slowlog.
outputMetrics.fluentd.enabled false If you want to forward metris data into fluentd, specify true.
outputMetrics.fluentd.host Host of Fluentd.
outputMetrics.fluentd.port Port of Fluentd.
outputMetrics.fluentd.timeout 3000 Timeout of Fluentd Java Library.
outputMetrics.fluentd.bufferCapacity 1048576 BufferCapacity of Fluentd Java Library.
outputMetrics.fluentd.tag relumin Tag of Fluentd.
Send by below format.
<outputMetrics.fluentd.tag>.outputMetrics.fluentd.nodeTag>
outputMetrics.fluentd.nodeTag node Ref avobe.

5. Start Jar (FINISH !!)

Please start jar file.

You can specify log parameter.

  • log.type : console or file
  • log.level : DEBUG, INFO, WARN, ERROR... (logback's level)
  • log.dir : /path/your/logDir
java -Dconfig=/path/your/config/relumin.yml -Dlog.type=file -Dlog.level=INFO -Dlog.dir=/path/your/logDir -jar relumin-0.0.1.jar > /dev/null 2>&1 &

Relumin run on JVM, so you can specify JVM option. Like a below.

JVM_OPT="-server -Dfile.encoding=UTF-8 -Xms2g -Xmx2g \
-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=80 \
-XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled \
-XX:CMSInitiatingOccupancyFraction=70 \
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${LOG_PATH}/relumin -verbose:gc \
-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${LOG_PATH}/relumin/relumin.gc.log \
-XX:+UseGCLogFileRotation -XX:GCLogFileSize=512m -XX:NumberOfGCLogFiles=5"

java -Dconfig=/path/your/config/relumin.yml -Dlog.type=file -Dlog.level=INFO -Dlog.dir=/path/your/logDir -jar relumin-0.0.1.jar > /dev/null 2>&1 &

Authenticate and Authorize (Option)

Relumin support role-based authenticate&authorize.

Role

Relumin user has 2 role.

role name description
VIEWER Only view user.
RELUMIN_ADMIN This user execute all Relumin operation.
(Cluster operation, User CRUD, Notification CRUD...etc)

About adding user

A user who is RELUMIN_ADMIN can add user from 'http:///#/users'.

How do I add First RELUMIN_ADMIN user?
Please specify 'auth.enabled' false, and add RELUMIN_USER, and 'auth.enabled' true.

Anonymous user

You can configure whether anonymous user can access Relumin or not by specifying 'auth.allowAnonymous'. If this value is true, anonymous user can use relumin as VIEWER role.

Contribute

For local developing

  1. Build docker image. docker build -t relumin/relumin-test .
  2. Run docker. docker run -d --net="host" -p 9000:9000 -p 10000:10000 -p 10001:10001 -p 10002:10002 -p 10003:10003 -p 10004:10004 -p 10005:10005 -p 20000:20000 -p 20001:20001 -p 20002:20002 -p 20003:20003 -p 20004:20004 -p 20005:20005 -p 10010:10010 -p 10011:10011 -p 10012:10012 -p 10013:10013 -p 10014:10014 -p 10015:10015 relumin/relumin-test
  3. Copy config files. cp src/main/resources/relumin-local-conf.yml.sample src/main/resources/relumin-local-conf.yml, cp src/test/resources/application.yml.sample src/test/resources/application.yml
  4. Replace "YOUR_DOCKER_HOST" of config files.
  5. Write your code.
  6. Run unit test. mvn clean test
  7. Run spring boot app. mvn clean spring-boot:run -Dconfig=relumin-local-conf.yml

Milestone (Maybe...)

  • Support share URL
  • Support MySQL for meta data and metrics data.

Appendix

Architecture

Server

  • Written by Java.
  • Based on Spring Boot.

Front

  • Single Page Application.
  • Written by pure javascript.
  • Based on React(Flux), Webpack and Gulp.

relumin's People

Contributors

be-hase avatar makky3939 avatar

Watchers

James Cloos avatar xephysis avatar

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.