电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot Admin實現(xiàn)服務(wù)健康預(yù)警功能

瀏覽:140日期:2023-09-05 17:16:14

Over View

上一篇文章主要介紹了Spring Boot Admin的概況以及我們?nèi)绾卧谙到y(tǒng)中引入和使用Spring Boot Admin,以此來幫助我們更加了解自己的系統(tǒng),做到能快速發(fā)現(xiàn)、排查問題。本篇文章將用代碼演示Spring Boot Admin的消息通知功能,并利用這個開箱即用的特性來個性化我們的需求,優(yōu)化我們在服務(wù)治理方面的工作效率。

Spring Boot Admin內(nèi)置了多種開箱即用的系統(tǒng)通知渠道,包括郵件、Slack、Telegram、Hipchat等多種社交媒體的通知渠道。但是考慮到它所支持的大都是一些國外的主流社交媒體,在國內(nèi)的本地化可能并不是那么的友好。不過沒關(guān)系Spring Boot Admin也提供了通用的接口,使得用戶可以基于他所提供的接口來自定義通知方式。下面使用Spring Boot Admin的通知功能來實現(xiàn)基于郵件和國內(nèi)辦公軟件“飛書”的服務(wù)健康預(yù)警。

郵件預(yù)警

依賴引入

在Spring Boot Admin的服務(wù)端項目中引入郵件相關(guān)依賴

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

添加配置

添加Spring Mail相關(guān)配置,我們配置好我們郵箱的Smtp服務(wù)器相關(guān)信息

spring.mail.host=your email smtp serverspring.mail.password=your passwordspring.mail.port=your email smtp server portspring.mail.test-connection=truespring.mail.username=837718548@qq.com

添加Spring Boot Admin(SBA)中相關(guān)的郵件配置,以下是SBA官方提供的郵件相關(guān)參數(shù)

Property name Description Default value spring.boot.admin.notify.mail.enabled Enable mail notifications true spring.boot.admin.notify.mail.ignore-changes Comma-delimited list of status changes to be ignored. Format: '<from-status>:<to-status>'. Wildcards allowed. 'UNKNOWN:UP' spring.boot.admin.notify.mail.template Resource path to the Thymeleaf template used for rendering. 'classpath:/META-INF/spring-boot-admin-server/mail/status-changed.html' spring.boot.admin.notify.mail.to Comma-delimited list of mail recipients 'root@localhost' spring.boot.admin.notify.mail.cc Comma-delimited list of carbon-copy recipients spring.boot.admin.notify.mail.from Mail sender 'Spring Boot Admin <noreply@localhost>' spring.boot.admin.notify.mail.additional-properties Additional properties which can be accessed from the template

我們這里使用如下配置

spring.boot.admin.notify.mail.from=837718548@qq.comspring.boot.admin.notify.mail.ignore-changes=''spring.boot.admin.notify.mail.to=目標(biāo)郵箱

配置中的ignore-changes參數(shù)表示服務(wù)從一個狀態(tài)變成其他狀態(tài)時發(fā)出預(yù)警,例如:'UNKNOWN:UP' 表示服務(wù)從未知狀態(tài)變成UP時,發(fā)出通知。當(dāng)其值是''時,表示任何狀態(tài)變更都會發(fā)出預(yù)警。若想指定其他參數(shù),參考上面的參數(shù)表。完成上述操作后,重啟Spring Boot Admin服務(wù)端,當(dāng)客戶端服務(wù)注冊進(jìn)來并且狀態(tài)變?yōu)閁P時,我們可以收到一封郵件:

Spring Boot Admin實現(xiàn)服務(wù)健康預(yù)警功能

添加郵件模版

Spring Boot admin發(fā)送的郵件可以自定義模板樣式,我們使用thymeleaf語法編寫郵件模板,示例模板代碼可參考本文在Github的代碼示例倉庫,編寫完模板文件之后,將文件放入項目src/main/resources/templates中,并且在配置文件中增加指定模板文件的地址:

spring.boot.admin.notify.mail.template=classpath:/templates/status-changed.html

重啟Spring Boot Admin服務(wù)端,當(dāng)客戶端服務(wù)注冊進(jìn)來并且狀態(tài)變?yōu)閁P時,我們可以收到一封郵件,如下是我們對郵件進(jìn)行本地化之后的樣式:

