196 Commits

Author SHA1 Message Date
Julius Volz
32d306854b
Merge pull request #15807 from leonnicolas/hide-empty-rules-persitence
Make "hide empty rules" persistent
2025-01-20 15:26:13 +01:00
dependabot[bot]
2f42bf2376
chore(deps): bump react-dom and @types/react-dom in /web/ui (#15661)
* chore(deps): bump react, react-dom and @types/react in /web/ui

Bumps [react](https://github.com/facebook/react/tree/HEAD/packages/react), [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react). These dependencies needed to be updated together.

Updates `react` from 18.3.1 to 19.0.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react)

Updates `react-dom` from 18.3.1 to 19.0.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react-dom)

Updates `@types/react` from 18.3.5 to 19.0.6
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react)

---
updated-dependencies:
- dependency-name: react
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: react-dom
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/react"
  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>

* chore(deps): bump react-dom and @types/react-dom in /web/ui

Bumps [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) and [@types/react-dom](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-dom). These dependencies needed to be updated together.

Updates `react-dom` from 18.3.1 to 19.0.0
- [Release notes](https://github.com/facebook/react/releases)
- [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/react/commits/v19.0.0/packages/react-dom)

Updates `@types/react-dom` from 18.3.0 to 19.0.2
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-dom)

---
updated-dependencies:
- dependency-name: react-dom
  dependency-type: direct:production
  update-type: version-update:semver-major
- dependency-name: "@types/react-dom"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* Fix up

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:57:39 +00: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
leonnicolas
fccd78d3cd
Update storage keys
Signed-off-by: leonnicolas <leonloechner@gmx.de>
2025-01-13 21:46:45 +01:00
leonnicolas
36520fd8b2
Remove settings from setting menu
Signed-off-by: leonnicolas <leonloechner@gmx.de>
2025-01-13 17:56:11 +01: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
leonnicolas
b3531a12f3
Make "show empty pools" setting persistent
Just like for showing empty groups on the Alerts page, also make the
setting for showing empty pools on the Targets page persistent.

Signed-off-by: leonnicolas <leonloechner@gmx.de>
2025-01-13 12:59:26 +01:00
leonnicolas
6ccd9add1e
Make "hide empty rules persistent"
It can be a bit annoying to always press "hide empty rules". This commit
uses the session storage of the browser to make it persistent.

Signed-off-by: leonnicolas <leonloechner@gmx.de>
2025-01-10 23:32:05 +01:00
Julius Volz
18bb8bf996
Merge pull request #15784 from sujalshah-bit/15394_server_name_and_time
api: Add two new fields Hostname and ServerTime.
2025-01-07 13:36:53 +01:00
sujal shah
73a3438c1b api: Add two new fields Node and ServerTime.
This commit introduced two field in `/status` endpoint:
- The node currently serving the request.
- The current server time for debugging time drift issues.

fixes #15394.

Signed-off-by: sujal shah <sujalshah28092004@gmail.com>
2025-01-07 16:05:50 +05:30
Bryan Boreham
6641f11216 Update go dependencies
Preparation for release 3.1.

Did not update Kubernetes as it forces Go to version 1.23, and we like to support 2 latest versions.

