Skip to content

feat: alert condition DSL and multi-check quorum/debounce #68

Description

@amondnet

Context / Motivation

Gatus's condition engine is its key differentiator — conditions over status code, response time, response body, and certificate expiry, expressed declaratively in YAML. StatusBeam currently has a fixed notion of what "down" means.

The counterpart problem is false positives, which is the most heavily discussed pain point in upptime: upptime/upptime#553 (24 comments), upptime/upptime#364, upptime/upptime#287. A single failed probe from one location opening an incident and paging the on-call is what drives people off these tools.

Proposed scope

  • A versioned YAML condition expression language evaluated in the Worker, covering status code, latency, response body / keyword match, and (with the SSL check) certificate expiry.
  • Versioned so the schema can evolve without breaking existing configs.
  • N-of-M consecutive-failure debounce before an incident is opened or a notification is sent, configurable per check.
  • Quorum across multiple checks/regions as an input to the same decision.

Acceptance criteria

  • A condition expression over status, latency, body/keyword, and cert expiry evaluates correctly and is covered by tests.
  • An invalid or unsupported condition version fails config validation with a clear message.
  • An N-of-M debounce prevents a single transient failure from opening an incident or notifying.
  • Existing configs without conditions keep working unchanged.

Priority / Effort / Dependencies

  • Priority: p3
  • Effort: L (~1 week)
  • Dependencies: none hard. Related to the TCP/SSL check work (certificate expiry as a condition input) and to multi-region probes (quorum input).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    effort:LEffort: about 1 weekp3Priority 3 - Lowtype:featureNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions