欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring?boot?admin?服務(wù)監(jiān)控利器詳解

 更新時(shí)間:2022年08月04日 15:10:28   作者:hmb↑  
這篇文章主要介紹了Spring?boot?admin?服務(wù)監(jiān)控利器詳解,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

一、簡介

用于對 Spring Boot 應(yīng)用的管理和監(jiān)控。可以用來監(jiān)控服務(wù)是否健康、是否在線、以及一些jvm數(shù)據(jù)等等。
Spring Boot Admin 分為服務(wù)端(spring-boot-admin-server)和客戶端(spring-boot-admin-client),服務(wù)端和客戶端之間采用 http 通訊方式實(shí)現(xiàn)數(shù)據(jù)交互;單體項(xiàng)目中需要整合 spring-boot-admin-client 才能讓應(yīng)用被監(jiān)控。
在 SpringCloud 項(xiàng)目中,spring-boot-admin-server 是直接從注冊中心抓取應(yīng)用信息,不需要每個(gè)微服務(wù)應(yīng)用整合 spring-boot-admin-client 就可以實(shí)現(xiàn)應(yīng)用的管理和監(jiān)控。

主要的功能點(diǎn)有:

  • 顯示應(yīng)用程序的監(jiān)控狀態(tài)
  • 應(yīng)用程序上下線監(jiān)控
  • 查看 JVM,線程信息
  • 可視化的查看日志以及下載日志文件
  • 動態(tài)切換日志級別
  • Http 請求信息跟蹤

二、搭建

1、服務(wù)端

需先搭建服務(wù)端,監(jiān)控服務(wù),被監(jiān)控的服務(wù)連接過來即可,開箱即用。

1、新建一個(gè)項(xiàng)目做為服務(wù)端
2、引入spring-boot-admin服務(wù)端依賴

	  <!--用于檢查系統(tǒng)的監(jiān)控情況-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>
  <!--Spring Boot Admin Server監(jiān)控服務(wù)端-->
 <dependency>
     <groupId>de.codecentric</groupId>
     <artifactId>spring-boot-admin-starter-server</artifactId>
     <version>2.3.1</version>
 </dependency>
   <!--增加安全防護(hù),防止別人隨便進(jìn)-->
 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-security</artifactId>
  </dependency>

3、啟動類上開啟admin@EnableAdminServer

4、security安全防護(hù)配置

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;
import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
@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 {
        // 登錄成功處理類
        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
        successHandler.setTargetUrlParameter("redirectTo");
        successHandler.setDefaultTargetUrl(adminContextPath + "/");

        http.authorizeRequests()
                //靜態(tài)文件允許訪問
                .antMatchers(adminContextPath + "/assets/**").permitAll()
                //登錄頁面允許訪問
                .antMatchers(adminContextPath + "/login", "/css/**", "/js/**", "/image/*").permitAll()
                //其他所有請求需要登錄
                .anyRequest().authenticated()
                .and()
                //登錄頁面配置,用于替換security默認(rèn)頁面
                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
                //登出頁面配置,用于替換security默認(rèn)頁面
                .logout().logoutUrl(adminContextPath + "/logout").and()
                .httpBasic().and()
                .csrf()
                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
                .ignoringAntMatchers(
                        "/instances",
                        "/actuator/**"
                );
    }
}

5、yml配置

server:
  port: 9111
spring:
  boot:
    admin:
      ui:
        title: HMB服務(wù)監(jiān)控中心
      client:
        instance:
          metadata:
            tags:
              environment: local
         #要獲取的client的端點(diǎn)信息
      probed-endpoints: health,env,metrics,httptrace:trace,threaddump:dump,jolokia,info,logfile,refresh,flyway,liquibase,heapdump,loggers,auditevents
      monitor: # 監(jiān)控發(fā)送請求的超時(shí)時(shí)間
        default-timeout: 20000
  security: # 設(shè)置賬號密碼
    user:
      name: admin
      password: admin
# 服務(wù)端點(diǎn)詳細(xì)監(jiān)控信息
management:   
  trace:
    http:
      enabled: true
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always

6、啟動項(xiàng)目

訪問 http://ip:端口,

如我的http://localhost:9111,賬號密碼都是admin(上面的security配的)

7、自定義服務(wù)狀態(tài)變化后,提醒功能

import de.codecentric.boot.admin.server.domain.entities.Instance;
import de.codecentric.boot.admin.server.domain.entities.InstanceRepository;
import de.codecentric.boot.admin.server.domain.events.InstanceEvent;
import de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier;
import org.springframework.stereotype.Component;
import reactor.core.publisher.Mono;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

