summaryrefslogtreecommitdiff
path: root/roles/monitoring
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2022-03-06 19:02:27 +0100
committerChristian Pointner <equinox@spreadspace.org>2022-03-06 19:08:21 +0100
commitc5fad84c1abe4bd208a75e34a92c242b8bbaf9ff (patch)
treef6b38e47f00aa065295517b81be61515cc5247bb /roles/monitoring
parentalerta: test alertmanager silence integration (diff)
alerta: add mailer
Diffstat (limited to 'roles/monitoring')
-rw-r--r--roles/monitoring/alerta/files/email.tmpl32
-rw-r--r--roles/monitoring/alerta/tasks/main.yml64
-rw-r--r--roles/monitoring/alerta/templates/pod-spec.yml.j233
3 files changed, 124 insertions, 5 deletions
diff --git a/roles/monitoring/alerta/files/email.tmpl b/roles/monitoring/alerta/files/email.tmpl
new file mode 100644
index 00000000..939e0038
--- /dev/null
+++ b/roles/monitoring/alerta/files/email.tmpl
@@ -0,0 +1,32 @@
+
+------------------------------------------------------------
+[{{ alert.status|title }}] {{ alert.environment }}: {{ alert.severity|title }} {{ alert.event }} on {{ alert.service|join(', ') }} {{ alert.resource }}
+------------------------------------------------------------
+
+Alert ID: {{ alert.id }}
+Create Time: {{ alert.create_time }}
+Environment: {{ alert.environment }}
+Services: {{ alert.service|join(', ') }}
+Resource: {{ alert.resource }}
+Event: {{ alert.event }}
+Group: {{ alert.group }}
+Value: {{ alert.value }}
+Severity: {{ alert.previous_severity|title}} -> {{ alert.severity|title }}
+Status: {{ alert.status|title }}
+Text: {{ alert.text }}
+Duplicate Count: {{ alert.duplicate_count }}
+Origin: {{ alert.origin }}
+Tags: {{ alert.tags|join(', ') }}
+{% for key,value in alert.attributes.items() -%}
+{{ key|title }}: {{ value | safe }}
+{% endfor -%}
+
+{% if alert.raw_data %}
+Raw Data
+{{ alert.raw_data | safe }}
+{% endif %}
+
+To acknowledge this alert visit this URL:
+{{ dashboard_url | safe }}/#/alert/{{ alert.id }}
+
+Generated by {{ program }} on {{ hostname }} at {{ now }}
diff --git a/roles/monitoring/alerta/tasks/main.yml b/roles/monitoring/alerta/tasks/main.yml
index a4fd3df9..47df5308 100644
--- a/roles/monitoring/alerta/tasks/main.yml
+++ b/roles/monitoring/alerta/tasks/main.yml
@@ -3,16 +3,42 @@
loop:
- config
- postgres
+ - build
file:
path: "{{ alerta_base_path }}/{{ item }}"
state: directory
+- name: generate Dockerfile for custom image
+ copy:
+ content: |
+ FROM alerta/alerta-web:8.7.0
+
+ RUN set -x \
+ && sed 's/USE_AM_EXTERNALURL_FOR_SILENCES/ALERTMANAGER_USE_EXTERNALURL_FOR_SILENCES/' -i /venv/lib/python3.8/site-packages/alerta_prometheus.py \
+ && /venv/bin/pip install redis==4.1.4 \
+ && /venv/bin/pip install git+https://github.com/alerta/alerta-contrib.git@69d271ef9fe6542727ec4aa39fc8e0f797f1e8b1#subdirectory=integrations/mailer
+ dest: "{{ alerta_base_path }}/build/Dockerfile"
+ register: alerta_custom_image_docker
+
+- name: build custom image
+ docker_image:
+ name: "alerta-web-with-mailer:8.7.0"
+ state: present
+ force_source: "{{ alerta_custom_image_docker is changed }}"
+ source: build
+ build:
+ path: "{{ alerta_base_path }}/build"
+ network: host
+ pull: yes
+
- name: install alertad config template
copy:
content: |
DEBUG = {{ '{{' }} 'True' if env.DEBUG else 'False' {{ '}}' }}
SECRET = "{{ '{{' }} env.SECRET_KEY {{ '}}' }}"
- PLUGINS = ['reject', 'blackout', 'heartbeat', 'prometheus']
+ ALERT_TIMEOUT = 86400
+ HEARTBEAT_TIMEOUT = 7200
+ PLUGINS = ['reject', 'blackout', 'heartbeat', 'prometheus', 'amqp']
DEFAULT_ENVIRONMENT = 'unknown'
ALLOWED_ENVIRONMENTS = ['unknown', 'chaos-at-.*']
HEARTBEAT_EVENTS = ['PrometheusAlertmanagerE2eDeadManSwitch']
@@ -20,8 +46,35 @@
ALERTMANAGER_PASSWORD = 'alerta'
ALERTMANAGER_SILENCE_FROM_ACK = True
ALERTMANAGER_USE_EXTERNALURL_FOR_SILENCES = True
+ AMQP_URL = 'redis://localhost:6379/'
dest: "{{ alerta_base_path }}/config/alertad.conf.j2"
+ ## TODO: add key handling...
+- name: install alerta-mailer config file
+ copy:
+ content: |
+ [alerta-mailer]
+ debug = True
+ key = aNqBsEyG0ynIKcc3e7acaBVBk5B793o_z7tvlsht
+ endpoint = http://localhost:8080/api
+ amqp_url = redis://localhost:6379
+ smtp_host = 192.168.28.250
+ smtp_port = 25
+ smtp_starttls = False
+ skip_mta = False
+ mail_to = equinox@chaos-at-home.org
+ mail_from = noreply@chaos-at-home.org
+ email_type = text
+ mail_template = /app/email.tmpl
+ dashboard_url = http://192.168.32.1:8080
+ dest: "{{ alerta_base_path }}/config/alerta-mailer.conf"
+ mode: 0640
+
+- name: install e-mail template
+ copy:
+ src: email.tmpl
+ dest: "{{ alerta_base_path }}/config/email.tmpl"
+
- name: install pod manifest
vars:
kubernetes_standalone_pod:
@@ -32,5 +85,14 @@
- path: "{{ alerta_base_path }}/config/alertad.conf.j2"
properties:
- checksum
+ - path: "{{ alerta_base_path }}/config/alerta-mailer.conf"
+ properties:
+ - checksum
+ - path: "{{ alerta_base_path }}/config/email.tmpl"
+ properties:
+ - checksum
+ - path: "{{ alerta_base_path }}/build/Dockerfile"
+ properties:
+ - checksum
include_role:
name: kubernetes/standalone/pod
diff --git a/roles/monitoring/alerta/templates/pod-spec.yml.j2 b/roles/monitoring/alerta/templates/pod-spec.yml.j2
index e31686e3..6edabae5 100644
--- a/roles/monitoring/alerta/templates/pod-spec.yml.j2
+++ b/roles/monitoring/alerta/templates/pod-spec.yml.j2
@@ -1,9 +1,6 @@
containers:
- name: alerta
- image: "alerta/alerta-web:8.7.0"
- resources:
- limits:
- memory: "1Gi"
+ image: "alerta-web-with-mailer:8.7.0"
env:
- name: "DATABASE_URL"
value: "postgres://alerta:secret@127.0.0.1:5432/alerta"
@@ -11,6 +8,10 @@ containers:
value: "True"
- name: "ADMIN_USERS"
value: "admin"
+ - name: "DEBUG"
+ value: "1"
+ - name: "SUPERVISORD_LOG_LEVEL"
+ value: "warn"
volumeMounts:
- name: config
mountPath: /app/alertad.conf.j2
@@ -37,6 +38,30 @@ containers:
- name: postgres
mountPath: /var/lib/postgresql/data
+- name: redis
+ image: "redis:6.2.6"
+ args:
+ - redis-server
+ - --bind
+ - 127.0.0.1
+
+- name: mailer
+ image: "alerta-web-with-mailer:8.7.0"
+ command:
+ - alerta-mailer
+ env:
+ - name: "ALERTA_CONF_FILE"
+ value: "/app/alerta-mailer.conf"
+ volumeMounts:
+ - name: config
+ mountPath: /app/alerta-mailer.conf
+ subPath: alerta-mailer.conf
+ readOnly: true
+ - name: config
+ mountPath: /app/email.tmpl
+ subPath: email.tmpl
+ readOnly: true
+
volumes:
- name: config
hostPath: