Commit Graph

74 Commits

Author SHA1 Message Date
George Robinson
342f6a599c
Add godot linter (#3613)
* Add godot linter

Signed-off-by: George Robinson <george.robinson@grafana.com>

* Remove extra line from LICENSE

Signed-off-by: George Robinson <george.robinson@grafana.com>

---------

Signed-off-by: George Robinson <george.robinson@grafana.com>
2024-03-21 11:26:46 +00:00
George Robinson
fa6a7e6dd6
Fix inconsistent defaults in UTF-8 behavior (#3668)
This commit fixes inconsistent UTF-8 behavior if the compat package is
not initialized and feature flags are not passed to the API. This can
happen when Alertmanager is used as a package in software such
as Cortex or Mimir.

The inconsistent behavior is that Alertmanager will accept UTF-8 alerts
but reject UTF-8 configurations.

Since feature flags are optional via api.Options, we cannot force them
to be passed to api.New at compile time. Instead, it's better to defer
back to the compat package which is consistent even when not initialized.

Signed-off-by: George Robinson <george.robinson@grafana.com>
2024-01-15 10:03:51 +00:00
George Robinson
848e2191d9
Support UTF-8 label matchers: Add metrics to matchers compat package (#3658)
* Add metrics to matchers compat package

This commit adds the following metrics to the compat package:

  alertmanager_matchers_parse
  alertmanager_matchers_disagree
  alertmanager_matchers_incompatible
  alertmanager_matchers_invalid

With a label called origin to differentiate the different sources
of inputs: the configuration file, the API, and amtool.

The disagree_total metric is incremented when an input is invalid
in both parsers, but results in different parsed representations,
then there is disagreement. This should not happen, and suggests
their is either a bug in one of the parsers or a mistake in the
backwards compatible guarantees of the matchers/parse parser.

The incompatible_total metric is incremented when an input is valid
in pkg/labels, but not the UTF-8 parser in matchers/parse. In such
case, the matcher should be updated to be compatible. This often
means adding double quotes around the right hand side of the matcher.
For example, foo="bar".

The invalid_total metric is incremented when an input is invalid
in both parsers. This was never a valid input.

The tests have been updated to check the metrics are incremented
as expected.

Signed-off-by: George Robinson <george.robinson@grafana.com>

---------

Signed-off-by: George Robinson <george.robinson@grafana.com>
2024-01-05 10:21:20 +00:00
Matthieu MOREL
b81bad8711 use Go standard errors
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2023-12-08 16:44:13 +01:00
George Robinson
70bd5dad98
Support UTF-8 label matchers: Use compat package in Alertmanager server (#3567)
* Support UTF-8 label matchers: Use compat package in Alertmanager server

This pull request adds use of the compat package in Alertmanager server that will allow users to switch between the new matchers/parse parser and the old pkg/labels parser. The new matchers/parse parser uses a fallback mechanism where if the input cannot be parsed in the new parser it then attempts to use the old parser. If an input is parsed in the old parser but not the new parser then a warning log is emitted.

Signed-off-by: George Robinson <george.robinson@grafana.com>

---------

Signed-off-by: George Robinson <george.robinson@grafana.com>
2023-11-24 10:01:40 +00:00
gotjosh
b4f7027908
Deprecate and remove api/v1/ (#2970)
* Deprecate and remove api/v1/

Signed-off-by: gotjosh <josue.abreu@gmail.com>
---------

Signed-off-by: gotjosh <josue.abreu@gmail.com>
2023-11-24 09:06:04 +00:00
gotjosh
aaf9490576
API: Allow the Silences API to use their own 400 response (#3610)
There's no change to the logic here - it just stroke me as odd that we were reusing the response from alerting groups in the silences call when it's pretty simple to add a new one in the API description.

This is more accurate as well, as this will be used to power the documentation.

Signed-off-by: gotjosh <josue.abreu@gmail.com>
2023-11-22 10:25:27 +00:00
gotjosh
2ec6b89aa7
Bump: go-swagger to latest stable
Bumps the API spec/client generation util of `go-swagger` from 0.30.2 to 0.30.5 which is the latest stable.

Signed-off-by: gotjosh <josue.abreu@gmail.com>
2023-10-19 12:11:29 +01:00
Emmanuel Lodovice
263ca5c943
api/v2: Delete silence respond with 404 when silence is not found (#3352)
Signed-off-by: Emmanuel Lodovice <lodovice@amazon.com>
2023-05-05 14:06:26 +01:00
Francois Gouteroux
29ed85891f
fix: change receiver model pointer to value (#3338)
* fix: change receiver pointer to value and add test

Signed-off-by: François Gouteroux <francois.gouteroux@gmail.com>
---------

Signed-off-by: François Gouteroux <francois.gouteroux@gmail.com>
2023-04-28 16:00:19 +01:00
Alexander Weaver
fe1b045c00
Set cache control headers in V2 API to mirror V1 (#3195)
* Set cache control headers
Signed-off-by: Alex Weaver <weaver.alex.d@gmail.com>
2023-02-07 15:57:54 +00:00
Ben Kochie
432ee01c8c
Update Go to 1.19 (#3150)
* Update Go to 1.19

* Update Go.
* Update some Go modules.
* Update Swagger to the latest for Go 1.19 compatibility.
* api/v2: regenerate
* Accommodate to the changes in the client package
* asset/assets_vfsdata.go: regenerate

Signed-off-by: SuperQ <superq@gmail.com>
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
Co-authored-by: Simon Pasquier <spasquie@redhat.com>
2022-11-30 17:06:57 +01:00
Marco Pracucci
33bba95099
Reduce memory utilization in downstream projects creating multiple Alertmanager instances (#3114)
* Reduce memory utilization in downstream projects creating multiple Alertmanager instances

Signed-off-by: Marco Pracucci <marco@pracucci.com>
2022-10-26 10:49:20 +02:00
Marco Pracucci
78b5a27d40
Reduce memory utilization in downstream projects creating multiple Alertmanager instances (#3092)
* Reduce memory utilization in downstream projects creating multiple Alertmanager instances

* Wrap the error instead of citing it

Signed-off-by: Marco Pracucci <marco@pracucci.com>
2022-10-06 09:01:51 +02:00
Simon Pasquier
c732372d7d
Merge pull request #3013 from sinkingpoint/sinkingpoint/log_change
Move api error logs to debug
2022-08-05 17:02:54 +02:00
sinkingpoint
d8adde5ab5 Move api error logs to debug
This is a of a nitpicky change, but having error logs on bad requests
is a bit of a pain. This means that a bad client can spam the logs with
bad requests that are really not actually an issue for the server -
we just send back the error and move on. This commit moves a couple of logs
from `Error` to `Debug` so that they can be filtered a bit better

Signed-off-by: sinkingpoint <colin@quirl.co.nz>
2022-07-21 14:42:20 +10:00
inosato
791e542100 Remove ioutil
Signed-off-by: inosato <si17_21@yahoo.co.jp>
2022-07-18 22:01:02 +09:00
gotjosh
512138d566
Refactor POST /api/v1/silences
As part of #2971, I'm about to extend the test for silences - extract the functions into helpers as part of a separate file and add names to the expectations so that we can easily identify them.

Signed-off-by: gotjosh <josue.abreu@gmail.com>
2022-07-06 18:34:57 +01:00
Matthias Loibl
a6d10bd5bc
Update golangci-lint and fix complaints (#2853)
* Copy latest golangci-lint files from Prometheus

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* Use grafana/regexp over stdlib regexp

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* Fix typos in comments

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* Fix goimports complains in import sorting

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* gofumpt all Go files

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* Update naming to comply with revive linter

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* config: Fix error messages to be lower case

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* test/cli: Fix error messages to be lower case

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* .golangci.yaml: Remove obsolete space

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* config: Fix expected victorOps error

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* Use stdlib regexp

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>

* Clean up Go modules

Signed-off-by: Matthias Loibl <mail@matthiasloibl.com>
2022-03-25 17:59:51 +01:00
Soon-Ping
a2d18c93de
Return no error when deleting expired silence (#2817)
* Changed Silences.expire(id) to not return error for already expired silence

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Added comment explaining idempotency change for Silences.expire()

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Fixed typo in comment

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Fixed another typo in comment

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Promoted comment to function-level

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Added API v2 test for DeleteSilence, PostSilence

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Fixed lint errors

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>

* Trigger build

Signed-off-by: Soon-Ping Phang <soonping@amazon.com>
2022-02-22 13:34:21 +01:00
Danny Kopping
143fd46467 Preferring the use of the basePath attribute
Signed-off-by: Danny Kopping <danny.kopping@grafana.com>
2021-11-16 00:42:43 +01:00
Danny Kopping
97e5779c3f Regenerated OpenAPI client code
Signed-off-by: Danny Kopping <danny.kopping@grafana.com>
2021-11-16 00:42:43 +01:00
Danny Kopping
7c5f105506 Oops, this is actually v2
Signed-off-by: Danny Kopping <danny.kopping@grafana.com>
2021-11-16 00:42:43 +01:00
Danny Kopping
15a1a115de Adding /api/v1 prefix to all endpoints
Signed-off-by: Danny Kopping <danny.kopping@grafana.com>
2021-11-16 00:42:43 +01:00
Julien Pivotto
b2a4cacb95 Update go dependencies & switch to go-kit/log
Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
2021-08-02 12:43:23 +02:00
gotjosh
bc7b16d61a
API: Make conversion functions public (#2530)
* API: Make conversion functions public

All types are public so it makes sense to make these functions also
public for ease of downstream consumption.

Signed-off-by: gotjosh <josue@grafana.com>

* Add the license header to the new file

Signed-off-by: gotjosh <josue@grafana.com>

* Fix tests

Signed-off-by: gotjosh <josue@grafana.com>

* Make two more helper functions public

Signed-off-by: gotjosh <josue@grafana.com>
2021-03-31 13:28:06 +05:30
Goutham Veeramachaneni
e26425473c
Update go-openapi to latest
go-swagger 0.25.0+ are failing though :/

Signed-off-by: Goutham Veeramachaneni <gouthamve@gmail.com>
2021-03-10 19:00:22 +01:00
Goutham Veeramachaneni
7866b9bb09
Merge pull request #2487 from gotjosh/alertmanager-clustering-interfaces
Clustering: Interface for Peers in other packages
2021-03-03 16:44:52 +01:00
gotjosh
eb3048f2df
Address review comments
Signed-off-by: gotjosh <josue@grafana.com>
2021-02-24 15:35:24 +00:00
gotjosh
9a2ae39430
Clustering: Interface for Peers in other packages
A Peer as defined by the `cluster` package represents the node in the
cluster. It is used in other packages to know the status of all of the
members or how long should we wait to know if a notification has already fired.

In Cortex, we'd like to implement a slightly different way of
clustering (using gRPC for communication and a
hash ring for node discovery).

This is a small change to support that by changing the consumer of other
packages to an interface.

Silences and Notification channels don't need an interface as they take
a `func([]byte) error` as a parameter.

Signed-off-by: gotjosh <josue@grafana.com>
2021-02-19 19:07:41 +00:00
Kiril Vladimirov
2b6315f399 api/v2: Add Matcher.IsEqual to support all types
Signed-off-by: Kiril Vladimirov <kiril@vladimiroff.org>
2021-02-16 14:22:59 +02:00
Koki Kato
b5ddc5d638 Add test cases for silences with negative matchers
Signed-off-by: Koki Kato <koki.kato1994@gmail.com>
2021-02-09 23:01:21 +09:00
Koki Kato
b9aae07a73 Check silence matching with Protobuf models
Signed-off-by: Koki Kato <koki.kato1994@gmail.com>

To support negative matchers.
2021-02-09 22:53:00 +09:00
Koki Kato
72ce7fd71f api: add test for gettableSilenceMatchesFilterLabels
Signed-off-by: Koki Kato <koki.kato1994@gmail.com>
2021-02-09 22:07:15 +09:00
Koki Kato
f8c33ab47d api: check silence matching by string comparison in getSilences
Signed-off-by: Koki Kato <koki.kato1994@gmail.com>
2021-02-09 22:07:15 +09:00
Victor Araujo
846c04e807
Make filter labels consistent with Prometheus (#2403)
* Make filter labels consistent with Prometheus

Filtering the alert out when the label is missing precludes a
possible match for an empty value. This change allows the
match to be evaluated.

Closes #2342

Signed-off-by: Victor Araujo <vear91@gmail.com>

* Add tests for matchFilterLabels in v2 api

Signed-off-by: Victor Araujo <vear91@gmail.com>
2020-11-06 11:26:32 +01:00
Simon Pasquier
e0cc523893
api/v2: add path and method to API v2 logs (#2261)
* api/v2: add path and method to API v2 logs

When an API v2 handler logged a message, the log wouldn't include the
path and method. Since different handlers perform the same validations
(e.g. matchers for alerts and silences), it isn't easy to know which
handler was invoked (though the logged filename
+ line number provides a hint).

Signed-off-by: Simon Pasquier <spasquie@redhat.com>

* Capitalize messages + improve logs

Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2020-06-02 16:13:31 +02:00
Simon Pasquier
e347c31ab6
api/v2: return empty array of peers when disabled (#2203)
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2020-03-10 15:47:43 +01:00
Simon Pasquier
56e966bc20
api/v2: Fix silence creation error message (#2179)
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2020-02-13 10:07:58 +01:00
Célian GARCIA
dcc0b70c7d
[Minor][one line change] Fix an error message about start and end time validation. EOM (#2173)
* Fix an error message about start and end time validation

Signed-off-by: Célian Garcia <celian.garcia@amadeus.com>

* Modified start and end time validation message to be affirmative

Signed-off-by: Célian Garcia <celian.garcia@amadeus.com>
2020-02-05 15:13:46 +01:00
Simon Pasquier
e4437ab54f
*: remove dependency on github.com/prometheus/prometheus (#2009)
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2019-09-16 10:56:29 +02:00
Simon Pasquier
d5f6f88928
*: bump Open API dependencies (#2024)
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2019-09-09 10:57:38 +02:00
Simon Pasquier
98a604efa7
api/v2: fix alerts with multiple receivers (#1948)
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2019-07-03 16:34:54 +02:00
Simon Pasquier
adcf283d4c api: add missing metrics for API v2
Signed-off-by: Simon Pasquier <spasquie@redhat.com>
2019-05-24 14:48:45 +02:00
stuart nelson
0a7e227549 Merge branch 'master' into default-grouping-in-ui
Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2019-04-30 15:09:56 +02:00
stuart nelson
1cc6c6f79c Move alert endpoints filter parsing to single function
They are exactly the same, no reason to duplicate.

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2019-04-30 10:59:17 +02:00
Andrey Kuzmin
287c149f92 Regenerate v2 models
Signed-off-by: Andrey Kuzmin <andrey.kuzmin@soundcloud.com>
2019-04-27 12:44:12 +02:00
Andrey Kuzmin
26f3e4ef44 Generate AlertGroup decoders
Signed-off-by: Andrey Kuzmin <andrey.kuzmin@soundcloud.com>
2019-04-27 12:14:31 +02:00
stuart nelson
2fa210d0e3 add groups endpoint to v2 api
Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2019-04-17 11:32:21 +02:00
Paul Gier
74fa2236f7 cli: update amtool to use apiv2
Includes godoc improvements

Signed-off-by: Paul Gier <pgier@redhat.com>
2019-03-29 09:11:09 -05:00