我在spring boot admin下监控了几个应用程序。springbootadmin很擅长告诉我应用程序是启动还是关闭,以及其他各种指标。
我还想知道这些应用程序公开的某些URL返回的http状态是200。具体来说,我想每天发送一次get请求到这些URL。如果它从其中任何一个接收到非200状态,它将发送一封电子邮件,说明哪些url报告的是非200。
springboot管理员能做些什么?我知道风俗 HealthIndicator
但不确定是否可以安排或者是否适合这样做。
我只是想看看是否有一些SpringBootAdmin提供的支持,在我构建自己的应用程序进行get调用和发送电子邮件之前。
更新
这些URL被公开为eureka服务,我通过springcloudopenfeign调用其他服务。
更新2
我继续构建了自己的自定义应用程序来处理这个问题。细节如下,但仍然感兴趣,如果Spring提供一些现成的东西来做这件事。
应用程序.yml
app:
serviceUrls:
- "http://car-service/cars?category=sedan"
- "http://truck-service/trucks"
cron: "0 0 10 * * *"
URL读入:
@Component
@ConfigurationProperties(prefix = "app")
@Getter
@Setter
public class ServiceUrls {
private String[] serviceUrls;
}
通过cron,计划每天运行一次:
@Component
@RequiredArgsConstructor
@Slf4j
public class ServiceCheckRunner {
private final ServiceHealth serviceHealth;
@Scheduled(cron = "${cron}")
public void runCheck() {
serviceHealth.check();
}
}
这是检查URL是否不返回错误的代码:
@Service
@RequiredArgsConstructor
@Slf4j
public class ServiceHealth {
private final ServiceUrls serviceUrls;
private final RestTemplate rest;
public void check() {
List<String> failedServiceUrls = new ArrayList<>();
for (String serviceUrl : serviceUrls.getServiceUrls()) {
try {
ResponseEntity<String> response = rest.getForEntity(serviceUrl, String.class);
if (!response.getStatusCode().is2xxSuccessful()) {
failedServiceUrls.add(serviceUrl);
}
} catch (Exception e){
failedServiceUrls.add(serviceUrl);
}
}
// code to send an email with failedServiceUrls.
}
}
1条答案
按热度按时间cnwbcb6i1#
您可以使用springbootadmin,以便在注册的客户机将其状态从up更改为offline或其他时发送电子邮件通知。
pom.xml文件
应用程序属性
但是,如果您真的需要每天检查一次客户机状态,那么您需要实现一个定制的解决方案。