Skip to content

Commit

Permalink
[GEN-1932]: add HyperDX destination support and documentation (#2084)
Browse files Browse the repository at this point in the history
This pull request includes several changes to add support for HyperDX as
a new destination in the Odigos distributed tracing solution.
Additionally, there are some minor formatting changes in the
documentation files.

### HyperDX Integration:

* Added a new configuration file for HyperDX in
`common/config/hyperdx.go` to define the destination type and modify
configuration settings.
* Updated the list of available configers in `common/config/root.go` to
include HyperDX.
* Added a new destination type `HyperDxDestinationType` in
`common/dests.go`.
* Created a new YAML configuration file for HyperDX in
`destinations/data/hyperdx.yaml`.

### Documentation Updates:

* Added a new backend overview entry for HyperDX in
`docs/backends-overview.mdx`.
* Created a new documentation page for configuring HyperDX in
`docs/backends/hyperdx.mdx`.
* Included HyperDX in the quickstart next steps guide in
`docs/quickstart/next-steps.mdx`.

### Minor Formatting Changes:

* Fixed formatting issues in `README.md` to ensure consistent bullet
points.
* Adjusted table formatting in `README.md` for managed and self-hosted
destinations.
[[1]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L88-R89)
[[2]](diffhunk://#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5L116-R117)
* Simplified JSON structure in `docs/mint.json` by removing unnecessary
line breaks.
[[1]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debL73-R73)
[[2]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debL102-R114)
[[3]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debL153-R134)
[[4]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debL192-R170)
[[5]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debR199)
[[6]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debL251-R223)
[[7]](diffhunk://#diff-c91a604899dfef4b2494c317f4fd39a7f22b79986095f580399347293d534debL285-R258)
  • Loading branch information
BenElferink authored Dec 29, 2024
1 parent 5dd320f commit 119b5e0
Show file tree
Hide file tree
Showing 10 changed files with 144 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ For more details, see our [quickstart guide](https://docs.odigos.io/intro).
| Grafana Cloud ||||
| Groundcover inCloud ||||
| Honeycomb ||||
| HyperDX ||||
| KloudMate ||||
| Last9 ||| |
| Lightstep || | |
Expand Down
48 changes: 48 additions & 0 deletions common/config/hyperdx.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package config

import (
"github.com/odigos-io/odigos/common"
)

type HyperDX struct{}

func (j *HyperDX) DestType() common.DestinationType {
return common.HyperDxDestinationType
}

func (j *HyperDX) ModifyConfig(dest ExporterConfigurer, cfg *Config) error {
uniqueUri := "hdx-" + dest.GetID()

exporterName := "otlp/" + uniqueUri
exporterConfig := GenericMap{
"endpoint": "in-otel.hyperdx.io:4317",
"headers": GenericMap{
"authorization": "${HYPERDX_API_KEY}",
},
}

cfg.Exporters[exporterName] = exporterConfig

if isTracingEnabled(dest) {
pipeName := "traces/" + uniqueUri
cfg.Service.Pipelines[pipeName] = Pipeline{
Exporters: []string{exporterName},
}
}

if isMetricsEnabled(dest) {
pipeName := "metrics/" + uniqueUri
cfg.Service.Pipelines[pipeName] = Pipeline{
Exporters: []string{exporterName},
}
}

if isLoggingEnabled(dest) {
pipeName := "logs/" + uniqueUri
cfg.Service.Pipelines[pipeName] = Pipeline{
Exporters: []string{exporterName},
}
}

return nil
}
2 changes: 1 addition & 1 deletion common/config/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var availableConfigers = []Configer{
&AppDynamics{}, &Axiom{}, &AWSS3{}, &AzureBlobStorage{}, &BetterStack{}, &Causely{}, &Chronosphere{}, &Clickhouse{}, &Coralogix{},
&Datadog{}, &Debug{}, &Dynatrace{}, &ElasticAPM{}, &Elasticsearch{}, &GenericOTLP{}, &GoogleCloud{},
&GoogleCloudStorage{}, &GrafanaCloudLoki{}, &GrafanaCloudPrometheus{}, &GrafanaCloudTempo{}, &Groundcover{},
&Honeycomb{}, &Jaeger{}, &KloudMate{}, &Last9{}, &Lightstep{}, &Logzio{}, &Loki{}, &Lumigo{}, &Middleware{}, &Mock{}, &NewRelic{},
&Honeycomb{}, &HyperDX{}, &Jaeger{}, &KloudMate{}, &Last9{}, &Lightstep{}, &Logzio{}, &Loki{}, &Lumigo{}, &Middleware{}, &Mock{}, &NewRelic{},
&Nop{}, &OpsVerse{}, &OTLPHttp{}, &Prometheus{}, &Qryn{}, &QrynOSS{}, &Quickwit{}, &Sentry{},
&Signoz{}, &Splunk{}, &SumoLogic{}, &Tempo{}, &Uptrace{},
}
Expand Down
1 change: 1 addition & 0 deletions common/dests.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ const (
GrafanaCloudTempoDestinationType DestinationType = "grafanacloudtempo"
GroundcoverDestinationType DestinationType = "groundcover"
HoneycombDestinationType DestinationType = "honeycomb"
HyperDxDestinationType DestinationType = "hyperdx"
JaegerDestinationType DestinationType = "jaeger"
KloudMateDestinationType DestinationType = "kloudmate"
Last9DestinationType DestinationType = "last9"
Expand Down
23 changes: 23 additions & 0 deletions destinations/data/hyperdx.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
apiVersion: internal.odigos.io/v1beta1
kind: Destination
metadata:
type: hyperdx
displayName: HyperDX
category: managed
spec:
image: hyperdx.svg
signals:
traces:
supported: true
metrics:
supported: true
logs:
supported: true
fields:
- name: HYPERDX_API_KEY
displayName: HyperDX API Key
componentType: input
secret: true
componentProps:
type: password
required: true
7 changes: 7 additions & 0 deletions destinations/logos/hyperdx.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/backends-overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Odigos has destinations for many observability backends.
| Grafana Cloud | Managed ||||
| Groundcover inCloud | Managed ||||
| Honeycomb | Managed ||||
| HyperDX | Managed ||||
| Jaeger | Self-Hosted || | |
| KloudMate | Managed ||||
| Last9 | Managed ||| |
Expand Down
60 changes: 60 additions & 0 deletions docs/backends/hyperdx.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
---
title: 'HyperDX'
---

## Configuring Backend

- **HYPERDX_API_KEY** - HyperDX API Key.

**Note:**
We handle the endpoint internally, so you don't need to provide it.
- The endpoint is `in-otel.hyperdx.io:4317`.

## Adding a Destination to Odigos

Odigos makes it simple to add and configure destinations, allowing you to select the specific signals [traces/logs/metrics] that you want to send to each destination. There are two primary methods for configuring destinations in Odigos:

1. **Using the UI**

Use the [Odigos CLI](https://docs.odigos.io/cli/odigos_ui) to access the UI:

```bash
odigos ui
```

2. **Using kubernetes manifests**

Save the YAML below to a file (e.g., `destination.yaml`) and apply it using `kubectl`:

```bash
kubectl apply -f destination.yaml
```


```yaml
apiVersion: odigos.io/v1alpha1
kind: Destination
metadata:
name: hyperdx-example
namespace: odigos-system
spec:
data: {}
destinationName: hyperdx
secretRef:
name: hyperdx-secret
signals:
- TRACES
- METRICS
- LOGS
type: hyperdx

---
apiVersion: v1
data:
HYPERDX_API_KEY: <base64 HyperDX API Key>
kind: Secret
metadata:
name: hyperdx-secret
namespace: odigos-system
type: Opaque
```
1 change: 1 addition & 0 deletions docs/mint.json
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,7 @@
"backends/grafanacloudtempo",
"backends/groundcover",
"backends/honeycomb",
"backends/hyperdx",
"backends/jaeger",
"backends/kloudmate",
"backends/last9",
Expand Down
1 change: 1 addition & 0 deletions docs/quickstart/next-steps.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ Select the relevant backend for your use case below to connect it to Odigos.
<Card title="Grafana Cloud Tempo" href="/backends/grafanacloudtempo" />
<Card title="Groundcover inCloud" href="/backends/groundcover" />
<Card title="Honeycomb" href="/backends/honeycomb" />
<Card title="HyperDX" href="/backends/hyperdx" />
<Card title="Jaeger" href="/backends/jaeger" />
<Card title="KloudMate" href="/backends/kloudmate" />
<Card title="Last9" href="/backends/last9" />
Expand Down

0 comments on commit 119b5e0

Please sign in to comment.