diff --git a/.github/workflows/backends-docs-sync.yaml b/.github/workflows/backends-docs-sync.yaml new file mode 100644 index 000000000..3be450cac --- /dev/null +++ b/.github/workflows/backends-docs-sync.yaml @@ -0,0 +1,37 @@ +name: Backend Doc Change + +on: + pull_request: + branches: + - main + +jobs: + check-doc-change: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.x' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pyyaml + + - name: Run sync-dest-doc.py in docs directory + run: | + cd docs + python sync-dest-doc.py + + - name: Check for changes in docs-backends + run: | + git diff --exit-code docs/backends || ( + echo "Changes detected in docs/backends directory. You should update run cd docs ; python sync-dest-doc.py and commit the changes."; + git diff docs/backends; + exit 1; + ) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index cdf73c092..5d4aea3a4 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -52,9 +52,26 @@ jobs: working-directory: ./instrumentor run: | make test - - build-and-test-odiglet: + build-and-test-odigos-collector: runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: build Odigos Collector Image + uses: docker/build-push-action@v6 + with: + platforms: linux/amd64,linux/arm64 + push: false + tags: odigos-collector:pr-${{ github.event.number }} + context: ./collector + file: collector/Dockerfile + - name: run tests + working-directory: ./collector + run: | + make test + build-and-test-odiglet: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx diff --git a/.github/workflows/helm-lint.yml b/.github/workflows/helm-lint.yml index c1ccbf7ba..b20590a9c 100644 --- a/.github/workflows/helm-lint.yml +++ b/.github/workflows/helm-lint.yml @@ -14,4 +14,6 @@ jobs: - name: Install Helm uses: azure/setup-helm@v4 - name: Lint Charts - run: helm lint helm/* + run: | + shopt -s extglob + helm lint helm/!(*.md) diff --git a/Makefile b/Makefile index c4fd3cb92..ddf45c9a5 100644 --- a/Makefile +++ b/Makefile @@ -171,7 +171,7 @@ deploy: deploy-odiglet deploy-autoscaler deploy-collector deploy-instrumentor de e2e-test: ./e2e-test.sh -ALL_GO_MOD_DIRS := $(shell go list -m -f '{{.Dir}}' | sort) +ALL_GO_MOD_DIRS := $(shell find . -type f -name 'go.mod' -exec dirname {} \; | sort) .PHONY: go-mod-tidy go-mod-tidy: $(ALL_GO_MOD_DIRS:%=go-mod-tidy/%) @@ -192,10 +192,10 @@ check-clean-work-tree: .PHONY: cli-install cli-install: @echo "Installing odigos from source. version: $(ODIGOS_CLI_VERSION)" - go run -tags=embed_manifests ./cli install --version $(ODIGOS_CLI_VERSION) + cd ./cli ; go run -tags=embed_manifests . install --version $(ODIGOS_CLI_VERSION) .PHONY: cli-upgrade cli-upgrade: @echo "Installing odigos from source. version: $(ODIGOS_CLI_VERSION)" - go run -tags=embed_manifests ./cli upgrade --version $(ODIGOS_CLI_VERSION) --yes \ No newline at end of file + cd ./cli ; go run -tags=embed_manifests . upgrade --version $(ODIGOS_CLI_VERSION) --yes \ No newline at end of file diff --git a/api/go.mod b/api/go.mod index bb587b9d2..8eb5572f1 100644 --- a/api/go.mod +++ b/api/go.mod @@ -16,6 +16,7 @@ require ( require ( github.com/fxamacker/cbor/v2 v2.7.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/x448/float16 v0.8.4 // indirect golang.org/x/sync v0.7.0 // indirect diff --git a/api/go.sum b/api/go.sum index dd357eaac..5a2fcb28c 100644 --- a/api/go.sum +++ b/api/go.sum @@ -44,6 +44,8 @@ github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af h1:kmjWCqn2qkEml422C2 github.com/google/pprof v0.0.0-20240525223248-4bfdf5a9a2af/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= diff --git a/api/odigos/v1alpha1/instrumentatioconfig_types.go b/api/odigos/v1alpha1/instrumentatioconfig_types.go index 6a80df432..ff4af4c47 100644 --- a/api/odigos/v1alpha1/instrumentatioconfig_types.go +++ b/api/odigos/v1alpha1/instrumentatioconfig_types.go @@ -167,3 +167,12 @@ type InstrumentationConfigList struct { func init() { SchemeBuilder.Register(&InstrumentationConfig{}, &InstrumentationConfigList{}) } + +// Languages returns the set of languages that this configuration applies to +func (ic *InstrumentationConfig) Languages() map[common.ProgrammingLanguage]struct{} { + langs := make(map[common.ProgrammingLanguage]struct{}) + for _, sdkConfig := range ic.Spec.SdkConfigs { + langs[sdkConfig.Language] = struct{}{} + } + return langs +} diff --git a/assets/logo.png b/assets/logo.png index 6d1dbde05..ca6d9c7ad 100644 Binary files a/assets/logo.png and b/assets/logo.png differ diff --git a/autoscaler/go.mod b/autoscaler/go.mod index 100a38fe4..352ae9a23 100644 --- a/autoscaler/go.mod +++ b/autoscaler/go.mod @@ -43,6 +43,7 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/imdario/mergo v0.3.12 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect diff --git a/autoscaler/go.sum b/autoscaler/go.sum index bd4e64a46..e3f32bbcf 100644 --- a/autoscaler/go.sum +++ b/autoscaler/go.sum @@ -69,6 +69,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= diff --git a/cli/cmd/install.go b/cli/cmd/install.go index b0bb83201..06dde16e8 100644 --- a/cli/cmd/install.go +++ b/cli/cmd/install.go @@ -184,6 +184,7 @@ func otelSdkConfigCommunity() map[common.ProgrammingLanguage]common.OtelSdk { common.GoProgrammingLanguage: common.OtelSdkEbpfCommunity, common.DotNetProgrammingLanguage: common.OtelSdkNativeCommunity, common.JavascriptProgrammingLanguage: common.OtelSdkNativeCommunity, + common.NginxProgrammingLanguage: common.OtelSdkNativeCommunity, } } @@ -194,6 +195,7 @@ func otelSdkConfigCloud() map[common.ProgrammingLanguage]common.OtelSdk { common.GoProgrammingLanguage: common.OtelSdkEbpfEnterprise, common.DotNetProgrammingLanguage: common.OtelSdkNativeCommunity, common.JavascriptProgrammingLanguage: common.OtelSdkNativeCommunity, + common.NginxProgrammingLanguage: common.OtelSdkNativeCommunity, } } diff --git a/cli/cmd/ui.go b/cli/cmd/ui.go index 42c23aff6..d4bdbfbac 100644 --- a/cli/cmd/ui.go +++ b/cli/cmd/ui.go @@ -58,14 +58,15 @@ var uiCmd = &cobra.Command{ } localPort := cmd.Flag("port").Value.String() - if err := portForwardWithContext(ctx, uiPod, client, localPort); err != nil { + localAddress := cmd.Flag("address").Value.String() + if err := portForwardWithContext(ctx, uiPod, client, localPort, localAddress); err != nil { fmt.Printf("\033[31mERROR\033[0m Cannot start port-forward: %s\n", err) os.Exit(1) } }, } -func portForwardWithContext(ctx context.Context, uiPod *corev1.Pod, client *kube.Client, localPort string) error { +func portForwardWithContext(ctx context.Context, uiPod *corev1.Pod, client *kube.Client, localPort string, localAddress string) error { stopChannel := make(chan struct{}, 1) readyChannel := make(chan struct{}) signals := make(chan os.Signal, 1) @@ -84,7 +85,7 @@ func portForwardWithContext(ctx context.Context, uiPod *corev1.Pod, client *kube close(stopChannel) }() - fmt.Printf("Odigos UI is available at: http://localhost:%s\n\n", localPort) + fmt.Printf("Odigos UI is available at: http://%s:%s\n\n", localAddress, localPort) fmt.Printf("Port-forwarding from %s/%s\n", uiPod.Namespace, uiPod.Name) fmt.Printf("Press Ctrl+C to stop\n") @@ -95,7 +96,7 @@ func portForwardWithContext(ctx context.Context, uiPod *corev1.Pod, client *kube Name(uiPod.Name). SubResource("portforward") - return forwardPorts("POST", req.URL(), client.Config, stopChannel, readyChannel, localPort) + return forwardPorts("POST", req.URL(), client.Config, stopChannel, readyChannel, localPort, localAddress) } func createDialer(method string, url *url.URL, cfg *rest.Config) (httpstream.Dialer, error) { @@ -115,7 +116,7 @@ func createDialer(method string, url *url.URL, cfg *rest.Config) (httpstream.Dia return dialer, nil } -func forwardPorts(method string, url *url.URL, cfg *rest.Config, stopCh chan struct{}, readyCh chan struct{}, localPort string) error { +func forwardPorts(method string, url *url.URL, cfg *rest.Config, stopCh chan struct{}, readyCh chan struct{}, localPort string, localAddress string) error { dialer, err := createDialer(method, url, cfg) if err != nil { return err @@ -123,7 +124,7 @@ func forwardPorts(method string, url *url.URL, cfg *rest.Config, stopCh chan str port := fmt.Sprintf("%s:%d", localPort, defaultPort) fw, err := portforward.NewOnAddresses(dialer, - []string{"localhost"}, + []string{localAddress}, []string{port}, stopCh, readyCh, nil, os.Stderr) if err != nil { @@ -156,4 +157,5 @@ func findOdigosUIPod(client *kube.Client, ctx context.Context, ns string) (*core func init() { rootCmd.AddCommand(uiCmd) uiCmd.Flags().Int("port", defaultPort, "port to listen on") + uiCmd.Flags().String("address", "localhost", "Address to listen on") } diff --git a/cli/cmd/upgrade.go b/cli/cmd/upgrade.go index f70fa38b1..6b30f9242 100644 --- a/cli/cmd/upgrade.go +++ b/cli/cmd/upgrade.go @@ -44,7 +44,8 @@ and apply any required migrations and adaptations.`, var operation string - if !cmd.Flag("skip-version-check").Changed { + skipVersionCheckFlag := cmd.Flag("skip-version-check") + if skipVersionCheckFlag == nil || !cmd.Flag("skip-version-check").Changed { cm, err := client.CoreV1().ConfigMaps(ns).Get(ctx, resources.OdigosDeploymentConfigMapName, metav1.GetOptions{}) if err != nil { diff --git a/collector/Dockerfile b/collector/Dockerfile index d7ee25227..e556b552f 100644 --- a/collector/Dockerfile +++ b/collector/Dockerfile @@ -1,7 +1,9 @@ -FROM golang:1.22-bullseye AS builder +FROM --platform=$BUILDPLATFORM golang:1.22-bullseye AS builder COPY . /go/src/ WORKDIR /go/src/ -RUN make build-odigoscol + +ARG TARGETARCH +RUN GOOS=linux GOARCH=$TARGETARCH make build-odigoscol FROM gcr.io/distroless/base:latest COPY --from=builder /go/src/odigosotelcol/odigosotelcol /odigosotelcol diff --git a/collector/Makefile b/collector/Makefile index dc00e07be..80902f228 100644 --- a/collector/Makefile +++ b/collector/Makefile @@ -9,13 +9,14 @@ BUILDER := $(TOOLS_BIN_DIR)/builder_$(BUILDER_VERSION) # Determine the current operating system and architecture CURRENT_OS := $(shell go env GOOS) -CURRENT_ARCH := $(shell go env GOARCH) +CURRENT_ARCH := $(shell go env GOHOSTARCH) GOBIN := $(shell go env GOPATH)/bin # Define the URL format for the tool executable BUILDER_URL = https://github.com/open-telemetry/opentelemetry-collector/releases/download/cmd%2Fbuilder%2Fv$(BUILDER_VERSION)/ocb_$(BUILDER_VERSION)_$(CURRENT_OS)_$(CURRENT_ARCH) GOCMD?= go +MDATAGENCMD?= mdatagen .PHONY: download_builder download_builder: @@ -50,3 +51,13 @@ install-tools: .PHONY: generate generate: install-tools @find . -type f -name 'metadata.yaml' -print0 | xargs -0 -I {} sh -c 'cd $$(dirname {}); $(GOBIN)/mdatagen metadata.yaml' + +ALL_GO_MODS := $(shell find . -type f -name 'go.mod' ! -path './exporters/googlecloudstorageexporter/*' ! -path './exporters/azureblobstorageexporter/*' ! -path './internal/tools/*' ! -path './odigosotelcol/*' | sort) +GO_MODS_TO_TEST := $(ALL_GO_MODS:%=test/%) + +.PHONY: test +test: $(GO_MODS_TO_TEST) +test/%: GO_MOD=$* +test/%: + cd $(shell dirname $(GO_MOD)) && $(GOCMD) test -v ./... + diff --git a/collector/exporters/azureblobstorageexporter/generated_component_test.go b/collector/exporters/azureblobstorageexporter/generated_component_test.go index ea207d90c..bc5ae4710 100644 --- a/collector/exporters/azureblobstorageexporter/generated_component_test.go +++ b/collector/exporters/azureblobstorageexporter/generated_component_test.go @@ -99,8 +99,6 @@ func TestComponentLifecycle(t *testing.T) { } }) - require.NoError(t, err) - err = c.Shutdown(context.Background()) require.NoError(t, err) }) diff --git a/collector/exporters/azureblobstorageexporter/go.mod b/collector/exporters/azureblobstorageexporter/go.mod index 107aab035..f024474ce 100644 --- a/collector/exporters/azureblobstorageexporter/go.mod +++ b/collector/exporters/azureblobstorageexporter/go.mod @@ -5,8 +5,8 @@ go 1.21.0 toolchain go1.22.6 require ( - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1 - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 github.com/stretchr/testify v1.9.0 go.opentelemetry.io/collector/component v0.106.0 go.opentelemetry.io/collector/confmap v0.106.0 @@ -20,9 +20,9 @@ require ( ) require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect @@ -31,7 +31,7 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.0.0 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.4.2 // indirect + github.com/golang-jwt/jwt/v5 v5.2.1 // indirect github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -43,7 +43,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 // indirect + github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect @@ -64,8 +64,8 @@ require ( go.opentelemetry.io/otel/sdk v1.28.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.24.0 // indirect - golang.org/x/net v0.26.0 // indirect + golang.org/x/crypto v0.25.0 // indirect + golang.org/x/net v0.27.0 // indirect golang.org/x/sys v0.22.0 // indirect golang.org/x/text v0.16.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect diff --git a/collector/exporters/azureblobstorageexporter/go.sum b/collector/exporters/azureblobstorageexporter/go.sum index 05640db82..e0ed3763c 100644 --- a/collector/exporters/azureblobstorageexporter/go.sum +++ b/collector/exporters/azureblobstorageexporter/go.sum @@ -1,15 +1,17 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0 h1:VuHAcMq8pU1IWNT/m5yRaGqbK0BiQKHT8X4DTp9CHdI= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.3.0/go.mod h1:tZoQYdDZNOiIjdSn0dVWVfl0NEPGOJqVLzSrcFk4Is0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1 h1:T8quHYlUGyb/oqtSTwqlCr1ilJHrDv+ZtpSfo+hm1BU= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.1/go.mod h1:gLa1CL2RNE4s7M3yopJ/p0iq5DdY6Yv5ZUt9MTRZOQM= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1 h1:Oj853U9kG+RLTCQXpjvOnrv0WaZHxgmZz1TlLywgOPY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.1/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0 h1:u/LLAOFgsMv7HmNL4Qufg58y+qElGOt5qv0z1mURkRY= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= -github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1 h1:oPdPEZFSbl7oSPEAIPMPBMUmiL+mqgzBJwM/9qYcwNg= -github.com/AzureAD/microsoft-authentication-library-for-go v0.8.1/go.mod h1:4qFor3D/HDsvBME35Xy9rwW9DecL+M2sNw1ybjPtwA0= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 h1:Be6KInmFEKV81c0pOAEbRYehLMwmmGI1exuFj248AMk= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfBVnivScjs2ypRfimjEW0qPVLGgJkZlrIOA= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 h1:XHOnouVk1mxXfQidrMEnLlPk9UMeRtyBTnEFtxkV0kU= +github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -50,8 +52,6 @@ github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -83,8 +83,8 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk= +github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -229,8 +229,8 @@ github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FI github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4 h1:Qj1ukM4GlMWXNdMBuXcXfz/Kw9s1qm0CLY32QxuSImI= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= +github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -263,8 +263,8 @@ github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0leargg github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= @@ -346,8 +346,8 @@ golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACk golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= -golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= +golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30= +golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -374,8 +374,8 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= -golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= +golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys= +golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -418,6 +418,7 @@ golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -492,7 +493,6 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/collector/exporters/azureblobstorageexporter/metadata.yaml b/collector/exporters/azureblobstorageexporter/metadata.yaml index b7683d6f4..f386006bb 100644 --- a/collector/exporters/azureblobstorageexporter/metadata.yaml +++ b/collector/exporters/azureblobstorageexporter/metadata.yaml @@ -6,4 +6,7 @@ status: beta: [traces, logs] distributions: [contrib] codeowners: - active: [edeNFed] \ No newline at end of file + active: [edeNFed] + +tests: + expect_consumer_error: true \ No newline at end of file diff --git a/collector/internal/tools/go.mod b/collector/internal/tools/go.mod index e7666d146..4ab3db096 100644 --- a/collector/internal/tools/go.mod +++ b/collector/internal/tools/go.mod @@ -10,8 +10,8 @@ require ( github.com/ory/go-acc v0.2.8 github.com/pavius/impi v0.0.3 github.com/tcnksm/ghr v0.16.2 - go.opentelemetry.io/collector/cmd/mdatagen v0.100.0 - golang.org/x/tools v0.21.0 + go.opentelemetry.io/collector/cmd/mdatagen v0.106.0 + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d golang.org/x/vuln v1.1.0 ) @@ -48,7 +48,7 @@ require ( github.com/catenacyber/perfsprint v0.7.1 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cespare/xxhash v1.1.0 // indirect - github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect github.com/chavacava/garif v0.1.0 // indirect github.com/ckaznocha/intrange v0.1.2 // indirect @@ -72,12 +72,11 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 // indirect + github.com/go-viper/mapstructure/v2 v2.0.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.2 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.4 // indirect github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect github.com/golangci/gofmt v0.0.0-20231018234816-f50ced29576e // indirect github.com/golangci/misspell v0.5.1 // indirect @@ -95,7 +94,7 @@ require ( github.com/gostaticanalysis/comment v1.4.2 // indirect github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect github.com/gostaticanalysis/nilerr v0.1.1 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hexops/gotextdiff v1.0.3 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect @@ -136,6 +135,7 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/moricho/tparallel v0.3.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect @@ -147,10 +147,10 @@ require ( github.com/pelletier/go-toml/v2 v2.2.2 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/polyfloyd/go-errorlint v1.5.1 // indirect - github.com/prometheus/client_golang v1.19.0 // indirect + github.com/prometheus/client_golang v1.19.1 // indirect github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.53.0 // indirect - github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/common v0.55.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/quasilyte/go-ruleguard v0.4.2 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect @@ -199,31 +199,32 @@ require ( gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.12.1 // indirect go-simpler.org/sloglint v0.6.0 // indirect - go.opentelemetry.io/collector/component v0.100.0 // indirect - go.opentelemetry.io/collector/config/configtelemetry v0.100.0 // indirect - go.opentelemetry.io/collector/confmap v0.100.0 // indirect - go.opentelemetry.io/collector/confmap/provider/fileprovider v0.100.0 // indirect - go.opentelemetry.io/collector/filter v0.100.0 // indirect - go.opentelemetry.io/collector/pdata v1.7.0 // indirect - go.opentelemetry.io/otel v1.26.0 // indirect - go.opentelemetry.io/otel/metric v1.26.0 // indirect - go.opentelemetry.io/otel/trace v1.26.0 // indirect + go.opentelemetry.io/collector/component v0.106.0 // indirect + go.opentelemetry.io/collector/config/configtelemetry v0.106.0 // indirect + go.opentelemetry.io/collector/confmap v0.106.0 // indirect + go.opentelemetry.io/collector/confmap/provider/fileprovider v0.106.0 // indirect + go.opentelemetry.io/collector/featuregate v1.12.0 // indirect + go.opentelemetry.io/collector/filter v0.106.0 // indirect + go.opentelemetry.io/collector/internal/globalgates v0.106.0 // indirect + go.opentelemetry.io/collector/pdata v1.12.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/automaxprocs v1.5.3 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - golang.org/x/crypto v0.23.0 // indirect + golang.org/x/crypto v0.24.0 // indirect golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect golang.org/x/exp/typeparams v0.0.0-20240314144324-c7f7c6466f7f // indirect golang.org/x/mod v0.17.0 // indirect - golang.org/x/net v0.25.0 // indirect - golang.org/x/oauth2 v0.18.0 // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sync v0.7.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda // indirect - google.golang.org/grpc v1.63.2 // indirect - google.golang.org/protobuf v1.34.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/grpc v1.65.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/collector/internal/tools/go.sum b/collector/internal/tools/go.sum index b0c0630ff..953968aeb 100644 --- a/collector/internal/tools/go.sum +++ b/collector/internal/tools/go.sum @@ -98,8 +98,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= @@ -172,8 +172,8 @@ github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -199,8 +199,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1 h1:TQcrn6Wq+sKGkpyPvppOz99zsMBaUOKXq6HSv655U1c= -github.com/go-viper/mapstructure/v2 v2.0.0-alpha.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.0.0 h1:dhn8MZ1gZ0mzeodTG3jt5Vj/o87xZKuNAprG2mQfMfc= +github.com/go-viper/mapstructure/v2 v2.0.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.2 h1:Nea7b4icn8s57fTx1M5AI4qQT5HEM3rVUO8MuE6g80U= github.com/go-xmlfmt/xmlfmt v1.1.2/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -229,8 +229,6 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= @@ -327,8 +325,8 @@ github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -477,6 +475,8 @@ github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9G github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/moricho/tparallel v0.3.1 h1:fQKD4U1wRMAYNngDonW5XupoB/ZGJHdpzrWqgyg9krA= github.com/moricho/tparallel v0.3.1/go.mod h1:leENX2cUv7Sv2qDgdi0D0fCftN8fRC67Bcn8pqzeYNI= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= @@ -537,8 +537,8 @@ github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDf github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -550,15 +550,15 @@ github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y8 github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= -github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G1dc= +github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= -github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quasilyte/go-ruleguard v0.4.2 h1:htXcXDK6/rO12kiTHKfHuqR4kr3Y4M0J0rOL6CH/BYs= github.com/quasilyte/go-ruleguard v0.4.2/go.mod h1:GJLgqsLeo4qgavUoL8JeGFNS7qcisx3awV/w9eWTmNI= @@ -722,26 +722,30 @@ go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.opentelemetry.io/collector/cmd/mdatagen v0.100.0 h1:ahqrymzrQxrneyFnBHHB5nBzi5E0EpUwJJtIa6DjURc= -go.opentelemetry.io/collector/cmd/mdatagen v0.100.0/go.mod h1:yhEy76Rg+kEfqQSLyOo746EoEFUcQW9VRGnT4rwTSoA= -go.opentelemetry.io/collector/component v0.100.0 h1:3Y6dl3uDkDzilaikYrPxbZDOlzrDijrF1cIPzfyTwWA= -go.opentelemetry.io/collector/component v0.100.0/go.mod h1:HLEqEBFzPW2umagnVC3gY8yogOBhbzvuzTBFUqH54HY= -go.opentelemetry.io/collector/config/configtelemetry v0.100.0 h1:unlhNrFFXCinxk6iPHPYwANO+eFY4S1NTb5knSxteW4= -go.opentelemetry.io/collector/config/configtelemetry v0.100.0/go.mod h1:YV5PaOdtnU1xRomPcYqoHmyCr48tnaAREeGO96EZw8o= -go.opentelemetry.io/collector/confmap v0.100.0 h1:r70znwLWUMFRWL4LRcWLhdFfzmTvehXgbnlHFCDm0Tc= -go.opentelemetry.io/collector/confmap v0.100.0/go.mod h1:BWKPIpYeUzSG6ZgCJMjF7xsLvyrvJCfYURl57E5vhiQ= -go.opentelemetry.io/collector/confmap/provider/fileprovider v0.100.0 h1:H2YtC6mOFuaY7/ht16iUDYSHS6jM2ufNqQatmKAbf7U= -go.opentelemetry.io/collector/confmap/provider/fileprovider v0.100.0/go.mod h1:JEYr74rqYYsgKc5bDtsqy8TFHmmhHnEc0Hm5ekZSj/8= -go.opentelemetry.io/collector/filter v0.100.0 h1:XQyhnqJSK2sw+e9yvpkvl7y8QdJwH/gAnFoZDfEZ0dQ= -go.opentelemetry.io/collector/filter v0.100.0/go.mod h1:3xGRpZo11DMJTDtMUGsDNkxKM6LMHqROGrQ/aTvskh8= -go.opentelemetry.io/collector/pdata v1.7.0 h1:/WNsBbE6KM3TTPUb9v/5B7IDqnDkgf8GyFhVJJqu7II= -go.opentelemetry.io/collector/pdata v1.7.0/go.mod h1:ehCBBA5GoFrMZkwyZAKGY/lAVSgZf6rzUt3p9mddmPU= -go.opentelemetry.io/otel v1.26.0 h1:LQwgL5s/1W7YiiRwxf03QGnWLb2HW4pLiAhaA5cZXBs= -go.opentelemetry.io/otel v1.26.0/go.mod h1:UmLkJHUAidDval2EICqBMbnAd0/m2vmpf/dAM+fvFs4= -go.opentelemetry.io/otel/metric v1.26.0 h1:7S39CLuY5Jgg9CrnA9HHiEjGMF/X2VHvoXGgSllRz30= -go.opentelemetry.io/otel/metric v1.26.0/go.mod h1:SY+rHOI4cEawI9a7N1A4nIg/nTQXe1ccCNWYOJUrpX4= -go.opentelemetry.io/otel/trace v1.26.0 h1:1ieeAUb4y0TE26jUFrCIXKpTuVK7uJGN9/Z/2LP5sQA= -go.opentelemetry.io/otel/trace v1.26.0/go.mod h1:4iDxvGDQuUkHve82hJJ8UqrwswHYsZuWCBllGV2U2y0= +go.opentelemetry.io/collector/cmd/mdatagen v0.106.0 h1:XvWMsf7An6C/Tbm08TitIUUiJKoiwdZ/4nyYXNWDwO0= +go.opentelemetry.io/collector/cmd/mdatagen v0.106.0/go.mod h1:UdIHLivXzQgPM10Fn8HSyAW36wbck2w+srXpCwxwwRo= +go.opentelemetry.io/collector/component v0.106.0 h1:2CJbqV8taL7nBKuHxeULvJySa4+gfsgvAENb+lS/vYM= +go.opentelemetry.io/collector/component v0.106.0/go.mod h1:lAcHA7k8WVzJRxlkOtOWqgf9+2uRJLfLUiYJapRbr5w= +go.opentelemetry.io/collector/config/configtelemetry v0.106.0 h1:UEUO2pkLpPoAi92MoLhVu3q7mVZONFAxAGorJCtF+aE= +go.opentelemetry.io/collector/config/configtelemetry v0.106.0/go.mod h1:WxWKNVAQJg/Io1nA3xLgn/DWLE/W1QOB2+/Js3ACi40= +go.opentelemetry.io/collector/confmap v0.106.0 h1:oZ/QfGjtOTz6sEbNkp8CxSwDFRHXej8u6MywvhTzjqI= +go.opentelemetry.io/collector/confmap v0.106.0/go.mod h1:X+nvuiQs3zdeXKkrEX1Ta3R49eLZ2/NYZLs3KUp1pik= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.106.0 h1:dcVkkO67vP3/nrKOtPvjNadfJCeKUgm8Rrj0moMQVNc= +go.opentelemetry.io/collector/confmap/provider/fileprovider v0.106.0/go.mod h1:9x/xMWlsGXMqD6hMReaY4efmYWBNMmbnoSnR0CDEsGM= +go.opentelemetry.io/collector/featuregate v1.12.0 h1:l5WbV2vMQd2bL8ubfGrbKNtZaeJRckE12CTHvRe47Tw= +go.opentelemetry.io/collector/featuregate v1.12.0/go.mod h1:PsOINaGgTiFc+Tzu2K/X2jP+Ngmlp7YKGV1XrnBkH7U= +go.opentelemetry.io/collector/filter v0.106.0 h1:PbezmI8pMh5h+IzjQFJM0v/wrlkgldNg10UZ+19lgw0= +go.opentelemetry.io/collector/filter v0.106.0/go.mod h1:quwWbIE/MgxkPDQJUKXu3PXo/q3WXsaDtsiZh3ChjIo= +go.opentelemetry.io/collector/internal/globalgates v0.106.0 h1:Rg6ZM2DROO4nx93nEFoNInisUGLHBq4IAU0oK1/T7jw= +go.opentelemetry.io/collector/internal/globalgates v0.106.0/go.mod h1:Z5US6O2xkZAtxVSSBnHAPFZwPhFoxlyKLUvS67Vx4gc= +go.opentelemetry.io/collector/pdata v1.12.0 h1:Xx5VK1p4VO0md8MWm2icwC1MnJ7f8EimKItMWw46BmA= +go.opentelemetry.io/collector/pdata v1.12.0/go.mod h1:MYeB0MmMAxeM0hstCFrCqWLzdyeYySim2dG6pDT6nYI= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= @@ -764,8 +768,8 @@ golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI= +golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc h1:ao2WRsKSzW6KuUY9IWPwWahcHCgR0s52IfwutMfEbdM= golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= @@ -815,13 +819,13 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.18.0 h1:09qnuIAgzdx1XplqJvW6CQqMCtGZykZWcXzPMPUusvI= -golang.org/x/oauth2 v0.18.0/go.mod h1:Wf7knwG0MPoWIMMBgFlEaSUDaKskp0dCfrlJRJXbBi8= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -884,8 +888,8 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -899,12 +903,11 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -940,8 +943,8 @@ golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= golang.org/x/tools v0.5.0/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.21.0 h1:qc0xYgIbsSDt9EyWz05J5wfa7LOVW0YTLOXrqdLAWIw= -golang.org/x/tools v0.21.0/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/vuln v1.1.0 h1:ECEdI+aEtjpF90eqEcDL5Q11DWSZAw5PJQWlp0+gWqc= golang.org/x/vuln v1.1.0/go.mod h1:HT/Ar8fE34tbxWG2s7PYjVl+iIE4Er36/940Z+K540Y= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -950,16 +953,14 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda h1:LI5DOvAxUPMv/50agcLLoo+AdWc1irS9Rzz4vPuD1V4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240401170217-c3f982113cda/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -969,8 +970,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= +google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= +google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -982,8 +983,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= -google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/collector/odigosotelcol/go.mod b/collector/odigosotelcol/go.mod index 2bb2b5f50..9adfe1a3c 100644 --- a/collector/odigosotelcol/go.mod +++ b/collector/odigosotelcol/go.mod @@ -127,12 +127,12 @@ require ( github.com/Azure/azure-kusto-go v0.16.0 // indirect github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 // indirect github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest v0.11.29 // indirect diff --git a/collector/odigosotelcol/go.sum b/collector/odigosotelcol/go.sum index ee5fbd92a..ad05a6db8 100644 --- a/collector/odigosotelcol/go.sum +++ b/collector/odigosotelcol/go.sum @@ -74,12 +74,12 @@ github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVt github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1 h1:E+OJmp2tPvt1W+amx48v1eqbjDYsgN+RzP4q16yV5eM= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.11.1/go.mod h1:a6xsAQUZg+VsS3TJ05SRp524Hs4pZ/AeFSr5ENf0Yjo= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0 h1:U2rTu3Ef+7w9FHKIAXM6ZyqF3UOWJZ12zIm8zECAFfg= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.6.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0 h1:jBQA3cKT4L2rWMpgE7Yt3Hwh2aUj8KXjIGLxjHeYNNo= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.8.0/go.mod h1:4OG6tQ9EOP/MT0NMjDlRzWoVFxfu9rN9B2X+tlSVktg= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0 h1:LkHbJbgF3YyvC53aqYGR+wWQDn2Rdp9AQdGndf9QvY4= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/compute/armcompute/v5 v5.7.0/go.mod h1:QyiQdW4f4/BIfB8ZutZ2s+28RAgfa/pT+zS++ZHyM1I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= @@ -88,10 +88,10 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v4 v4.3.0/go.mod h1:Y/HgrePTmGy9HjdSGTqZNa+apUpTVIEVKXJyARP2lrk= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0 h1:Ma67P/GGprNwsslzEH6+Kb8nybI8jpDTm4Wmzu2ReK8= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.2.0/go.mod h1:c+Lifp3EDEamAkPVzMooRNOK6CZjNSdEnf1A7jsI9u4= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 h1:gggzg0SUMs6SQbEw+3LoSsYf9YMjkupeAnHMX8O9mmY= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0/go.mod h1:+6KLcKIVgxoBDMqMO/Nvy7bZ9a0nbU3I1DtFQK3YvB4= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0/go.mod h1:oDrbWx4ewMylP7xHivfgixbfGBT6APAwsSoHRKotnIc= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0 h1:Be6KInmFEKV81c0pOAEbRYehLMwmmGI1exuFj248AMk= +github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.4.0/go.mod h1:WCPBHsOXfBVnivScjs2ypRfimjEW0qPVLGgJkZlrIOA= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe h1:HGuouUM1533rBXmMtR7qh5pYNSSjUZG90b/MgJAnb/A= github.com/Azure/azure-storage-queue-go v0.0.0-20230531184854-c06a8eff66fe/go.mod h1:K6am8mT+5iFXgingS9LUc7TmbsW6XBw3nxaRyaMyWc8= github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= diff --git a/collector/processors/odigosresourcenameprocessor/resource_processor.go b/collector/processors/odigosresourcenameprocessor/resource_processor.go index d11e420a2..4633397e8 100644 --- a/collector/processors/odigosresourcenameprocessor/resource_processor.go +++ b/collector/processors/odigosresourcenameprocessor/resource_processor.go @@ -114,6 +114,8 @@ func (rp *resourceProcessor) processLogs(ctx context.Context, ld plog.Logs) (plo } func (rp *resourceProcessor) Shutdown(ctx context.Context) error { - rp.nameResolver.Shutdown() + if rp.nameResolver != nil { + rp.nameResolver.Shutdown() + } return nil } diff --git a/collector/processors/odigossamplingprocessor/generated_component_test.go b/collector/processors/odigossamplingprocessor/generated_component_test.go index e07ccaf79..d6e11ab43 100644 --- a/collector/processors/odigossamplingprocessor/generated_component_test.go +++ b/collector/processors/odigossamplingprocessor/generated_component_test.go @@ -21,7 +21,7 @@ import ( ) func TestComponentFactoryType(t *testing.T) { - require.Equal(t, "odigosresourcename", NewFactory().Type().String()) + require.Equal(t, "odigossampling", NewFactory().Type().String()) } func TestComponentConfigStruct(t *testing.T) { diff --git a/collector/processors/odigossamplingprocessor/go.mod b/collector/processors/odigossamplingprocessor/go.mod index aa42e1ae1..3ab5e22ff 100644 --- a/collector/processors/odigossamplingprocessor/go.mod +++ b/collector/processors/odigossamplingprocessor/go.mod @@ -14,6 +14,8 @@ require ( go.opentelemetry.io/collector/pdata v1.12.0 go.opentelemetry.io/collector/processor v0.106.0 go.opentelemetry.io/otel v1.28.0 + go.opentelemetry.io/otel/metric v1.28.0 + go.opentelemetry.io/otel/trace v1.28.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) @@ -49,10 +51,8 @@ require ( go.opentelemetry.io/collector/pdata/pprofile v0.106.0 // indirect go.opentelemetry.io/collector/pdata/testdata v0.106.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.50.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/sys v0.21.0 // indirect diff --git a/collector/processors/odigossamplingprocessor/internal/metadata/generated_status.go b/collector/processors/odigossamplingprocessor/internal/metadata/generated_status.go index 8f071507d..5b4763d3e 100644 --- a/collector/processors/odigossamplingprocessor/internal/metadata/generated_status.go +++ b/collector/processors/odigossamplingprocessor/internal/metadata/generated_status.go @@ -7,7 +7,7 @@ import ( ) var ( - Type = component.MustNewType("odigosresourcename") + Type = component.MustNewType("odigossampling") ) const ( diff --git a/collector/processors/odigossamplingprocessor/internal/metadata/generated_telemetry.go b/collector/processors/odigossamplingprocessor/internal/metadata/generated_telemetry.go new file mode 100644 index 000000000..20d97bb7f --- /dev/null +++ b/collector/processors/odigossamplingprocessor/internal/metadata/generated_telemetry.go @@ -0,0 +1,17 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" +) + +func Meter(settings component.TelemetrySettings) metric.Meter { + return settings.MeterProvider.Meter("github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigossamplingprocessor") +} + +func Tracer(settings component.TelemetrySettings) trace.Tracer { + return settings.TracerProvider.Tracer("github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigossamplingprocessor") +} diff --git a/collector/processors/odigossamplingprocessor/internal/metadata/generated_telemetry_test.go b/collector/processors/odigossamplingprocessor/internal/metadata/generated_telemetry_test.go new file mode 100644 index 000000000..9fad6e1b6 --- /dev/null +++ b/collector/processors/odigossamplingprocessor/internal/metadata/generated_telemetry_test.go @@ -0,0 +1,63 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/otel/metric" + embeddedmetric "go.opentelemetry.io/otel/metric/embedded" + noopmetric "go.opentelemetry.io/otel/metric/noop" + "go.opentelemetry.io/otel/trace" + embeddedtrace "go.opentelemetry.io/otel/trace/embedded" + nooptrace "go.opentelemetry.io/otel/trace/noop" + + "go.opentelemetry.io/collector/component" +) + +type mockMeter struct { + noopmetric.Meter + name string +} +type mockMeterProvider struct { + embeddedmetric.MeterProvider +} + +func (m mockMeterProvider) Meter(name string, opts ...metric.MeterOption) metric.Meter { + return mockMeter{name: name} +} + +type mockTracer struct { + nooptrace.Tracer + name string +} + +type mockTracerProvider struct { + embeddedtrace.TracerProvider +} + +func (m mockTracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer { + return mockTracer{name: name} +} + +func TestProviders(t *testing.T) { + set := component.TelemetrySettings{ + MeterProvider: mockMeterProvider{}, + TracerProvider: mockTracerProvider{}, + } + + meter := Meter(set) + if m, ok := meter.(mockMeter); ok { + require.Equal(t, "github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigossamplingprocessor", m.name) + } else { + require.Fail(t, "returned Meter not mockMeter") + } + + tracer := Tracer(set) + if m, ok := tracer.(mockTracer); ok { + require.Equal(t, "github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigossamplingprocessor", m.name) + } else { + require.Fail(t, "returned Meter not mockTracer") + } +} diff --git a/collector/processors/odigossamplingprocessor/metadata.yaml b/collector/processors/odigossamplingprocessor/metadata.yaml index 4a849a2c6..221983f97 100644 --- a/collector/processors/odigossamplingprocessor/metadata.yaml +++ b/collector/processors/odigossamplingprocessor/metadata.yaml @@ -1,4 +1,4 @@ -type: odigosresourcename +type: odigossampling status: class: processor diff --git a/collector/processors/odigostrafficmetrics/go.mod b/collector/processors/odigostrafficmetrics/go.mod index 68ca7ea66..96e809d4b 100644 --- a/collector/processors/odigostrafficmetrics/go.mod +++ b/collector/processors/odigostrafficmetrics/go.mod @@ -14,6 +14,7 @@ require ( go.opentelemetry.io/otel v1.28.0 go.opentelemetry.io/otel/metric v1.28.0 go.opentelemetry.io/otel/sdk/metric v1.28.0 + go.opentelemetry.io/otel/trace v1.28.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 ) @@ -52,7 +53,6 @@ require ( go.opentelemetry.io/collector/pdata/testdata v0.106.0 // indirect go.opentelemetry.io/otel/exporters/prometheus v0.50.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.26.0 // indirect golang.org/x/sys v0.21.0 // indirect diff --git a/collector/processors/odigostrafficmetrics/internal/metadata/generated_telemetry.go b/collector/processors/odigostrafficmetrics/internal/metadata/generated_telemetry.go new file mode 100644 index 000000000..55e14d850 --- /dev/null +++ b/collector/processors/odigostrafficmetrics/internal/metadata/generated_telemetry.go @@ -0,0 +1,17 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" +) + +func Meter(settings component.TelemetrySettings) metric.Meter { + return settings.MeterProvider.Meter("github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigostrafficmetrics") +} + +func Tracer(settings component.TelemetrySettings) trace.Tracer { + return settings.TracerProvider.Tracer("github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigostrafficmetrics") +} diff --git a/collector/processors/odigostrafficmetrics/internal/metadata/generated_telemetry_test.go b/collector/processors/odigostrafficmetrics/internal/metadata/generated_telemetry_test.go new file mode 100644 index 000000000..38dcf8300 --- /dev/null +++ b/collector/processors/odigostrafficmetrics/internal/metadata/generated_telemetry_test.go @@ -0,0 +1,63 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/otel/metric" + embeddedmetric "go.opentelemetry.io/otel/metric/embedded" + noopmetric "go.opentelemetry.io/otel/metric/noop" + "go.opentelemetry.io/otel/trace" + embeddedtrace "go.opentelemetry.io/otel/trace/embedded" + nooptrace "go.opentelemetry.io/otel/trace/noop" + + "go.opentelemetry.io/collector/component" +) + +type mockMeter struct { + noopmetric.Meter + name string +} +type mockMeterProvider struct { + embeddedmetric.MeterProvider +} + +func (m mockMeterProvider) Meter(name string, opts ...metric.MeterOption) metric.Meter { + return mockMeter{name: name} +} + +type mockTracer struct { + nooptrace.Tracer + name string +} + +type mockTracerProvider struct { + embeddedtrace.TracerProvider +} + +func (m mockTracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.Tracer { + return mockTracer{name: name} +} + +func TestProviders(t *testing.T) { + set := component.TelemetrySettings{ + MeterProvider: mockMeterProvider{}, + TracerProvider: mockTracerProvider{}, + } + + meter := Meter(set) + if m, ok := meter.(mockMeter); ok { + require.Equal(t, "github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigostrafficmetrics", m.name) + } else { + require.Fail(t, "returned Meter not mockMeter") + } + + tracer := Tracer(set) + if m, ok := tracer.(mockTracer); ok { + require.Equal(t, "github.com/open-telemetry/opentelemetry-collector-contrib/odigos/processor/odigostrafficmetrics", m.name) + } else { + require.Fail(t, "returned Meter not mockTracer") + } +} diff --git a/common/envOverwrite/overwriter.go b/common/envOverwrite/overwriter.go index 03eb90088..399aeae75 100644 --- a/common/envOverwrite/overwriter.go +++ b/common/envOverwrite/overwriter.go @@ -7,8 +7,9 @@ import ( ) type envValues struct { - delim string - values map[common.OtelSdk]string + delim string + programmingLanguage common.ProgrammingLanguage + values map[common.OtelSdk]string } // EnvValuesMap is a map of environment variables odigos uses for various languages and goals. @@ -20,21 +21,24 @@ type envValues struct { // If the paths are changed in the odigos images, the values here should be updated accordingly. var EnvValuesMap = map[string]envValues{ "NODE_OPTIONS": { - delim: " ", + delim: " ", + programmingLanguage: common.JavascriptProgrammingLanguage, values: map[common.OtelSdk]string{ common.OtelSdkNativeCommunity: "--require /var/odigos/nodejs/autoinstrumentation.js", common.OtelSdkEbpfEnterprise: "--require /var/odigos/nodejs-ebpf/autoinstrumentation.js", }, }, "PYTHONPATH": { - delim: ":", + delim: ":", + programmingLanguage: common.PythonProgrammingLanguage, values: map[common.OtelSdk]string{ common.OtelSdkNativeCommunity: "/var/odigos/python:/var/odigos/python/opentelemetry/instrumentation/auto_instrumentation", common.OtelSdkEbpfEnterprise: "/var/odigos/python-ebpf:/var/odigos/python/opentelemetry/instrumentation/auto_instrumentation:/var/odigos/python", }, }, "JAVA_OPTS": { - delim: " ", + delim: " ", + programmingLanguage: common.JavaProgrammingLanguage, values: map[common.OtelSdk]string{ common.OtelSdkNativeCommunity: "-javaagent:/var/odigos/java/javaagent.jar", common.OtelSdkEbpfEnterprise: "-javaagent:/var/odigos/java-ebpf/dtrace-injector.jar", @@ -43,7 +47,8 @@ var EnvValuesMap = map[string]envValues{ }, }, "JAVA_TOOL_OPTIONS": { - delim: " ", + delim: " ", + programmingLanguage: common.JavaProgrammingLanguage, values: map[common.OtelSdk]string{ common.OtelSdkNativeCommunity: "-javaagent:/var/odigos/java/javaagent.jar", common.OtelSdkEbpfEnterprise: "-javaagent:/var/odigos/java-ebpf/dtrace-injector.jar", @@ -58,13 +63,18 @@ var EnvValuesMap = map[string]envValues{ // the are 2 parts to the environment value: odigos part and user part. // either one can be set or empty. // so we have 4 cases to handle: -func GetPatchedEnvValue(envName string, observedValue string, currentSdk common.OtelSdk) *string { +func GetPatchedEnvValue(envName string, observedValue string, currentSdk common.OtelSdk, language common.ProgrammingLanguage) *string { envMetadata, ok := EnvValuesMap[envName] if !ok { // Odigos does not manipulate this environment variable, so ignore it return nil } + if envMetadata.programmingLanguage != language { + // Odigos does not manipulate this environment variable for the given language, so ignore it + return nil + } + desiredOdigosPart, ok := envMetadata.values[currentSdk] if !ok { // No specific overwrite is required for this SDK diff --git a/common/envOverwrite/overwriter_test.go b/common/envOverwrite/overwriter_test.go index 6056a4222..128c12b11 100644 --- a/common/envOverwrite/overwriter_test.go +++ b/common/envOverwrite/overwriter_test.go @@ -18,6 +18,7 @@ func TestGetPatchedEnvValue(t *testing.T) { envName string observedValue string sdk common.OtelSdk + programmingLanguage common.ProgrammingLanguage patchedValueExpected string }{ { @@ -25,6 +26,7 @@ func TestGetPatchedEnvValue(t *testing.T) { envName: "PATH", observedValue: "/usr/local/bin:/usr/bin:/bin", sdk: common.OtelSdkNativeCommunity, + programmingLanguage: common.JavascriptProgrammingLanguage, patchedValueExpected: "", }, { @@ -32,6 +34,7 @@ func TestGetPatchedEnvValue(t *testing.T) { envName: "NODE_OPTIONS", observedValue: userVal, sdk: common.OtelSdkNativeCommunity, + programmingLanguage: common.JavascriptProgrammingLanguage, patchedValueExpected: userVal + " " + nodeOptionsNativeCommunity, }, { @@ -39,6 +42,7 @@ func TestGetPatchedEnvValue(t *testing.T) { envName: "NODE_OPTIONS", observedValue: nodeOptionsNativeCommunity, sdk: common.OtelSdkNativeCommunity, + programmingLanguage: common.JavascriptProgrammingLanguage, patchedValueExpected: "", }, { @@ -46,6 +50,7 @@ func TestGetPatchedEnvValue(t *testing.T) { envName: "NODE_OPTIONS", observedValue: userVal + " " + nodeOptionsNativeCommunity, sdk: common.OtelSdkNativeCommunity, + programmingLanguage: common.JavascriptProgrammingLanguage, patchedValueExpected: userVal + " " + nodeOptionsNativeCommunity, }, { @@ -53,6 +58,7 @@ func TestGetPatchedEnvValue(t *testing.T) { envName: "NODE_OPTIONS", observedValue: userVal + " " + nodeOptionsNativeCommunity, sdk: common.OtelSdkEbpfEnterprise, + programmingLanguage: common.JavascriptProgrammingLanguage, patchedValueExpected: userVal + " " + nodeOptionsEbpfEnterprise, }, { @@ -62,13 +68,22 @@ func TestGetPatchedEnvValue(t *testing.T) { envName: "NODE_OPTIONS", observedValue: nodeOptionsNativeCommunity, sdk: common.OtelSdkEbpfEnterprise, + programmingLanguage: common.JavascriptProgrammingLanguage, + patchedValueExpected: "", + }, + { + name: "observed env is for a different programming language than what detected", + envName: "NODE_OPTIONS", + observedValue: userVal, + sdk: common.OtelSdkNativeCommunity, + programmingLanguage: common.PythonProgrammingLanguage, patchedValueExpected: "", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - patchedValue := GetPatchedEnvValue(tt.envName, tt.observedValue, tt.sdk) + patchedValue := GetPatchedEnvValue(tt.envName, tt.observedValue, tt.sdk, tt.programmingLanguage) if patchedValue == nil { assert.Equal(t, tt.patchedValueExpected, "", "mismatch in GetPatchedEnvValue: %s", tt.name) } else { diff --git a/common/go.mod b/common/go.mod index ab6f1b689..7f19c8f22 100644 --- a/common/go.mod +++ b/common/go.mod @@ -19,6 +19,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/fatih/color v1.10.0 // indirect github.com/go-logr/logr v1.4.1 + github.com/hashicorp/go-version v1.7.0 github.com/mattn/go-colorable v0.1.8 // indirect github.com/mattn/go-isatty v0.0.12 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -26,4 +27,5 @@ require ( golang.org/x/sys v0.18.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect + ) diff --git a/common/go.sum b/common/go.sum index 2ea659c44..90cb9e3c8 100644 --- a/common/go.sum +++ b/common/go.sum @@ -15,6 +15,8 @@ github.com/goccy/go-yaml v1.11.3 h1:B3W9IdWbvrUu2OYQGwvU1nZtvMQJPBKgBUuweJjLj6I= github.com/goccy/go-yaml v1.11.3/go.mod h1:wKnAMd44+9JAAnGQpWVEgBzGt3YuTaQ4uXoHvE4m7WU= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= diff --git a/common/lang_detection.go b/common/lang_detection.go index c5bd4f135..31831e5fa 100644 --- a/common/lang_detection.go +++ b/common/lang_detection.go @@ -1,8 +1,10 @@ package common +import "github.com/hashicorp/go-version" + type ProgramLanguageDetails struct { Language ProgrammingLanguage - RuntimeVersion string + RuntimeVersion *version.Version } // +kubebuilder:validation:Enum=java;python;go;dotnet;javascript;mysql;nginx;unknown;ignored @@ -23,3 +25,11 @@ const ( // Ignored is used when the odigos is configured to ignore the process/container IgnoredProgrammingLanguage ProgrammingLanguage = "ignored" ) + +func GetVersion(versionString string) *version.Version { + runtimeVersion, err := version.NewVersion(versionString) + if err != nil { + return nil + } + return runtimeVersion +} diff --git a/destinations/go.mod b/destinations/go.mod index 470afa3df..e152ff071 100644 --- a/destinations/go.mod +++ b/destinations/go.mod @@ -9,6 +9,7 @@ require ( require ( github.com/go-logr/logr v1.4.1 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/kr/text v0.2.0 // indirect go.opentelemetry.io/otel v1.24.0 // indirect go.opentelemetry.io/otel/trace v1.24.0 // indirect diff --git a/destinations/go.sum b/destinations/go.sum index 0e8df85b0..8466da382 100644 --- a/destinations/go.sum +++ b/destinations/go.sum @@ -5,6 +5,8 @@ github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= diff --git a/docs/architecture.mdx b/docs/architecture.mdx index 53dde7071..0537ca7bf 100644 --- a/docs/architecture.mdx +++ b/docs/architecture.mdx @@ -22,14 +22,15 @@ is responsible for: ## High Level Architecture -These tasks are performed by 4 microservices: +These tasks are performed by following components: - Instrumentor +- Odiglet - Autoscaler - Scheduler - UI -The different microservices communicate via Kubernetes API server (see +The different components communicate via Kubernetes API server (see [Custom Resources](/custom-resources) for more details). The following diagram shows the architecture of the Odigos observability system. @@ -40,37 +41,33 @@ The following diagram shows the architecture of the Odigos observability system. ## Instrumentor -The instrumentor microservice is responsible for automatic detection of -applications in the cluster and instrumentation of them. Automatic +Instrumentor is responsible for automatic detection of +applications in the cluster and providing necessary setup for Odiglet to instrument them. Automatic instrumentation is done according to the applications selected by the user in -the UI. The instrumentor may change the arguments passed to the instrumentation +the UI. Instrumentor may change the arguments passed to the instrumentation SDK to reflect the following changes: - A configuration change made by the user (for example changing the sampling rate in the UI) - Rescheduling done by the scheduler (when the collectors pipeline changes) -### Language Detection +### Odiglet + +Odiglet does the heavy lifting of instrumenting the running application. A key part of being able to automatically instrument every new application is to be able to detect the language of the application. After the language is detected Odigos will perform automatic instrumentation according to the language. For runtime languages Odigos uses the appropriate OpenTelemetry -instrumentation. For compiled languages Odigos uses eBPF instrumentation. In -order to detect the language of the application Odigos deploys a lang detection -pod that analyzes one of the target application instances. This pod is deployed -on the same node as the target instance and is able to look into the target pod -filesystem. - -The lang detection pod uses the following heuristics in order to detect the -language of the application: +instrumentation. For compiled languages Odigos uses eBPF instrumentation. -- process name -- environment variables -- dynamically loaded libraries +Following heuristics are used to detect the language and the suitable instrumentations +for the application: -The lang detection pod reports the detected language by leveraging the -`TerminationMessagePath` field of the Pod resource. +- process name, +- the command, +- environment variables, +- dynamically loaded libraries. ## Autoscaler @@ -84,8 +81,8 @@ Deployment of collectors is done in two scenarios: ## Scheduler -The scheduler service assigns applications discovered by the instrumentor to the -collectors pipeline create by the autoscaler. +Scheduler service assigns applications discovered by Instrumentor to the +collectors pipeline created by the autoscaler. ## UI diff --git a/docs/backends/azureblob.mdx b/docs/backends/azureblob.mdx index d375ecf93..337c1e076 100644 --- a/docs/backends/azureblob.mdx +++ b/docs/backends/azureblob.mdx @@ -10,4 +10,48 @@ Data can be exported either in JSON format or in binary format (protobuf). There are two required fields to configure Azure Blob Storage backend: - **Account name**: Azure Storage account name -- **Container name**: Azure Storage container name \ No newline at end of file +- **Container name**: Azure Storage container name + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Azure Blob Storage` and follow the on-screen instructions. + + +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: azureblob-example + namespace: odigos-system +spec: + data: + AZURE_BLOB_ACCOUNT_NAME: + AZURE_BLOB_CONTAINER_NAME: + destinationName: azureblob + signals: + - TRACES + - LOGS + type: azureblob +``` \ No newline at end of file diff --git a/docs/backends/causely.mdx b/docs/backends/causely.mdx index 8d04750d8..dcf658f63 100644 --- a/docs/backends/causely.mdx +++ b/docs/backends/causely.mdx @@ -20,4 +20,48 @@ The endpoint URL is the combined `://:` to access your - `namespace` is the k8s namespace where the Causely Mediator service is deployed - Default port is `4317`; if no port is specified, it will be appended automatically -Example: `http://mediator.causely:4317` \ No newline at end of file +Example: `http://mediator.causely: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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Causely` and follow the on-screen instructions. + + + +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: causely-example + namespace: odigos-system +spec: + data: + CAUSELY_URL: + destinationName: causely + signals: + - TRACES + - METRICS + type: causely +``` \ No newline at end of file diff --git a/docs/backends/coralogix.mdx b/docs/backends/coralogix.mdx index 194f7f789..a51527b7a 100644 --- a/docs/backends/coralogix.mdx +++ b/docs/backends/coralogix.mdx @@ -16,4 +16,63 @@ Follow the [Domain instructions](https://coralogix.com/docs/coralogix-domain/) t ### Application and Subsystem Names -You can configure the application and subsystem names for your Coralogix account. Follow the [Application and Subsystem Names guide](https://coralogix.com/docs/application-and-subsystem-names/) to learn more. \ No newline at end of file +You can configure the application and subsystem names for your Coralogix account. Follow the [Application and Subsystem Names guide](https://coralogix.com/docs/application-and-subsystem-names/) to learn more. + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Coralogix` and follow the on-screen instructions. + + + +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: coralogix-example + namespace: odigos-system +spec: + data: + CORALOGIX_APPLICATION_NAME: + CORALOGIX_DOMAIN: + CORALOGIX_SUBSYSTEM_NAME: + destinationName: coralogix + secretRef: + name: coralogix-secret + signals: + - TRACES + - METRICS + - LOGS + type: coralogix + +--- +apiVersion: v1 +data: + CORALOGIX_PRIVATE_KEY: +kind: Secret +metadata: + name: coralogix-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/datadog.mdx b/docs/backends/datadog.mdx index 8fb9b6062..c228a5a37 100644 --- a/docs/backends/datadog.mdx +++ b/docs/backends/datadog.mdx @@ -23,3 +23,61 @@ Enter the following account details in Odigos UI: - **Name**: Choose a name for this backend (e.g. Datadog) - **Site** - The datadog site you are using (the url of the datadog site you are using). [click here for more details](https://docs.datadoghq.com/getting_started/site/). - **API Key**: The API key you obtained from Datadog + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Datadog` and follow the on-screen instructions. + + + +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: datadog-example + namespace: odigos-system +spec: + data: + DATADOG_SITE: + destinationName: datadog + secretRef: + name: datadog-secret + signals: + - TRACES + - METRICS + - LOGS + type: datadog + +--- +apiVersion: v1 +data: + DATADOG_API_KEY: +kind: Secret +metadata: + name: datadog-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/dynatrace.mdx b/docs/backends/dynatrace.mdx index 284a3cad3..12cae562e 100644 --- a/docs/backends/dynatrace.mdx +++ b/docs/backends/dynatrace.mdx @@ -12,4 +12,60 @@ On the left sidebar click on `Apps`, then under `Manage` select `Access Tokens`: Make sure to add the required capabilities for the access tokens (e.g `Ingest OpenTelemetry traces` for traces). -The URL is usually of the form `https://{your-environment-id}.live.dynatrace.com` [click her for more details](https://docs.dynatrace.com/docs/extend-dynatrace/opentelemetry/getting-started/otlp-export) \ No newline at end of file +The URL is usually of the form `https://{your-environment-id}.live.dynatrace.com` [click her for more details](https://docs.dynatrace.com/docs/extend-dynatrace/opentelemetry/getting-started/otlp-export) + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Dynatrace` and follow the on-screen instructions. + + + +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: dynatrace-example + namespace: odigos-system +spec: + data: + DYNATRACE_URL: + destinationName: dynatrace + secretRef: + name: dynatrace-secret + signals: + - TRACES + - METRICS + - LOGS + type: dynatrace + +--- +apiVersion: v1 +data: + DYNATRACE_API_TOKEN: +kind: Secret +metadata: + name: dynatrace-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/elasticsearch.mdx b/docs/backends/elasticsearch.mdx index 88243b4cb..0851088a9 100644 --- a/docs/backends/elasticsearch.mdx +++ b/docs/backends/elasticsearch.mdx @@ -25,3 +25,67 @@ If empty, the system root CA will be used to validate the server certificate. ## Authentication If your Elasticsearch cluster requires authentication, you can provide the username and password. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Elasticseach` and follow the on-screen instructions. + + + +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: elasticsearch-example + namespace: odigos-system +spec: + data: + ELASTICSEARCH_URL: + # ES_TRACES_INDEX: + # ES_LOGS_INDEX: + # ELASTICSEARCH_USERNAME: + # ELASTICSEARCH_CA_PEM: + # Note: The commented fields above are optional. + destinationName: elasticsearch + # Uncomment the secretRef below if you are using the optional Secret. + # secretRef: + # name: elasticsearch-secret + + signals: + - TRACES + - LOGS + type: elasticsearch + +--- +# The following Secret is optional. Uncomment the entire block if you need to use it. +# apiVersion: v1 +# data: +# ELASTICSEARCH_PASSWORD: +# kind: Secret +# metadata: +# name: elasticsearch-secret +# namespace: odigos-system +# type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/googlecloud.mdx b/docs/backends/googlecloud.mdx index 6982e0976..9bab4b224 100644 --- a/docs/backends/googlecloud.mdx +++ b/docs/backends/googlecloud.mdx @@ -4,3 +4,44 @@ title: "Google Cloud Monitoring" Odigos currently supports Standard (non-Autopilot) GKE clusters. Exporting into Google Cloud does not require credentials as the Kubernetes nodes are permissioned to access the Google Cloud Monitoring APIs by default. + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Google Cloud Monitoring` and follow the on-screen instructions. + + +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: googlecloud-example + namespace: odigos-system +spec: + data: {} + destinationName: googlecloud + signals: + - TRACES + - LOGS + type: googlecloud +``` \ No newline at end of file diff --git a/docs/backends/grafanacloudloki.mdx b/docs/backends/grafanacloudloki.mdx index 07b22e3a6..1fca91faf 100644 --- a/docs/backends/grafanacloudloki.mdx +++ b/docs/backends/grafanacloudloki.mdx @@ -35,3 +35,60 @@ Make sure your token scope includes "logs:write" scope. ### Loki Labels Read about setting grafana loki labels in the [Loki](/backends/loki#loki-labels) page. + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Grafana Cloud Loki` and follow the on-screen instructions. + + + +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: grafanacloudloki-example + namespace: odigos-system +spec: + data: + GRAFANA_CLOUD_LOKI_ENDPOINT: + # GRAFANA_CLOUD_LOKI_LABELS: + # Note: The commented fields above are optional. + GRAFANA_CLOUD_LOKI_USERNAME: + destinationName: grafanacloudloki + secretRef: + name: grafanacloudloki-secret + signals: + - LOGS + type: grafanacloudloki + +--- +apiVersion: v1 +data: + GRAFANA_CLOUD_LOKI_PASSWORD: +kind: Secret +metadata: + name: grafanacloudloki-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/grafanacloudprometheus.mdx b/docs/backends/grafanacloudprometheus.mdx index bd09ace2d..56a97e96b 100644 --- a/docs/backends/grafanacloudprometheus.mdx +++ b/docs/backends/grafanacloudprometheus.mdx @@ -42,3 +42,62 @@ you can set the resource attribute names in the `Resource Attributes as Labels` ### Cluster Static Labels You can set static labels for each metric data pointsent exported to Grafana Cloud Prometheus from the cluster by setting the `External Labels` configuration with lable keys and values. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Grafana Cloud Prometheus` and follow the on-screen instructions. + + + +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: grafanacloudprometheus-example + namespace: odigos-system +spec: + data: + GRAFANA_CLOUD_PROMETHEUS_RW_ENDPOINT: + # PROMETHEUS_RESOURCE_ATTRIBUTES_LABELS: + # PROMETHEUS_RESOURCE_EXTERNAL_LABELS: + # Note: The commented fields above are optional. + GRAFANA_CLOUD_PROMETHEUS_USERNAME: + destinationName: grafanacloudprometheus + secretRef: + name: grafanacloudprometheus-secret + signals: + - METRICS + type: grafanacloudprometheus + +--- +apiVersion: v1 +data: + GRAFANA_CLOUD_PROMETHEUS_PASSWORD: +kind: Secret +metadata: + name: grafanacloudprometheus-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/grafanacloudtempo.mdx b/docs/backends/grafanacloudtempo.mdx index a003e74ec..8a7596b17 100644 --- a/docs/backends/grafanacloudtempo.mdx +++ b/docs/backends/grafanacloudtempo.mdx @@ -29,3 +29,59 @@ The username is a number. - **Password** - This field is refered to as "password" or "Grafana.com API Token" in the Grafana Cloud UI. You can manage tokens in your "Account Settings" page under the "SECURITY" section in the "Access Policies" page. Make sure your token scope includes "traces:write" scope. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Grafana Cloud Tempo` and follow the on-screen instructions. + + + +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: grafanacloudtempo-example + namespace: odigos-system +spec: + data: + GRAFANA_CLOUD_TEMPO_ENDPOINT: + GRAFANA_CLOUD_TEMPO_USERNAME: + destinationName: grafanacloudtempo + secretRef: + name: grafanacloudtempo-secret + signals: + - TRACES + type: grafanacloudtempo + +--- +apiVersion: v1 +data: + GRAFANA_CLOUD_TEMPO_PASSWORD: +kind: Secret +metadata: + name: grafanacloudtempo-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/honeycomb.mdx b/docs/backends/honeycomb.mdx index 44b3f4616..06412f506 100644 --- a/docs/backends/honeycomb.mdx +++ b/docs/backends/honeycomb.mdx @@ -20,3 +20,60 @@ Make sure the API Key is permitted to **Send Events** to Honeycomb. - **API Key**: Insert the API Key from the previous step in the **API Key** field. - **Endpoint** - Choose one of the endpoints in the dropdown (api.honeycomb.io is the US instance, api.eu1.honeycomb.io is EU instance) + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Honeycomb` and follow the on-screen instructions. + + + +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: honeycomb-example + namespace: odigos-system +spec: + data: + HONEYCOMB_ENDPOINT: + destinationName: honeycomb + secretRef: + name: honeycomb-secret + signals: + - TRACES + - METRICS + - LOGS + type: honeycomb + +--- +apiVersion: v1 +data: + HONEYCOMB_API_KEY: +kind: Secret +metadata: + name: honeycomb-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/jaeger.mdx b/docs/backends/jaeger.mdx index de28d1c6c..8f104a7ff 100644 --- a/docs/backends/jaeger.mdx +++ b/docs/backends/jaeger.mdx @@ -10,3 +10,46 @@ This allows to create a new Jaeger backend by simply specifying the Jaeger OTLP The endpoint format is `host:port`. - host is required - port is optional and defaults to the default OTLP gRPC port `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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Jaeger` and follow the on-screen instructions. + + + +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: jaeger-example + namespace: odigos-system +spec: + data: + JAEGER_URL: + destinationName: jaeger + signals: + - TRACES + type: jaeger +``` \ No newline at end of file diff --git a/docs/backends/lightstep.mdx b/docs/backends/lightstep.mdx index b80125f96..775189e7b 100644 --- a/docs/backends/lightstep.mdx +++ b/docs/backends/lightstep.mdx @@ -9,3 +9,57 @@ Go to **⚙️ > Access Tokens** and click **Create New** ## Configuring Lightstep Backend Add a new backend with the access token you just created. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Lightstep` and follow the on-screen instructions. + + + +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: lightstep-example + namespace: odigos-system +spec: + data: {} + destinationName: lightstep + secretRef: + name: lightstep-secret + signals: + - TRACES + type: lightstep + +--- +apiVersion: v1 +data: + LIGHTSTEP_ACCESS_TOKEN: +kind: Secret +metadata: + name: lightstep-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/logzio.mdx b/docs/backends/logzio.mdx index d154dfc7f..13f58478c 100644 --- a/docs/backends/logzio.mdx +++ b/docs/backends/logzio.mdx @@ -21,3 +21,66 @@ Create a new logz.io backend with the following configuration: - **Name**: A name for the backend. - **Region**: The region of your Logz.io account. - **Tracing/Metrics/Logs Token**: The token you obtained from Logz.io. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Logz.io` and follow the on-screen instructions. + + + +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: logzio-example + namespace: odigos-system +spec: + data: + LOGZIO_REGION: + destinationName: logzio + # Uncomment the secretRef below if you are using the optional Secret. + # secretRef: + # name: logzio-secret + + signals: + - TRACES + - METRICS + - LOGS + type: logzio + +--- +# The following Secret is optional. Uncomment the entire block if you need to use it. +# apiVersion: v1 +# data: +# LOGZIO_LOGS_TOKEN: +# LOGZIO_METRICS_TOKEN: +# LOGZIO_TRACING_TOKEN: +# kind: Secret +# metadata: +# name: logzio-secret +# namespace: odigos-system +# type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/loki.mdx b/docs/backends/loki.mdx index 7e2f8ac14..f72f5f868 100644 --- a/docs/backends/loki.mdx +++ b/docs/backends/loki.mdx @@ -32,3 +32,47 @@ You can configure your grafana cloud loki labels in the `Labels` multi-input con - [Use only low cardinality values](https://grafana.com/docs/loki/latest/get-started/labels/#cardinality). e.g. use only opentelemetry attributes for which you expect a small number of unique values like `http.response.status_code` but **not** `network.peer.address`. - If the label is not present in a log record, it will be ignored. - The default labels if not set are: `k8s.container.name, k8s.pod.name, k8s.namespace.name` + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Loki` and follow the on-screen instructions. + + + +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: loki-example + namespace: odigos-system +spec: + data: + LOKI_LABELS: + LOKI_URL: + destinationName: loki + signals: + - LOGS + type: loki +``` \ No newline at end of file diff --git a/docs/backends/newrelic.mdx b/docs/backends/newrelic.mdx index c8ed8288e..dcd8d129b 100644 --- a/docs/backends/newrelic.mdx +++ b/docs/backends/newrelic.mdx @@ -19,3 +19,60 @@ For key type select **Ingest - License**, give a name to your key and press **Cr ## Configuring New Relic Backend In the New Relic backend configuration page, enter the **License Key** from previous step and name the backend. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `New Relic` and follow the on-screen instructions. + + + +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: newrelic-example + namespace: odigos-system +spec: + data: + NEWRELIC_ENDPOINT: + destinationName: newrelic + secretRef: + name: newrelic-secret + signals: + - TRACES + - METRICS + - LOGS + type: newrelic + +--- +apiVersion: v1 +data: + NEWRELIC_API_KEY: +kind: Secret +metadata: + name: newrelic-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/opsverse.mdx b/docs/backends/opsverse.mdx index f18897fe3..a67b63685 100644 --- a/docs/backends/opsverse.mdx +++ b/docs/backends/opsverse.mdx @@ -11,3 +11,63 @@ Create a new OpsVerse backend with the following details: - **Logs Endpoint** (if logs selected) - **Metrics Endpoint** (if metrics selected) - **Traces (OTLP) Endpoint** (if traces selected) + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `OpsVerse` and follow the on-screen instructions. + + + +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: opsverse-example + namespace: odigos-system +spec: + data: + OPSVERSE_LOGS_URL: + OPSVERSE_METRICS_URL: + OPSVERSE_TRACES_URL: + OPSVERSE_USERNAME: + destinationName: opsverse + secretRef: + name: opsverse-secret + signals: + - TRACES + - METRICS + - LOGS + type: opsverse + +--- +apiVersion: v1 +data: + OPSVERSE_PASSWORD: +kind: Secret +metadata: + name: opsverse-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/otlp.mdx b/docs/backends/otlp.mdx index c897cfaeb..9b7367ac6 100644 --- a/docs/backends/otlp.mdx +++ b/docs/backends/otlp.mdx @@ -19,3 +19,48 @@ The only required configuration is the endpoint of the OTLP gRPC server. Note th The endpoint format is `host:port`. - host is required - port is optional and defaults to the default OTLP gRPC port `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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `OTLP gRPC` and follow the on-screen instructions. + + + +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: otlp-example + namespace: odigos-system +spec: + data: + OTLP_GRPC_ENDPOINT: + destinationName: otlp + signals: + - TRACES + - METRICS + - LOGS + type: otlp +``` \ No newline at end of file diff --git a/docs/backends/otlphttp.mdx b/docs/backends/otlphttp.mdx index f837ea6c2..da392a9d2 100644 --- a/docs/backends/otlphttp.mdx +++ b/docs/backends/otlphttp.mdx @@ -26,3 +26,64 @@ The endpoint format is `http://host:port`. This section is relevant if your OTLP http endpoint requires [basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) (username and password). To configure basic authentication, use the optional config options `Basic Auth Username` and `Basic Auth Password`. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `OTLP http` and follow the on-screen instructions. + + +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: otlphttp-example + namespace: odigos-system +spec: + data: + OTLP_HTTP_ENDPOINT: + # OTLP_HTTP_BASIC_AUTH_USERNAME: + # Note: The commented fields above are optional. + destinationName: otlphttp + # Uncomment the secretRef below if you are using the optional Secret. + # secretRef: + # name: otlphttp-secret + + signals: + - TRACES + - METRICS + - LOGS + type: otlphttp + +--- +# The following Secret is optional. Uncomment the entire block if you need to use it. +# apiVersion: v1 +# data: +# OTLP_HTTP_BASIC_AUTH_PASSWORD: +# kind: Secret +# metadata: +# name: otlphttp-secret +# namespace: odigos-system +# type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/prometheus.mdx b/docs/backends/prometheus.mdx index 82136cdfa..9c9136989 100644 --- a/docs/backends/prometheus.mdx +++ b/docs/backends/prometheus.mdx @@ -11,3 +11,46 @@ In order to enable remote write in Prometheus, set [the following feature flag]( Once the remote write API is enabled, you can configure the Prometheus backend in the Odigos UI. Enter the URL of the Prometheus server and give a name to the backend. + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Prometheus` and follow the on-screen instructions. + + + +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: prometheus-example + namespace: odigos-system +spec: + data: + PROMETHEUS_REMOTEWRITE_URL: + destinationName: prometheus + signals: + - METRICS + type: prometheus +``` \ No newline at end of file diff --git a/docs/backends/qryn.mdx b/docs/backends/qryn.mdx index 41af64f7a..f71c57d38 100644 --- a/docs/backends/qryn.mdx +++ b/docs/backends/qryn.mdx @@ -9,3 +9,61 @@ Fill in the following information using your relevant qryn details: - **Tempo URL**: https://qryn.host/tempo/api/push - **Prometheus URL**: https://qryn.host/api/prom/remote/write - **Loki URL**: https://qryn.host/loki/api/v1/push + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Qryn` and follow the on-screen instructions. + + + +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: qryn-example + namespace: odigos-system +spec: + data: + QRYN_URL: + destinationName: qryn + secretRef: + name: qryn-secret + signals: + - TRACES + - METRICS + - LOGS + type: qryn + +--- +apiVersion: v1 +data: + QRYN_API_KEY: + QRYN_API_SECRET: +kind: Secret +metadata: + name: qryn-secret + namespace: odigos-system +type: Opaque +``` \ No newline at end of file diff --git a/docs/backends/quickwit.mdx b/docs/backends/quickwit.mdx index 9bfe1494c..edc27290a 100644 --- a/docs/backends/quickwit.mdx +++ b/docs/backends/quickwit.mdx @@ -8,3 +8,47 @@ The only required field is the Quickwit endpoint which is supporting OTLP grpc ( This endpoint must be a valid URL without scheme for your Quickwit cluster, i.e: `{quickwit_host}:7281` You'll find more details here: https://quickwit.io/docs/log-management/otel-service + + +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `Quickwit` and follow the on-screen instructions. + + + +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: quickwit-example + namespace: odigos-system +spec: + data: + QUICKWIT_URL: + destinationName: quickwit + signals: + - TRACES + - LOGS + type: quickwit +``` \ No newline at end of file diff --git a/docs/backends/awss3.mdx b/docs/backends/s3.mdx similarity index 82% rename from docs/backends/awss3.mdx rename to docs/backends/s3.mdx index dcde4c9c8..ccf0b7b32 100644 --- a/docs/backends/awss3.mdx +++ b/docs/backends/s3.mdx @@ -100,3 +100,49 @@ For example, the following JSON string represents a single span in `otlp_json` f ```json {"resourceSpans":[{"resource":{"attributes":[{"key":"telemetry.sdk.language","value":{"stringValue":"python"}},{"key":"telemetry.sdk.name","value":{"stringValue":"opentelemetry"}},{"key":"telemetry.sdk.version","value":{"stringValue":"1.19.0"}},{"key":"service.name","value":{"stringValue":"inventory"}},{"key":"odigos.device","value":{"stringValue":"python"}},{"key":"telemetry.auto.version","value":{"stringValue":"0.40b0"}},{"key":"k8s.namespace.name","value":{"stringValue":"default"}},{"key":"k8s.deployment.name","value":{"stringValue":"inventory"}},{"key":"k8s.pod.name","value":{"stringValue":"inventory-7b87f7566c-2d6fq"}},{"key":"container.name","value":{"stringValue":"inventory"}},{"key":"k8s.node.name","value":{"stringValue":"ip-192-168-4-178.ec2.internal"}}]},"scopeSpans":[{"scope":{"name":"opentelemetry.instrumentation.flask","version":"0.40b0"},"spans":[{"traceId":"9ee5a0de5802d3f1e7f93440f892509c","spanId":"88a4bfb5bfcaf297","parentSpanId":"f9d7bb9e9243df06","name":"/buy","kind":2,"startTimeUnixNano":"1707600957298456744","endTimeUnixNano":"1707600958303042894","attributes":[{"key":"http.method","value":{"stringValue":"POST"}},{"key":"http.server_name","value":{"stringValue":"0.0.0.0"}},{"key":"http.scheme","value":{"stringValue":"http"}},{"key":"net.host.port","value":{"intValue":"8080"}},{"key":"http.host","value":{"stringValue":"inventory:8080"}},{"key":"http.target","value":{"stringValue":"/buy?id=10"}},{"key":"net.peer.ip","value":{"stringValue":"192.168.13.194"}},{"key":"http.user_agent","value":{"stringValue":"Java/17.0.9"}},{"key":"net.peer.port","value":{"intValue":"49420"}},{"key":"http.flavor","value":{"stringValue":"1.1"}},{"key":"http.route","value":{"stringValue":"/buy"}},{"key":"http.status_code","value":{"intValue":"200"}}],"status":{}}]}]}]} ``` +## 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** + To add a destination via the UI, follow these steps: + - Use the Odigos CLI to access the UI: [Odigos UI](https://docs.odigos.io/cli/odigos_ui) + ```bash + odigos ui + ``` +- In the left sidebar, navigate to the `Destination` page. + +- Click `Add New Destination` + +- Select `AWS S3` and follow the on-screen instructions. + + + +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: s3-example + namespace: odigos-system +spec: + data: + S3_BUCKET: + S3_MARSHALER: + S3_PARTITION: