重新定义Spring Boot Admin的邮件通知模板

时间:2016-11-07 11:11:57

标签: spring-boot-admin

我们是否可以获得可用于重新定义模板的变量样本,documentation很少见?

在类包中de.codecentric.boot.admin.notify.MailNotifier我读了

private static final String DEFAULT_SUBJECT = "#{application.name} (#{application.id}) is #{to.status}";
private static final String DEFAULT_TEXT = "#{application.name} (#{application.id})\nstatus changed from #{from.status} to #{to.status}\n\n#{application.healthUrl}";

在我的特定用例中,我继承了一堆应用程序,我想ping或监视它们还活着。我无法控制它们,但我的应用依赖于它们。

我的应用程序没有失败,但可能行为不端(重要的一点!)。

所以我添加了一堆海关HealthIndicator来通过ping监控它们,这非常有效,我很高兴通过更改IP来发送通知,太棒了!

但是有一个但是,发送的消息让我思考,而不是应用程序失败,而健康指标是状态OUT_OF_SERVICE,DevOps不必要的压力。

回答我的问题,如何添加一些额外的变量,其中一些精心设计的SPEL将区分健康指标消息状态更改,而不是应用程序状态更改,即webapp脱机。

是否可以使用SBA关键字字典重新定义spring.boot.admin.notify.mail.text邮件通知配置选项?

我想这对于其他通知者来说是有效的,Slack。

谢谢。

2 个答案:

答案 0 :(得分:1)

评估SpEL表达式的上下文是事件。 因此,ClientApplicationEvent(或事件实例的相应子类(例如ClientApplicationStatusChangedEvent))的所有属性都可用。

如果不够,您可以发送自己的MailNotifier子类。

答案 1 :(得分:0)

答案是否定的,在没有代码更改的情况下,在当前代码库中无法做到。 可用的SBA通知关键字/变量如下:

  • application.name
  • application.id
  • application.healthUrl
  • application.managementUrl
  • application.serviceUrl
  • application.statusInfo.status
  • from.status
  • to.status
  • 时间戳

我们没有其他任何东西。 然而,StatusUpdater.queryStatus看起来很有希望得到一些额外的数据。