You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* feat(suite): Implement Suites
Fixes#1230
* Update docs
* Fix variable alignment
* Prevent always-run endpoint from running if a context placeholder fails to resolve in the URL
* Return errors when a context placeholder path fails to resolve
* Add a couple of unit tests
* Add a couple of unit tests
* fix(ui): Update group count properly
Fixes#1233
* refactor: Pass down entire config instead of several sub-configs
* fix: Change default suite interval and timeout
* fix: Deprecate disable-monitoring-lock in favor of concurrency
* fix: Make sure there are no duplicate keys
* Refactor some code
* Update watchdog/watchdog.go
* Update web/app/src/components/StepDetailsModal.vue
Co-authored-by: Copilot <[email protected]>
* chore: Remove useless log
* fix: Set default concurrency to 3 instead of 5
---------
Co-authored-by: Copilot <[email protected]>
| `disable-monitoring-lock` | Whether to [disable the monitoring lock](#disable-monitoring-lock). | `false` |
251
+
| `concurrency` | Maximum number of endpoints/suites to monitor concurrently. Set to `0` for unlimited. See [Concurrency](#concurrency). | `3` |
252
+
| `disable-monitoring-lock` | Whether to [disable the monitoring lock](#disable-monitoring-lock). **Deprecated**: Use `concurrency: 0` instead. | `false` |
251
253
| `skip-invalid-config-update` | Whether to ignore invalid configuration update. <br />See [Reloading configuration on the fly](#reloading-configuration-on-the-fly). | `false` |
252
254
| `web` | Web configuration. | `{}` |
253
255
| `web.address` | Address to listen on. | `0.0.0.0` |
@@ -309,6 +311,8 @@ You can then configure alerts to be triggered when an endpoint is unhealthy once
309
311
| `endpoints[].ui.dont-resolve-failed-conditions` | Whether to resolve failed conditions for the UI. | `false` |
310
312
| `endpoints[].ui.badge.response-time` | List of response time thresholds. Each time a threshold is reached, the badge has a different color. | `[50, 200, 300, 500, 750]` |
311
313
| `endpoints[].extra-labels` | Extra labels to add to the metrics. Useful for grouping endpoints together. | `{}` |
314
+
| `endpoints[].always-run` | (SUITES ONLY) Whether to execute this endpoint even if previous endpoints in the suite failed. | `false` |
315
+
| `endpoints[].store` | (SUITES ONLY) Map of values to extract from the response and store in the suite context (stored even on failure). | `{}` |
312
316
313
317
You may use the following placeholders in the body (`endpoints[].body`):
314
318
- `[ENDPOINT_NAME]`(resolved from `endpoints[].name`)
@@ -366,6 +370,99 @@ Where:
366
370
You must also pass the token as a `Bearer` token in the `Authorization` header.
367
371
368
372
373
+
### Suites (ALPHA)
374
+
Suites are collections of endpoints that are executed sequentially with a shared context.
375
+
This allows you to create complex monitoring scenarios where the result from one endpoint can be used in subsequent endpoints, enabling workflow-style monitoring.
376
+
377
+
Here are a few cases in which suites could be useful:
The suite will be considered successful only if all required endpoints pass their conditions.
464
+
465
+
369
466
### Conditions
370
467
Here are some examples of conditions you can use:
371
468
@@ -2921,17 +3018,34 @@ endpoints:
2921
3018
> using the `[DOMAIN_EXPIRATION]` placeholder on an endpoint with an interval of less than `5m`.
2922
3019
2923
3020
2924
-
### disable-monitoring-lock
2925
-
Setting `disable-monitoring-lock` to `true` means that multiple endpoints could be monitored at the same time (i.e. parallel execution).
3021
+
### Concurrency
3022
+
By default, Gatus allows up to 5 endpoints/suites to be monitored concurrently. This provides a balance between performance and resource usage while maintaining accurate response time measurements.
3023
+
3024
+
You can configure the concurrency level using the `concurrency` parameter:
3025
+
3026
+
```yaml
3027
+
# Allow 10 endpoints/suites to be monitored concurrently
3028
+
concurrency: 10
3029
+
3030
+
# Allow unlimited concurrent monitoring
3031
+
concurrency: 0
3032
+
3033
+
# Use default concurrency (3)
3034
+
# concurrency: 3
3035
+
```
3036
+
3037
+
**Important considerations:**
3038
+
- Higher concurrency can improve monitoring performance when you have many endpoints
3039
+
- Conditions using the `[RESPONSE_TIME]` placeholder may be less accurate with very high concurrency due to system resource contention
3040
+
- Set to `0` for unlimited concurrency (equivalent to the deprecated `disable-monitoring-lock: true`)
2926
3041
2927
-
While this behavior wouldn't generally be harmful, conditions using the `[RESPONSE_TIME]` placeholder could be impacted
2928
-
by the evaluation of multiple endpoints at the same time, therefore, the default value for this parameter is `false`.
3042
+
**Use cases for higher concurrency:**
3043
+
- You have a large number of endpoints to monitor
3044
+
- You want to monitor endpoints at very short intervals (< 5s)
3045
+
- You're using Gatus for load testing scenarios
2929
3046
2930
-
There are three main reasons why you might want to disable the monitoring lock:
2931
-
- You're using Gatus for load testing (each endpoint are periodically evaluated on a different goroutine, so
2932
-
technically, if you create 100 endpoints with a 1 seconds interval, Gatus will send 100 requests per second)
2933
-
- You have a _lot_ of endpoints to monitor
2934
-
- You want to test multiple endpoints at very short intervals (< 5s)
3047
+
**Legacy configuration:**
3048
+
The `disable-monitoring-lock` parameter is deprecated but still supported for backward compatibility. It's equivalent to setting `concurrency: 0`.
0 commit comments