Skip to content

Commit

Permalink
Merge branch 'main' into gateway-sizing-profiles
Browse files Browse the repository at this point in the history
  • Loading branch information
tamirdavid1 authored Dec 2, 2024
2 parents a32cd4e + a9f1d05 commit e8bbe5f
Show file tree
Hide file tree
Showing 91 changed files with 1,527 additions and 773 deletions.
91 changes: 58 additions & 33 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 @@ -61,32 +84,34 @@ For more details, see our [quickstart guide](https://docs.odigos.io/intro).

### 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 ||||

| | 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 | | ||
Expand Down
24 changes: 21 additions & 3 deletions api/config/crd/bases/odigos.io_collectorsgroups.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,20 +48,32 @@ spec:
This can be used to resolve conflicting ports when a collector is using the host network.
format: int32
type: integer
memorySettings:
resourcesSettings:
description: |-
Memory settings for the collectors group.
Resources [memory/cpu] settings for the collectors group.
these settings are used to protect the collectors instances from:
- running out of memory and being killed by the k8s OOM killer
- consuming all available memory on the node which can lead to node instability
- pushing back pressure to the instrumented applications
properties:
cpuLimitMillicores:
description: |-
CPU resource limit to be used on the pod template.
it will be embedded in the as a resource limit of the form "cpu: <value>m"
type: integer
cpuRequestMillicores:
description: |-
CPU resource request to be used on the pod template.
it will be embedded in the as a resource request of the form "cpu: <value>m"
type: integer
gomemlimitMiB:
description: |-
the GOMEMLIMIT environment variable value for the collector pod.
this is when go runtime will start garbage collection.
it is recommended to be set to 80% of the hard limit of the memory limiter.
type: integer
maxReplicas:
type: integer
memoryLimitMiB:
description: |-
This option sets the limit on the memory usage of the collector.
Expand Down Expand Up @@ -92,7 +104,13 @@ spec:
MemoryRequestMiB is the memory resource request to be used on the pod template.
it will be embedded in the as a resource request of the form "memory: <value>Mi"
type: integer
minReplicas:
description: Minumum + Maximum number of replicas for the collector
- these relevant only for gateway.
type: integer
required:
- cpuLimitMillicores
- cpuRequestMillicores
- gomemlimitMiB
- memoryLimitMiB
- memoryLimiterLimitMiB
Expand All @@ -106,7 +124,7 @@ spec:
type: string
required:
- collectorOwnMetricsPort
- memorySettings
- resourcesSettings
- role
type: object
status:
Expand Down

This file was deleted.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit e8bbe5f

Please sign in to comment.