1. 程式人生 > >SpringCloud-Finchley使用SpringBootAdmin監控各個微服務

SpringCloud-Finchley使用SpringBootAdmin監控各個微服務

1.建立夫工程SpringCloudAdmin,pom檔案為

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xueqing.demo</groupId>
    <artifactId>springcloudadmin</artifactId>
    <version>1.0-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

2.建立子工程server-admin,pom檔案為

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xueqing.demo</groupId>
    <artifactId>service-admin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>service-admin</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.xueqing.demo</groupId>
        <artifactId>springcloudadmin</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>


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

        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-starter-server</artifactId>
            <version>2.0.2</version>
        </dependency>
        <dependency>
            <groupId>de.codecentric</groupId>
            <artifactId>spring-boot-admin-server-ui</artifactId>
            <version>2.0.2</version>
        </dependency>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

3.server-admin中啟動類為

package com.xueqing.demo.serviceadmin;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableAdminServer
@SpringBootApplication
public class ServiceAdminApplication {

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


4.配置admin的登陸

package com.xueqing.demo.serviceadmin;

import de.codecentric.boot.admin.server.config.AdminServerProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;

@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");

        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().disable();
        // @formatter:on
    }

}

5.application.yml配置檔案為

server:
  port: 5000
spring:
  application:
    name: admin-server
  security:
    user:
      name: 'admin'
      password: 'admin'
eureka:
  client:
    registryFetchIntervalSeconds: 5
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://peer1:8761}/eureka/
  instance:
    leaseRenewalIntervalInSeconds: 10
    health-check-url-path: /actuator/health
    metadata-map:
      user.name: ${spring.security.user.name}
      user.password: ${spring.security.user.password}

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

6.建立client-admin-one和client-admin-two,兩個子工程一致,以one為例,pom

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.xueqing.demo</groupId>
    <artifactId>client-one-admin</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>client-one-admin</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>com.xueqing.demo</groupId>
        <artifactId>springcloudadmin</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>


    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <!--<dependency>-->
        <!--<groupId>de.codecentric</groupId>-->
        <!--<artifactId>spring-boot-admin-starter-client</artifactId>-->
        <!--<version>2.0.1</version>-->
        <!--</dependency>-->

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

        <!--**********************************turbine*********************************-->
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
                </dependency>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
                </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>

7.spring啟動類

package com.xueqing.demo.clientoneadmin;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
public class ClientOneAdminApplication {

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

        @Value("${server.port}")
    String port;
    @GetMapping("/hi")
    @HystrixCommand(fallbackMethod = "hiError")
    public String hi(@RequestParam(required = false,defaultValue = "cralor")String name){
        return "hi "+name+",i am client one and from port:"+port;
    }
    public String hiError(String name){
        return "hi "+name+",sorry,error!";
    }
}

8.application配置檔案

server:
  port: 8963
spring:
  application:
    name: client-admin-two
  boot:
    admin:
      client:
        url: http://localhost:5000
