{"id":19519308,"url":"https://github.com/rutu-sh/otel-k8s-experiments","last_synced_at":"2025-08-15T20:41:20.914Z","repository":{"id":200263696,"uuid":"705138383","full_name":"rutu-sh/otel-k8s-experiments","owner":"rutu-sh","description":"Examples for experimenting with opentelemetry within a local kubernetes setup.","archived":false,"fork":false,"pushed_at":"2024-07-06T16:47:21.000Z","size":29591,"stargazers_count":6,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-04T09:36:08.399Z","etag":null,"topics":["kubernetes","kustomize","logs","metrics","monitoring","opentelemetry","python3","telemetry","traces"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rutu-sh.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-10-15T06:15:37.000Z","updated_at":"2025-01-28T13:49:51.000Z","dependencies_parsed_at":"2023-12-26T10:46:27.383Z","dependency_job_id":"b1f62fd1-dd5c-454d-b8ac-571c957b6567","html_url":"https://github.com/rutu-sh/otel-k8s-experiments","commit_stats":{"total_commits":25,"total_committers":1,"mean_commits":25.0,"dds":0.0,"last_synced_commit":"a1644d9615037f3e77fa0a10ccf97c5274694720"},"previous_names":["rutu-sh/otel-k8s-experiments"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fotel-k8s-experiments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fotel-k8s-experiments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fotel-k8s-experiments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rutu-sh%2Fotel-k8s-experiments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rutu-sh","download_url":"https://codeload.github.com/rutu-sh/otel-k8s-experiments/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250953380,"owners_count":21513319,"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":["kubernetes","kustomize","logs","metrics","monitoring","opentelemetry","python3","telemetry","traces"],"created_at":"2024-11-11T00:17:29.823Z","updated_at":"2025-04-26T07:31:12.181Z","avatar_url":"https://github.com/rutu-sh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# otel-k8s-experiments\n\n![/](./docs/assets/otel_k8s.jpg)\n\nExamples for using Opentelmetry in a Kubernetes environment. \n\n## About\n[Opentelemetry](https://opentelemetry.io) and [Kubernetes](https://kubernetes.io) are two of the most popular [CNCF](https://www.cncf.io) [projects](https://www.cncf.io/blog/2023/01/11/a-look-at-the-2022-velocity-of-cncf-linux-foundation-and-top-30-open-source-projects/). \n\nKubernetes is an already accepted solution for a variety of orchestration usecases, it has been tried and tested for deploying a cluster of microservices at different scales. In a distributed environment with multiple microservices, a kubernetes cluster can get quite complex as the microservices interact with each other. In such a setup, if there is no uniform layer for observability, the MTTD (Mean Time To Detect) and the MTTR (Mean Time To Resolve) can significantly go up. Having a standard observability layer would help in this situation by allowing for fetching the telemetry data (metrics, traces, logs) and displaying it in a dashboarding tool such as [Grafana](https://grafana.com) to trace out the flow and pinpoint the problem.\n\nOpentelemetry is aimed at providing a standard protocol and tools for observability. It defines the [opentelemetry specification](https://opentelemetry.io/docs/specs/otel/) for instrumenting telemetry data. The benefit of having a standard specification for telemetry data is in using the data with other tools down the line. The instrumented data can then be integrated with tools like [Jaeger](https://www.jaegertracing.io), [Zipkin](https://zipkin.io), [Prometheus](https://prometheus.io), etc. or with some [vendor-specific](https://opentelemetry.io/ecosystem/vendors/) tools.\n\n\n# Experiments\n\n### 1. [Single Application Single Collector](./experiments/single-app-single-collector)\n\nThis experiment demonstrates how to set up a single application with a single opentelemetry collector. The application is a simple FastAPI application that has been auto-instrumented using the `opentelemetry-instrument` command line tool. The collector is configured to receive telemetry data from the application and log the telemetry data. \n\n![Single App Single Collector](./experiments/single-app-single-collector/docs/assets/high-level-architecture.drawio.png)\n\n\n# Applications\n\nFollowing applications are defined in this repository. \n\n\n| Application | Instrumentation | Description | Reference |\n| ----------- | --------------- | ----------- | --------- |\n|Simple Fastapi Application | Auto Instrumentation | A simple FastAPI application that is instrumented with OpenTelemetry using the [OpenTelemetry Auto Instrumentation for Python](https://opentelemetry.io/docs/instrumentation/python/automatic/). It listens on the port 8000, and generates telemetry data for each request. | [README.md](./common-applications/auto-instrumented/python/simple-fastapi-app/docs/README.md) |\n\n\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frutu-sh%2Fotel-k8s-experiments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frutu-sh%2Fotel-k8s-experiments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frutu-sh%2Fotel-k8s-experiments/lists"}