{"id":13625014,"url":"https://github.com/ilya40umov/observability-deep-dive","last_synced_at":"2025-04-16T06:31:34.014Z","repository":{"id":207217887,"uuid":"718712077","full_name":"ilya40umov/observability-deep-dive","owner":"ilya40umov","description":"Exploring observability with Logback, Brave, Otel, Spring Boot, Loki, Tempo etc.","archived":false,"fork":false,"pushed_at":"2024-07-02T16:50:17.000Z","size":240,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-08-01T22:03:28.948Z","etag":null,"topics":["brave","logback","logging","mdc","opentelemetry","spring-boot","tracing"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilya40umov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2023-11-14T16:40:54.000Z","updated_at":"2024-07-02T16:50:21.000Z","dependencies_parsed_at":"2024-01-15T18:54:50.741Z","dependency_job_id":"8ec12725-8536-4992-8257-6e8a977870b0","html_url":"https://github.com/ilya40umov/observability-deep-dive","commit_stats":null,"previous_names":["ilya40umov/observability-deep-dive"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilya40umov%2Fobservability-deep-dive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilya40umov%2Fobservability-deep-dive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilya40umov%2Fobservability-deep-dive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilya40umov%2Fobservability-deep-dive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilya40umov","download_url":"https://codeload.github.com/ilya40umov/observability-deep-dive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223700182,"owners_count":17188263,"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":["brave","logback","logging","mdc","opentelemetry","spring-boot","tracing"],"created_at":"2024-08-01T21:01:49.785Z","updated_at":"2024-11-08T14:30:15.065Z","avatar_url":"https://github.com/ilya40umov.png","language":"Kotlin","funding_links":[],"categories":["Kotlin"],"sub_categories":[],"readme":"# Observability Deep Dive\n\n## Modules\n\n* [01-logback-mdc](01-logback-mdc) - Logback/MDC with executors, project reactor and coroutines\n* [02-logback-brave](02-logback-brave) - Logback/MDC + OpenZipkin Brave with different flavors of concurrency\n* [03-logback-otel](03-logback-otel) - Logback/MDC + OpenTelemetry, again with different flavors of concurrency \n* [04-spring-classic-simple](04-spring-classic-simple) - Spring MVC examples\n* [05-spring-coroutines-simple](05-spring-coroutines-simple) - Spring WebFlux with coroutines\n* [06-service-a](06-service-a) - Service A is a simple service based on WebFlux/coroutines which calls Service B \n* [06-service-b](06-service-b) - Service B is another service based on WebFlux/coroutines which gets called by Service A\n\n## Local Infra\n\n* [compose.yml](compose.yml) that runs **Grafana**, **Loki**, **Tempo** and **Prometheus**\n* [localhost:3000](http://localhost:3000/) is how you access **Grafana**\n\n## Open Issues\n\n* Kotlin coroutine context propagation [openzipkin/brave/issues/820](https://github.com/openzipkin/brave/issues/820)\n* Traceid and spanid wrong when using Kotlin Reactor Coroutines [micrometer-metrics/tracing/issues/174](https://github.com/micrometer-metrics/tracing/issues/174)\n* Observation API does not support Baggage [micrometer-metrics/tracing/issues/455](https://github.com/micrometer-metrics/tracing/issues/455) and [micrometer-metrics/tracing/issues/563](https://github.com/micrometer-metrics/tracing/issues/563)\n* Better support for working with Observation from Kotlin [micrometer-metrics/micrometer/issues/4754](https://github.com/micrometer-metrics/micrometer/issues/4754)\n\n## Links\n\n### Logback\n\n* https://logback.qos.ch/manual/\n\n### Loki4j Logback\n\n* https://loki4j.github.io/loki-logback-appender/docs/configuration\n\n### Coroutines \u0026 MDC\n\n* https://github.com/Kotlin/kotlinx.coroutines/tree/master/integration/kotlinx-coroutines-slf4j\n* https://kotlinlang.org/api/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/as-context-element.html\n\n### Context Propagation With Project Reactor\n\n* https://spring.io/blog/2023/03/28/context-propagation-with-project-reactor-1-the-basics/\n* https://spring.io/blog/2023/03/29/context-propagation-with-project-reactor-2-the-bumpy-road-of-spring-cloud/\n* https://spring.io/blog/2023/03/30/context-propagation-with-project-reactor-3-unified-bridging-between-reactive/\n\n### OpenZipkin Brave\n\n* https://github.com/openzipkin/brave/tree/master/brave\n\n### Open Telemetry\n\n* https://opentelemetry.io/docs/languages/java/instrumentation/\n* https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk-extensions/autoconfigure/README.md\n* [io.opentelemetry.instrumentation:opentelemetry-logback-mdc-1.0](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/logback/logback-mdc-1.0/library)\n* [io.opentelemetry:opentelemetry-extension-kotlin](https://github.com/open-telemetry/opentelemetry-java/tree/main/extensions/kotlin)\n* [io.opentelemetry.instrumentation:opentelemetry-reactor-3.1](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/reactor/reactor-3.1)\n\n### Micrometer\n\n* [Micrometer Observation](https://docs.micrometer.io/micrometer/reference/observation.html)\n* [Context Propagation support](https://docs.micrometer.io/micrometer/reference/contextpropagation.html)\n* [Distributed Tracing Reference Guide](https://micrometer.io/docs/tracing)\n* https://micrometer.io/docs/contextPropagation\n\n### Spring Boot\n\n* [Observability with Spring Boot 3](https://spring.io/blog/2022/10/12/observability-with-spring-boot-3)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filya40umov%2Fobservability-deep-dive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filya40umov%2Fobservability-deep-dive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filya40umov%2Fobservability-deep-dive/lists"}