在恶劣线上环境中,我们最担心的是服务挂掉,每当这个时候,运维就想吃柠檬了,一些运维工具也可以实现这个功能,但是,既然用了spring cloud,就可以享受它带来的福利吧。
此功能基于spring boot admin这个监控工具,了解轻戳:http://blog.csdn.net/rickiyeat/article/details/73109328

来看看它的guide reference怎么说的:
http://codecentric.github.io/spring-boot-admin/1.4.6/#_notifications
RemindingNotifier会在应用上线或宕掉的时候发送提醒,也就是把notifications发送给其他的notifiernotifier的实现很有意思,不深究了,从类关系可以知道,我们可以以这么几种方式发送notificationsPagerduty、Hipchat 、Slack 、Mail、 Reminder

这里写图片描述

1、添加pom依赖:

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

2、在spring boot admin工程添加配置类:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;

import com.netflix.governator.annotations.binding.Primary;

import de.codecentric.boot.admin.notify.Notifier;
import de.codecentric.boot.admin.notify.RemindingNotifier;

/**
 * 
 * @Title: 为监控的服务添加邮件通知
 * @Package com.lovnx 
 * @author yezhiyuan   
 * @date 2017年6月14日 上午10:18:13 
 * @version V1.0
 */

@Configuration
@EnableScheduling
public class NotifierConfiguration {

    @Autowired
    private Notifier notifier;

    //服务上线或者下线都通知
    private String[] reminderStatuses = { "DOWN" };

    @Bean
    @Primary
    public RemindingNotifier remindingNotifier() {
        RemindingNotifier remindingNotifier = new RemindingNotifier(notifier);
        //设定时间,5分钟提醒一次
//        remindingNotifier.setReminderPeriod(TimeUnit.MINUTES.toMillis(5)); 
        //设定监控服务状态,状态改变为给定值的时候提醒
        remindingNotifier.setReminderStatuses(reminderStatuses);
        return remindingNotifier;
    }
}

3、配置文件添加接受者邮件地址:

spring.mail.host=smtp.xxx.com
spring.boot.admin.notify.mail.to=yezhiyuan@xxx.com

4、由于spring boot admin是从eureka来读取服务信息的,所以我们要启动Eureka,再拿一个子服务来做测试,依次启动eureka、B2服务、spring boot admin:

这里写图片描述

5、可以看到现在服务还很健康,现在我们关掉B2服务:

这里写图片描述

6、查看邮箱:

这里写图片描述

代码托管:https://github.com/Lovnx/micro-service

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