使用のSpringBoot-管理

[ 主婦 ]春ブートアクチュエータは、アプリケーションの状態、メモリ、スレッド、スタックとSpringブートアプリケーションのライフサイクルの他の、より包括的な監視を含む個々のスプリングブートアプリケーション情報の監視を提供します。しかし、このような監視は、いくつかの問題があります:最初、アプリケーションの状態の包括的なビューは、インタフェースの多くを呼び出す必要があり、インターフェイスは便利ではない場合、表示するすべての固定監視インターフェースを呼び出す必要がJSONの情報操作はスタッフ理解返され、2番目、春ブーツ場合アプリケーションクラスタが非常に大きい場合、各アプリケーションは、監視情報を表示するために、別のインターフェイスを呼び出すために必要になり、操作が非効率的で非常に面倒です。この文脈では、それは別のオープンソースソフトウェアの誕生です:春のブート管理


一つ、春ブーツ管理するものです

春ブーツ管理者は、オープンソースソフトウェアの春ブートアプリケーションの管理と監視され、データVue.jsを使用して、各アプリケーションがクライアントとみなされ、または使用して、HTTP管理サーバーは、ディスプレイ上のユーレカに登録されている、春のブート管理UI部品前に表示されます。

春ブーツ管理者は、それが春・ブート・リスト内の項目、詳細な健康、メモリ、JVM情報、ガベージコレクションの情報を監視するために、すべての基本的な情報を閲覧することができアクチュエータインターフェース春ブーツ用UI美化監視ツールパッケージの一つであります、各種(例えば、データソースとして、キャッシュヒット率のリスト)設定情報などは、直接レベルロガーを修正することができます。

ない春ブーツ春ブーツ管理当局者は、オープンソースソフトウェアを生産していることに注目すべきであるが、ソフトウェアの品質と利用の幅が非常に高く、春ブーツ管理者は、とき春ブート打ち上げ2更新された春ブーツで更新し続けます春のブート管理.Xバージョンもタイムリーに更新されたとき。

春のブート管理2.xのサポートだけでなく、春のブート2.xのを追跡するために、多くはまだ基づいてアップデートと最適化を1.xでは:

重新规划了项目依赖包,让项目中更方便的集成 Spring Boot Admin
1.x 前端使用了 Angular.js,2.x 使用 Vue 对界面进行了重写,界面美观度提升幅度非常高
提供了支持 Spring Cloud 的组件
其他更新,具体参考:Changes with 2.x

サーバとクライアントに分け春ブーツ管理、サーバーが実際にすべての監視情報を表示するモニターの背景の要約である、クライアントが私たちのアプリケーションでは、あなたが使用中のサーバーを起動する必要があり、クライアントの起動時にオープンアクチュエータインターフェース、およびサービスのエンドポイントアドレス、サーバが定期的に監視する目的のために、この情報を読み取ります。


そして、春のブートアプリケーション監視のための春のブート管理を使用する方法を示します。

II、単一のアプリケーションの監視

単一のアプリケーションを監視する春のブート管理春のブートを使用する方法をお見せ私たちに与えます。

管理サーバー端

プロジェクトの依存関係

<dependency>
  <groupId>de.codecentric</groupId>
  <artifactId>spring-boot-admin-starter-server</artifactId>
  <version>2.1.0</version>
</dependency>
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

2.xの下でのみパッケージにこれを追加する必要があり、他のコンポーネントは自動的に依存関係を追加します。

プロファイル

server.port = 8000

サーバーのポートが設定されている:8000。

スタートアップクラス

@EnableAdminServer
@SpringBootApplication
public class AdminServerApplication {

  public static void main(String[] args) {
    SpringApplication.run(AdminServerApplication.class, args);
  }
}

上記の3つのステップを完了したら、サーバーを起動し、URLをアクセスします。http:// localhostを:8000を使用すると、以下の画面を見ることができます:
監視ページ
アプリケーションが存在しないため、まだ始まったばかりなので、ディスプレイ:.んが、アプリケーションが登録されていない、だけでなく、アプリケーションのページに基づいてマップ上で見ることができますがするしました実証プロジェクトの出願番号、インスタンスおよび3つの状態情報の数。

次に、我々はクライアントを構築し、サーバに登録されました。

管理クライアントの終了

プロジェクトの依存関係

<dependencies>
  <dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.1.0</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
  </dependency>
</dependencies>

