diff --git a/README.md b/README.md index 16710fd90..0d1e3c8fd 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ For more details, see our [quickstart guide](https://docs.odigos.io/intro). | Lightstep | ✅ | | | | Sentry | ✅ | | | | Axiom | ✅ | | ✅ | +| Sumo Logic | ✅ | ✅ | ✅ | ### Open Source diff --git a/autoscaler/controllers/gateway/config/root.go b/autoscaler/controllers/gateway/config/root.go index 181597049..2335ccd7b 100644 --- a/autoscaler/controllers/gateway/config/root.go +++ b/autoscaler/controllers/gateway/config/root.go @@ -13,7 +13,7 @@ import ( var availableConfigers = []Configer{&Middleware{}, &Honeycomb{}, &Grafana{}, &Datadog{}, &NewRelic{}, &Logzio{}, &Prometheus{}, &Tempo{}, &Loki{}, &Jaeger{}, &GenericOTLP{}, &Elasticsearch{}, &Signoz{}, &Qryn{}, &OpsVerse{}, &Splunk{}, &Lightstep{}, &GoogleCloud{}, &GoogleCloudStorage{}, &Sentry{}, &AzureBlobStorage{}, - &AWSS3{}, &Dynatrace{}, &Chronosphere{}, &ElasticAPM{}, &Axiom{}} + &AWSS3{}, &Dynatrace{}, &Chronosphere{}, &ElasticAPM{}, &Axiom{}, &SumoLogic{}} type Configer interface { DestType() common.DestinationType diff --git a/autoscaler/controllers/gateway/config/sumologic.go b/autoscaler/controllers/gateway/config/sumologic.go new file mode 100644 index 000000000..1e0014f98 --- /dev/null +++ b/autoscaler/controllers/gateway/config/sumologic.go @@ -0,0 +1,43 @@ +package config + +import ( + odigosv1 "github.com/keyval-dev/odigos/api/odigos/v1alpha1" + commonconf "github.com/keyval-dev/odigos/autoscaler/controllers/common" + "github.com/keyval-dev/odigos/common" +) + +type SumoLogic struct{} + +func (s *SumoLogic) DestType() common.DestinationType { + return common.SumoLogicDestinationType +} + +func (s *SumoLogic) ModifyConfig(dest *odigosv1.Destination, currentConfig *commonconf.Config) { + currentConfig.Exporters["otlphttp/sumologic"] = commonconf.GenericMap{ + "endpoint": "${SUMOLOGIC_COLLECTION_URL}", + } + + if isTracingEnabled(dest) { + currentConfig.Service.Pipelines["traces/sumologic"] = commonconf.Pipeline{ + Receivers: []string{"otlp"}, + Processors: []string{"batch"}, + Exporters: []string{"otlphttp/sumologic"}, + } + } + + if isLoggingEnabled(dest) { + currentConfig.Service.Pipelines["logs/sumologic"] = commonconf.Pipeline{ + Receivers: []string{"otlp"}, + Processors: []string{"batch"}, + Exporters: []string{"otlphttp/sumologic"}, + } + } + + if isMetricsEnabled(dest) { + currentConfig.Service.Pipelines["metrics/sumologic"] = commonconf.Pipeline{ + Receivers: []string{"otlp"}, + Processors: []string{"batch"}, + Exporters: []string{"otlphttp/sumologic"}, + } + } +} diff --git a/common/dests.go b/common/dests.go index 0c655c306..249a02220 100644 --- a/common/dests.go +++ b/common/dests.go @@ -29,4 +29,5 @@ const ( ChronosphereDestinationType DestinationType = "chronosphere" ElasticAPMDestinationType DestinationType = "elasticapm" AxiomDestinationType DestinationType = "axiom" + SumoLogicDestinationType DestinationType = "sumologic" ) diff --git a/destinations/data/sumologic.yaml b/destinations/data/sumologic.yaml new file mode 100644 index 000000000..a7130bc38 --- /dev/null +++ b/destinations/data/sumologic.yaml @@ -0,0 +1,22 @@ +apiVersion: internal.odigos.io/v1beta1 +kind: Destination +metadata: + type: sumologic + displayName: Sumo Logic + category: managed +spec: + image: sumologic.svg + signals: + traces: + supported: true + metrics: + supported: true + logs: + supported: true + fields: + - name: SUMOLOGIC_COLLECTION_URL + displayName: Source URL + componentType: input + componentProps: + type: password + secret: true \ No newline at end of file diff --git a/destinations/logos/sumologic.svg b/destinations/logos/sumologic.svg new file mode 100644 index 000000000..548b1f6a4 --- /dev/null +++ b/destinations/logos/sumologic.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/docs/backends/sumologic.mdx b/docs/backends/sumologic.mdx new file mode 100644 index 000000000..eb99b8869 --- /dev/null +++ b/docs/backends/sumologic.mdx @@ -0,0 +1,7 @@ +--- +title: "Sumo Logic" +--- + +## Obtaining a OTLP/HTTP Source URL + +Follow the [following instructions](https://help.sumologic.com/docs/send-data/hosted-collectors/http-source/otlp/) to obtain a OTLP/HTTP Source URL. \ No newline at end of file