Commit Graph

66 Commits

Author SHA1 Message Date
Łukasz Mierzwa
77735ffcf1 fix(backend): fix problems found by new linters 2019-08-18 15:51:54 +01:00
Łukasz Mierzwa
29b6c7baae fix(backend): fix problems found by new linters 2019-08-18 10:58:26 +01:00
Łukasz Mierzwa
6b497217d9 fix(backend): remove endsAt from alerts
This is unused but keeps changing
2019-08-08 15:45:00 +01:00
Łukasz Mierzwa
86506563e9 feat(api): sort alert groups in the backend 2019-08-08 15:45:00 +01:00
Łukasz Mierzwa
9b6273595d chore: move sorting to the backend 2019-08-08 15:45:00 +01:00
Łukasz Mierzwa
f4f4a1860c feat(api): compress response before putting it in the cache 2019-08-08 11:49:17 +01:00
Łukasz Mierzwa
1a98e01622 feat(backend): allow extracting silence author from auth headers 2019-07-12 23:04:15 +01:00
Łukasz Mierzwa
f0fee594d9 feat(api): add labels stats to the api response
These will be used by an overview modal, showing top labels.
2019-07-09 23:03:01 +01:00
Łukasz Mierzwa
2fea920e57 feat(api): expose silenceform:strip:labels settings in the API 2019-04-29 20:17:40 +01:00
Łukasz Mierzwa
058d10f4ba chore(config): move value mapping options to grid:sorting section
Those options are only valid for sorting, so move it to the new config section where all sort options live
2019-02-21 18:15:11 +00:00
Łukasz Mierzwa
aa657ea216 feat(backend): allow configuring default grid sort options
This will allow UI to get the defaults for grid sorting via the API
2019-02-20 21:58:59 +00:00
Łukasz Mierzwa
397bbe5783 feat(config): allow configuring label value mapping for sorting
This feature solves the problem of sorting by label when values have special meaning and alphabetic sort doesn't make sense for it.
2019-02-18 23:17:47 +00:00
Łukasz Mierzwa
22f719adc6 fix(api): apply colors to the @alertmanager label
It's a fake label so it needs special code to inject the color information to the API response.

