Microservice-Admin-Dashboard, 使用dropwizard创建的microservices的管理仪表板

分享于 

6分钟阅读

GitHub

  繁體 雙語
An admin dashboard for microservices created with dropwizard.
  • 源代码名称:Microservice-Admin-Dashboard
  • 源代码网址:http://www.github.com/abduegal/Microservice-Admin-Dashboard
  • Microservice-Admin-Dashboard源代码文档
  • Microservice-Admin-Dashboard源代码下载
  • Git URL:
    git://www.github.com/abduegal/Microservice-Admin-Dashboard.git
    Git Clone代码到本地:
    git clone http://www.github.com/abduegal/Microservice-Admin-Dashboard
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/abduegal/Microservice-Admin-Dashboard
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    用于microservices的 Dropwizard管理仪表板

    这个存储库包含一个microservice仪表板和框架来操作仪表板。

    仪表板:

    • 用于 DropWizard microservices的度量和healtcheck查看器。
    • 通过 microservices Curator Curator插件,对所有与 Zookeeper allong的注册的概览。
    • 每个服务的详细性能指标,每个单独的服务 Hystrix。
    • 显示 CPU,内存和磁盘使用情况的服务器概述。
    • 无需外部相关性的集中日志管理 ! ( 读取你的文件日志)

    插件框架:

    仪表板是用dropwizard的框架/库提供的,它使你能够连接到管理仪表板并使用最小的代码行。 它具有以下功能:

    • 使用单一代码行注册和配置你的服务和 Zookeeper。
    • 它在ServiceLocator中构建,你可以通过 NAME ( 不知道他们的地址和/或者端口) 调用其他服务。
    • ServiceLocator通过Java接口来调用库来调用其他服务。
    • 它拥有的Tenacity支持构建。

    屏幕截图

    alt tagalt tagalt tagalt tagalt tagalt tag

    插件安装:

    启动

    有一个示例项目,你可以使用它作为参考。

    启动并运行仪表板后,创建一个新的Dropwizard项目。

    • 添加以下依赖项
     <dependency>
     <groupId>com.github.abduegal</groupId>
     <artifactId>microservice-framework-core</artifactId>
     <version>0.9.0</version>
     </dependency>
    • 使dropwizard配置类从MicroserviceConfig扩展到 io.dropwizard.Configuration 类,而不是。
    • 将以下行添加到Dropwizard应用程序类:
    @Overridepublicvoid initialize(Bootstrap<ExampleConfiguration> bootstrap) {
     bootstrap.addBundle(newMicroserviceBundle<>());
     }
    • 将以下内容添加到 configuration.yml file:
    discovery:
     serviceName: Examplenamespace: myapp#zookeeper:port: 2181listenAddress: 127.0.0.1server:
     applicationConnectors:
     - type: httpport: 0 
     adminConnectors:
     - type: httpport: 0requestLog:
     timeZone: UTCappenders:
     - type: filecurrentLogFilename: /tmp/example_service.logarchive: falsethreshold: ALLlogging:
     appenders:
     - type: console - type: filecurrentLogFilename: /tmp/example_service.logarchive: falsethreshold: ALL
    • 上面的代码段执行以下操作:
      • 定义管理员连接属性。
      • 定义服务( 范例) 和命名空间( 对于仪表板重要)的NAME
      • 通知应用程序使用随机端口( 0 )
      • 配置日志记录( 日志文件将用于集中日志记录)。

    可选:

    • 通过将以下内容添加到Dropwizard应用程序类,可以使用Hystrix延迟和容错库:
    publicenumDependencyKeysimplementsTenacityPropertyKey {
     Action;
     publicstaticTenacityPropertyKeyFactorygetTenacityPropertyKeyFactory() {
     returnnewTenacityPropertyKeyFactory(){
     @OverridepublicTenacityPropertyKeyfrom(Stringvalue) {
     returnDependencyKeys.valueOf(value.toUpperCase());
     }
     };
     }
     }
     @Overridepublicvoid initialize(Bootstrap<ExampleConfiguration> bootstrap) {
     bootstrap.addBundle(newMicroserviceBundle<>());
     bootstrap.addBundle(TenacityBundleBuilder.newBuilder()
    . propertyKeyFactory(DependencyKeys.getTenacityPropertyKeyFactory())
    . propertyKeys(DependencyKeys.values())
    . build());
     }
     @Overridepublicvoid run(ExampleConfiguration exampleConfiguration, Environment environment) throws Exception {
     environment.jersey().register(ExampleResource.class);
     InitializeTenacity.initialize(DependencyKeys.values());
     }

    版本

    0.9.0

    技术

    这里项目使用许多开放源代码项目来正常工作:

    • [Apache Zookeeper] - 用于服务发现
    • [Netflix Curator] - Zookeeper客户端包装器。
    • [Netflix Hystrix] - 延迟和容错库
    • [Netflix Feign] - java到http客户端活页夹
    • [Yammer Tenacity] - 与 Netflix Hystrix的Dropwizard集成
    • [Dropwizard] - Java框架
    • [AngularJS] - 用于前端
    • 还有。

    构建仪表板:

    仪表板是用 Dropwizard ( 后端) 和 AngularJS ( with ) 构建的。 Angular 前端与控制台作为 static 资源打包,但你还可以通过使用以下命令独立运行到'应用'目录:
    npm install
    bower install

    要在本地运行它:
    grunt serve

    要构建它:
    grunt build
    它将自动将处理后的前端文件复制到'src/main/resources/static'目录。 如果--force命令对权限问题发出警告,则可以选择使用该命令,如:

    • 无法在当前工作目录之外 delete 文件。 使用--force继续。

    许可证

    MIT