春ブートを-スターター・ウェブが追加、アクティブ、春・ブート・管理・スターター・クライアントが自動的にアクチュエータにその依存関係を追加されているアプリケーションを可能にするために提供されます。

プロファイル

server.port=8001
spring.application.name=Admin Client
spring.boot.admin.client.url=http://localhost:8000  
management.endpoints.web.exposure.include=*
spring.boot.admin.client.url 配置 Admin Server 的地址
management.endpoints.web.exposure.include=* 打开客户端 Actuator 的监控

スタートアップクラス

@SpringBootApplication
public class AdminClientApplication {
  public static void main(String[] args) {
    SpringApplication.run(AdminClientApplication.class, args);
  }
}

:設定が完了したら、クライアント側を起動し、管理サーバーは自動的にクライアントを変更し、その適用性を実証するためにチェックし
結果
、このアプリケーションの詳細な監視情報を入力しますプロジェクト名をクリックし、ページを監視するサービスのリストが表示されます:
ディテール
あなたは、グラフで見ることができますうち、春ブーツ管理グラフィカルフォームは情報のアプリケーションを示し、この情報のほとんどはから来て春ブーツアクチュエータ提供するインタフェース。アプリケーションのパラメータの変化を参照して簡単にグラフィカル形式を使用し、さらにいくつかのページはまたように印刷ログのレベルを変更するなど、いくつかの操作であってもよいです。

雑誌のページをクリックすると、アプリケーションの状態変化の歴史的過程を見ることができます:

ジャーナル

あなたが壁板の時間に、より鮮やかな方法で起動するアプリケーションの数を表示することができます最初のメニューをクリックします。

壁板

三、マイクロサービス監視

我々は、単一の春ブートアプリケーションを使用している場合は、監視されている各アプリケーションで管理サーバーのアドレス情報を設定する必要があり、アプリケーションが登録されている場合はユーレカの各アプリケーションを、春ブーツ管理者に自動的に設定する必要はありません。レジストリから関連情報のクロールアプリケーション。

あなたは春のクラウドサービス発見機能を使用する場合は、あなただけの春ブートサーバーを必要とする独立した管理クライアントのクライアントを追加する必要はありません、他のコンテンツが自動的に設定されます。

次ユーレカに示すために、サービス・ディスカバリの例としては、実際には、また、領事や飼育係を使用することができます。

(1)サービスとクライアントは、パッケージの依存関係に春・クラウド・スターター・ユーレカを追加します

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

(2)コメント起動クラスを追加

@Configuration
@EnableAutoConfiguration
@EnableDiscoveryClient
@EnableAdminServer
public class SpringBootAdminApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }

    @Configuration
    public static class SecurityPermitAllConfig extends WebSecurityConfigurerAdapter {
        @Override
        protected void configure(HttpSecurity http) throws Exception {
            http.authorizeRequests().anyRequest().permitAll()  
                .and().csrf().disable();
        }
    }
}

クラスを使用しSecurityPermitAllConfigは、セキュリティ検証を閉じました。

(3)在客户端中配置服务发现的地址

eureka:   
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
    metadata-map:
      startup: ${random.int}    #needed to trigger info and endpoint update after restart
  client:
    registryFetchIntervalSeconds: 5
    serviceUrl:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/

management:
  endpoints:
    web:
      exposure:
        include: "*"  
  endpoint:
    health:
      show-details: ALWAYS

Spring Cloud 提供了示例代码可以参考这里:spring-boot-admin-sample-eureka

重启启动服务端和客户端之后,访问服务端的相关地址就可以看到监控页面了。

肆、安全控制

Spring Boot Admin 后台有很多的敏感信息和操作,如果公司不做权限控制可能会影响到公司系统的安全性。Spring Boot Admin 也考虑到了这个因素,可以利用前面的 Spring Security 做安全访问控制,在 spring-boot-admin-server 上进行改造。

(1)添加 Spring Boot Security 依赖包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

(2)添加安全访问控制

和前面的 Security 配置一样,给项目添加访问控制。

