Skip to content

Commit

Permalink
Merge branch 'main' into gen-1738-add-service-name-to-instrumentation…
Browse files Browse the repository at this point in the history
…-config
  • Loading branch information
alonkeyval authored Dec 4, 2024
2 parents 7e6430a + 5d612b2 commit 7061fb3
Show file tree
Hide file tree
Showing 328 changed files with 5,557 additions and 5,629 deletions.
129 changes: 90 additions & 39 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
# Contributing Guide

- [Contributing Guide](#contributing-guide)
- [Ways to Contribute](#ways-to-contribute)
- [Find an Issue](#find-an-issue)
- [Ask for Help](#ask-for-help)
- [Local Development](#local-development)
- [Run Odigos Cli from code](#run-odigos-cli-from-code)
- [How to Develop Odigos Locally](#how-to-develop-odigos-locally)
- [How to Build and run Odigos Frontend Locally](#how-to-build-and-run-odigos-frontend-locally)
- [Odiglet](#odiglet)
- [builder base image](#builder-base-image)
- [Remote debugging](#remote-debugging)
* [Welcome](#welcome)
* [Ways to Contribute](#ways-to-contribute)
* [Find an Issue](#find-an-issue)
* [Issue Guidelines](#issue-guidelines)
* [Pull Request Guidelines](#pull-request-guidelines)
* [Communication](#communication)
* [Code Review Process](#code-review-process)
* [Testing Requirements](#testing-requirements)
* [Code of Conduct](#code-of-conduct)
* [License](#license)
* [Local Development](#local-development)
- [Run Odigos CLI from Code](#run-odigos-cli-from-code)
- [How to Develop Odigos Locally](#how-to-develop-odigos-locally)
- [How to Build and Run Odigos Frontend Locally](#how-to-build-and-run-odigos-frontend-locally)
* [Odiglet](#odiglet)
- [Builder Base Image](#builder-base-image)
- [Remote Debugging](#remote-debugging)
* [Instrumentor](#instrumentor)
- [Debugging](#debugging)

Welcome! We are glad that you want to contribute to our project! πŸ’–

Expand All @@ -24,19 +32,21 @@ our project that we need help with, including:
If anything doesn't make sense, or doesn't work when you run it, please open a
bug report and let us know!

## Ways to Contribute
### Ways to Contribute

We welcome many different types of contributions, including:
There are many ways to contribute to the Odigos project:

- New features
- Builds, CI/CD
- Bug fixes
- Documentation
- Issue Triage
- Answering questions on Slack/Mailing List
- Web design
- Communications / Social Media / Blog Posts
- Release management
- **New Features:** Suggest or implement new features that can improve the project. Provide as much context and detail as possible to help us evaluate your idea.
- **Builds and CI/CD:** Help enhance the build pipelines or improve CI/CD workflows to ensure smoother development processes.
- **Bug Fixes:** Identify and fix bugs. Make sure to document the issue and verify your fixes with appropriate tests.
- **Documentation:** Improve existing documentation, fix typos, or write new guides and tutorials to help contributors and users.
- **Issue Triage:** Assist with categorizing, labeling, and prioritizing issues to streamline the workflow.
- **Answering Questions:** Participate in discussions on Slack or mailing lists to help community members.
- **Web Design:** Contribute to the design and UX of project-related websites or dashboards.
- **Communications, Social Media, and Blog Posts:** Help create content for social media, blogs, or other channels to promote the project and engage with the community.
- **Release Management:** Assist in preparing, testing, and documenting releases to ensure smooth rollouts.

Every contribution, big or small, is greatly appreciated and helps make Odigos better for everyone!

## Find an Issue

Expand All @@ -52,13 +62,54 @@ likely still something for you to work on.
Once you see an issue that you'd like to work on, please post a comment saying
that you want to work on it. Something like "I want to work on this" is fine.

## Ask for Help
## Issue Guidelines

When reporting an issue:

1. Use a clear and descriptive title.
2. Include detailed steps to reproduce the issue.
3. Share relevant logs, configurations, or screenshots.
4. Label the issue appropriately (e.g., bug, feature request, enhancement).

## Pull Request Guidelines

When submitt

1. Include a clear description of the change and its purpose.
2. Link to any related issues or documentation.
3. Add tests to cover new functionality or fix existing ones.
4. Ensure your branch is up to date with the main branch.

## Communication

If you have questions or need help:

- Join our [Slack Community](https://join.slack.com/t/odigos/shared_invite/zt-1d7egaz29-Rwv2T8kyzc3mWP8qKobz~A#link-to-slack).
- Post questions or ideas in our [GitHub Discussions](https://github.com/odigos-io/odigos/discussions#link-to-discussions).
- Email the core maintainers at support@odigos.io.

## Code Review Process

All contributions will go through the following review process:

The best way to reach us with a question when contributing is to ask on:
1. A maintainer will review your pull request within 3-5 business days.
2. Feedback will be provided for improvements, if necessary.
3. Once approved, your pull request will be merged into the main branch.
4. Larger changes may require discussion in a GitHub issue or pull request thread.
5. We are available on [Slack](https://join.slack.com/t/odigos/shared_invite/zt-1d7egaz29-Rwv2T8kyzc3mWP8qKobz~A) to discuss any issues regarding the PR process or general contributions.

- The original github issue
- The developer mailing list
- Our Slack channel
## Testing Requirements

Tests will run automatically in CI (Continuous Integration) and must pass for the pull request to be merged.

## Code of Conduct

We expect all contributors to follow our [Code of Conduct](CODE_OF_CONDUCT.md).
This ensures a welcoming, inclusive, and respectful community for everyone.

## License

By contributing, you agree that your contributions will be licensed under the project's [Apache License](LICENSE).

## Local Development

Expand All @@ -69,18 +120,19 @@ First, follow the [Quickstart Guide](https://docs.odigos.io/quickstart/introduct

Make sure you are able to:

- [x] run Odigos CLI in your terminal.
- [x] open the demo application UI in your browser to interact with it.
- [x] install odigos in your development cluster with `odigos install`.
- [x] open Odigos UI in your browser to interact with it.
- [x] see telemetry data that odigos generates, for example traces in jaeger.
- [X] run Odigos CLI in your terminal.
- [X] open the demo application UI in your browser to interact with it.
- [X] install odigos in your development cluster with `odigos install`.
- [X] open Odigos UI in your browser to interact with it.
- [X] see telemetry data that odigos generates, for example traces in jaeger.

After you have a working odigos setup, you can start making changes to the code and test them locally.

### Run Odigos Cli from code

The code for the odigos cli tool is found in the `cli` directory [here](https://github.com/odigos-io/odigos/tree/main/cli).
Test your cli code changes by running the following:

```bash
go run -tags=embed_manifests ./cli
```
Expand All @@ -99,9 +151,9 @@ If you test changes to the `install` command, you will need to `odigos uninstall
The main steps involved when debugging Odigos locally are:

1. Use a Kind kubernetes cluster.
2. Choose one of the following options for deploy:
2. Choose one of the following options for deploy:

- Deploy all pods in the odigos-system namespace:
- Deploy all pods in the odigos-system namespace:

```bash
make deploy
Expand Down Expand Up @@ -168,20 +220,19 @@ make debug-odiglet
Then, you can attach a debugger to the Odiglet pod. For example, if you are using Goland, you can follow the instructions [here](https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#step-3-create-the-remote-run-debug-configuration-on-the-client-computer) to attach to a remote process.
For Visual Studio Code, you can use the `.vscode/launch.json` file in this repo to attach to the Odiglet pod.



## Instrumentor

### Debugging

If the Mutating Webhook is enabled, follow these steps:

1. Copy the TLS certificate and key:
Create a local directory and extract the certificate and key by running the following command:
Create a local directory and extract the certificate and key by running the following command:

```
mkdir -p serving-certs && kubectl get secret instrumentor-webhook-cert -n odigos-system -o jsonpath='{.data.tls\.crt}' | base64 -d > serving-certs/tls.crt && kubectl get secret instrumentor-webhook-cert -n odigos-system -o jsonpath='{.data.tls\.key}' | base64 -d > serving-certs/tls.key
```


2. Apply this service to the cluster, it will replace the existing `odigos-instrumentor` service:

```
Expand All @@ -199,4 +250,4 @@ spec:
protocol: TCP
```

Once this is done, you can use the .vscode/launch.json configuration and run instrumentor local for debugging.
Once this is done, you can use the .vscode/launch.json configuration and run instrumentor local for debugging.
123 changes: 76 additions & 47 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,45 +10,68 @@
</a>
</p>


<p align="center">
<img src="assets/logo.png" width="350" /></br>
<h2>Generate distributed traces for any application in k8s without code changes.</h2>
<h2>Generate distributed traces for any application in Kubernetes without code changes.</h2>
</p>

<h2 align="center">
<a href="https://www.youtube.com/watch?v=nynyV7FC4VI">Demo Video</a> β€’ <a href="https://docs.odigos.io">Documentation</a> β€’ <a href="https://join.slack.com/t/odigos/shared_invite/zt-1d7egaz29-Rwv2T8kyzc3mWP8qKobz~A">Join Slack Community</a>
</h2>

## What is Odigos?

Odigos is an open-source distributed tracing solution that simplifyes and improves observability for Kubernetes environments. It provides instant tracing capabilities without requiring any code changes to your applications.

## Key Features

* **Code-Free Instrumentation** : Set up distributed tracing in minutes, eliminating manual code modifications.
* **Multi-Language Support** : Works with Java, Python, .NET, Node.js, and Go applications.
* **eBPF-Powered** : Utilizes eBPF technology for high-performance instrumentation of Go applications. eBPF-based instrumentation for Java, Python, and Node.js is available in the enterprise edition.
* **OpenTelemetry Compatible** : Generates traces in OpenTelemetry format for broad tool compatibility.
* **Vendor Agnostic** : Integrates with various monitoring solutions, avoiding vendor lock-in.
* **Automatic Scaling** : Manages and scales OpenTelemetry collectors based on data volume.
* **Opinionated Defaults** : Supplies common defaults and best practices out-of-the-box, requiring no deep knowledge of OpenTelemetry.

## Why Choose Odigos

1. **Simplicity** : Implement distributed tracing with minimal effort and complexity.
2. **Performance** : Separates data recording and processing to minimize runtime impact.
3. **Community-Backed** : With 3,000+ GitHub stars and a growing contributor base.
4. **Expertise** : Created by multiple maintainers of OpenTelemetry, ensuring deep integration and alignment with industry standards.

Odigos empowers platform engineers, DevOps professionals, and SREs to enhance their observability strategies quickly and effectively. It is an ideal solution for modern cloud-native environments, combining simplicity, performance, and industry expertise.

## Features

### ✨ Language Agnostic Auto-instrumentation

Odigos supports any application written in Java, Python, .NET, Node.js, and **Go**.
Odigos supports any application written in Java, Python, .NET, Node.js, and **Go**.
Historically, compiled languages like Go have been difficult to instrument without code changes. Odigos solves this problem by uniquely leveraging [eBPF](https://ebpf.io).

![Works on any application](assets/choose_apps.png)

![Works on any application](docs/images/ui_choose_apps.png)

### 🀝 Keep your existing observability tools
Odigos currently supports all the popular managed and open-source destinations.

Odigos currently supports all the popular managed and open-source destinations.
By producing data in the [OpenTelemetry](https://opentelemetry.io) format, Odigos can be used with any observability tool that supports OTLP.

For a complete list of supported destinations, see [here](#supported-destinations).

![Works with any observability tool](assets/choose_dest.png)
![Works with any observability tool](docs/images/ui_choose_dest.png)

### πŸŽ›οΈ Collectors Management

### πŸŽ›οΈ Collectors Management
Odigos automatically scales OpenTelemetry collectors based on observability data volume.
Odigos automatically scales OpenTelemetry collectors based on observability data volume.
Manage and configure collectors via a convenient web UI.

![Collectors Management](assets/overview_page.png)
![Collectors Management](docs/images/ui_overview.png)

## Installation

Installing Odigos takes less than 5 minutes and requires no code changes.
Download our [CLI](https://docs.odigos.io/installation) and run the following command:


```bash
odigos install
```
Expand All @@ -59,42 +82,48 @@ For more details, see our [quickstart guide](https://docs.odigos.io/intro).

**For step-by-step instructions detailed for every destination, see these [docs](https://docs.odigos.io/backends).**

### Managed

| | Traces | Metrics | Logs |
|-------------------------| ------- | ------- |------|
| New Relic | βœ… | βœ… | βœ… |
| Datadog | βœ… | βœ… | βœ… |
| Grafana Cloud | βœ… | βœ… | βœ… |
| Honeycomb | βœ… | βœ… | βœ… |
| Chronosphere | βœ… | βœ… | |
| Logz.io | βœ… | βœ… | βœ… |
| qryn.cloud | βœ… | βœ… | βœ… |
| OpsVerse | βœ… | βœ… | βœ… |
| Dynatrace | βœ… | βœ… | βœ… |
| AWS S3 | βœ… | βœ… | βœ… |
| Google Cloud Monitoring | βœ… | | βœ… |
| Google Cloud Storage | βœ… | | βœ… |
| Azure Blob Storage | βœ… | | βœ… |
| Splunk | βœ… | | |
| Lightstep | βœ… | | |
| Sentry | βœ… | | |
| Axiom | βœ… | | βœ… |
| Sumo Logic | βœ… | βœ… | βœ… |
| Coralogix | βœ… | βœ… | βœ… |

### Open Source

| | Traces | Metrics | Logs |
| ------------- | ------ | ------- | ---- |
| Prometheus | | βœ… | |
| Tempo | βœ… | | |
| Loki | | | βœ… |
| Jaeger | βœ… | | |
| SigNoz | βœ… | βœ… | βœ… |
| qryn | βœ… | βœ… | βœ… |
| Elasticsearch | βœ… | | βœ… |
| Quickwit | βœ… | | βœ… |
### Managed Destinations

| Destination | Traces | Metrics | Logs |
|-------------------------|:------:|:-------:|:----:|
| AppDynamics | βœ… | βœ… | βœ… |
| Axiom | βœ… | | βœ… |
| AWS S3 | βœ… | | βœ… |
| Azure Blob Storage | βœ… | | βœ… |
| Causely | βœ… | | |
| Chronosphere | βœ… | βœ… | |
| Coralogix | βœ… | βœ… | βœ… |
| Datadog | βœ… | βœ… | βœ… |
| Dynatrace | βœ… | βœ… | βœ… |
| Gigapipe | βœ… | | |
| Google Cloud Monitoring | βœ… | βœ… | |
| Google Cloud Storage | βœ… | | βœ… |
| Grafana Cloud | βœ… | βœ… | βœ… |
| Honeycomb | βœ… | βœ… | βœ… |
| Last9 | βœ… | βœ… | |
| Lightstep | βœ… | | |
| Logz.io | βœ… | βœ… | βœ… |
| New Relic | βœ… | βœ… | βœ… |
| OpsVerse | βœ… | βœ… | βœ… |
| Sentry | βœ… | | |
| Splunk | βœ… | | |
| Sumo Logic | βœ… | βœ… | βœ… |

## Self-Hosted (Open Source) Destinations

| Destination | Traces | Metrics | Logs |
|---------------|:------:|:-------:|:----:|
| ClickHouse | βœ… | βœ… | βœ… |
| Elasticsearch | βœ… | | βœ… |
| Jaeger | βœ… | | |
| Loki | | | βœ… |
| OTLP | βœ… | βœ… | βœ… |
| OTLP HTTP | βœ… | βœ… | βœ… |
| Prometheus | | βœ… | |
| Quickwit | βœ… | | |
| qryn | βœ… | βœ… | βœ… |
| SigNoz | βœ… | βœ… | βœ… |
| Tempo | βœ… | | |

Can't find the destination you need? Help us by following our quick [add new destination](https://docs.odigos.io/adding-new-dest) guide and submitting a PR.

Expand Down
Loading

0 comments on commit 7061fb3

Please sign in to comment.