eureka:
  instance:
    leaseRenewalIntervalInSeconds: 10 #表示eureka client傳送心跳給server端的頻率,預設為30秒
    health-check-url-path: /actuator/health #健康檢查的地址(依賴spring-boot-starter-actuator)
  client:
    registryFetchIntervalSeconds: 5 #表示eureka client間隔多久去拉取服務註冊資訊,預設為30秒
    service-url:
      defaultZone: ${EUREKA_SERVICE_URL:http://localhost:8761}/eureka/
management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS

9.訪問localhost:5000 使用者名稱admin,密碼admin。驗證admin是否正常

相關推薦

SpringCloud-Finchley使用SpringBootAdmin監控各個服務

1.建立夫工程SpringCloudAdmin,pom檔案為 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

企業分布式SpringCloud+SpringBoot+Mybatis+shiro+服務 技術分享

spring cloud spring boot springmvc mybatis eureka 介紹 Commonservice-system是一個大型分布式、微服務、面向企業的JavaEE體系快速研發平臺,基於模塊化、服務化、原子化、熱插拔的設計思想,使用成熟領先的無商業限制的主流

服務springcloud—Feign修改使用者服務和修改電影服務

修改使用者為服務 1.複製專案microservice-provider-user,將ArtfactId修改為microservice-provider-user-with-auth。 2.微服務新增如下依賴 <dependency> <gr

SpringCloud核心元件在服務架構中的作用

Eureka: 各個服務啟動時,Eureka Client都會將服務註冊到Eureka Server,並且Eureka Client還可以反過來從Eureka Server拉取登錄檔,從而知道其他服務在哪裡。 Ribbon:服務間發起請求的時候,基於Ribbon 做負載均衡,從一個服務的多臺機器選擇

SpringCloud(一)服務概述及SpringCloud元件

1、微服務概述 微服務的核心就是將傳統的一站式應用,根據業務拆分成一個一個的服務,徹底地去耦合,每一個微服務提供單個業務功能的服務,一個服務做一件事,從技術的角度看就是一種小而獨立的處理過程,類似程序概念,能夠自行單獨啟動或銷燬,擁有自己獨立的資料庫。 微服務架構需要的功能或使用場景:

java複習筆記2--SpringCloud系列一:服務啟動原理探索

微服務架構的趨勢 隨著資料量的不斷增大,大資料時代的到來,網際網路技術的不斷髮展和變革,微服務架構和雲服務平臺以及大資料成為了時下最熱門的話題。現在,比較流行的微服務框架也有很多, 比如阿里的Dubbo,基於soringBoot的SpringCloud,Apac

java複習筆記3--SpringCloud系列一:服務啟動原理探之beanFactory載入

昨天,我們對SpringApplication的初始化以及SpringApplication.run方法中的部分程式碼進行了解讀和追蹤。這一塊的重點就是Spring的 SPI,META-INF/spring.factories檔案的格式以及載入機制。一定要花時間

SpringCloud學習筆記:服務SpringCloud是什麼?

一、什麼是微服務 1、馬丁福勒對微服務的概述:微服務架構一種架構模式或者說是一種架構風格,它提倡將單一應用程式劃分成一組小的服務,每個服務執行在其獨立的自己的程序中,服務之間相互協作、相互配合,為使用者提供最終價值。服務之間採用輕量級的通訊機制互相溝通(通常是基

java複習筆記3--SpringCloud系列一:服務啟動原理探索之beanFactory載入

昨天,我們對SpringApplication的初始化以及SpringApplication.run方法中的部分程式碼進行了解讀和追蹤。這一塊的重點就是Spring的 SPI,META-INF/spring.factories檔案的格式以及載入機制。一定要花時間

服務springcloud—為什麼要實現服務跟蹤和SpringCloudSleuth簡介

為什麼要實現微服務跟蹤 談到微服務跟蹤,就不得提一下Peter Deutsch的文章The Eight Fallacies of Distributed Computing(分散式計算八大誤區),大致內容如下: 網路可靠 延遲為零 頻寬無限 網路絕對安全 網路拓

Spring Cloud中如何保證各個服務之間呼叫的安全性

一.背景 微服務架構下,我們的系統根據業務被拆分成了多個職責單一的微服務。 每個服務都有自己的一套API提供給別的服務呼叫,那麼如何保證安全性呢? 不是說你想呼叫就可以呼叫,一定要有認證機制,是我們內部服務發出的請求,才可以呼叫我們的介面。 需要注意的是

SpringCloud—— 第一章:服務架構介紹

https://www.bilibili.com/video/av32229211?from=search&seid=8405486316816129654 單體架構介紹 微服務架構 常見軟

SpringCloud--SpringCloud Config構建統一服務管理配置中心

在微服務架構中,微服務的配置管理一般有以下幾個需求: 集中管理配置。一個使用微服務架構的應用系統可能會包含成百上千個微服務,因此集中管理配置是非常有必要的。 不同環境不同配置。例如,資料來源配置在不同的環境(開發、測試、預釋出、生產等)中時不同的。 執行期間

Spring Cloud中如何保證各個服務之間呼叫的安全性(下篇)

今天我們繼續接著上篇文章來聊一聊如何能夠在呼叫方實現token的自動設定以及重新整理 我們的認證token是放在請求頭中的,相對於把token放在請求引數中更為友好,對業務介面無侵入性 但是這種方式如果需要自己設定token就麻煩了,如果是引數的形式,那

SpringCloud 使用consul作為服務註冊中心

eureka宣佈閉源,使用consul作為服務註冊中心。 1、parent pom檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

SpringBoot,SpringCloud,Docker構建服務學習筆記

SpringCloud與阿里巴巴的dubbo都是實現微服務架構的基礎框架,由與我在學習的時候是提供SpringBoot來嘗試構建微服務,因此我使用了SpringCloud。 SpringCloud的子專案非常多,在最開始學習微服務的第一步只需要學會微服務的服務

springcloud-hystrix斷路器對服務的容錯處理

true 導致 服務器 進一步 ping 嘗試 sco 處理 netfilx 使用Hystrix實現微服務的容錯處理 1.實現容錯的手段 如果服務提供者響應的速度特別慢,那麽消費者對提供者的請求就會強制等待,直到提供者響應或者超時。在高負載的情況下,如果不做任何處理,此類問

SpringCloud實現簡單的服務架構

原文地址:http://blog.csdn.net/lynnlovemin/article/details/79019680 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分散式系統基礎設施的開發,如服務發現註冊、

SpringCloud實戰 | 第五篇:SpringCloud整合OpenFeign實現服務之間的呼叫

## **一. 前言** 微服務實戰系列是基於開源微服務專案 [有來商城youlai-mall](https://github.com/hxrui/youlai-mall) 版本升級為背景來開展的,本篇則是講述SpringCloud整合OpenFeign實現微服務之間的相互呼叫,有興趣的朋友可以進去給個sta

使用SpringBoot Admin監控SpringCloud服務

urb val gap 中心 1.5 支持 環境 cover ref 本文基於SpringCloud的環境和配置上增加配置信息,而不是從0開始的配置。 一、搭建admin服務端 1、引入pom <properties> <spring-boot-