{"id":15178833,"url":"https://github.com/watlas/spring-advanced-observability-demo","last_synced_at":"2026-03-03T04:39:30.901Z","repository":{"id":249581742,"uuid":"831879332","full_name":"Watlas/spring-advanced-observability-demo","owner":"Watlas","description":"The Spring Advanced Observability Demo is a comprehensive project designed to demonstrate advanced observability techniques using the Spring Boot framework. This project integrates multiple powerful tools and technologies to provide a full-stack observability solution, including tracing, logging, and monitoring of microservices.","archived":false,"fork":false,"pushed_at":"2024-07-23T16:13:37.000Z","size":2878,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-05T11:42:34.368Z","etag":null,"topics":["elasticstack","grafana","java","opentelemetry","opentelemetry-collector","prometheus","springboot"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Watlas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-21T22:02:38.000Z","updated_at":"2024-07-23T16:13:40.000Z","dependencies_parsed_at":"2024-09-23T10:31:05.815Z","dependency_job_id":"6425b149-f44d-4c30-8447-0c5220b55b30","html_url":"https://github.com/Watlas/spring-advanced-observability-demo","commit_stats":{"total_commits":7,"total_committers":1,"mean_commits":7.0,"dds":0.0,"last_synced_commit":"f6f5bc319eacd1765c843ce0fad262665ab6122b"},"previous_names":["watlas/spring-advanced-observability-demo"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Watlas%2Fspring-advanced-observability-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Watlas%2Fspring-advanced-observability-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Watlas%2Fspring-advanced-observability-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Watlas%2Fspring-advanced-observability-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Watlas","download_url":"https://codeload.github.com/Watlas/spring-advanced-observability-demo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240365950,"owners_count":19790006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["elasticstack","grafana","java","opentelemetry","opentelemetry-collector","prometheus","springboot"],"created_at":"2024-09-27T15:23:25.938Z","updated_at":"2026-03-03T04:39:30.877Z","avatar_url":"https://github.com/Watlas.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Spring Advanced Observability Demo\n\n[![Elasticsearch](https://img.shields.io/badge/Elasticsearch-005571?logo=elasticsearch\u0026logoColor=white)](https://www.elastic.co/elasticsearch/)\n[![Logstash](https://img.shields.io/badge/Logstash-005571?logo=logstash\u0026logoColor=white)](https://www.elastic.co/logstash/)\n[![Kibana](https://img.shields.io/badge/Kibana-005571?logo=kibana\u0026logoColor=white)](https://www.elastic.co/kibana/)\n[![Fleet](https://img.shields.io/badge/Fleet-005571?logo=elasticstack\u0026logoColor=white)](https://www.elastic.co/fleet/)\n[![APM](https://img.shields.io/badge/APM-005571?logo=elasticapm\u0026logoColor=white)](https://www.elastic.co/apm/)\n[![Filebeat](https://img.shields.io/badge/Filebeat-005571?logo=filebeat\u0026logoColor=white)](https://www.elastic.co/beats/filebeat)\n[![Metricbeat](https://img.shields.io/badge/Metricbeat-005571?logo=metricbeat\u0026logoColor=white)](https://www.elastic.co/beats/metricbeat)\n[![Prometheus](https://img.shields.io/badge/Prometheus-E6522C?logo=prometheus\u0026logoColor=white)](https://prometheus.io/)\n[![Loki](https://img.shields.io/badge/Loki-3675A9?logo=grafana\u0026logoColor=white)](https://grafana.com/oss/loki/)\n[![Grafana](https://img.shields.io/badge/Grafana-F46800?logo=grafana\u0026logoColor=white)](https://grafana.com/)\n[![Tempo](https://img.shields.io/badge/Tempo-5A29E4?logo=grafana\u0026logoColor=white)](https://grafana.com/oss/tempo/)\n[![Jaeger](https://img.shields.io/badge/Jaeger-FF4D4D?logo=jaeger\u0026logoColor=white)](https://www.jaegertracing.io/)\n[![Zipkin](https://img.shields.io/badge/Zipkin-000000?logo=zipkin\u0026logoColor=white)](https://zipkin.io/)\n[![OpenTelemetry Collector](https://img.shields.io/badge/OpenTelemetry%20Collector-7B00FF?logo=opentelemetry\u0026logoColor=white)](https://opentelemetry.io/docs/collector/)\n[![AKHQ](https://img.shields.io/badge/AKHQ-FF6C37?logo=apachekafka\u0026logoColor=white)](https://akhq.io/)\n[![Zookeeper](https://img.shields.io/badge/Zookeeper-FF6C37?logo=apachezookeeper\u0026logoColor=white)](https://zookeeper.apache.org/)\n[![Kafka](https://img.shields.io/badge/Kafka-231F20?logo=apachekafka\u0026logoColor=white)](https://kafka.apache.org/)\n[![MongoDB](https://img.shields.io/badge/MongoDB-47A248?logo=mongodb\u0026logoColor=white)](https://www.mongodb.com/)\n[![Mongo Express](https://img.shields.io/badge/Mongo_Express-47A248?logo=mongodb\u0026logoColor=white)](https://github.com/mongo-express/mongo-express)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-336791?logo=postgresql\u0026logoColor=white)](https://www.postgresql.org/)\n[![Java](https://img.shields.io/badge/Java-007396?logo=java\u0026logoColor=red)](https://www.java.com/)\n[![Spring Boot](https://img.shields.io/badge/Spring%20Boot-6DB33F?logo=spring-boot\u0026logoColor=white)](https://spring.io/projects/spring-boot)\n\n## Project Overview\n\nThe **Spring Advanced Observability Demo** is a comprehensive project designed to demonstrate advanced observability\ntechniques using the Spring Boot framework. This project integrates multiple powerful tools and technologies to provide\na full-stack observability solution, including tracing, logging, and monitoring of microservices.\n\n## Architecture Overview\n\n![arch.gif](.github/arch.gif)\n\n## Getting Started\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/watlas/spring-advanced-observability-demo.git\n   ```\n\n2. **Navigate to the project directory**:\n   ```bash\n   cd spring-advanced-observability-demo\n   ```\n\n3. **Enter the docker directory**:\n   ```bash\n    cd docker\n    ```\n4. **setup docker compose**:\n   ```bash\n    docker compose up setup\n   ```\n5. **Build the services using Docker Compose**:\n   ```bash\n   docker-compose build\n   ```\n\n6. **Start the services using Docker Compose**:\n   ```bash\n   docker-compose up -d\n   ```\nTo generate an orderDTO and observe the system's logs, metrics, and traces, follow these steps:\n\n1. Access the Order Service:\n   - Open your web browser and navigate to http://localhost:8527/swagger-ui/index.html#/Order/save.\n   - Use the Swagger UI to generate a new orderDTO by interacting with the available API endpoints.\n\n2. Observe Logs, Metrics, and Traces:\n\n   | Service       | User      | Password   | URL                                       |\n   |---------------|-----------|------------|-------------------------------------------|\n   | Kibana        | `elastic` | `changeme` | [localhost:5601](http://localhost:5601)   |\n   | Grafana       | `grafana` | `changeme` | [localhost:3000](http://localhost:3000)   |\n   | Prometheus    | -         | -          | [localhost:9090](http://localhost:9090)   |\n   | Jaeger        | -         | -          | [localhost:16686](http://localhost:16686) |\n   | Zipkin        | -         | -          | [localhost:9411](http://localhost:9411)   |\n   | Mongo Express | `mongo`   | `changeme` | [localhost:8081](http://localhost:8081)   |\n   | AKHQ          | -         | -          | [localhost:8080](http://localhost:8080)   |\n\n3. Example POST request to create an orderDTO:\n   - Alternatively, you can use the following `curl` command to create an orderDTO:\n\n   ```bash\n   curl -X POST http://localhost:8527/order \\\n   -H \"Content-Type: application/json\" \\\n   -d '{\n     \"user\": {\n       \"name\": \"John Doe\"\n     },\n     \"product\": {\n       \"name\": \"Widget\",\n       \"description\": \"A very useful widget\",\n       \"price\": 19.99\n     }\n   }'\n\n## Some things you will be able to see when uploading this project\n\n### APM Service Map\n![img_2.png](.github/img_2.png)\n\n### APM Traces\n![img_1.png](.github/img_1.png)\n\n### APM Dependencies\n![img_5.png](.github/img_5.png)\n\n### Dashboard for overview of the system\n![img_13.png](.github/img_13.png)\n\n\n### Kibana Data Discovery\n![img_12.png](.github/img_12.png)\n\n### Agent Management with Fleet\n![img_3.png](.github/img_3.png)\n\n### Cluster Overview\n![img_4.png](.github/img_4.png)\n\n### Grafana Dashboard for Spring  \n![img_6.png](.github/img_6.png)\n\n### Grafana Dashboard for OpenTelemetry\n![img_7.png](.github/img_7.png)\n\n### Monitoring Trace with Jaeger\n![img_8.png](.github/img_8.png)\n\n### Monitoring Trace Details with Jaeger\n![img_9.png](.github/img_9.png)\n\n### Monitoring Trace with Zipkin\n![img_11.png](.github/img_11.png)\n\n### Monitoring Service Map with Zipkin\n![img_10.png](.github/img_10.png)\n\n\n## Referências\n\n### Spring Boot\n- [Spring Boot Documentation](https://docs.spring.io/spring-boot/docs/current/reference/html/)\n- [Spring Boot GitHub Repository](https://github.com/spring-projects/spring-boot)\n- [Building an Application with Spring Boot](https://spring.io/guides/gs/spring-boot/)\n\n### Docker\n- [Docker Documentation](https://docs.docker.com/)\n- [Docker GitHub Repository](https://github.com/docker/docker-ce)\n- [Getting Started with Docker](https://www.docker.com/get-started)\n\n### OpenTelemetry\n- [OpenTelemetry Documentation](https://opentelemetry.io/docs/)\n- [OpenTelemetry GitHub Repository](https://github.com/open-telemetry/opentelemetry-java)\n- [OpenTelemetry Spring Boot Instrumentation](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/spring/spring-boot)\n\n### Elastic Stack\n- [Elasticsearch Documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html)\n- [Logstash Documentation](https://www.elastic.co/guide/en/logstash/current/index.html)\n- [Kibana Documentation](https://www.elastic.co/guide/en/kibana/current/index.html)\n- [Elastic APM Documentation](https://www.elastic.co/guide/en/apm/get-started/current/index.html)\n- [Fleet and Elastic Agent](https://www.elastic.co/guide/en/fleet/current/index.html)\n- [Docker ELK](https://github.com/deviantony/docker-elk)\n\n### Grafana\n- [Grafana Documentation](https://grafana.com/docs/grafana/latest/)\n- [Grafana GitHub Repository](https://github.com/grafana/grafana)\n- [Getting Started with Grafana](https://grafana.com/docs/grafana/latest/getting-started/getting-started-prometheus/)\n\n### Prometheus\n- [Prometheus Documentation](https://prometheus.io/docs/introduction/overview/)\n- [Prometheus GitHub Repository](https://github.com/prometheus/prometheus)\n- [Getting Started with Prometheus](https://prometheus.io/docs/prometheus/latest/getting_started/)\n\n### Jaeger\n- [Jaeger Documentation](https://www.jaegertracing.io/docs/latest/)\n- [Jaeger GitHub Repository](https://github.com/jaegertracing/jaeger)\n- [Getting Started with Jaeger](https://www.jaegertracing.io/docs/latest/getting-started/)\n\n### Zipkin\n- [Zipkin Documentation](https://zipkin.io/pages/documentation.html)\n- [Zipkin GitHub Repository](https://github.com/openzipkin/zipkin)\n- [Getting Started with Zipkin](https://zipkin.io/pages/quickstart)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwatlas%2Fspring-advanced-observability-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwatlas%2Fspring-advanced-observability-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwatlas%2Fspring-advanced-observability-demo/lists"}