Make default log alert conditional
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing

Allow using the default `log` alert for both up and down alerts using
Go's templating conditionals. Following this example can do away with
the need for an up and down version of every alert.
This commit is contained in:
IamTheFij 2020-06-19 09:51:42 -07:00
parent ad6f3be6ec
commit cffbbd734a
3 changed files with 20 additions and 1 deletions

View File

@ -93,6 +93,7 @@ Also, when alerts are executed, they will be passed through Go's format function
|`{{.LastCheckOutput}}`|The last returned value from the check command to either stderr or stdout|
|`{{.LastSuccess}}`|The ISO datetime of the last successful check|
|`{{.MonitorName}}`|The name of the monitor that failed and triggered the alert|
|`{{.IsUp}}`|Indicates if the monitor that is alerting is up or not. Can be used in a conditional message template|
### Metrics

View File

@ -124,7 +124,7 @@ func NewLogAlert() *Alert {
Command: CommandOrShell{
Command: []string{
"echo",
"{{.MonitorName}} check has failed {{.FailureCount}} times",
"{{.MonitorName}} {{if .IsUp}}has recovered{{else}}check has failed {{.FailureCount}} times{{end}}",
},
},
}

View File

@ -76,6 +76,24 @@ func TestAlertSend(t *testing.T) {
"Command shell with legacy template",
true,
},
// Test default log alert down
{
*NewLogAlert(),
AlertNotice{MonitorName: "Test", FailureCount: 1, IsUp: false},
"Test check has failed 1 times\n",
false,
"Default log alert down",
false,
},
// Test default log alert up
{
*NewLogAlert(),
AlertNotice{MonitorName: "Test", IsUp: true},
"Test has recovered\n",
false,
"Default log alert up",
false,
},
}
for _, c := range cases {