-
-
Notifications
You must be signed in to change notification settings - Fork 630
feat(suite): Implement Suites #1239
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
Conversation
…ls to resolve in the URL
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements Suites - a major new feature that allows creating collections of endpoints that execute sequentially with shared context. This enables complex monitoring scenarios like multi-step authentication flows and API workflows where results from one endpoint can be used in subsequent endpoints.
Key changes include:
- Added complete suite execution engine with context sharing and sequential endpoint processing
- Added suite storage layer with database schema and API endpoints
- Added comprehensive frontend UI for viewing suite execution results and flow diagrams
Reviewed Changes
Copilot reviewed 70 out of 74 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| web/static/css/app.css | Updated compiled Tailwind CSS with new suite-related styles |
| web/app/src/views/SuiteDetails.vue | New comprehensive suite details view with execution flow visualization |
| web/app/src/views/Home.vue | Enhanced dashboard to display both endpoints and suites |
| web/app/src/views/EndpointDetails.vue | Migrated from helper mixin to time utilities |
| web/app/src/utils/time.js | New centralized time formatting utilities |
| web/app/src/utils/format.js | New duration formatting utilities |
| web/app/src/router/index.js | Added route for suite details page |
| web/app/src/components/* | New suite-specific UI components for flow visualization |
| storage/store/sql/sql.go | Added comprehensive suite storage with database schema |
| config/suite/* | Core suite implementation with execution engine |
| watchdog/* | Extended monitoring system to support suite execution |
| metrics/metrics.go | Added Prometheus metrics for suite monitoring |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
|
I've gone over the changes at least 20 times. I'm sure I missed something, so I'll have to let this soak on the |
This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/twin/gatus](https://github.com/TwiN/gatus) | minor | `v5.23.2` -> `v5.24.0` | --- ### Release Notes <details> <summary>TwiN/gatus (ghcr.io/twin/gatus)</summary> ### [`v5.24.0`](https://github.com/TwiN/gatus/releases/tag/v5.24.0) [Compare Source](TwiN/gatus@v5.23.2...v5.24.0) Another big update worthy of highlights. There are 3 big changes coming to Gatus with this release. - **Suites** (ALPHA): To keep it short, this allows you to monitor a list of endpoints in order, but those endpoints have a shared context that allows you to store values and compare or use them in other endpoints. For more information, see <TwiN/gatus#1241> - **New alerting providers**: 14 new alerting providers have been added, but there's a catch. I don't have time to test this many providers, so I'm trying something new, namely, letting users who want to use those alerting providers test them for me. For more information, see <TwiN/gatus#1223> - **RDAP support for `[DOMAIN_EXPIRATION]` placeholder**: Some TLDs have started dropping support for WHOIS, as such, support for RDAP has been added. WHOIS will still be used as a fallback if RDAP fails to resolve the domain expiration of a domain. I am very excited to finally have made some progress on suites. It's missing some features, and it required a lot of redesigning, so I expect some complaints, but with suites, the possibilities feel endless. You can monitor entire workflows, simulate complex user behavior, not just READ-type of behavior, but WRITE as well, as you can configure an endpoint to run even if the workflow fails to clean up whatever resource you created, and so much more. Suites have some serious potential. #### What's Changed - feat(suite): Implement Suites by [@​TwiN](https://github.com/TwiN) in [#​1239](TwiN/gatus#1239) - feat(alerting): Add new providers for Datadog, IFTTT, Line, NewRelic, Plivo, RocketChat, SendGrid, Signal, SIGNL4, Splunk, Squadcast, Vonage, Webex and Zapier by [@​TwiN](https://github.com/TwiN) in [#​1224](TwiN/gatus#1224) - feat(client): Add RDAP support for domain expiration by [@​ju-ef](https://github.com/ju-ef) in [#​1181](TwiN/gatus#1181) - feat(client): starttls support for dns resolver by [@​eleith](https://github.com/eleith) in [#​1253](TwiN/gatus#1253) - fix(alerting): Adjust minimum reminder config parsing by [@​xconverge](https://github.com/xconverge) in [#​1226](TwiN/gatus#1226) - fix(client): add forward ip support in PTR query-name by [@​denis-ev](https://github.com/denis-ev) in [#​1261](TwiN/gatus#1261) - docs: Fix typo in Zulip configuration section by [@​XavierDupuis](https://github.com/XavierDupuis) in [#​1220](TwiN/gatus#1220) - docs: information on escaping endpoint url in config by [@​muzy](https://github.com/muzy) in [#​1242](TwiN/gatus#1242) #### New Contributors - [@​XavierDupuis](https://github.com/XavierDupuis) made their first contribution in [#​1220](TwiN/gatus#1220) - [@​eleith](https://github.com/eleith) made their first contribution in [#​1253](TwiN/gatus#1253) - [@​ju-ef](https://github.com/ju-ef) made their first contribution in [#​1181](TwiN/gatus#1181) - [@​denis-ev](https://github.com/denis-ev) made their first contribution in [#​1261](TwiN/gatus#1261) - [@​muzy](https://github.com/muzy) made their first contribution in [#​1242](TwiN/gatus#1242) **Full Changelog**: <TwiN/gatus@v5.23.2...v5.24.0> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMTYuNSIsInVwZGF0ZWRJblZlciI6IjQxLjExNi41IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJpbWFnZSJdfQ==--> Reviewed-on: https://gitea.alexlebens.dev/alexlebens/infrastructure/pulls/1491 Co-authored-by: Renovate Bot <[email protected]> Co-committed-by: Renovate Bot <[email protected]>
Summary
This is a new core feature, and makes massive changes throughout the entire codebase.
Suites are collections of endpoints that are executed sequentially with a shared context.
This allows you to create complex monitoring scenarios where the result from one endpoint can be used in subsequent endpoints, enabling workflow-style monitoring.
Here are a few cases in which suites could be useful:
This is a feature I have been wanting to implement for a very long time, and coupled with Gatus' extremely powerful and customizable endpoint health validating capabilities (vs. most other status pages that are limited to basic checks), I believe that suites are what will bring Gatus into a league of its own.
Fixes #1230
Fixes #1233 (unrelated to suites)
Fixes #1214 (this deprecates
disable-monitoring-lockin favor of a newconcurrencyparameter): this was needed, because some complex suites could take minutes to complete, which would have locked concurrent runs for as much time (not acceptable)Checklist
README.md, if applicable.