Monitoring JHipster applications
with the JHipster Console
Pierre Besson
JHipster Conf, June 21th 2018
Who am I ?
- FullStack & DevOps @IpponTech
- JHipster core team member
- π Spring
- π³ Docker
- βΈοΈ Kubernetes
Introduction to microservice monitoring
Problems
Solutions
The JHipster Console
problems when monitoring microservices
- Distributed system -> More complex to observe
- Logs are dispersed in many log files
- Hard to locate the microservice that caused a problem
- Hard to follow the chain of requests
- π/π’ Studying latency is hard
- π Resiliency mechanism are hard to configure properly
The solutions
the 3 ways of Observability
- Logs : discrete event
- Metrics : numerical values (business or technical)
- Traces : chains of calls in the system (spans)
- Store everything in one place, with proper metadata
- Use a search engine to query and aggregate monitoring data
- Visualize using graphs and dashboards
- Navigate around highly correlated data
The JHipster Console
jhipster.tech/monitoring/
- Setup the ZELK stack (Zipkin, Elasticsearch, Logstash, Kibana) in docker
- Enable reporting from any JHipster app with a few properties
- Logs + metrics forwarded with logback-logstash-encoder
- Traces are forwarded to Zipkin using Spring Cloud Sleuth
- Logs are enriched with trace information (Trace ID)
- Data is stored in Elasticseach for a certain number of days (Curator)
JHipster Console Architecture
JHipster Console demo
Setting up the Console
Navigating around Kibana
Creating custom visualizations and dashboards
Graphing metrics, manipulating timeseries
Following call traces accross services (Kibana + Zipkin)
The future of JHipster monitoring (Help wanted !)
- Migrate from Dropmizard Metrics to Micrometer
- Provide an alerting solution
- Improve Prometheus support and add Grafana dashboards
- Support cloud monitoring solutions: Datadog, Google Stackdriver, ...
- Investigate new monitoring products: OpenCensus, Apache Skywalking, ...