diff --git a/app/vmalert/README.md b/app/vmalert/README.md new file mode 100644 index 0000000000..19416f217a --- /dev/null +++ b/app/vmalert/README.md @@ -0,0 +1,41 @@ +## VM Alert + +#### Abstract +The application which accepts the alert rules, executes them on given source, sends(fires) an alert to(in) alert management system + +### Components + +#### Alert Config Reader +It accepts yaml config as input parameter in Prometheus format, parses it into Go struct. + +#### Source Caller +Create own watchdog for every alert group (goroutines), which executes alert query on given source and issues an alert if source returns non-empty result. +Source can be any service which supports PromQL (MetricsQL). + +#### Alert Management System Provider +Send positive alert to alert management system, provides interface for every concrete implementation. +Should be ingratiated with Prometheus alertmanager. + +open questions: +- do we really need alert group or can just run every alert in own goroutine? + +#### Web Server +Expose metrics + +open questions: +- should the tool provide API or UI for managing alerting rules? Where to store config updated via the API or UI? +- should the tool provide “alerting rules validation mode” for validating and debugging alerting rules? This mode is useful when creating and debugging alerting rules. + +#### Requirements: +- Stateless +- Avoid external dependencies if possible +- Reuse existing code from VictoriaMetrics repo +- Makefile rules for common tasks – see Makefiles for other apps in the app/ dir +- Every package should be covered by tests +- Dockerfile +- Graceful shutdown +- Helm template +- Application uses command line flags for configuration + + + \ No newline at end of file diff --git a/app/vmalert/vmalert.png b/app/vmalert/vmalert.png new file mode 100644 index 0000000000..197c5e4ef9 Binary files /dev/null and b/app/vmalert/vmalert.png differ