Signed-off-by: Bryan Boreham <bjboreham@gmail.com>
2024-12-18 12:15:12 +00: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
c1f8036228 Fix selector / series formatting for empty metric names
Fixes https://github.com/prometheus/prometheus/issues/15335

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-11-05 16:12:05 +01:00
Julius Volz
76ca7d08d9 Fixup: re-add erroneously removed lines
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-10-30 16:43:10 +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
Julius Volz
b826c43987
Calculate path prefix directly in initial settings Redux value (#14981)
Without this, the page that is shown first renders once with an empty path
prefix value, since the settings update takes a render cycle to complete.
However, we only fetch certain data from the API exactly once for a given
page, and not for every re-render with changed path prefix value (and we
also wouldn't want to fetch it from the wrong location initially).

This duplicates the served endpoint list once more, but exporting them from
App.tsx would also have been dirty (hot reload only works when a file only
exports one component and nothing else, thus there'd be a linter warning).

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-30 14:22:40 +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
7aa4721373
Merge pull request #14946 from roidelapluie/notifications
Add notifications to the Web UI
2024-09-27 15:50:43 +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
Julius Volz
fcbd18dabb Remove Query page alert close buttons that don't do anything
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-25 18:27:27 +02:00
Julius Volz
52fe4cc4ee
Merge pull request #14944 from roidelapluie/copy
Mantine UI: removed unuse file
2024-09-20 21:28:09 +02:00
Julien
7ebda924b8 fix(web): properly format sub-millisecond durations in target status page
Previously, scrapes durations that are very short (e.g., connection refused)
could show as empty (durations under 1 millisecond).

This commit ensures that sub-millisecond durations are correctly
displayed as "0ms" or "1ms" when necessary.

- Adjusted `humanizeDuration` to round sub-millisecond durations to the
  nearest millisecond.
- Updated unit tests to verify the correct handling of sub-millisecond
  values.

Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-20 12:02:17 +02:00
Julien
5096bb9f29 Mantine UI: removed unuse file
Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-20 11:33:55 +02:00
Björn Rabenstein
c7fb6188b4
Merge pull request #14930 from jan--f/holt-winters-experimental
move holt_winters to the experimental functions and rename
2024-09-19 17:52:39 +02:00
Jan Fajerski
96e5a94d29 promql: rename holt_winters to double_exponential_smoothing
Signed-off-by: Jan Fajerski <jfajersk@redhat.com>
2024-09-19 15:29:01 +02:00
Julien
546f780006 UI: Disallow sub-second zoom as this cause inconsistenices in the X axis in uPlot
Fixes #9135

Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-19 11:51:41 +02:00
Julius Volz
b8d1336d42
Merge pull request #14912 from roidelapluie/notready
mantine UI: Distinguish between Not Ready and Stopping
2024-09-17 19:40:13 +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
a1908df922 Don't wrap action buttons below metric name in metrics explorer
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-16 19:51:35 +02:00
Julius Volz
091fc403cf Fiddle with targets table styles to try and improve things a bit
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-16 19:51:08 +02:00
Julius Volz
57898c7929 Refactor and fix time formatting functions, add tests
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-16 19:51:08 +02:00
Julius Volz
9b0dc68d0d PromQL explain view: Support set operators
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-16 18:03:08 +02:00
Julien
ac01dc9035 Explain, vector-to-vector: Do not compute results for set operators
Set operators are not displayed:
31ce9dacf4/web/ui/mantine-ui/src/pages/query/ExplainViews/BinaryExpr/VectorVector.tsx (L364)

Therefore, do not compute results for them.

Fixes #14889

Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-16 11:38:35 +02:00
Julius Volz
50af7d589b Fix tree line drawing by using a callback ref
In a non-dev build (no initial double-renders), the tree lines would not be
rendered correctly from the parent of a binop to its first child, because the
first child would be rendered before the parent, and the parent's ref hadn't
been set yet at that time. Switched from a normal ref to a callback-based ref
with explicit React state update to make sure that the child gets to know about
the parent's (later) rendered div element.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-16 08:42:20 +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
0757fbbecc Make sure that alert element table headers are not wrapped
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-13 14:41:24 +02:00
Julius Volz
a7c1a951df Add general Mantine overrides CSS file
...initially fixing the ellipsis overflow text cut-off in badges.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-13 14:40:29 +02:00
Julius Volz
dfec29d8e5 Fix border color for target pools with one target that is failing
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-11 10:23:57 +02:00
Julius Volz
ee808cda8b Fix HTML rendering for aggregator Explain view
Follow-up to https://github.com/prometheus/prometheus/pull/14893

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-10 17:09:34 +02:00
Julien
3782da7bbc Explain: Use param scalars in aggregations description
Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-10 16:40:33 +02:00
Jan Fajerski
3ce285e0a3
Merge pull request #14891 from roidelapluie/fix-lookback-delta
Mantine UI: Use actual lookback delta in explain
2024-09-10 13:18:59 +02:00
Julien
be6d443947 Mantine UI: Use actual lookback delta in explain
Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-10 13:01:57 +02:00
Julius Volz
bde5092471
Merge pull request #14882 from prometheus/new-ui-help-button
Bring back documentation link in the form of an action button
2024-09-10 12:54:00 +02:00
Julien
8aab6458b8 Mantine UI: Move /discovered-alertmanagers to /alertmanager-discovery
Signed-off-by: Julien <roidelapluie@o11y.eu>
2024-09-10 12:12:21 +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
11f344e4d3 Move AM discovery page from "Monitoring status" -> "Server status"
Seems to at least make more sense to me like that.

Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-09 14:32:27 +02:00
Julius Volz
e2be869a7a Slightly improve navbar wrapping for long status title + narrow window
Signed-off-by: Julius Volz <julius.volz@gmail.com>
2024-09-09 11:59:36 +02:00