源码地址:https://github.com/muxiaonong/Spring-Cloud/tree/master/cloudadminAdmin简介官方文档:什么是SpringBootAdmin?SpringBootAdmin是一个管理和监控SpringBoot微服务的社区项目,可以为客户端注册或者Eureka服务发现提供监控信息给服务端。注意服务端相当于提供了一个UI界面。实际的监控信息由客户端Actuator提供。通过SpringBootAdmin,可以通过华丽大气的界面访问到整个微服务所需的监控信息,如服务健康检查信息、CPU、内存、运行等。系统信息等本文使用SpringBoot2.3.3.RELEASE、SpringCloudHoxton.SR6、SpringBootAdmin2.2.3版本。另外,服务注册中心使用eureka1.SpringCloud使用SpringBootAdmin1.1创建一个SpringBoot项目,命名为admin-test,引入如下依赖de.codecentricspring-boot-admin-starter-server2.2.1de.codecentricspring-boot-admin-server-ui2.2.11.2启动类@SpringBootApplication@EnableAdminServerpublicclassAdminTestApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminTestApplication.class,args);}}1.3配置文件spring.application.name=admin-testmanagement.endpoints.jmx.exposure.include=*management.endpoints.web。暴露.include=*management.endpoint.health.show-details=always#springcloudaccess&secretconfigalibaba.cloud.access-key=****alibaba.cloud.secret-key=****1.4启动项目输入项目地址:http://localhost:8080/applications2.配置邮件通知2.1pomorg.springframework.bootspring-boot-starter-mail2.2邮件配置spring.mail.host=smtp.qq.comspring.mail.username=简易QQ号spring.mail.password=授权码spring.mail.properties.mail.smpt.auth=truespring.mail.properties.mail.smpt。开始。enable=truespring.mail.properties.mail.smpt.starttls.required=true#接收邮箱spring.boot.admin.notify.mail.to=xxxx@qq.com#发送邮箱spring.boot.admin.notify。mail.from=xxxx@qq.com2.3QQ邮箱设置找到自己的QQ邮箱QQ邮箱“设置”帐号“红框获取授权码,我们会进行咨询mer服务下线后,我们收到一封邮件通知,告诉我们该服务已关闭。3.发送钉钉群通知在群里找到群设置“智能群助手”添加机器人注意:这里自定义的关键字必须与项目的关键字匹配获取Webhook进入项目。这是后面要用到的启动类:importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.annotation.Bean;importde.codecentric.boot.admin.server.config。EnableAdminServer;importde.codecentric.boot.admin.server.domain.entities.InstanceRepository;@SpringBootApplication@EnableAdminServerpublicclassAdminApplication{publicstaticvoidmain(String[]args){SpringApplication.run(AdminApplication.class,args);}@BeanpublicDingDingNotifierdingDingNotifier(InstanceRepositoryrepository){returnnewDingDingNotifier(repository);}}通知类:importjava.util.Map;importcom.alibaba.fastjson.JSONObject;importde.codecentric.boot.admin.server.domain.entities.Instance;导入de.codecentric.boot.admin.server.domain.entities.InstanceRepository;importde.codecentric.boot.admin.server.domain.events.InstanceEvent;importde.codecentric.boot.admin.server.notify.AbstractStatusChangeNotifier;importreactor.core.publisher.Mono;publicclassDingDingNotifierextendsAbstractStatusChangeNotifier{publicDingDingNotifier(InstanceRepositoryrepository){super(repository);}@OverrideprotectedMonodoNotify(InstanceEventevent,Instanceinstance){StringserviceName=instance.getRegistration().getName();StringserviceUrl=instance.getRegistration().getServiceUrl();Stringstatus=instance.getStatusInfo().getStatus();Mapdetails=instance.getStatusInfo().getDetails();StringBuilderstr=newStringBuilder();str.append("服务预警:【"+serviceName+"】");str.append("【服务地址】"+serviceUrl);str.append("【状态】"+status);str.append("【详情】"+JSONObject.toJSONString(details));returnMono.fromRunnable(()->{DingDingMessageUtil.sendTextMessage(str.toString());});}}发送工具类importjava.io.InputStream;importjava.io.OutputStream;importjava.net.HttpURLConnection;importjava.net.URL;importcom.alibaba.fastjson.JSONObject;publicclassDingDingMessageUtil{publicstaticStringaccess_token="Token";publicstaticvoidsendTextMessage(Stringmsg){try{Messagemessage=newMessage();message.setMsgtype("text");message.setText(newMessageInfo(msg));URLurl=newURL("https://oapi.dingtalk.com/robot/send?access_token="+access_token);//建立http连接HttpURLConnectionconn=(HttpURLConnection)url.openConnection();conn.setDoOutput(true);conn.setDoInput(true);conn.setUseCaches(false);conn.setRequestMethod("POST");conn.setRequestProperty("Charset","UTF-8");conn.setRequestProperty("内容-输入","application/Json;charset=UTF-8");conn.connect();OutputStreamout=conn.getOutputStream();StringtextMessage=JSONObject.toJSONString(message);byte[]data=textMessage.getBytes();out.write(data);out.flush();out.close();InputStreamin=conn.getInputStream();byte[]data1=newbyte[in.available()];in.read(data1);System.out.println(newString(data1));}catch(Exceptione){e.printStackTrace();}}}消息类:publicclassMessage{privateStringmsgtype;私人消息信息文本;publicStringgetMsgtype(){returnmsgtype;}publicvoidsetMsgtype(Stringmsgtype){this.msgtype=msgtype;}publicMessageInfogetText(){returntext;}publicvoidsetText(MessageInfotext){this.text=text;}}publicclassMessageInfo{privateStringMcontent){this.content=content;}publicStringgetContent(){returncontent;}publicvoidsetContent(Stringcontent){this.content=content;}}我们下线服务后,可以看到钉钉群发消息的通知。同时,当我们启动服务时,也会有消息通知我们服务已经启动。四小结以上就是我们admin健康检查的实际应用。在企业中,通常有短信通知+钉钉群通知和邮件。有兴趣的朋友可以去试试,还是挺好玩的,还有微信通知。对服务号模板消息感兴趣的可以自行研究。大家加油~