Oggi tutte le aziende si stanno muovendo verso il cloud, i maggiori player sono Google con Google Cloud Platform, Amazon con AWS e Microsoft con Azure. Il problema che inizialmente bisogna affrontare per migrare verso il cloud e se le nostre applicazioni sono adatte.
Il cloud per essere sfruttato al meglio ci costringe a rivedere come le nostre applicazioni sono sviluppate. Portare l'applicazione sul cloud con il classico "Lift and Shift" non è la scelta migliore in quanto non andremmo a sfruttare tutte le potenzialità del cloud.
Questi in breve i passi affrontare prima muoversi sul cloud.
- Containerizzazione
- Applicazione Stateless
- Basedati distribuita (Cloud SQL, RDS o altro a seconda della piattaforma usata)
- Observability
In questo articolo illustremo come affrontare il punto 4, Observability con Jaeger con applicazioni Java. Le alternative sono molte in circolazione come Datadog, Dynatrace per citarne alcuni. La mia scelta à ricaduta su Jaeger in questo momento perchè utilizzando Opentelemetry e l'exporter dedicato si possono ottenere informazioni veramente dettagliate su cosa succede sui nostri sistemi distribuiti.
Configurazione
La configurazione è molto semplice:
Scaricare l'ultima versione dell'agent opentelemetry-javaagent-all.jar attualmente alla versione 1.0.1.
Configurare l'avvio della vostra applicazione java containerizzata con questi parametri:
-javaagent:./agent/opentelemetry-javaagent-all.jar -Dotel.traces.exporter=jaeger
-Dotel.exporter.jaeger.endpoint=http://jaeger:14250:-Dotel.resource.attributes=service.name=nome-applicazione
Per avviare il container aggiungete il link a Jaeger:
--link jaeger
Avviate il container pronto per l'uso di Jaeger:
docker run -d --name jaeger \
-e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
-p 5775:5775/udp \
-p 6831:6831/udp \
-p 6832:6832/udp \
-p 5778:5778 \
-p 16686:16686 \
-p 14268:14268 \
-p 14250:14250 \
-p 9411:9411 \
jaegertracing/all-in-one:1.22
Questo è tutto!
Per accedere alla console di Jaeger: http://localhost:16686
Per approfondire il funzionamento di Jaeger questo il link all'ultima versione disponibile al momento della scrittura di questo articolo: https://www.jaegertracing.io/docs/1.22/, per approfondire invece il funzionamento del framework di OpenTelemetry questo il link: https://opentelemetry.io/.