@Configuration
public  class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
    private final String adminContextPath;

    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
        this.adminContextPath = adminServerProperties.getContextPath();
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        // @formatter:off
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
            .antMatchers(adminContextPath + "/assets/**").permitAll() 
            .antMatchers(adminContextPath + "/login").permitAll()
            .anyRequest().authenticated() 
            .and()
        .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and() 
        .logout().logoutUrl(adminContextPath + "/logout").and()
        .httpBasic().and() 
        .csrf()
            .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())  
            .ignoringAntMatchers(
                adminContextPath + "/instances",   
                adminContextPath + "/actuator/**"  
            );
    }
}

    antMatchers(adminContextPath + "/assets/**").permitAll() 所有静态内容不做安全验证
    anyRequest().authenticated() 其他请求均需要验证
    formLogin() 配置登录
    logout() 配置登出
    httpBasic() 支持 HTTP,引导 Spring Boot Admin 客户端注册
    csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse()) 打开跨站点请求保护 Cookies
    adminContextPath + "/instances" 取消跨站点请求保护 "/instances",方便 Admin 客户端注册
    adminContextPath + "/actuator/** " 取消跨站点请求保护 "/actuator/**",可以让 Admin 监控到 Actuator 的相关接口

然后可以给 security 设置一个用户名和密码:

spring.security.user.name=admin
spring.security.user.password=admin

配置完成之后重启 Admin Server 端,访问网址 http://localhost:8000 就会发现需要一个登录的用户名和密码了。
管理サーバー
使用刚才设置的用户名和密码登录之后,发现注册到 Server 端的服务数成为 0 了,这是客户端统一也需要配置帐户名和密码信息。

spring.security.user.name=admin
spring.security.user.password=admin

配置完成之后重新启动,在服务端就又可以查看监控到的应用了。

伍、其他方式

如果 Actuator 的端口被使用 HTTP 认证保护,那么 Spring Boot Admin Server 访问的时候需要凭证信息,这时候可以使用 metadata 的方式对账户和密码进行配置。

直接使用客户端注册的方式:

spring.boot.admin.client:
    url: http://localhost:8080
    instance:
      metadata:
        user.name: ${spring.security.user.name}
        user.password: ${spring.security.user.password}

使用 Eureka 进行注册的方式:

eureka:
  instance:
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}

Eureka 中的 metadataMap 是专门用来存放一些自定义的数据,当注册中心或者其他服务需要此服务的某些配置时可以在 metadataMap 里取。实际上,每个 instance 都有各自的 metadataMap,map 中存放着需要用到的属性。例如,上面配置中的 eureka.instance.metadata-map.user.name,当这个服务成功注册到 Eureka 上,Spring Boot Admin 就会拿到这个 instance,进而拿到 metadataMap 里的属性,然后放入请求头,向此服务发送请求,访问此服务的 Actuator 开放的端点。

陆、邮件告警

Spring Boot Admin 将微服务中所有应用信息在后台进行了展示,非常方便我们对微服务整体的监控和治理。但是我们的运营人员也不可能一天 24 小时盯着监控后台,因此如果服务有异常的时候,有对应的邮件告警就太好了,其实 Spring Boot Admin 也给出了支持。

我们对上面的示例项目 spring-boot-admin-server 进行改造。

添加依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

增加了邮件发送的 starter 包。

配置文件

spring.mail.host=smtp.qq.com
[email protected]
spring.mail.password=xxx
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
[email protected]
[email protected]

在配置文件中添加邮件发送相关信息:邮件的发送者、接受者、协议、移动授权码等

配置完成后,重新启动项目 spring-boot-admin-server,这样 Admin Server 就具备了邮件告警的功能,默认情况下 Admin Server 对 Eureka 中的服务上下线都进行了监控,当服务上下线的时候我们就会收到相应的告警邮件。

当然这只是最基本的邮件监控,在实际的使用过程中,需要根据情况对邮件告警内容进行自定义,比如监控堆内存的使用情况,当到达一定比例的时候进行告警等。

春ブーツ管理者は、大規模な春のブートアプリケーション監視のための私達の必要性を解決[言葉の裏に書かれた]、アクチュエータの春ブーツ管理者の完全な利点は、情報は私たちがより直感的に役立つことが示されている優れたグラフィカルインタフェースを使用して、関連するインタフェースを開きますクラスタアプリケーションの状態を確認してください。春ブーツ管理者は、単一の春のブートアプリケーションを監視することはできませんまた、警報システムの使用と組み合わせたサービスセンターに登録されているすべてのアプリケーションの状態を監視春クラウドは、任意の時点でのアプリケーションの状態の変化を知覚できる組み合わせることができます。実務に従事春ブーツ管理者が頻繁にポスト操作で使用される当社のコンポーネントであり、それは注意を集中する必要があります。


:HTTPデモを監視するための最後に、道のHTTP接続端を使って春のブート管理サーバ

おすすめ

転載: blog.51cto.com/14495372/2428448