Fixes #421
2019-02-06 17:11:25 +00:00
Łukasz Mierzwa
a3ef1dd40e chore(api): drop counters from API response
Not used by any UI code, remove it.
2019-01-05 11:52:45 +00:00
Łukasz Mierzwa
926278158f fix(api): update cluster id on API query 2018-12-01 18:17:45 +00:00
Łukasz Mierzwa
0d68ea4c3c feat(api): store silences per cluster in the API response 2018-12-01 09:53:47 +00:00
Łukasz Mierzwa
9c16ffa447 chore(project): rename from unsee to karma
Fixes prymitive/unsee#23
2018-09-09 14:12:26 +01:00
Łukasz Mierzwa
e04f74cc5e fix(style): move some code out of alerts() to reduce complexity and make the linter happy 2018-09-09 12:01:15 +01:00
Łukasz Mierzwa
440354de89 feat(api): always provide color information for foo=bar filters 2018-09-09 11:46:45 +01:00
Łukasz Mierzwa
129ffb7e17 fix(test): use httptest.newRequest instead of (incorrect) http.newRequest
httptest.newRequest is suppose to be used for testing request handing, http.newRequest is for preparing outgoing requests, this allows to fix cache key selection and increase test coverage
2018-08-21 09:35:49 +01:00
Łukasz Mierzwa
77079a9629 feat(api): export annotation settings in the API 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
32e3f946ab refactor(backend): turn index.html back into Go template
There are a few config keys that needs to be passed to ui code before react app starts, we'll render them in the index.html as template
2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
2ee239a74c refactor(api): move settings keys in the API response to a namespace 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
be8806c22f feat(ui): remove old /help view, this is now fully managed by the ui 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
875a4f5217 feat(api): summarize alertmanager counts in group API 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
6c7ba5551c refactor(api): move silences into a dedicated key in API response
A single silence can supress multiple alerts so to reduce response size and the amount of data react UI needs to track move it out of alert instance (which will deduplicate it) and on each alert only store a reference. In the API return all silences as a global dict and each alert only contains the ID of silences suppressing it.
2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
79ff668019 refactor(api): deduplicate lables & annotations in API responses
Each alert in a group holds only keys that are unique to that alert instance, everything shared by the entire group is moved to group.shared ns
2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
e1530e01cd refactor(api): provide configured list of static labels in the API response
DOM data-* attributes are no longer used for this, feed react data store with this config so it can (re)render labels correctly
2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
8b060054d7 refactor(api): expect filter query args as an array instead of a single string
Using a single string separated by ',' means that we cannot use ',' in labels. Use arrays instead to fix that
2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
4fe19c3d73 feat(api): extra fields with parsed filter data in the API response 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
a4a20ea3ef feat(ui): new UI written in React 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
c0fdb71276 feat(api): expose total alerts counter in the api response 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
b7d274c93b refactor(api): return alert groups as a mapping id->group 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
5a51898e43 fix(filters): don't return empty filters in the API response 2018-07-19 23:38:11 +02:00
Łukasz Mierzwa
b71883f1ef Migrate to new repo
Forked unsee from cloudflare, so import paths needs to be updated
2018-06-07 15:30:57 +02:00
Łukasz Mierzwa
65a27b39df Move label coloring config options from 'color' to 'labels' section 2017-12-03 10:09:17 -08:00
Łukasz Mierzwa
6273a5a585 Rewrite flag & env handling to use viper
This adds support for reading configuration from file, env support is still there and legacy env variables will still work, but flags are now following config schema, so they don't match old flags.
Having a config file allows to express more complex configuration options, which is needed for some feature requests.
2017-11-27 20:34:36 -08:00
Łukasz Mierzwa
5d4ae47888 Convert all packages to be internal
Internal packages are supported by Go 1.5+, any package in /internal/ dir is only importable from the same repo. This will cleanup main dir a bit and provide better namespace for unsee subpackages
2017-08-04 16:21:27 -07:00
Łukasz Mierzwa
f202232be8 Version all bundles
This will tell webpack to add a hash to all bundles filenames, we generate script tags for loading those and inject them as templates. No more forced cache bypassing
2017-07-29 16:19:48 -07:00
Łukasz Mierzwa
4a75acfdc1 Fix asset paths in tests 2017-07-29 13:53:40 -07:00
Łukasz Mierzwa
8f5c246297 Move to fully webpack managed assets 2017-07-29 13:52:07 -07:00
Łukasz Mierzwa
81ce5d3098 Speed up alert fingerprint generation
Dynamic fingerprints made the code much slower, pprof shows they are responsible for ~70% of all cpu usage for any API call. To make it worse they are applied to all alerts, since dedup layer doesn't know which alerts will be filtered later, it operates on all of them. This PR will:
1. add benchmarks to so it's easier to track performance
2. Keep current methods for accessing fingerprints, but use precomputed static fields in those
3. Refactor Alert methods to use pointers, so we're not working on a copy

Benchmark timing went down from ~4000ns to 0.4ns for fingerprint calls and API response times from 1.3s (for my test sample) to 0.2s, which puts it back to the same level as before moving fingerprints to be dynamic. I still don't like this code much, it's all over the place, but I don't have a good idea how to better structure this, let's hope I'll be wiser in the future.
2017-07-05 23:35:00 -07:00
Łukasz Mierzwa
71c0dce1f6 Vendor renamed Sirupsen/logrus to sirupsen/logrus, fix imports 2017-07-02 10:12:33 -07:00
Łukasz Mierzwa
6f1e58d387 Don't flush cache on failed instances
Cache handling is done in the upstream handling code, this isn't needed anymore
2017-07-01 12:54:30 -07:00
Łukasz Mierzwa
721b4f8be4 Update silence form to work with multiple Alertmanager instances 2017-06-28 22:36:26 -07:00
Łukasz Mierzwa
c5724bb751 Handle per Alertmanager instance errors in the API and the UI 2017-06-28 22:36:25 -07:00
Łukasz Mierzwa
16be1627ed Move all *InSlice functions into a slices package 2017-06-28 22:36:25 -07:00
Łukasz Mierzwa
26d14d1bd2 Refactor Alertmanager API client code to use multiple upstream instances
Alerts are stored per instance and deduplicated on read.
2017-06-28 22:35:16 -07:00
Łukasz Mierzwa
23f70880dc Reverse sort on autocomplete data
This way =~ hints will be first, instead of !=. It probably makes sense to have smarter ordering, but this will do for now.
2017-06-13 09:37:34 -07:00
Łukasz Mierzwa
6d15a82e89 Support multiple receivers 2017-06-03 13:23:51 -07:00