@@ -15,6 +15,7 @@ import (
15
15
"io"
16
16
"time"
17
17
18
+ teams "github.com/dasrick/go-teams-notify/v2"
18
19
"github.com/nsf/termbox-go"
19
20
"github.com/signal18/replication-manager/utils/s18log"
20
21
log "github.com/sirupsen/logrus"
@@ -174,7 +175,9 @@ func (cluster *Cluster) LogPrintf(level string, format string, args ...interface
174
175
if cluster .Conf .SlackURL != "" {
175
176
cluster .LogSlack .WithFields (log.Fields {"cluster" : cluster .Name , "type" : "alert" }).Errorf (cliformat , args ... )
176
177
}
177
-
178
+ if cluster .Conf .TeamsUrl != "" {
179
+ go cluster .sendMsTeams (level , format , args )
180
+ }
178
181
case "INFO" :
179
182
log .WithField ("cluster" , cluster .Name ).Infof (cliformat , args ... )
180
183
case "DEBUG" :
@@ -184,6 +187,9 @@ func (cluster *Cluster) LogPrintf(level string, format string, args ...interface
184
187
if cluster .Conf .SlackURL != "" {
185
188
cluster .LogSlack .WithFields (log.Fields {"cluster" : cluster .Name , "type" : "alert" }).Errorf (cliformat , args ... )
186
189
}
190
+ if cluster .Conf .TeamsUrl != "" {
191
+ go cluster .sendMsTeams (level , format , args )
192
+ }
187
193
case "TEST" :
188
194
log .WithFields (log.Fields {"cluster" : cluster .Name , "type" : "test" }).Infof (cliformat , args ... )
189
195
case "BENCH" :
@@ -194,8 +200,10 @@ func (cluster *Cluster) LogPrintf(level string, format string, args ...interface
194
200
cluster .LogSlack .WithFields (log.Fields {"cluster" : cluster .Name , "type" : "alert" }).Errorf (cliformat , args ... )
195
201
}
196
202
if cluster .Conf .PushoverAppToken != "" && cluster .Conf .PushoverUserToken != "" {
197
- cluster .LogVault .WithFields (log.Fields {"cluster" : cluster .Name , "type" : "alert" }).Errorf (cliformat , args ... )
198
-
203
+ cluster .LogPushover .WithFields (log.Fields {"cluster" : cluster .Name , "type" : "alert" }).Errorf (cliformat , args ... )
204
+ }
205
+ if cluster .Conf .TeamsUrl != "" {
206
+ go cluster .sendMsTeams (level , format , args )
199
207
}
200
208
case "STATE" :
201
209
status := cliformat [0 :6 ]
@@ -213,3 +221,32 @@ func (cluster *Cluster) LogPrintf(level string, format string, args ...interface
213
221
}
214
222
return line
215
223
}
224
+
225
+ func (cluster * Cluster ) sendMsTeams (level string , format string , args ... interface {}) error {
226
+ log .Printf ("COUCOU sendMsTeams" )
227
+ // init the client
228
+ mstClient := teams .NewClient ()
229
+
230
+ // setup webhook url
231
+ webhookUrl := cluster .Conf .TeamsUrl
232
+
233
+ // setup message card
234
+ msgCard := teams .NewMessageCard ()
235
+ msgCard .Title = "Replication-Manager alert"
236
+ switch level {
237
+ case "ERROR" :
238
+ msgCard .ThemeColor = "#4169e1"
239
+ case "ALERT" :
240
+ msgCard .ThemeColor = "#b22222"
241
+ case "WARN" :
242
+ msgCard .ThemeColor = "#112233"
243
+ }
244
+
245
+ msgCard .Text = fmt .Sprintf (format , args ... )
246
+ // send
247
+ err := mstClient .Send (webhookUrl , msgCard )
248
+ if err != nil {
249
+ log .Printf ("sendMSTeams error send alert : %s" , err )
250
+ }
251
+ return nil
252
+ }
0 commit comments