Commit Graph

74 Commits

Author SHA1 Message Date
Max Leonard Inden
2223da2c30
api/v2: Do not populate cluster info if clustering is disabled
When users start Alertmanager with `--cluster.listen-address=`, the
cluster will not be initialized, hence api.peer will be `nil`. So far
this would result in a nil pointer dereference by the API v2 accessing
the api.peer field.

With this patch, api v2 skips populating the peers array, sets the name
to an empty string and the status to "disabled" in case `api.peer` is
nil.

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2019-01-28 11:19:47 +01:00
stuart nelson
4ea0a1dc57
respect regex matchers when recreating silences (#1697)
* Respect regexes when recreating silences
* Generate assets

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2019-01-14 15:31:43 +01:00
stuart nelson
e9d2491ca8
Stn/update alert compact view (#1698)
* Remove inhibited/silenced text

In the alert list, this is already seen via the
icons. In the silence preview, since it's in the
silence preview, clearly it's affected by the
silence.

* Generate assets

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2019-01-14 15:30:39 +01:00
Max Leonard Inden
2b697aaa6b
api/v2: Extract shared properties of gettable and postable alert
With issue 1465 on openapi-generator [1] being fixed, we can not extract
shared properties of the gettable and postable alert definition into a
shared object (`alert`) like we do for silence, gettable silence and
postable silence.

In addition this patch does the following changes to the UI:

- Use `List GettableAlert` instead of plural type definition like
`GettableAlerts` because the plural definitions are not generated.

- Fix openapi-generator-cli docker image to specific hash.

[1] https://github.com/OpenAPITools/openapi-generator/issues/1465

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-28 14:35:39 +01:00
Max Inden
218b8fb1f4 ui: Pass parameterized api url down to status logic (#1637)
Previously the api url was hardcoded in the elm logic fetching the
status of an Alertmanager. Instead it is now being passed down like we
already did for /alerts, /silences and /receivers.

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-27 15:33:19 +01:00
Max Leonard Inden
f504f953c1
ui: Move /alerts to API v2
Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-23 12:53:48 +01:00
Max Leonard Inden
8c19b96bd6
Revert "ui: Patch /alerts and /receivers to use api v1"
This reverts commit fb86df6add.

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-21 17:10:17 +01:00
Max Leonard Inden
b4b8b750df
api/v2/openapi.yaml: Differentiate between post and get silence
Instead of having one general silence, differentiate between postable
and gettable silence, hence making more fields required.

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-15 16:21:07 +01:00
Max Leonard Inden
fb86df6add
ui: Patch /alerts and /receivers to use api v1
With the previous patch /status and /silences were requested from api
v2. Requesting alerts from api v1 is done in a separate commit to be
able to revert it once alerts also come from api v2.

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-15 13:25:41 +01:00
Max Leonard Inden
e4e053b18e
ui: Move /status & /silences to API v2
This patch makes the Alertmanager UI (/status & /silences) use the
api/v2 endpoint. In addition it adds logic to generate the elm side data
model based on the OpenAPI specification.

Signed-off-by: Max Leonard Inden <IndenML@gmail.com>
2018-11-15 13:24:26 +01:00
stuart nelson
72e6720bea
Fixes #1615 (#1620)
Support `w` duration when making silences. Remove
`y` as a supported duration, silences are for
short term notification prevention.

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2018-11-13 15:08:37 +01:00
stuart nelson
625604df90
Show more alert information on silence form/ silence view pages (#1601)
* Display same alert info as available in alert list

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2018-11-07 17:08:22 +01:00
stuart nelson
6f1118ab46
fix silence redirect (#1548)
* Use a button instead of a for buttons

Using <a> was causing an unintended redirect to
the root. It appears this behavior has changed in
0.19.

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>

* bindata

Signed-off-by: stuart nelson <stuartnelson3@gmail.com>
2018-09-13 15:02:24 +02:00
Andrey Kuzmin
e768371a39
Upgrade Alertmanager UI to Elm 0.19 (#1539)
* Run elm-upgrade
* Make compile
* Update index.html
* Upgrade tests
* Finalize the upgrade
* Optimize!
2018-09-06 18:08:51 +02:00
Harsh Agarwal
049663b2c8 Help tab (#1522)
* add helpTab in navbar

Signed-off-by: Harsh Agarwal <cs15btech11019@iith.ac.in>

* add updated bindata.go

Signed-off-by: Harsh Agarwal <cs15btech11019@iith.ac.in>
2018-08-16 00:20:29 +02:00
Stuart Nelson
c300cd9f8d Remove non-empty string validation in frontend 2018-03-20 10:46:03 +01:00
Andrey Kuzmin
1c9034282c Allow empty matchers 2018-03-16 11:19:57 +01:00
Corentin Chary
dd75201f1c Add /-/ready based on mesh status (#1209)
* Wait for the gossip to settle before sending notifications

See #1209 for details.

As an heuristic for mesh readyness, try to see if
the mesh looks stable (the number of peers isn't changing too much).
This implementation always mark the altermanager as ready after a maximum of 60s.

This adds one new flags to control this behavior:
```
      --cluster.settle-timeout=60s  mesh settling timeout. Do not wait more than this duration on startup.
```

It also adds `/-/ready` which always return 200 (in order to make it clear
that we are ready as soon as we can receive requests).

The mesh status is exposed in `/api/v1/status` and visible on `/#/status`.

* cluster: fix typos and base interval on gossipInterval
2018-03-02 15:45:21 +01:00
stuart nelson
2ecd4d6c3c
Prepopulate matchers when recreating a silence (#1270)
* Fix #1268

Pre-populate matches list when recreating expired
silences.

* Update bindata
2018-03-02 10:59:50 +01:00
Stuart Nelson
a552afd998 Merge branch 'master' into memberlist 2018-02-13 10:47:17 +01:00
Stuart Nelson
46c6b3f2f1 Update frontend 2018-02-12 11:13:27 +01:00
Andrey Kuzmin
5101d65938 Fix the slowness of the Silence UI (#1235)
* Cache tabs and fix slow css

* update bindata
2018-02-09 10:42:44 +01:00
Andrey Kuzmin
1ccc7b1133 Dont output malformed error body 2018-01-02 12:45:36 +01:00
Andrey Kuzmin
6f8ccb031c
Fix expire buttons on the silences page (#1171)
* Only show confirmation for the specific silence

* Update bindata.go
2018-01-02 12:25:34 +01:00
pasquier-s
364979bbf8 Display connections in the Status page (#1164)
This change shows the status of the local connections in the web UI. It
can be used to troubleshoot mesh issues.
2017-12-22 11:39:27 +01:00
Andrey Kuzmin
6fa697ae17 Populate the silence form from location (#1148)
* Populate new silence form from location

* Update bindata.go
2017-12-18 10:18:12 +01:00
Andrey Kuzmin
50394569f5 Fix negative duration (#1132)
* Validate ends at

* Update bindata.go
2017-12-14 16:16:42 +01:00
Andrey Kuzmin
f9e96fce3d
Use elm reactor for dev assets (#1133)
* Serve assets from elm reactor

* Update bindata.go
2017-12-10 21:59:15 +01:00
Christopher Taylor
af63c85161 Let the browser remember the creator of a silence (#1112)
* wire default creator through Elm

* wire defaultCreator into localStorage

* add ui/bindata.go

* fix indentation

* change defaultCreator type from (Maybe String) to String

use an empty string as default value

* update ui/bindata.go
2017-12-08 12:54:44 +01:00
Julius Volz
fdee5fcbfc Fix UI when no silences are present (#1090)
* Explicitly initialize silences list to avoid "null" JSON

* Wrap "No silences found" message in error box

* bindata fixup
2017-11-11 14:48:48 +01:00
Andrey Kuzmin
0fa852217b Toggle silenced and inhibited alerts (#1049)
* Add inhibited checkbox

* Update ui/bindata.go
2017-10-23 11:00:17 +02:00
Jose Donizetti
0508348fd0 Allow selectable matchers on silence view (#1030) 2017-10-07 12:54:30 +02:00
stuart nelson
a7981e4693 Inconsistent use of baseUrl and apiUrl arguments (#1008)
* Inconsistent use of baseUrl and apiUrl arguments

Both are Strings, so flipping the order between
one invocation and another didn't raise any
argument from the compiler. The baseUrl argument
is actually unnecessary, and has been removed.

* Update bindata.go
2017-09-29 14:16:03 +02:00
conorbroderick
5597a76ad4 Added confirmation dialog when expiring silences 2017-09-14 16:41:55 +01:00
conorbroderick
20e19e372c Show total no. of silenced alerts in prev 2017-09-14 14:44:27 +01:00
stuart nelson
cb9c9466d9 Stn/edit on silence view page (#970)
* Edit/recreate/destroy silence on view page

* Share stuff from SilenceList

* Update bindata

* Remove unused variable

* Update bindata

* Update silence style

* Update bindata
2017-09-05 11:01:46 +02:00
Andrey Kuzmin
250bd35c97 Linkify alert annotations (#946)
* Make links in annotations clickable

* Update test script and bindata.go

* Add target = _blank
2017-08-13 19:48:36 +02:00
Andrey Kuzmin
7de7cf38f9 Selectable labels (#932)
* Make the labels selectable

* Update bindata.go
2017-07-31 13:22:30 +02:00
stuart nelson
040b1f9e53 Stn/status page ohne mesh (#920)
* Render status page without mesh connection (#918)

A mesh connection was assumed, even though the
value that was being passed into the helper
function was a possibly-nil pointer. Add a check
for this, and return a nil value in that case. The
frontend finds this when decoding the json
payload, and displays the "not configured"
message.

* Update bindata
2017-07-22 12:30:19 +02:00
stuart nelson
4f8ef26b28 Update matching algorithm (#910)
* Test for consecutive chars throughout string

Previously, we were only testing for consecutive
characters at the beginning of the string. Now,
the entire string being compared is searched
through for a matching character, and then the
consecutive search starts.

We were seeing weird situations where the text
entered matched the last half of certain terms,
but because it wasn't, but because we only
searched from the start, results that probably
shouldn't have been the top suggestion were being
suggested too high on the list.

* Weight consecutive matches more highly

Bit of a guess, this seemed to give better results
for my small test case.

* bindata
2017-07-19 11:50:33 +02:00
Andrey Kuzmin
f4c11751a9 Receiver autocomplete (#900)
* Extract receivers

* Moved Match into Utils

* Implemented autocomplete

* Update bindata.go
2017-07-11 11:25:03 +02:00
Raúl Benencia
41c5aaf3f4 Remove timeout for ui requests (#873) (#890) 2017-06-28 00:03:47 +02:00
stuart nelson
a7009a9db7 Stn/add receiver support (#872)
Add ability to filter alerts by receiver in UI. This adds changes both in the Elm UI, as well as the Go backend.
2017-06-26 18:20:26 +02:00
Andrey Kuzmin
6b5fb2dbc9 Parse error message (#866)
* Parse error message

* Update bindata.go
2017-06-18 12:19:40 +02:00
Stuart Nelson
ddde5eaacd Use concatMap directly 2017-06-12 10:11:36 +02:00
Max Leonard Inden
46ffad322e
Fix filtering by label
When clicking on a label on the AlertList or SilenceList view, the
changed Alert/Silence query is appended to the current url. This Postfix
should not start with a slash. If it does, the url is not appended but
replaced by the browser instead resulting in a `pushState` exception.
2017-06-08 21:34:26 +02:00
Frederic Branczyk
c4c0875ba3
fix config JSON marshaling 2017-06-08 13:37:57 +02:00
Max Leonard Inden
dd7ffe0515
Serve FontAwesome & Bootstrap ourself
Instead of using external CDNs for Bootstrap and FontAwesome, this patch
makes Alertmanager serve these libraries itself.
2017-06-07 22:40:18 +02:00
stuart nelson
2cf38e4c2e Fix external web url (#836)
Infer path from Navigation.Location

Build uses template, local dev uses elm-reactor

Remove unneeded local dev go server

Add script.js make target

Compiles and uglifies script.js

Before:
~570kb

After:
~170kb

Bootstrap loading state

Add trailing slash via JS & add routePrefix console param

Add Javascript script tag to `index.html` which adds a trailing slash to
the url pathname if none is present. This is done to ensure assets like
`script.js` are loaded properly.

Example without patch:
If the pathname is "mxinden.com/alertmanager" the browser will try to
download the `script.js` asset from "mxinden.com/script.js". This
request will fail.

Example with patch:
If the pathname is "mxinden.com/alertmanager", Javascript redirects the
browser to "mxinden.com/alertmanager/" and then the `script.js` asset
will be downloaded from "mxinden.com/alertmanager/script.js". This
request will succeed.

Add `-web.route-prefix` as a console parameter. This configures a
Prefix for the internal routes of web endpoints. Defaults to path of
-web.external-url like in *Prometheus*.

Trim slashes off of route prefix and add one slash at the beginning.
Make sure route prefix is not empty or just a slash before prefixing
router.
2017-06-07 22:38:39 +02:00
Andrey Kuzmin
ffe79ad410 Inhibited indicator in the UI (#838)
* Add inhibited indicator

* Update bindata.go
2017-06-01 10:43:44 +02:00