自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Spring Cloud Admin健康檢查 郵件、釘釘群通知

開(kāi)發(fā) 前端
SpringBootAdmin是一個(gè)用于管理和監(jiān)控SpringBoot微服務(wù)的社區(qū)項(xiàng)目,可以使用客戶端注冊(cè)或者Eureka服務(wù)發(fā)現(xiàn)向服務(wù)端提供監(jiān)控信息。

[[393804]]

源碼地址:https://github.com/muxiaonong/Spring-Cloud/tree/master/cloudadmin

Admin 簡(jiǎn)介

官方文檔:What is Spring Boot Admin?

SpringBootAdmin是一個(gè)用于管理和監(jiān)控SpringBoot微服務(wù)的社區(qū)項(xiàng)目,可以使用客戶端注冊(cè)或者Eureka服務(wù)發(fā)現(xiàn)向服務(wù)端提供監(jiān)控信息。注意,服務(wù)端相當(dāng)于提供UI界面,實(shí)際的監(jiān)控信息由客戶端Actuator提供 通過(guò)SpringBootAdmin,你可以通過(guò)華麗大氣的界面訪問(wèn)到整個(gè)微服務(wù)需要的監(jiān)控信息,例如服務(wù)健康檢查信息、CPU、內(nèi)存、操作系統(tǒng)信息等等

本篇文章使用SpringBoot 2.3.3.RELEASE、SpringCloud Hoxton.SR6、SpringBoot Admin 2.2.3版本,此外,服務(wù)注冊(cè)中心采用eureka

一、SpringCloud使用SpringBoot Admin

1.1 創(chuàng)建一個(gè)SpringBoot項(xiàng)目,命名為admin-test,引入如下依賴

  1. <!-- Admin 服務(wù) --> 
  2.  <dependency> 
  3.      <groupId>de.codecentric</groupId> 
  4.      <artifactId>spring-boot-admin-starter-server</artifactId> 
  5.      <version>2.2.1</version> 
  6.  </dependency> 
  7.  <!-- Admin 界面 --> 
  8.  <dependency> 
  9.      <groupId>de.codecentric</groupId> 
  10.      <artifactId>spring-boot-admin-server-ui</artifactId> 
  11.      <version>2.2.1</version> 
  12.  </dependency> 

1.2 啟動(dòng)類(lèi)

  1. @SpringBootApplication 
  2. @EnableAdminServer 
  3. public class AdminTestApplication { 
  4.  
  5.     public static void main(String[] args) { 
  6.         SpringApplication.run(AdminTestApplication.class, args); 
  7.     } 
  8.      
  9.   } 

1.3 配置文件

  1. spring.application.name=admin-test 
  2.  
  3. management.endpoints.jmx.exposure.include=* 
  4. management.endpoints.web.exposure.include=* 
  5. management.endpoint.health.show-details=always 
  6.  
  7. # spring cloud access&secret config 
  8. alibaba.cloud.access-key=**** 
  9. alibaba.cloud.secret-key=**** 

1.4 啟動(dòng)項(xiàng)目

輸入項(xiàng)目地址:http://localhost:8080/applications

二、配置郵件通知

2.1 pom

  1. <dependency> 
  2.   <groupId>org.springframework.boot</groupId> 
  3.   <artifactId>spring-boot-starter-mail</artifactId> 
  4. </dependency> 

2.2 郵件配置

  1. spring.mail.host=smtp.qq.com 
  2. spring.mail.username=單純QQ號(hào) 
  3. spring.mail.password=授權(quán)碼 
  4. spring.mail.properties.mail.smpt.auth=true 
  5. spring.mail.properties.mail.smpt.starttls.enable=true 
  6. spring.mail.properties.mail.smpt.starttls.required=true 
  7.  
  8. #收件郵箱 
  9. spring.boot.admin.notify.mail.to=xxxx@qq.com 
  10. # 發(fā)件郵箱 
  11. spring.boot.admin.notify.mail.from= xxxx@qq.com 

