Passa al contenuto principale

alertingservice

Cosa fa

alertingservice valuta regole su eventi/log in tempo reale e invia notifiche (email/whatsapp), registrando stato e delivery.

Ruoli e responsabilita

  • engine di regole con dedup e throttle per finestra temporale;
  • subscribe Redis su pattern logs/events;
  • integrazione provider notifiche (SMTP, Twilio);
  • persistenza su datahub di regole/stato/delivery.

Porta esposta

  • Porta interna servizio: 3008
  • Esposizione via Traefik: https://api.trading.expovin.it/alertingservice/*

Architettura grafica

Microservizi backend

Pubblicano logs/events su Redis

Client/Operatori

Gestiscono regole e trigger manuali via REST

Redis subscribe + REST API
alertingservice (RuleEngine)

Match regole, dedup/throttle, dispatch canali

  • source: logs + events
  • azioni: email / whatsapp
  • stateful windowing per rule
datahub

alerting-rules, alerting-state, alerting-deliveries

SMTP

Invio email (nodemailer)

Twilio

Invio WhatsApp/template

Redis Bus

Pattern events/logs + catalog EVENTS:*

Configurazione (docker-compose.paper.yml)

alertingservice:
image: expovin/alertingservice:${ALERTINGSERVICE_VERSION}
restart: unless-stopped
profiles: ["alertingservice"]
environment:
- DBMANAGER_URL=${DBMANAGER_URL}
- REDIS_URL=${REDIS_URL}
- PORT=3008
- TWILIO_ACCOUNT_SID=${TWILIO_ACCOUNT_SID}
- SMTP_HOST=${SMTP_HOST}
- SMTP_PORT=${SMTP_PORT}
- SMTP_USER=${SMTP_USER}
- SMTP_PASSWORD=${SMTP_PASSWORD}
- ENV=${ENV}
- TZ=${TIMEZONE}
labels:
- "traefik.enable=true"
- "traefik.http.routers.alertingservice.rule=Host(`api.trading.expovin.it`) && PathPrefix(`/alertingservice`)"
- "traefik.http.services.alertingservice.loadbalancer.server.port=3008"
- "traefik.http.routers.alertingservice.middlewares=alertingservice-stripprefix,cors-default@docker,auth-forward@docker"

Variabili d'ambiente

Infrastruttura

Variabili obbligatorie gestite da BaseService (comune a tutti i microservizi).

VariabileDefaultDescrizione
DATAHUB_URLhttp://datahub:3000URL del servizio datahub (ex DBMANAGER_URL, ancora accettato come alias).
CACHEMANAGER_URLhttp://cachemanager:3006URL del cachemanager. Disponibile tramite BaseService anche se non usato attivamente dal servizio.
REDIS_URLURI Redis (es. redis://redis:6379). Obbligatorio per il bus eventi e la sottoscrizione ai canali di log/events.
LOG_LEVELinfoLivello di log: trace, debug, info, warning, error.
ENVDEVAmbiente di esecuzione (local, paper, prod). Usato nel prefisso dei canali Redis e nei pattern di sottoscrizione.
LOG_BATCH_MAX_BYTESDimensione massima batch per il log su DB (funzionalità dbLogger).
ENABLE_DB_LOGSe true, abilita la scrittura dei log su DB via datahub.
TZTimezone di sistema del container (es. America/New_York).

Server HTTP

VariabileDefaultDescrizione
PORT3008Porta su cui il server Express è in ascolto.
CORS_ORIGINhttp://localhost:5173Origin (o lista separata da virgola) ammessa per le richieste CORS.
MAX_RETRY_DELAY60000Intervallo massimo (ms) per il retry di riconnessione nel router /status/*.

SMTP (notifiche email)

VariabileDefaultDescrizione
SMTP_HOSTHostname del server SMTP. Obbligatorio per l'invio email.
SMTP_PORTPorta del server SMTP (es. 465, 587). Se 465, viene abilitata la connessione secure.
SMTP_USERUsername di autenticazione SMTP.
SMTP_PASSWORDPassword di autenticazione SMTP.
SMTP_FROMIndirizzo mittente usato nelle email inviate (es. noreply@trading.expovin.it).

Twilio (notifiche WhatsApp)

VariabileDefaultDescrizione
TWILIO_ACCOUNT_SIDAccount SID Twilio. Obbligatorio per l'invio di messaggi WhatsApp.
TWILIO_AUTH_TOKENAuth token Twilio. Obbligatorio per l'invio di messaggi WhatsApp.
TWILIO_CONTENT_SIDSID del template di contenuto Twilio usato nei messaggi template WhatsApp.

Rule Engine

Le seguenti variabili controllano il comportamento del motore di regole (dedup, throttle, pattern Redis). Non è necessario aggiungerle al docker-compose se si accettano i valori di default.

VariabileDefaultDescrizione
ALERTING_LOGS_PATTERN{ENV}.*.*.logs.*Pattern Redis Pub/Sub per la sottoscrizione ai canali di log. Il placeholder {ENV} viene sostituito con il valore di ENV.
ALERTING_EVENTS_PATTERN{ENV}.*.events*Pattern Redis Pub/Sub per la sottoscrizione ai canali eventi.
ALERTING_WINDOW_SECONDS300Finestra temporale (secondi) entro cui si conta il numero di alert per throttle.
ALERTING_MAX_PER_WINDOW3Numero massimo di alert consentiti nella finestra ALERTING_WINDOW_SECONDS per la stessa regola.
ALERTING_DEDUP_SECONDS0Secondi di deduplicazione: se > 0, alert identici dentro questo intervallo vengono soppressi.
ALERTING_DEFAULT_EMAIL_TOIndirizzo email di destinazione di fallback usato quando una regola non specifica il campo to.
attenzione

Se SMTP_HOST, SMTP_USER, SMTP_PASSWORD o SMTP_PORT non sono configurati, il client email non sarà inizializzato e qualsiasi tentativo di invio di notifica email fallirà con errore. Analogamente, se TWILIO_ACCOUNT_SID o TWILIO_AUTH_TOKEN sono assenti, il client WhatsApp non sarà disponibile.

Pagine dedicate