Spring Boot Admin實現(xiàn)服務(wù)健康預(yù)警功能

飛書預(yù)警

由于Spring Boot Admin內(nèi)置的通知渠道都是國外的社交媒體,不過它也提供了自定義通知渠道的接口,所以我們很容易就可以自定義通知渠道,下面演示集成辦公軟件飛書的通知。

獲取通知地址

飛書中提供了聊天機(jī)器人,我們只需調(diào)用機(jī)器人的WebHook就可以實現(xiàn)詳細(xì)的推送(企業(yè)微信,釘釘也具有類似功能)。

Spring Boot Admin實現(xiàn)服務(wù)健康預(yù)警功能

自定義通知渠道

Spring Boot Admin中提供了一個AbstractStatusChangeNotifier抽象類,我們可以通過繼承它來自定義通知渠道

public class FlyBookNotifier extends AbstractStatusChangeNotifier { private static final String DEFAULT_MESSAGE = '#{instance.registration.name} (#{instance.id}) 狀態(tài)發(fā)生轉(zhuǎn)變 #{lastStatus} ➡️ #{instance.statusInfo.status} ' + 'n' + 'n 實例詳情:#{instanceEndpoint}'; private final SpelExpressionParser parser = new SpelExpressionParser(); private RestTemplate restTemplate; private URI webhookUrl; private Expression message; public FlyBookNotifier(InstanceRepository repository, RestTemplate restTemplate) { super(repository); this.restTemplate = restTemplate; this.message = parser.parseExpression(DEFAULT_MESSAGE, ParserContext.TEMPLATE_EXPRESSION); } @Override protected Mono<Void> doNotify( InstanceEvent event, Instance instance) { if (webhookUrl == null) { return Mono.error(new IllegalStateException('’webhookUrl’ must not be null.')); } return Mono .fromRunnable(() -> restTemplate.postForEntity(webhookUrl, createMessage(event, instance), Void.class)); } public void setRestTemplate(RestTemplate restTemplate) { this.restTemplate = restTemplate; } protected Object createMessage(InstanceEvent event, Instance instance) { Map<String, Object> messageJson = new HashMap<>(); messageJson.put('title', '👹警告&👼提醒'); messageJson.put('text', getText(event, instance)); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); return new HttpEntity<>(messageJson, headers); } protected String getText(InstanceEvent event, Instance instance) { Map<String, Object> root = new HashMap<>(); root.put('event', event); root.put('instance', instance); root.put('instanceEndpoint', instance.getEndpoints().toString()); root.put('lastStatus', getLastStatus(event.getInstance())); StandardEvaluationContext context = new StandardEvaluationContext(root); context.addPropertyAccessor(new MapAccessor()); return message.getValue(context, String.class); } public URI getWebhookUrl() { return webhookUrl; } public void setWebhookUrl(URI webhookUrl) { this.webhookUrl = webhookUrl; } public String getMessage() { return message.getExpressionString(); } public void setMessage(String message) { this.message = parser.parseExpression(message, ParserContext.TEMPLATE_EXPRESSION); }}

上面代碼是一個示例,用戶可以根據(jù)自己的需求來自定義消息體的格式和內(nèi)容。隨后我們在Spring中創(chuàng)建該通知類的bean

@Configurationpublic static class NotifierConfiguration { @Bean @ConditionalOnMissingBean @ConfigurationProperties('spring.boot.admin.notify.flybook') public FlyBookNotifier flyBookNotifier(InstanceRepository repository) { return new FlyBookNotifier(repository, new RestTemplate()); }}

最后我們在項目的配置文件中添加我們飛書渠道的配置信息

spring.boot.admin.notify.flybook.ignore-changes=''spring.boot.admin.notify.flybook.webhook-url=https://open.feishu.cn/open-apis/bot/hook...

完成上述操作后,重啟Spring Boot Admin服務(wù)端,當(dāng)客戶端服務(wù)注冊進(jìn)來并且狀態(tài)變?yōu)閁P時,我們可以在飛書端收到Spring Boot Admin自動推過來的預(yù)警信息:

Spring Boot Admin實現(xiàn)服務(wù)健康預(yù)警功能

至此,我們的自定義消息渠道就已經(jīng)完成。通過繼承AbstractStatusChangeNotifier抽象類,我們可以很輕易的自定義自己想要實現(xiàn)的推送渠道(設(shè)計模式:模板方法模式)。

