Commit Graph

129 Commits

Author SHA1 Message Date
Yuriy Tseretyan
0b3c60fc22
Alerting: Refactor notifiers VictorOps, Threema, Telegram to use encoding/json to parse settings instead of simplejson (#55779)
* update victorops
* update threema
* update telegram
2022-09-27 16:58:18 -04:00
Yuriy Tseretyan
29fdbf0354
Alerting: Refactor webhook notifier to use encoding/json to parse settings instead of simplejson (#55517)
* update webhook to use json marshaller
* make maxAlerts to be interface{}
2022-09-26 12:51:58 -04:00
Yuriy Tseretyan
57a0b6db2c
Alerting: Refactor WeCom notifier to use encoding/json to parse settings instead of simplejson (#55423) 2022-09-20 14:37:24 -04:00
Alexander Weaver
3a580dc3cd
Alerting: Extract default message embed into named constant (#55424)
* Resolve conflicts

* Combine multiple const definitions
2022-09-20 10:20:06 -05:00
Alexander Weaver
4df41972f1
Alerting: Refactor one notifier to use encoding/json to parse settings instead of simplejson (#55271)
* Create struct for Slack's receiver settings

* Remove one layer of indirection when building slack notifier

* Delete un-used struct

* Validate against settings struct instead of simplejson object

* Genericize settings marshalling

* Remove repetition between fields on notifier and fields on settings struct

* Rename unmarshal settings wrapper

* Handle comma separated strings at marshalling time rather than validation time

* Address misc review feedback
2022-09-19 17:30:16 -05:00
Emil Tullstedt
b287047052
Chore: Upgrade Go to 1.19.1 (#54902)
* WIP

* Set public_suffix to a pre Ruby 2.6 version

* we don't need to install python

* Stretch->Buster

* Bump versions in lib.star

* Manually update linter

Sort of messy, but the .mod-file need to contain all dependencies that
use 1.16+ features, otherwise they're assumed to be compiled with
-lang=go1.16 and cannot access generics et al.

Bingo doesn't seem to understand that, but it's possible to manually
update things to get Bingo happy.

* undo reformatting

* Various lint improvements

* More from the linter

* goimports -w ./pkg/

* Disable gocritic

* Add/modify linter exceptions

* lint + flatten nested list

Go 1.19 doesn't support nested lists, and there wasn't an obvious workaround.
https://go.dev/doc/comment#lists
2022-09-12 12:03:49 +02:00
Ilya Galimyanov
b593d371ef
Alerting: Telegram: truncate long messages (#54339)
Truncate messages longer than 4096 characters
2022-09-06 16:47:04 +01:00
George Robinson
e163a976fa
Alerting: Fix width of Adapative Cards in Teams notifications (#53996) 2022-08-22 16:04:22 +01:00
George Robinson
c960301aa8
Alerting: Fix links in Microsoft Teams notifications (#54003) 2022-08-22 12:08:38 +02:00
George Robinson
6d69d7acb8
Alerting: Fix notifications for Microsoft Teams (#53810)
This commit fixes notifications for Microsoft Teams where notifications
would just contain "Card" rather than the title.
2022-08-17 16:46:46 +01:00
George Robinson
5e1d628f21
Alerting: Use Adaptive Cards in Teams notifications (#53532)
This commit changes the cards in Teams notifications from Office 365
Connector cards to Adaptive Cards to fix an issue where images were not
shown in Teams for desktop and web. Since Office 365 Connector cards
are deprecated, it made sense to move to Adapative Cards and fix this
bug at the same time.

The Adaptive Card messages maintain the design of the Office 365
Connector Card with a number of minor differences:

- In Adaptive Card messages the color of the title is red or green
  depending on the status of the alerts, where as with Office 365
  connector cards there was a colored border at the top of the title

- In Adaptive Card messages the title is bold to make it easier to read
  when the color is red or green

- In Adaptive Card messages the thumbnails for images are medium size
  if there are more than two images, otherwise large size
2022-08-10 19:51:20 +01:00
Jo
062d255124
Handle ioutil deprecations (#53526)
* replace ioutil.ReadFile -> os.ReadFile

* replace ioutil.ReadAll -> io.ReadAll

* replace ioutil.TempFile -> os.CreateTemp

* replace ioutil.NopCloser -> io.NopCloser

* replace ioutil.WriteFile -> os.WriteFile

* replace ioutil.TempDir -> os.MkdirTemp

* replace ioutil.Discard -> io.Discard
2022-08-10 15:37:51 +02:00
gotjosh
d762de7aa7
Revert "Alerting: Add support for images in Line alerts (#50703)" (#52593)
This reverts commit 0af09b8c57.
2022-07-21 06:57:57 -04:00
George Robinson
0af09b8c57
Alerting: Add support for images in Line alerts (#50703) 2022-07-21 11:43:06 +02:00
gotjosh
b026f2bc5d
Alerting: Allow the webhook notifier to support a custom Authorization header (#52515)
* Allow the webhook notifier to support a custom Authorization header

Instead of doing something clever of re-using the existing username/password fields of Basic Authentication - I opted for two diffent fields to match the upstream Alertmanager configuration (that in turn is based of the HTTP Basic authentication).

 It'll fail if you have values for both HTTP Basic Authentication and Authorization.
2022-07-21 10:25:58 +01:00
George Robinson
094dfd0d4d
Alerting: Fix Slack push notifications (#52391)
This commit fixes push notifications for Slack which used to show "This content cannot be displayed". The text field is shown in both the message and the push notification.
2022-07-19 17:42:24 +01:00
Matthew Jacobson
efa0d90093
Alerting: Fix Teams notifier not failing on 200 response with error (#52254)
Team's webhook API does not always use the status code to communicate errors.
There are cases where it returns 200 and an error message in the body.
For example, 429 - Too Many Requests or when the message is too large.
Instead, what we should be looking for is a response body = "1".

https://docs.microsoft.com/en-us/microsoftteams/platform/webhooks-and-connectors/how-to/connectors-using?tabs=cURL#send-messages-using-curl-and-powershell
2022-07-14 13:15:18 -04:00
dingweiqings
119c13e666
Alerting: Add custom templated title to Wecom notifier (#51529)
* add custom title in wecom channel

* add wecom test case and setting config in ui

* Update pkg/services/ngalert/notifier/channels/wecom_test.go

Co-authored-by: Matthew Jacobson <JacobsonMT@gmail.com>

* change version in comment

* Update pkg/services/ngalert/notifier/available_channels.go

Co-authored-by: Matthew Jacobson <JacobsonMT@gmail.com>

* format

Co-authored-by: Matthew Jacobson <JacobsonMT@gmail.com>
2022-07-06 11:54:46 -04:00
George Robinson
6844ac9879
Alerting: Change __alertScreenshotToken__ to __alertImageToken__ (#50771) 2022-07-04 06:05:36 -04:00
George Robinson
7fea330dc1
Alerting: Remove withStoredImage and change forEachFunc (#51384) 2022-06-30 15:27:57 +01:00
George Robinson
f04dfc589c
Alerting: Add support for images in Pushover alerts (#51372) 2022-06-28 09:40:01 +01:00
George Robinson
5053468c65
Alerting: Add support for images in Telegram (#51433) 2022-06-28 09:39:40 +01:00
George Robinson
dc68213114
Alerting: Remove fmt.Println from Threema (#51380) 2022-06-24 14:50:53 +01:00
George Robinson
6e44b36a30
Alerting: Add support for images in Kafka alerts (#50758) 2022-06-22 11:03:08 +01:00
George Robinson
99516360c9
Alerting: Add support for images in VictorOps alerts (#50759) 2022-06-22 10:00:50 +01:00
George Robinson
c8466d285c
Alerting: Add support for image annotation in Alertmanager alerts (#50686) 2022-06-21 09:06:00 +01:00
George Robinson
67046c5e79
Alerting: Add support for images in Threema alerts (#50734) 2022-06-20 15:45:35 +01:00
George Robinson
7235480be5
Alerting: Use ErrImagesDone in Discord and SensuGo (#51106) 2022-06-20 14:39:27 +01:00
George Robinson
18c3456d13
Alerting: Support up to N fake images (#51111) 2022-06-20 14:34:53 +01:00
George Robinson
62c2b1ec78
Alerting: Add ErrImagesDone to return from withStoredImages (#51098) 2022-06-20 10:56:28 +01:00
George Robinson
2dbaf259a7
Alerting: Update test funcs for notifications (#51013) 2022-06-20 09:05:21 +01:00
Serge Zaitsev
ae9491c3a7
Chore: Make test tracer noop and return no errors (#50797) 2022-06-15 12:40:41 +02:00
George Robinson
87f3bb3156
Alerting: Add support for images in SensuGo alerts (#50718) 2022-06-15 10:15:16 +01:00
Serge Zaitsev
0b55c41d05
Chore: Remove global bus variable (#50765)
* Chore: Remove global bus variable

* fix bus in tests
2022-06-14 16:07:41 +02:00
Joe Blubaugh
ecf080825e
Alerting: Fix image embed in email template. (#50370)
The ng_alert_notification email template did not include templating for
linked or embedded images. This change updates that.

Additionally, this change supports embedding an image for each alert in
an email batch.

Fixes #50315
2022-06-09 10:01:58 +08:00
Santiago
9dc7e752b7
Optional custom title and description for OpsGenie (#50131)
* optional custom description for OpsGenie

* custom title and message, tests

* update changelog

* check for empty / whitespace only strings

* truncate the title to 130 characters if needed

* unnecessary validation removed

* truncate title to 127 characters and add three dots
2022-06-08 17:55:31 -03:00
gotjosh
0cde283505
Alerting: Logs should not be capitalized and the errors key should be "err" (#50333)
* Alerting: decapitalize log lines and use "err" as the key for errors

Found using (logger|log).(Warn|Debug|Info|Error)\([A-Z] and (logger|log).(Warn|Debug|Info|Error)\(.+"error"
2022-06-07 19:54:23 +02:00
Joe Blubaugh
9759eeda17
Alerting: Remove Image Upload code from Slack notifier. (#50062)
The image file upload code as it is now simply doesn't work - it's
missing several important steps in the file upload process. There is
more information in the fixed issue as to the steps required.

After this change, screenshots will still be attached to slack messages
when external image storage is used with Grafana (an S3 bucket, for
example).

Fixes #50056
2022-06-02 17:18:35 +08:00
Matthew Jacobson
d92625125b
Alerting: Add templated subject config to email notifier (#49742)
* Add subject templating to email notifier

* Fix linting
2022-05-30 11:55:34 -04:00
Joe Blubaugh
d5a327f43d
Alerting: Add tests for Slack Notifier Image Upload (#49669)
Tests that file bytes are correctly read from storage when an image is
available without a URL. Tests that not found and success cases are both
handled.
2022-05-27 10:30:44 +08:00
Johannes Hertenstein
16d738a03a
Alerting: Do not include button in googlechat notification if URL invalid (#47317)
* Alerting: Do not include button in googlechat notification if URL invalid

* Apply suggestions from code review

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>

* Alerting: Add test case for invalid external URL in googlechat notifier

Co-authored-by: Alexander Weaver <weaver.alex.d@gmail.com>
2022-05-26 11:23:39 -05:00
Joe Blubaugh
9e8efaa459
Alerting: Add stored screenshot utilities to the channels package. (#49470)
Adds three functions:
`withStoredImages` iterates over a list of models.Alerts, extracting a stored image's data from storage, if available, and executing a user-provided function.
`withStoredImage` does this for an image attached to a specific alert.
`openImage` finds and opens an image file on disk.

Moves `store.Image` to `models.Image`
Simplifies `channels.ImageStore` interface and updates notifiers that use it to use the simpler methods.
Updates all pkg/alert/notifier/channels to use withStoredImage routines.
2022-05-26 13:29:56 +08:00
Alexander Weaver
2ba4f7ed7d
Alerting: Attach image URLs to Google Chat notifications. (#49445)
* Add a test card to see what styles look like

* Add text and image cards

* Address feedback
2022-05-23 18:15:44 -05:00
Alexander Weaver
d7c65d3323
Alerting: Attach image URLs or upload files to Discord notifications. (#49439)
* Images in discord

* Drop duplicated field initialization

* Fix tests

* Use the proper context
2022-05-23 17:28:16 -05:00
Joe Blubaugh
ccd160a75e
Alerting: Add image url or file attachment to email notifications. (#49381)
If an image token is present in an alert instance, the email notifier will attempt to find a public URL for the image token. If found, it will add that to the email as the `ImageLink` field. If only local file data is available, the notifier will attach the file to the outgoing email using the `EmbeddedImage` field.
2022-05-23 23:08:28 +08:00
Joe Blubaugh
307e33614e
Alerting: Add image_urls to OpsGenie notification details. (#49379)
Adds an array of image_urls to the OpsGenie details field in a message, if image urls are available.

```json
{
  "message": "Alert with Images!",
  "details": {
    "image_urls": ["http://www.example.com"]
  }
}
```
2022-05-23 22:41:29 +08:00
Joe Blubaugh
4ea0b39db1
Alerting: Add Image URLs to Microsoft Teams notifier. (#49385)
If there are screenshot images with URLs, they will be attached to the
Microsoft teams notification in the first sections, as a slice of image
objects.
2022-05-23 21:53:36 +08:00
Joe Blubaugh
26a206cce2
Alerting: Attach image URL to alerts in Webhook notifier format. (#49378)
Attaches an imageURL field to any alert messages that have a screenshot
token whose URL we can successfully read from disk.
2022-05-23 16:44:19 +08:00
Joe Blubaugh
11a908cc91
Alerting: Add Screenshot URLs to Pagerduty Notifier (#49377)
PagerDuty takes an "images" array of link objects in it's request body.
2022-05-23 16:40:58 +08:00
Joe Blubaugh
12c25759da
Alerting: Attach screenshot data to Slack notifications. (#49374)
This change extracts screenshot data from alert messages via a private annotation `__alertScreenshotToken__` and attaches a URL to a Slack message or uploads the data to an image upload endpoint if needed.

This change also implements a few foundational functions for use in other notifiers.
2022-05-23 14:24:20 +08:00