This commit is contained in:
alessandro barucci
2026-09-20 19:26:05 +02:00
parent 48f3f1ff22
commit 63649a642a
11 changed files with 578 additions and 45 deletions
+121 -5
View File
@@ -619,6 +619,11 @@ spec:
EOF
```
COMANDO - applica alert
```bash
kubectl apply -f blackbox-http-alerts.yaml
@@ -631,8 +636,119 @@ kubectl describe prometheusrule blackbox-http-alerts -n monitoring
```
10. TEST MANUALE BLACKBOX EXPORTER
=================================
10. CONFIGURA ALERTMANAGER - INVIO EMAIL SU FAIL DI UN SERVIZIO
================================================================
Obiettivo:
- inviare una email a un indirizzo specifico quando la probe di un
servizio specifico (serviceX) fallisce (alert BlackboxHttpProbeFailed).
FILE - blackbox-email-alert.yaml
Descrizione:
- crea un receiver email dedicato al servizio da monitorare;
- instrada verso quel receiver solo gli alert che riguardano il
target specifico, identificato tramite il label instance.
NOTA - credenziali SMTP
Se il server SMTP richiede autenticazione, crea prima un Secret con
la password:
COMANDO - crea secret con password SMTP
```bash
kubectl create secret generic alertmanager-smtp \
-n monitoring --from-literal=password='<SMTP_PASSWORD>'
```
COMANDO - crea blackbox-email-alert.yaml
```bash
cat > blackbox-email-alert.yaml <<'EOF'
apiVersion: monitoring.coreos.com/v1alpha1
kind: AlertmanagerConfig
metadata:
name: blackbox-email-routing
namespace: monitoring
labels:
release: kube-prometheus-stack
spec:
route:
groupBy: ["alertname", "instance"]
groupWait: 30s
groupInterval: 5m
repeatInterval: 1h
receiver: "email-default"
routes:
- matchers:
- name: alertname
value: BlackboxHttpProbeFailed
matchType: "="
- name: instance
value: "<SERVIZIO_X_URL_O_HOST>"
matchType: "="
receiver: "email-servizioX"
receivers:
- name: "email-default"
emailConfigs: []
- name: "email-servizioX"
emailConfigs:
- to: "<INDIRIZZO_X>"
from: "<SMTP_FROM>"
smarthost: "<SMTP_HOST>:<SMTP_PORT>"
authUsername: "<SMTP_USER>"
authPassword:
name: alertmanager-smtp
key: password
requireTLS: true
sendResolved: true
headers:
subject: "[ALERT] Servizio X non raggiungibile"
html: |
<p>Il servizio <b>{{ "{{" }} .CommonLabels.instance {{ "}}" }}</b> non risponde.</p>
<p>{{ "{{" }} .CommonAnnotations.description {{ "}}" }}</p>
EOF
```
Da personalizzare:
- <SERVIZIO_X_URL_O_HOST>: valore del label instance della probe da
monitorare (es. http://my-service.my-namespace.svc.cluster.local:8080/health);
- <INDIRIZZO_X>: indirizzo email destinatario;
- <SMTP_HOST>, <SMTP_PORT>: server SMTP (es. smtp.gmail.com:587);
- <SMTP_FROM>: mittente email;
- <SMTP_USER>: utente SMTP, se richiesta autenticazione.
COMANDO - applica la configurazione
```bash
kubectl apply -f blackbox-email-alert.yaml
```
COMANDO - verifica AlertmanagerConfig
```bash
kubectl get alertmanagerconfig -n monitoring
kubectl describe alertmanagerconfig blackbox-email-routing -n monitoring
```
NOTA - matcher su instance vs job
Se vuoi far scattare l'email per TUTTI i target di una Probe (job)
invece che per un singolo servizio, sostituisci il matcher su
`instance` con:
```yaml
- name: job
value: "http-services-probe"
matchType: "="
```
COMANDO - verifica alert in Alertmanager
```bash
kubectl port-forward -n monitoring svc/kube-prometheus-stack-alertmanager 9093
# -> http://localhost:9093, controlla che l'alert BlackboxHttpProbeFailed
# per il servizio X sia instradato sul receiver email-servizioX
```
11. TEST MANUALE BLACKBOX EXPORTER
==================================
COMANDO - port-forward blackbox-exporter
```bash
@@ -651,7 +767,7 @@ probe_http_status_code 200
```
11. TROUBLESHOOTING
12. TROUBLESHOOTING
===================
CASO - Prometheus non vede la Probe
@@ -700,7 +816,7 @@ Azioni consigliate:
- aggiungere un modulo dedicato in blackbox-values.yaml se serve una configurazione HTTP specifica.
12. ORDINE DI ESECUZIONE CONSIGLIATO
13. ORDINE DI ESECUZIONE CONSIGLIATO
====================================
COMANDO - sequenza completa
@@ -727,7 +843,7 @@ blackbox-http-alerts.yaml
```
13. NOTE PER DEV, QA E PROD
14. NOTE PER DEV, QA E PROD
===========================
Per separare gli ambienti e semplificare dashboard e alert, usa Probe distinte: