From 612b261aa0e6890896f50a1a81dc4437d5390ddd Mon Sep 17 00:00:00 2001 From: itchyny Date: Fri, 9 Dec 2016 15:16:21 +0900 Subject: [PATCH] support expression monitor alerts in mkr alerts list --- alerts.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/alerts.go b/alerts.go index 93aae269..539b6de2 100644 --- a/alerts.go +++ b/alerts.go @@ -163,6 +163,18 @@ func formatJoinedAlert(alertSet *alertSet, colorize bool) string { default: monitorMsg = fmt.Sprintf("%s %.2f > %.2f msec, status:%s", m.Name, alert.Value, m.ResponseTimeCritical, alert.Message) } + case *mkr.MonitorExpression: + expression := trimExpression(m.Expression) + switch alert.Status { + case "CRITICAL": + monitorMsg = fmt.Sprintf("%s %.2f %s %.2f", expression, alert.Value, m.Operator, m.Critical) + case "WARNING": + monitorMsg = fmt.Sprintf("%s %.2f %s %.2f", expression, alert.Value, m.Operator, m.Warning) + case "UNKNOWN": + monitorMsg = fmt.Sprintf("%s %s", expression, alert.Message) + default: + monitorMsg = fmt.Sprintf("%s %.2f %s %.2f", expression, alert.Value, m.Operator, m.Critical) + } default: monitorMsg = fmt.Sprintf("%s", monitor.MonitorType()) } @@ -174,11 +186,19 @@ func formatJoinedAlert(alertSet *alertSet, colorize bool) string { statusMsg = color.RedString("CRITICAL") case "WARNING": statusMsg = color.YellowString("WARNING ") + case "UNKNOWN": + statusMsg = "UNKNOWN " } } return fmt.Sprintf("%s %s %s %s%s", alert.ID, time.Unix(alert.OpenedAt, 0).Format(layout), statusMsg, monitorMsg, hostMsg) } +var expressionTrimmer = regexp.MustCompile(`[\r\n]\s*`) + +func trimExpression(expr string) string { + return expressionTrimmer.ReplaceAllString(expr, " ") +} + func doAlertsRetrieve(c *cli.Context) error { client := newMackerelFromContext(c)