From 28778be0cc800e94f70444b1aa1c154fe25c642f Mon Sep 17 00:00:00 2001
From: Artem Navoiev <tenmozes@gmail.com>
Date: Sun, 2 Feb 2020 12:14:09 +0200
Subject: [PATCH] [vmalert] initial

---
 app/vmalert/README.md   |  41 ++++++++++++++++++++++++++++++++++++++++
 app/vmalert/vmalert.png | Bin 0 -> 25765 bytes
 2 files changed, 41 insertions(+)
 create mode 100644 app/vmalert/README.md
 create mode 100644 app/vmalert/vmalert.png

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
+
+
+![vmalert](https://github.com/VictoriaMetrics/VictoriaMetrics/tree/master/app/vmalert/vmalert.png "vmalert")
\ No newline at end of file
diff --git a/app/vmalert/vmalert.png b/app/vmalert/vmalert.png
new file mode 100644
index 0000000000000000000000000000000000000000..197c5e4ef96ae6ea759bc5da8cf38c48c60a18e6
GIT binary patch
literal 25765
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

literal 0
HcmV?d00001