Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

relayd: Usability improvements #2232

Closed
ltning opened this issue Feb 11, 2021 · 1 comment
Closed

relayd: Usability improvements #2232

ltning opened this issue Feb 11, 2021 · 1 comment
Assignees
Labels
feature Adding new functionality

Comments

@ltning
Copy link

ltning commented Feb 11, 2021

Is your feature request related to a problem? Please describe.
The current status UI for relayd is somewhat unwieldy with a significant number of virtual servers/tables. It also has some other usability issues that makes it difficult and error-prone.

Describe the solution you'd like

Specific issues I'd like to see addressed, order of priority:

  • being able to disable a backend while it's down, preventing it from joining the pool even if it comes back up
  • make sure stopping/starting a backend from the status display is reflected there without having to refresh
  • allow filtering the displayed entries, to make sure we only see/operate on a given (set of) virtual servers, for instance
  • being able to sort the status view (and preferably persist the sort order)

More difficult:
We need a way to determine the reason for a given host being marked as down. E.g. when using HTTP(S) checks, we would like to be able to quickly determine what was returned by the test. If there would be a way to link directly to log entries corresponding to the state of the host in question, that would go a long way towards helping us.

Subject to taste/discussion:
I would like to reduce the "busyness" of the display when there are lots of entries. Specifically, we are going to have 2-3 dozen virtual servers, each with 1 or 2 tables, each of which with 2 or 3 hosts. This quickly becomes hard to "digest" when looking at the status page. For example, in our case, we'd usually only need to see the virtual server and the hosts assigned to the primary pool. Some suggestions for how this could be helped:

  • Make fallback pool display optional
  • Make table column optional (it's redundant if only primary pool is shown)
  • Have a dashboard widget listing virtual servers and their state, with direct links to filtered status page

Describe alternatives you've considered
We were considering HAProxy but need the transparent load balancing offered by relayd.

@fichtner fichtner added the feature Adding new functionality label Apr 23, 2021
AdSchellevis added a commit that referenced this issue May 2, 2021
…perform some minor cleanups as well (use our standard classes and some style fixes) for #2232
AdSchellevis added a commit that referenced this issue May 4, 2021
o indent template for easier reading
o disable virtual host if table is empty

for #2232
AdSchellevis added a commit that referenced this issue May 5, 2021
o extend status controller with "wait" flag to give relayd some time for collecting status (retry mechanism)
o refactor status.volt use jQuery components to construct items and make sure each row contains all relevant data
o switch icons to fonts-awesome (standard theme) in status view
o add filter option in status view
AdSchellevis added a commit that referenced this issue May 5, 2021
o match case insensitive for search.
AdSchellevis added a commit that referenced this issue May 5, 2021
0 show missing on hidden object container, feedback from @fbrendel
AdSchellevis added a commit that referenced this issue May 5, 2021
o extend status controller output with attached configuration data and add listen_address and port(s) for virtualservers
o extend model with an easy to use "get by name" method
AdSchellevis added a commit that referenced this issue May 5, 2021
o add unique constraints as discussed with @fbrendel
AdSchellevis added a commit that referenced this issue May 6, 2021
o fix host matching as discussed with @fbrendel, name vs address matching.
o model, change getObjectByName to getObjectsByAttribute so we can match a (set of) hosts on address as well
o change api response for host properties, since we can't uniquely tell which host item belongs to the output of `relayctl show summary`, we search the ones that are most likely to match
AdSchellevis added a commit that referenced this issue May 6, 2021
o extend status controller toggle action so it can enable/disable hosts on "add" and "remove" actions, $id's are (a list of) uuid's in that case
o extend status controller to return "unconfigured" when disabled in the configuration, so we can distinct between temporary disabled (running config) and offline
o status page: add bind address and port in virtual server field
o status page: add host name(s) if it differs from the address, so we can search on user configurable names as well
o status page: add transitions, down -> disabled, unconfigured -> enabled (+ service reconfigure), when disabled offer the choice to start or remove globally.
o status page: restructure translation texts
AdSchellevis added a commit that referenced this issue May 7, 2021
o status page: change host status disabled --> stopped, unconfigured --> disabled
o status page: always show host disable button
AdSchellevis added a commit that referenced this issue May 11, 2021
o add toggle to hide table column, provides some additional overview when only single tables are used in a virtual server
o support local presets using localStorage object, quickly traverse through different filters previously saved on the local client.
AdSchellevis added a commit that referenced this issue May 14, 2021
net/relayd: Usability improvements #2232

o support enable/disable flag on backend hosts, while here perform some minor cleanups as well (use our standard classes and some style fixes) for #2232
o lock delete action to prevent "delete selected" from ignoring most entries. (eventually it might be better to stick to ApiMutableModelControllerBase actions to simplify logiuc, but since there's all some logic incorporated in these endpoints now, let's keep it as is now and only add a lock.)
o ignore backup without check in relayd.conf (prevent crash with "Template Error" when a backup without a template is provided)
o extend status controller with "wait" flag to give relayd some time for collecting status (retry mechanism)
o refactor status.volt use jQuery components to construct items and make sure each row contains all relevant data
o extend status controller output with attached configuration data and add listen_address and port(s) for virtualservers
o extend model with an easy to use "get by name" method (getObjectsByAttribute)
o change api response for host properties, since we can't uniquely tell which host item belongs to the output of `relayctl show summary`, we search the ones that are most likely to match
o extend status controller toggle action so it can enable/disable hosts on "add" and "remove" actions, $id's are (a list of) uuid's in that case
o extend status controller to return "unconfigured" when disabled in the configuration, so we can distinct between temporary disabled (running config) and offline
o status page: switch icons to fonts-awesome (standard theme) in status view
o status page: add filter option in status view
o status page: add bind address and port in virtual server field
o status page: add host name(s) if it differs from the address, so we can search on user configurable names as well
o status page: add transitions, down -> stopped, disabled -> enabled (+ service reconfigure)
o status page: always show host disable button
o status page: restructure translation texts
o status page: add toggle to hide table column, provides some additional overview when only single tables are used in a virtual server
o status page: support local presets using localStorage object, quickly traverse through different filters previously saved on the local client.


sponsored by : Modirum (https://www.modirum.com/)
AdSchellevis added a commit that referenced this issue May 20, 2021
minor visual improvements on the status page.

o reset cursor pointer on status widgets
o in host column add one button spacing for better alignment
o add a space between buttons and text
AdSchellevis added a commit that referenced this issue May 20, 2021
minor visual improvements on the status page.

o reset cursor pointer on status widgets
o in host column add one button spacing for better alignment
o add a space between buttons and text
@fichtner fichtner assigned AdSchellevis and unassigned fbrendel May 27, 2021
@AdSchellevis
Copy link
Member

closed with #2373 and #2398


sponsored by : Modirum (https://www.modirum.com/)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature Adding new functionality
Development

No branches or pull requests

4 participants