@Component
public class WarnNotifier extends AbstractStatusChangeNotifier {
	public WarnNotifier(InstanceRepository repository) {
		super(repository);
	}

	@Override
	protected Mono<Void> doNotify(InstanceEvent event, Instance instance) {
		// 服務(wù)名
		String serviceName = instance.getRegistration().getName();
		// 服務(wù)url
		String serviceUrl = instance.getRegistration().getServiceUrl();
		// 服務(wù)狀態(tài)
		String status = instance.getStatusInfo().getStatus();
		// 詳情
		Map<String, Object> details = instance.getStatusInfo().getDetails();
		// 當(dāng)前服務(wù)掉線時(shí)間
		Date date = new Date();
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String format = simpleDateFormat.format(date);
		// 拼接短信內(nèi)容
		StringBuilder str = new StringBuilder();
		str.append("服務(wù)名:【" + serviceName + "】 \r\n");
		str.append("服務(wù)狀態(tài):【"+ status +"】 \r\n");
		str.append("地址:【" + serviceUrl + "】\r\n");
		str.append("時(shí)間:" + format +"\r\n");

		return Mono.fromRunnable(()->{
			// 這里寫你服務(wù)發(fā)生改變時(shí),要提醒的方法
			// 如服務(wù)掉線了,就發(fā)送短信告知
		});
	}
}

8、服務(wù)端配置

配置默認(rèn)參數(shù)解釋
spring.boot.admin.context-path/server端的訪問路徑
spring.boot.admin.monitor.status-interval10,000ms檢查實(shí)例狀態(tài)的時(shí)間間隔。

2、客戶端

被監(jiān)控的服務(wù),需要連接服務(wù)端

1、依賴

 <dependency>
     <groupId>de.codecentric</groupId>
     <artifactId>spring-boot-admin-starter-client</artifactId>
     <version>2.3.1</version>
 </dependency>
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-actuator</artifactId>
 </dependency>

2、yml配置

server:
  port: 9222
spring:
  application:
    name: client
  boot:
    admin:
      client: # spring-boot-admin 客戶端配置
        url: http://localhost:9111 #服務(wù)端連接地址
        username: admin # 服務(wù)端賬號
        password: admin # 服務(wù)端密碼
        instance:
          prefer-ip: true # 使用ip注冊

# 服務(wù)端點(diǎn)詳細(xì)監(jiān)控信息
management:
  trace:
    http:
      enabled: true
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
    logfile: # 日志(想在線看日志才配)
      external-file: ./logs/client-info.log # 日志所在路徑

3、啟動項(xiàng)目

此時(shí)客戶端就已經(jīng)注冊進(jìn)來了。

點(diǎn)擊可查看更多信息:

點(diǎn)擊日志也可在線查看日志:

此時(shí),如果我們服務(wù)掉線了,就會觸發(fā)服務(wù)端的預(yù)警功能,告知我們。

4、客戶端配置

3、微服務(wù)

除特別說明外,都是在上面的基礎(chǔ)上添加

3.1、服務(wù)端

1、添加依賴

  <!--  nacos注冊中心配置-->
  <dependency>
      <groupId>com.alibaba.cloud</groupId>
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
      <version>2.2.5.RELEASE</version>
  </dependency>

2、yml添加配置

spring:
  cloud: 
    nacos: 
      discovery:
        server-addr: localhost:8848
#        namespace: # 要和你的服務(wù)同一命名空間

3.2、客戶端

客戶端不用引spring-boot-admin-starter-clien依賴,springbootadmin會去服務(wù)列表里找

如果服務(wù)有配置context-path路徑,則需添加yml配置

spring:
  cloud:
    nacos:
      discovery:
        metadata:  # minitor監(jiān)控的context-path配置
          management:
            context-path: ${server.servlet.context-path}/actuator

4、我的微服務(wù)預(yù)警發(fā)送其他服務(wù)狀態(tài)信息思路

問題:由于該組件重寫狀態(tài)發(fā)生變化時(shí)的接口,沒有提供其他服務(wù)的狀態(tài)信息,只有本服務(wù),但是如果是集群、多實(shí)例,我又想知道,該服務(wù)其他實(shí)例或者其他的服務(wù)狀態(tài)信息,是否存活。

結(jié)果展示:如我的預(yù)警內(nèi)容,發(fā)送當(dāng)前服務(wù)狀態(tài)、當(dāng)前服務(wù)剩余健康實(shí)例、其他健康服務(wù)數(shù)等等

到此這篇關(guān)于Spring boot admin 服務(wù)監(jiān)控利器詳解的文章就介紹到這了,更多相關(guān)Spring boot admin 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論