Spring cloud monitor 自定义通知方式
来源:互联网 发布:函数式编程思想 pdf 编辑:程序博客网 时间:2024/06/03 09:27
Spring cloud monitor 服务监控自定义通知
近段时间发现注册到eureka的服务监控还不算完美,服务架构中之用到了邮件通知管理员的机制,但是如果管理员不在电脑边或手机没有开网络,那么就没有办法及时得到通知,这个时候“古老“的方式:短信通知就浮出水面,但是通过阅读官方文档,并没有发现有提相关的配置方式,据我了解,只有一下几种方式
:
- Reminder notifications
- Filtering notifications
- Mail notifications
- Pagerduty notifications
- Hipchat notifications
- Slack notifications
这么多的的notification 方式其实我并没有一一查看,如果想进行进一步了解请阅读:
http://codecentric.github.io/spring-boot-admin/1.4.6/#_what_is_spring_boot_admin
好废话不多说,下面直接上Demo:
首先通过monitor的启动日志发现监控注册到eureka服务的健康状况是通过一个抽象方法来实现的(AbstractStatusChangeNotifier),这个方法,一看就是用来继承的
创建NotifyAdmin类并且继承AbstractStatusChangeNotifier抽象类,重写其doNotify方法
上代码
/** * Created by newbee on 2017/4/14. */public class NotifierAdmin extends AbstractStatusChangeNotifier { private Logger logger = LoggerFactory.getLogger(getClass()); private String[] phones = {"18519303003"}; @Autowired private AliSmsSenderImpl smsSender; private static final String DEFAULT_TEXT = "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}"; private final SpelExpressionParser parser = new SpelExpressionParser(); private String[] ignoreChanges = new String[]{"UNKNOWN:DOWN"}; @Override protected void doNotify(ClientApplicationEvent event) throws Exception { super.setIgnoreChanges(ignoreChanges); String smsContent = getSmsContent(event); String status = event.getApplication().getStatusInfo().getStatus(); String name = event.getApplication().getName(); if(!check(phones,smsContent)){ return; } boolean b = smsSender.sendSMS(phones, smsContent); logger.info(name + " status changed to " + status); logger.info(" send sms is " + b ); logger.info("send sms to"+phones.length+" administrators"); logger.info(" there are "+getPhoneNumbers(phones)); } /** * 封装信息消息体 * */ private String getSmsContent(ClientApplicationEvent event){ Expression expression = parser.parseExpression(DEFAULT_TEXT, ParserContext.TEMPLATE_EXPRESSION); EvaluationContext context = new StandardEvaluationContext(event); String content = expression.getValue(context, String.class); return content + "\n CurrentDateTime is \n" + DateFormatUtils.format(new Date(), DateUtil.PAY_TIME_FMT); }
总结
善于重写已有的方法,注意阅读官方文档,通过细节找到突破点,就可以解决一些看似困难的问题,仅此作为一次笔记,其实也是第一次接触spring cloud。
0 0
- Spring cloud monitor 自定义通知方式
- Spring Cloud Stream Binder Kafka Monitor
- Spring Cloud Feign 使用方式
- spring cloud ribbon自定义负载均衡策略
- Spring Cloud 的 Feign 组件 自定义配置
- Spring Cloud自定义Hystrix请求命令
- Spring Cloud自定义引导属性源
- Spring Cloud Feign Jackson自定义配置
- [Cloud Computing]Mechanisms: Cloud Usage Monitor
- [Cloud Computing]Mechanisms: Audit Monitor
- [Cloud Computing]Mechanisms: SLA Monitor
- [Cloud Computing]Mechanisms: Traffic Monitor
- [Cloud Computing]Mechanisms: Virtualization Monitor
- Spring Cloud
- Spring Cloud
- Spring Cloud
- Spring Cloud
- Spring cloud
- html导航框架简析
- AngularJS 监听变量变化
- 南阳理工ACM 题目105 九的余数
- 固定高度的div在屏幕中居中方法
- 害死人不偿命的(3n+1)猜想
- Spring cloud monitor 自定义通知方式
- 动态规划练习一 19:最低通行费
- windows7更新出错
- 《编程小白的第一本Python入门书》笔记
- 454. 4Sum II
- 21:三角形最佳路径问题
- 两只老虎
- Java 判断一个序列是否是搜索二叉树的后序遍历结果
- 2017CCCC天梯赛决赛 赛后总结