Skip to content

Commit c106f38

Browse files
committed
add email alert on restart with replication manager version
1 parent cb390b5 commit c106f38

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

cluster/cluster.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626
"github.com/signal18/replication-manager/config"
2727
v3 "github.com/signal18/replication-manager/repmanv3"
2828
"github.com/signal18/replication-manager/router/maxscale"
29+
"github.com/signal18/replication-manager/utils/alert"
2930
"github.com/signal18/replication-manager/utils/cron"
3031
"github.com/signal18/replication-manager/utils/dbhelper"
3132
"github.com/signal18/replication-manager/utils/logrus/hooks/pushover"
@@ -334,6 +335,22 @@ func (cluster *Cluster) Init(conf config.Config, cfgGroup string, tlog *s18log.T
334335
}
335336
cluster.LogPrintf("ALERT", "Replication manager init cluster version : %s", cluster.Conf.Version)
336337

338+
if cluster.Conf.MailTo != "" {
339+
msg := "Replication manager init cluster version : " + cluster.Conf.Version
340+
subj := "Replication-Manager version"
341+
alert := alert.Alert{}
342+
alert.From = cluster.Conf.MailFrom
343+
alert.To = cluster.Conf.MailTo
344+
alert.Destination = cluster.Conf.MailSMTPAddr
345+
alert.User = cluster.Conf.MailSMTPUser
346+
alert.Password = cluster.Conf.MailSMTPPassword
347+
alert.TlsVerify = cluster.Conf.MailSMTPTLSSkipVerify
348+
err := alert.EmailMessage(msg, subj)
349+
if err != nil {
350+
cluster.LogPrintf("ERROR", "Could not send mail alert: %s ", err)
351+
}
352+
}
353+
337354
hookerr, err := s18log.NewRotateFileHook(s18log.RotateFileConfig{
338355
Filename: cluster.WorkingDir + "/sql_error.log",
339356
MaxSize: cluster.Conf.LogRotateMaxSize,

utils/alert/alert.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,27 @@ New server state change from %s is %s.`, a.Origin, a.PrevState, a.State)
5858

5959
return err
6060
}
61+
62+
func (a *Alert) EmailMessage(msg string, subj string) error {
63+
e := email.NewEmail()
64+
e.From = a.From
65+
e.To = strings.Split(a.To, ",")
66+
e.Subject = subj
67+
e.Text = []byte(msg)
68+
var err error
69+
if a.User == "" {
70+
if a.TlsVerify {
71+
err = e.SendWithTLS(a.Destination, nil, &tls.Config{InsecureSkipVerify: true})
72+
} else {
73+
err = e.Send(a.Destination, nil)
74+
}
75+
} else {
76+
if a.TlsVerify {
77+
err = e.SendWithTLS(a.Destination, smtp.PlainAuth("", a.User, a.Password, strings.Split(a.Destination, ":")[0]), &tls.Config{InsecureSkipVerify: true})
78+
} else {
79+
err = e.Send(a.Destination, smtp.PlainAuth("", a.User, a.Password, strings.Split(a.Destination, ":")[0]))
80+
}
81+
}
82+
83+
return err
84+
}

0 commit comments

Comments
 (0)