Add alerta UI for prometheus alerts
This change add new service with:
* The new service in monitoring stack: Alerta UI
* Nginx proxy entity for Alerta UI
* Relabeling for prometheus alerts
* New webhook receiver
Change-Id: Id042f2fa04a5881cd48265fa6e7a327237024acc
Prod-related: PROD-19597
diff --git a/docker/swarm/stack/monitoring/alerta.yml b/docker/swarm/stack/monitoring/alerta.yml
new file mode 100644
index 0000000..c0da7d5
--- /dev/null
+++ b/docker/swarm/stack/monitoring/alerta.yml
@@ -0,0 +1,30 @@
+classes:
+- system.prometheus.alerta
+parameters:
+ _param:
+ docker_image_alerta: docker-prod-local.artifactory.mirantis.com/mirantis/external/alerta-web:latest
+ alerta_mongodb_uri: "mongodb://${_param:cluster_node01_address}:27017,${_param:cluster_node02_address}:27017,${_param:cluster_node03_address}:27017/alerta?replicaSet=stacklight"
+ alerta_admin_username: "admin@alerta.io"
+ docker:
+ client:
+ stack:
+ monitoring:
+ service:
+ alerta:
+ networks:
+ - monitoring
+ deploy:
+ labels:
+ com.mirantis.monitoring: "alerta"
+ restart_policy:
+ condition: any
+ labels:
+ com.mirantis.monitoring: "alerta"
+ image: ${_param:docker_image_alerta}
+ ports:
+ - 15017:8080
+ volumes:
+ - ${prometheus:alerta:config_dir}/alerta.conf:/web/config.js
+ environment:
+ ADMIN_USERS: ${_param:alerta_admin_username}
+ MONGO_URI: ${_param:alerta_mongodb_uri}
\ No newline at end of file
diff --git a/nginx/server/proxy/monitoring/alerta.yml b/nginx/server/proxy/monitoring/alerta.yml
new file mode 100644
index 0000000..432a9dc
--- /dev/null
+++ b/nginx/server/proxy/monitoring/alerta.yml
@@ -0,0 +1,18 @@
+parameters:
+ nginx:
+ server:
+ enabled: true
+ site:
+ nginx_proxy_alerta:
+ enabled: true
+ type: nginx_proxy
+ name: alerta
+ proxy:
+ host: ${_param:prometheus_control_address}
+ port: 15017
+ protocol: http
+ host:
+ name: ${_param:cluster_public_host}
+ port: 15017
+ protocol: https
+ ssl: ${_param:nginx_proxy_ssl}
diff --git a/prometheus/alerta/init.yml b/prometheus/alerta/init.yml
new file mode 100644
index 0000000..a82e8d4
--- /dev/null
+++ b/prometheus/alerta/init.yml
@@ -0,0 +1,2 @@
+classes:
+ - service.prometheus.alerta
diff --git a/prometheus/alertmanager/notification/alerta.yml b/prometheus/alertmanager/notification/alerta.yml
new file mode 100644
index 0000000..816aaf6
--- /dev/null
+++ b/prometheus/alertmanager/notification/alerta.yml
@@ -0,0 +1,20 @@
+parameters:
+ _param:
+ alertmanager_notification_alerta_host: alerta
+ alertmanager_notification_alerta_port: 8080
+ prometheus:
+ alertmanager:
+ enabled: true
+ config:
+ route:
+ routes:
+ alerta:
+ receiver: HTTP-alerta
+ continue: true
+ receiver:
+ HTTP-alerta:
+ enabled: true
+ webhook_configs:
+ alerta:
+ url: "http://${_param:alertmanager_notification_alerta_host}:${_param:alertmanager_notification_alerta_port}/api/webhooks/prometheus"
+ send_resolved: true
diff --git a/prometheus/server/alert/alerta_relabel.yml b/prometheus/server/alert/alerta_relabel.yml
new file mode 100644
index 0000000..a81c59a
--- /dev/null
+++ b/prometheus/server/alert/alerta_relabel.yml
@@ -0,0 +1,19 @@
+parameters:
+ _param:
+ alerta_environment_label: Development
+ prometheus:
+ server:
+ config:
+ alert:
+ labels_add:
+ environment: ${_param:alerta_environment_label}
+ alert_relabel_configs:
+ - replacement: "aggregated"
+ source_labels: "instance"
+ target_label: "instance"
+ - source_labels: ["host", "job"]
+ target_label: "instance"
+ regex: "([a-zA-Z0-9]+;[a-zA-Z0-9_]+)"
+ - source_labels: ["hostname", "job"]
+ target_label: "instance"
+ regex: "([a-zA-Z0-9]+;[a-zA-Z0-9_]+)"