Commit Graph

153 Commits

Author SHA1 Message Date
Andrey Kuzmin 0fa852217b Toggle silenced and inhibited alerts (#1049)
* Add inhibited checkbox

* Update ui/bindata.go
2017-10-23 11:00:17 +02:00
Julius Volz 947970af44 Convert Alertmanager to use non-global go-kit loggers
Fixes https://github.com/prometheus/alertmanager/issues/1040
2017-10-22 00:20:40 -07: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
stuart nelson d33511cb36 macOS requires the template to be at the end (#971)
* macOS requires the template to be at the end

* Update makefile to use .js extension

* see if this works..
2017-09-02 20:19:11 +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
Max Leonard Inden b3f3ecf803
Improve front-end build process
We generate binaries whenever `make build-all` is run. If they already
exist, we only regenerate them if they are outdated.

When one makes changes to the front-end and runs the single command
`make build-all` on the root level Makefile, the front-end is rebuild
accordingly.

`make build-all` will use Docker to build the front-end. If someone prefers
to install all the dev dependencies on their local machine instead, one
can add the `NO_DOCKER=true` flag.

For folks that only want to make back-end changes `ui/bindata.go` is
checked in, so they do not have to build the front-end. They still use
the `make build` command as before.
2017-07-06 13:43:10 +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 3911168df0 Update bindata 2017-06-12 10:17:22 +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
Andrey Kuzmin 3f60d01592 Add favicon (#839)
* Add favicon

* Fix the node version

* Update bindata.go
2017-06-01 10:13:20 +02:00
Andrey Kuzmin eff5341dec Show alert annotations (#833)
* Show annotations

* Update bindata.go

* Fix the versions of elm modules
2017-05-30 21:04:49 +02:00
Andrey Kuzmin 562f99566e Improved Validation (#827)
* Restructure the validation

* Validate on blur

* Extract alerts from the silence

* Use string for the error type

* Use ApiData everywhere

* Validate the form

* Remove redirect on failure

* Code review fixes

* Hide the delete button if there is one matcher

* Rename silence2

* Update bindata.go

* Fix the tests

* Actually hide the delete button

* Update bindata.go
2017-05-28 12:53:25 +02:00
Andrey Kuzmin 30749037a9 Style the silences list (#809)
* Get rid of old css lib

* Cleanup the models and updates

* Styled the silences view

* Update that bindata stuff
2017-05-22 13:36:31 +02:00
Max Leonard Inden b3bb5dca80
Rework SilenceForm
* Restyle SilenceForm view
* Add validation to SilenceForm
* Redirect to new silence when editing expired one
2017-05-19 14:14:35 +02:00
Max Leonard Inden b9acb7a63f
Add 'silenced' query param to /alerts endpoint
This adds the silenced query parameter to the /alerts API endpoint. In
addition it changes the default in the UI. Previously silenced alerts
were displayed by default. This PR hides silenced alerts by default.
2017-05-17 18:59:20 +02:00
Fabian Reinartz d73a655bf4 Simplify silence modifications, add update endpoint (#796)
* Simplify silence modifications, add update endpoint

* vendor: add pkg/errors

* ui: Handle upserting of silences

.

* Regenerate bindata
2017-05-16 16:48:25 +02:00
stuart nelson a0e6aceadb Merge GroupBy alerts (#775)
* Create set of labelKeys

* Wip (compiling)

* Add naive levenshtein distance

Need to check out the fzf fuzzy algo, this is just
a place holder for now.

https://github.com/junegunn/fzf/blob/master/src/algo/algo.go

* Hack a groupBy into the code

This needs massive cleanup and is just a
late-night spike. Everything in this commit needs
to be re-organized, most likely.

* Update some html/css

* Set input validation for label filtering

* Add Jaro-Winkler string comparison

* remove levenshtein stuff

* Fix match tests

* Read actual Jaro definition

if ml == 0, then the distance == 0

* Use correct searchLength implementation

* Limit searching string to matchRange

Only search matchRange when looking for matches,
instead of going through every value and then
deciding if it should be checked based on its
position.

Data generated from
https://ellie-app.com/38cXFnRLjcga1/1

matchCharmatchChar2delta

mean ops/sec
346,928.55 (stddev: 12,306.94, 3.55%)
364,551.61 (stddev: 10,561.94, 2.9%) +5.08%

mean runtime
2.886ns (stddev: 103.748µs, 3.59%)
2.745ns (stddev: 80.856µs, 2.95%) -4.87%

total runtime
5.022s
5.052s

sampling
48 runs of 30,000 calls
46 runs of 40,000 calls

* Fix off-by-one error in List slicing

* Simplify transition calculation

* Keyboard controls for the autocomplete

* Fix clicking on the results

* Rename AutoComplete to GroupBar

* Broke apart the view function

* Fix the layout

* Change button style

* Synchronize grouping with URL

* Fix tests

* Added toggle silenced alerts

* Remove comment

* Roll back the labelButton

* Always fetch the alerts

* Disable show silenced

* Extract alert groups

* Rename tests

* Use more generic number instead of int

* Restore showSilenced

* Update ui/bindata.go

* Update template/internal/deftmpl/bindata.go

* Update bindata.go

* Reformat with updated elm-format
2017-05-16 00:10:30 +02:00
Max Leonard Inden 3117e69239
Restyle SilenceList view and group by state 2017-05-11 11:30:36 +02:00
Max Inden 6784e300cf Merge pull request #772 from prometheus/cache-control
Update cache control for web assets
2017-05-09 15:17:29 +02:00
stuart nelson 91e802c4f3 Extract Alert Filter Bar (#755)
* Extract Alert Filter Bar

* Add FilterBar to silenceList page

* Prevent empty key= in query string
2017-05-08 10:42:42 +02:00
Max Leonard Inden 9cc00323ca
Update cache control for web assets
The commit [1] introduced the `cache-control` header field with the value
`no-cache`. This enforces any cache to revalidate. Apparently this does
not prohibit *FireFox* from caching the assets. `no-cache, no-store,
must-revalidate` does by prohibiting to even save anything of the
request.

[1] c3850708c1
2017-05-05 09:30:09 +02:00
Max Leonard Inden 30c62c2f9f
Switch to /alerts endpoint and restlye alerts list page
Instead of using the /alerts/groups endpoint to retriev alerts this
commit introduces usage of the /alerts endpoint. This bypasses a lot of
complexity by ignoring alert groups and alert blocks. Groups and blocks
are left as a pure back-end detail.

Fixes #694
2017-05-02 09:46:20 +02:00
Max Leonard Inden a5a53c46f7
Display more information on status page 2017-05-02 09:18:36 +02:00
Max Leonard Inden 9ec25d84c5
test: Introduce elm-test package
Adding two basic (fuzz-) tests for Utils.Filter.parseMatcher. Including
tests in Travis runs. Adding make target "test" and "dev-server".
2017-04-25 12:03:02 +02:00
Max Leonard Inden fae4c81286
Update template/internal/deftmpl/bindata.go & ui/bindata.go
Additionaly linting AlertList/Types.elm
2017-04-25 11:39:57 +02:00
Max Leonard Inden f3a3be8191 Update template/internal/deftmpl/bindata.go & ui/bindata.go
Additionaly linting AlertList/Types.elm
2017-04-25 11:34:31 +02:00
Max Leonard Inden a8d7f92c66 test: Ensure bindata.go is always up to date
This adds three more steps to the Travis tests.
1. Compile Elm -> script.js
2. Bundle html.index & script.js -> bindata.go
3. Check if bindata.go hasn't changed
2017-04-25 11:33:57 +02:00
stuart nelson d58e81db46 Generate assets 2017-04-25 10:36:48 +02:00
stuart nelson 06a37d66e2 Remove unused MatchOperator import 2017-04-24 14:59:58 +02:00
stuart nelson 2ae96e845d Add the fns for all match op types
They aren't use, but we might as well be correct.
2017-04-24 14:56:54 +02:00
stuart nelson b29afb80a2 Receiver key is always an anchored regex match 2017-04-24 14:54:25 +02:00
stuart nelson dc90e8dec3 Allow filtering receiver with a regex
e.g.:
http://localhost:5000/#/alerts?receiver=~(backend|ops)-warn
2017-04-23 21:04:53 +02:00
Andrey Kuzmin 88ec956973 Improve filter (#714)
* Update elm-tools/parser

* Improve filter UI

* Pressing backspace edits the last matcher

* Put escape char back into the output

* Allow editing the matcher

* Update bindata.go

* Const for key codes

* Use qualified imports

* Update bindata.go

* Commented the backspacePressed attribute
2017-04-18 20:49:52 +02:00
Max Leonard Inden c3850708c1 Make assets generation deterministic
By passing "-modtime 1" flag into go-bindata command it uses the same
unix timestamp (1) for every file in the fake filesystem. Thereby every
execution of "make assets" results in the same asset outputs if the
inputs were the same. This forces us to set the "Cache-Control"
attribute to "no-cache".
2017-04-10 13:47:13 +02:00
stuart nelson 8e4c29f5b8 Click alert matchers (#690)
* Clicks update alerts filter text

- Normal click replaces filter with selected label
- Modifier (ctrl, cmd) + click appends to filter

* Auto-filter when clicking labels

* ctrl+click removes already present matcher

* Match arbitrary whitespace before/after comma

* Run elm make with --yes

* Always add labels to the filter

* Updating filter currently sends Noop msg

For now we are still going to require the user to
explicitly click "filter" before we send an API
request to update the list.
2017-04-08 13:00:21 +02:00