@@ -100,6 +100,11 @@ func (h *Handler) HandlePrometheus(w http.ResponseWriter, r *http.Request) {
100100
101101 description := buildDescription (alert , webhook )
102102
103+ grafanaURL := alert .Annotations ["dashboard" ]
104+ if grafanaURL == "" {
105+ grafanaURL = alert .GeneratorURL
106+ }
107+
103108 trigger := alertName
104109
105110 alertStatus := alert .Status
@@ -125,6 +130,8 @@ func (h *Handler) HandlePrometheus(w http.ResponseWriter, r *http.Request) {
125130 "labels" : map [string ]string {
126131 "trigger" : trigger ,
127132 "severity_level" : severityLevel ,
133+ "alertreceiver" : "alertreceiver" ,
134+ "grafana" : grafanaURL ,
128135 },
129136 "annotations" : map [string ]string {
130137 "summary" : summary ,
@@ -133,7 +140,7 @@ func (h *Handler) HandlePrometheus(w http.ResponseWriter, r *http.Request) {
133140 }
134141 madisonPayloadJSON , _ := json .Marshal (madisonPayload )
135142
136- if err := h .madisonClient .SendAlert (trigger , severityLevel , summary , description ); err != nil {
143+ if err := h .madisonClient .SendAlert (trigger , severityLevel , summary , description , grafanaURL ); err != nil {
137144 h .logger .Error ("failed to send alert to madison" , log.Fields {
138145 "error" : err .Error (),
139146 "alertName" : alertName ,
@@ -158,6 +165,7 @@ func buildDescription(alert Alert, webhook AlertmanagerWebhook) string {
158165 var parts []string
159166
160167 if desc := alert .Annotations ["description" ]; desc != "" {
168+ desc = removeEmojis (desc )
161169 parts = append (parts , desc )
162170 }
163171
@@ -176,6 +184,30 @@ func buildDescription(alert Alert, webhook AlertmanagerWebhook) string {
176184 return strings .Join (parts , "\n \n " )
177185}
178186
187+ func removeEmojis (s string ) string {
188+ var result strings.Builder
189+ for _ , r := range s {
190+ if ! isEmoji (r ) {
191+ result .WriteRune (r )
192+ }
193+ }
194+ return strings .TrimSpace (result .String ())
195+ }
196+
197+ func isEmoji (r rune ) bool {
198+ return (r >= 0x1F600 && r <= 0x1F64F ) ||
199+ (r >= 0x1F300 && r <= 0x1F5FF ) ||
200+ (r >= 0x1F680 && r <= 0x1F6FF ) ||
201+ (r >= 0x1F1E0 && r <= 0x1F1FF ) ||
202+ (r >= 0x2600 && r <= 0x26FF ) ||
203+ (r >= 0x2700 && r <= 0x27BF ) ||
204+ (r >= 0xFE00 && r <= 0xFE0F ) ||
205+ (r >= 0x1F900 && r <= 0x1F9FF ) ||
206+ (r >= 0x1FA00 && r <= 0x1FA6F ) ||
207+ r == 0x200D ||
208+ r == 0xFE0F
209+ }
210+
179211func mapSeverityToLevel (severity string ) string {
180212 severityMap := map [string ]string {
181213 "critical" : "1" ,
0 commit comments