總結(jié)

本文主要介紹了Spring Boot Admin中所提供的多種消息預(yù)警推送渠道,并且我們可以通過自定義消息預(yù)警渠道來滿足我們自身的需求,整個過程并不需要耗費太多的人力和時間成本。我們用了兩個示例來演示如何實現(xiàn)Spring Boot Admin的消息預(yù)警功能,分別是郵件預(yù)警和自定義的飛書預(yù)警。

本文的示例代碼SBA-client:https://github.com/cg837718548/sba-client-demo.gitSBA-server:https://github.com/cg837718548/sba-server-demo.git

到此這篇關(guān)于Spring Boot Admin實現(xiàn)服務(wù)健康預(yù)警功能的文章就介紹到這了,更多相關(guān)spring boot 健康預(yù)警內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 不锈钢列管式冷凝器,换热器厂家-无锡飞尔诺环境工程有限公司 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 房车价格_依维柯/大通/东风御风/福特全顺/江铃图片_云梯搬家车厂家-程力专用汽车股份有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 全自动真空上料机_粉末真空上料机_气动真空上料机-南京奥威环保科技设备有限公司 | 紫外荧光硫分析仪-硫含量分析仪-红外光度测定仪-泰州美旭仪器 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | 低温柔性试验仪-土工布淤堵-沥青车辙试验仪-莱博特(天津)试验机有限公司 | 耳模扫描仪-定制耳机设计软件-DLP打印机-asiga打印机-fitshape「飞特西普」 | 棕刚玉-白刚玉厂家价格_巩义市东翔净水材料厂 | 橡胶接头_橡胶软接头_可曲挠橡胶接头-巩义市创伟机械制造有限公司 | 字典-新华字典-在线字典查字-字典趣| 刑事律师_深圳著名刑事辩护律师_王平聚【清华博士|刑法教授】 | 智能监控-安防监控-监控系统安装-弱电工程公司_成都万全电子 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 电采暖锅炉_超低温空气源热泵_空气源热水器-鑫鲁禹电锅炉空气能热泵厂家 | 高博医疗集团上海阿特蒙医院| YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | 热处理温控箱,热处理控制箱厂家-吴江市兴达电热设备厂 | 油液红外光谱仪-油液监测系统-燃油嗅探仪-上海冉超光电科技有限公司 | 渣土车电机,太阳能跟踪器电机,蜗轮蜗杆减速电机厂家-淄博传强电机 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 拼装地板,悬浮地板厂家,悬浮式拼装运动地板-石家庄博超地板科技有限公司 | 12cr1mov无缝钢管切割-15crmog无缝钢管切割-40cr无缝钢管切割-42crmo无缝钢管切割-Q345B无缝钢管切割-45#无缝钢管切割 - 聊城宽达钢管有限公司 | 武汉森源蓝天环境科技工程有限公司-为环境污染治理提供协同解决方案 | 凝胶成像仪,化学发光凝胶成像系统,凝胶成像分析系统-上海培清科技有限公司 | 电梯装饰-北京万达中意电梯装饰有限公司| EDLC超级法拉电容器_LIC锂离子超级电容_超级电容模组_软包单体电容电池_轴向薄膜电力电容器_深圳佳名兴电容有限公司_JMX专注中高端品牌电容生产厂家 | 南溪在线-南溪招聘找工作、找房子、找对象,南溪综合生活信息门户! | 双工位钻铣攻牙机-转换工作台钻攻中心-钻铣攻牙机一体机-浙江利硕自动化设备有限公司 | 低压载波电能表-单相导轨式电能表-华邦电力科技股份有限公司-智能物联网综合管理平台 | 网站优化公司_SEO优化_北京关键词百度快速排名-智恒博网络 | 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 耐高温风管_耐高温软管_食品级软管_吸尘管_钢丝软管_卫生级软管_塑料波纹管-东莞市鑫翔宇软管有限公司 | 北京翻译公司_同传翻译_字幕翻译_合同翻译_英语陪同翻译_影视翻译_翻译盖章-译铭信息 | 合肥通道闸-安徽车牌识别-人脸识别系统厂家-安徽熵控智能技术有限公司 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 网络推广公司_网络营销方案策划_企业网络推广外包平台-上海澜推网络 |