Commit graph

38 commits

Author SHA1 Message Date
Julius Volz
18fa5a6c07 Move README-PROMETHEUS.md to correct subdir
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2025-11-06 15:29:46 +01:00
Julius Volz
2b25bbf997 UI: Speed up alerts/rules/... pages by not rendering collapsed content
In contrast to Bootstrap, Mantine's Accordion component didn't remove its
panel contents from the DOM when collapsed, so rendering pages with lots of
collapsed Accordion items was way slower and more resource-intensive in the
new Mantine UI. While I talked to Vitaly from Mantine and he managed to add
unmounting of collapsed panel contents in Mantine 9, this will only be
available next year. So for now, I'm forking over the Accordion component
from Mantine and adding a hacky modification to it that removes contents
for collapsed panels. This fork can be removed after upgrading to Mantine 9
sometime in 2026. I removed all the unnecessary test files and so on and
just kept the core Accordion code files.

This should really help with the following issues:

https://github.com/prometheus/prometheus/issues/17254
https://github.com/prometheus/prometheus/issues/16830

The /alerts and /rules pages should be the most affected since the panels
on those are collapsed by default. The /targets and /service-discovery
pages have expanded panels by default, but I still swapped out the
Accordion implementation for consistency and in case someone collapses a
bunch of panels.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2025-11-06 11:32:59 +01:00
Julius Volz
1354bb90be Make query warning/info notice display configurable
Fixes https://github.com/prometheus/prometheus/issues/16888

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2025-07-21 13:03:46 +02:00
Julius Volz
4f58629a10
Implement simpler custom badges for label displays (#16343)
* Implement simpler custom badges for label displays

Should help a little bit with https://github.com/prometheus/prometheus/issues/16308

Signed-off-by: Julius Volz <julius.volz@gmail.com>

* Don't wrap text inside custom labels

Signed-off-by: Julius Volz <julius.volz@gmail.com>

---------

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2025-03-28 18:51:05 +01:00
Mustafain Ali Khan
92c9f71082 Fix rules UI to display correct value for 'keepFiringFor'
Signed-off-by: Mustafain Ali Khan <mustalik@amazon.com>
2025-03-13 16:18:24 -07:00
Aman
509b978f0d
single-button-theme-toggle-and-responsive-logo (#16021)
Signed-off-by: amanycodes <amanycodes@gmail.com>
2025-02-12 17:14:05 +00:00
Julius Volz
a944fa1e7a
Make theme switcher a single three-state toggle button (#16000)
This should help a bit with the header icon overflow on narrow screens and
also overall make things look less cluttered.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2025-02-12 15:56:00 +01:00
dependabot[bot]
5e2b75ee5e
chore(deps-dev): bump @typescript-eslint/parser from 6.21.0 to 8.20.0 in /web/ui (#15821)
* chore(deps-dev): bump @typescript-eslint/parser in /web/ui

Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 6.21.0 to 8.20.0.
- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)
- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md)
- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.20.0/packages/parser)

---
updated-dependencies:
- dependency-name: "@typescript-eslint/parser"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

* Fix lint errors/warnings

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
2025-01-17 18:16:30 +00:00
Julius Volz
60b71108e5 Merge two accidental "Alerts page settings" sections into one
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2025-01-13 16:25:26 +01:00
Julius Volz
84e0f43a0c Paginate rule groups, add infinite scroll to rules within groups
This addresses extreme slowness when you have thousands of rules in
potentially hundreds of rule groups. It can still be a bit slow even with
pagination and infinite scroll for very large use cases, but it's much
better already than before.

Fixes https://github.com/prometheus/prometheus/issues/15551

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-12-14 22:38:18 +01:00
Julius Volz
c861b31b72 Support UTF-8 metric names and labels in web UI
Fixes most of https://github.com/prometheus/prometheus/issues/15202

This should address all areas of the UI except for the autocompletion in the
codemirror-promql text editor. The strategy here is that any time we print or
internally serialize (like for the PromLens tree view) either a metric name or
a label name as part of a selector or in other relevant parts of PromQL, we
check whether it contains characters beyond what was previously supported, and
if so, quote and escape it. In the case of metric names, we also have to move
them from the beginning of the selector into the curly braces.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-10-29 20:22:52 +01:00
Julius Volz
3d2194f561 Style cleanups, mostly for web notifications and startup alert
Some of the changes are a bit unreadable because the previous files were not
saved with the project's linter / auto-formatter settings applied. But it's
basically:

* For icons that are not Mantine-native components, use the rem() function
  for computing their size, so they scale correctly with the root font size.
  See https://mantine.dev/styles/rem/.
* Try a different icon for the notifications tray, since the bell icon was
  already used for Prometheus alerts. Other candidates from
  https://tabler.io/icons would be IconExclamationCircle or
  IconDeviceDesktopExclamation or IconMessageCircleExclamation.
* The server startup alert looked a bit cramped, introduced a Stack to add
  spacing between the text and the progress bar.
* Added a bit of spacing between notification text and date. Things looked
  cramped. To make things look ok with that, I also top-aligned the
  notification text and icon.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-10-04 14:14:45 +02:00
Julius Volz
d3b0ab453c Fix tabler icon props import after version bump
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-10-02 08:05:20 +02:00
Julien
e34563bfe0 Retry SSE connection unless max clients have been reached.
This switches from the prehistoric EventSource API to the more modern
fetch-event-source package. That packages gives us full control over the
retries.

It also gives us the opportunity to close the event source when the
browser tab is hidden, saving resources.

Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-27 16:18:33 +02:00
Julien
f9bbad1148 Limit the number of SSE Subscribers to 16 by default
Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-27 15:51:51 +02:00
Julien
6cde0096e2 Add notifications to the web UI when configuration reload fails.
This commit introduces a new `/api/v1/notifications/live` endpoint that
utilizes Server-Sent Events (SSE) to stream notifications to the web UI.
This is used to display alerts such as when a configuration reload
has failed.

I opted for SSE over WebSockets because SSE is simpler to implement and
more robust for our use case. Since we only need one-way communication
from the server to the client, SSE fits perfectly without the overhead
of establishing and maintaining a two-way WebSocket connection.

When the SSE connection fails, we go back to a classic
/api/v1/notifications API endpoint.

This commit also contains the required UI changes for the new Mantine UI.

Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-27 15:28:38 +02:00
Julien
ac5377873f mantine UI: Distinguish between Not Ready and Stopping
Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-17 16:02:16 +02:00
Julius Volz
0180cf31aa Factor out common icon and card styles
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-13 14:44:04 +02:00
Julius Volz
c1080990ac Bring back documentation link in the form of an action button
IMO this looks nicer than adding it as a normal page nav link as in
https://github.com/prometheus/prometheus/pull/14878

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-09 18:55:32 +02:00
Julius Volz
7e0cba568e Make annotations display on /alerts page consistent with /rules
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-09 11:50:46 +02:00
Julius Volz
adf6c105a7 Show alert annotations on /rules page
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-09 11:46:42 +02:00
Julius Volz
fef4c15283 Remove commented-out line
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-04 17:34:35 +02:00
Julius Volz
eb175c88f6 Correctly pass custom title into ResettingErrorBoundary
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-03 16:07:04 +02:00
Julius Volz
857e59c8b6 Improve EndpointLink styling
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-03 16:05:30 +02:00
Julius Volz
5599db20cd Change use{Suspense}APIQuery key to an array
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-03 16:05:05 +02:00
Julius Volz
b29be5e6f8 Add query button to rule expressions, improve styling
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-01 20:28:42 +02:00
Julius Volz
d22e721d39 Add initial Service Discovery page
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-08-28 14:56:35 +02:00
Julius Volz
d6e5e39bf7 Add filtering to alerts page
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-08-28 14:54:08 +02:00
Julius Volz
b2a8657d58 Open target endpoint links in separate window/tab
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-08-10 20:18:22 +02:00
Julius Volz
3905902758 Add path prefix to readiness check
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-08-08 17:01:40 +02:00
Julius Volz
e07dd8cd05 Always display HTTP params under the endpoint link
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-08-06 16:39:25 +02:00
Julius Volz
76c3429e67 Add dropdown for discovered labels on /targets page
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-08-05 20:13:49 +02:00
Julius Volz
b06bb78543 Add filtering, limiting, and more to targets page
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-07-27 16:29:18 +02:00
Julius Volz
1aa79e29a2 Add server readiness check and WAL replay progress display
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-07-15 22:21:14 +02:00
Julius Volz
8fae131733 Move Settings context data into Redux settings slice
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-07-15 22:19:47 +02:00
Julius Volz
a057601771 Fix a few Mantine UI lint errors
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-04-18 15:04:14 +02:00
Julius Volz
50118dc174 Change icon for state multiselect
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-04-09 12:50:22 +02:00
Julius Volz
1049c90cb5 Clean up file hierarchy a bit, add some more comments
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-04-09 12:36:53 +02:00