@@ -3,6 +3,7 @@ package ruler
3
3
import (
4
4
"context"
5
5
"fmt"
6
+ "io"
6
7
"net/http"
7
8
"os"
8
9
"sync"
@@ -293,6 +294,8 @@ func (r *DefaultMultiTenantManager) getOrCreateNotifier(userID string, userManag
293
294
return n .notifier , nil
294
295
}
295
296
297
+ logger := log .With (r .logger , "user" , userID )
298
+
296
299
n = newRulerNotifier (& notifier.Options {
297
300
QueueCapacity : r .cfg .NotificationQueueCapacity ,
298
301
Registerer : userManagerRegistry ,
@@ -309,9 +312,27 @@ func (r *DefaultMultiTenantManager) getOrCreateNotifier(userID string, userManag
309
312
defer sp .Finish ()
310
313
ctx = ot .ContextWithSpan (ctx , sp )
311
314
_ = ot .GlobalTracer ().Inject (sp .Context (), ot .HTTPHeaders , ot .HTTPHeadersCarrier (req .Header ))
312
- return ctxhttp .Do (ctx , client , req )
315
+ resp , err := ctxhttp .Do (ctx , client , req )
316
+ if err != nil {
317
+ level .Error (logger ).Log ("msg" , "error occurred while sending alerts" , "error" , err )
318
+ return resp , err
319
+ }
320
+ defer resp .Body .Close ()
321
+ if resp .StatusCode / 100 != 2 {
322
+ bodyBytes , err := io .ReadAll (resp .Body )
323
+ if err != nil {
324
+ level .Error (logger ).Log ("msg" , "error reading response body" , "error" , err , "response code" , resp .StatusCode )
325
+ return resp , err
326
+ }
327
+ customErrorMessage := string (bodyBytes )
328
+ if len (customErrorMessage ) >= 150 {
329
+ customErrorMessage = customErrorMessage [:150 ]
330
+ }
331
+ level .Error (logger ).Log ("msg" , "error occurred sending notification" , "error" , customErrorMessage , "response code" , resp .StatusCode )
332
+ }
333
+ return resp , err
313
334
},
314
- }, log . With ( r . logger , "user" , userID ) , userManagerRegistry , r .notifiersDiscoveryMetrics )
335
+ }, logger , userManagerRegistry , r .notifiersDiscoveryMetrics )
315
336
316
337
n .run ()
317
338
0 commit comments