2.3 QQ郵箱設(shè)置

找到自己的QQ郵箱

QQ郵箱 》 設(shè)置 》 賬戶 》紅框處獲取 授權(quán)碼

我們將 consumer 服務(wù)下線后,

接著我們就收到了郵件通知,告訴我們服務(wù)關(guān)閉了


三、發(fā)送釘釘群通知

找到群里面的 群設(shè)置 》 智能群助手 》 添加機(jī)器人

注意:這里的自定義關(guān)鍵詞一定要和項(xiàng)目的關(guān)鍵字匹配

獲取 Webhook 到項(xiàng)目中,這個(gè)是后面要使用到的 

啟動(dòng)類(lèi):

  1. import org.springframework.boot.SpringApplication; 
  2. import org.springframework.boot.autoconfigure.SpringBootApplication; 
  3. import org.springframework.context.annotation.Bean; 
  4.  
  5. import de.codecentric.boot.admin.server.config.EnableAdminServer; 
  6. import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; 
  7.  
  8. @SpringBootApplication 
  9. @EnableAdminServer 
  10. public class AdminApplication { 
  11.  
  12.   public static void main(String[] args) { 
  13.     SpringApplication.run(AdminApplication.class, args); 
  14.   } 
  15.      @Bean 
  16.       public DingDingNotifier dingDingNotifier(InstanceRepository repository) { 
  17.           return new DingDingNotifier(repository); 
  18.       } 

 通知類(lèi):

  1. import java.util.Map; 
  2.  
  3. import com.alibaba.fastjson.JSONObject; 
  4.  
  5. import de.codecentric.boot.admin.server.domain.entities.Instance; 
  6. import de.codecentric.boot.admin.server.domain.entities.InstanceRepository; 
  7. import de.codecentric.boot.admin.server.domain.events.InstanceEvent; 
  8. import de.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier; 
  9. import reactor.core.publisher.Mono; 
  10.  
  11. public class DingDingNotifier extends AbstractStatusChangeNotifier  { 
  12.   public DingDingNotifier(InstanceRepository repository) { 
  13.         super(repository); 
  14.     } 
  15.     @Override 
  16.     protected Mono<Void> doNotify(InstanceEvent event, Instance instance) { 
  17.         String serviceName = instance.getRegistration().getName(); 
  18.         String serviceUrl = instance.getRegistration().getServiceUrl(); 
  19.         String status = instance.getStatusInfo().getStatus(); 
  20.         Map<String, Object> details = instance.getStatusInfo().getDetails(); 
  21.         StringBuilder str = new StringBuilder(); 
  22.         str.append("服務(wù)預(yù)警 : 【" + serviceName + "】"); 
  23.         str.append("【服務(wù)地址】" + serviceUrl); 
  24.         str.append("【狀態(tài)】" + status); 
  25.         str.append("【詳情】" + JSONObject.toJSONString(details)); 
  26.         return Mono.fromRunnable(() -> { 
  27.             DingDingMessageUtil.sendTextMessage(str.toString()); 
  28.         }); 
  29.     } 

發(fā)送工具類(lèi)

  1. import java.io.InputStream; 
  2. import java.io.OutputStream; 
  3. import java.net.HttpURLConnection; 
  4. import java.net.URL; 
  5.  
  6. import com.alibaba.fastjson.JSONObject; 
  7.  
  8. public class DingDingMessageUtil { 
  9.   public static String access_token = "Token"
  10.     public static void sendTextMessage(String msg) { 
  11.         try { 
  12.             Message message = new Message(); 
  13.             message.setMsgtype("text"); 
  14.             message.setText(new MessageInfo(msg)); 
  15.             URL url = new URL("https://oapi.dingtalk.com/robot/send?access_token=" + access_token); 
  16.             // 建立 http 連接 
  17.             HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
  18.             conn.setDoOutput(true); 
  19.             conn.setDoInput(true); 
  20.             conn.setUseCaches(false); 
  21.             conn.setRequestMethod("POST"); 
  22.             conn.setRequestProperty("Charset""UTF-8"); 
  23.             conn.setRequestProperty("Content-Type""application/Json; charset=UTF-8"); 
  24.             conn.connect(); 
  25.             OutputStream out = conn.getOutputStream(); 
  26.             String textMessage = JSONObject.toJSONString(message); 
  27.             byte[] data = textMessage.getBytes(); 
  28.             out.write(data); 
  29.             out.flush(); 
  30.             out.close(); 
  31.             InputStream in = conn.getInputStream(); 
  32.             byte[] data1 = new byte[in.available()]; 
  33.             in.read(data1); 
  34.             System.out.println(new String(data1)); 
  35.         } catch (Exception e) { 
  36.             e.printStackTrace(); 
  37.         } 
  38.     } 

消息類(lèi):

  1. public class Message { 
  2.   private String msgtype; 
  3.     private MessageInfo text; 
  4.     public String getMsgtype() { 
  5.         return msgtype; 
  6.     } 
  7.     public void setMsgtype(String msgtype) { 
  8.         this.msgtype = msgtype; 
  9.     } 
  10.     public MessageInfo getText() { 
  11.         return text; 
  12.     } 
  13.     public void setText(MessageInfo text) { 
  14.         this.text = text; 
  15.     } 

  1. public class MessageInfo { 
  2.     private String content; 
  3.     public MessageInfo(String content) { 
  4.         this.content = content; 
  5.     } 
  6.     public String getContent() { 
  7.         return content; 
  8.     } 
  9.     public void setContent(String content) { 
  10.         this.content = content; 
  11.     } 

我們下線一個(gè)服務(wù)后,就可以看到釘釘群就發(fā)了消息的通知

同時(shí),當(dāng)我們啟動(dòng)服務(wù)的時(shí)候,也會(huì)有消息通知我們服務(wù)啟動(dòng)了

 

四 總結(jié)

上面就是我們對(duì)admin 健康檢查的實(shí)際應(yīng)用,在企業(yè)中一般會(huì)有短信通知+釘釘群通知和郵件,感興趣的小伙伴可以去試試看,還是挺好玩的,還有一個(gè)就是微信通知,在服務(wù)號(hào) 模板消息感興趣的小伙伴可以自行去研究看看,大家加油~

 

責(zé)任編輯:姜華 來(lái)源: 牧小農(nóng)
相關(guān)推薦

2023-03-02 07:20:10

GRPC服務(wù)健康檢查協(xié)議

2022-02-28 07:40:23

Nacos注冊(cè)中心客戶端

2023-03-03 08:19:35

KubernetesgRPC

2023-03-01 08:33:37

gRPC健康檢查代碼

2017-08-25 10:20:46

Docker容器機(jī)制

2020-02-17 15:17:57

釘釘

2020-04-14 15:33:37

Python 釘釘機(jī)器人

2021-04-21 09:16:04

Python開(kāi)發(fā)釘釘群機(jī)器人

2021-07-15 10:25:15

集群節(jié)點(diǎn)檢查

2021-05-29 14:14:16

阿里云釘釘低代碼開(kāi)發(fā)

2020-12-07 06:29:13

SpringBoot

2023-05-09 07:34:25

Docker健康檢查方式

2021-09-18 16:10:48

Spring BootJava微服務(wù)

2023-10-14 15:36:14

PodKubernetes

2024-02-27 17:30:11

2023-08-22 20:48:06

模型釘釘阿里云

2018-08-10 12:56:00

大數(shù)據(jù)

2024-02-02 09:36:14

自定義排序釘釘群

2020-06-10 14:01:46

阿里云釘釘Windows

2022-12-06 08:00:16

awscli工具監(jiān)控
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)