diff --git a/.chloggen/ctxprofilecommon.yaml b/.chloggen/ctxprofilecommon.yaml new file mode 100644 index 0000000000000..38454095a2485 --- /dev/null +++ b/.chloggen/ctxprofilecommon.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: pkg/ottl + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Create ctxprofilecommon for common attribute handling in various profiling sub messages + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [42107] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] diff --git a/.chloggen/dylan_azure-event-hubs-default-consumer-group.yaml b/.chloggen/dylan_azure-event-hubs-default-consumer-group.yaml new file mode 100644 index 0000000000000..70f9af3d2ba77 --- /dev/null +++ b/.chloggen/dylan_azure-event-hubs-default-consumer-group.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: azureeventhubreceiver + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Use `$Default` as the default consumer group with the new azeventhubs SDK + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [43049] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.chloggen/enhancement_send-log-level.yaml b/.chloggen/enhancement_send-log-level.yaml new file mode 100644 index 0000000000000..5f5155a45a426 --- /dev/null +++ b/.chloggen/enhancement_send-log-level.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: "enhancement" + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: "logicmonitorexporter" + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: "Send log level along with log data" + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [41923] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [api] diff --git a/.chloggen/feat_42706_wg.yaml b/.chloggen/feat_42706_wg.yaml new file mode 100644 index 0000000000000..fa11644f36644 --- /dev/null +++ b/.chloggen/feat_42706_wg.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: "enhancement" + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: "receiver/k8sobjectsreceiver" + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: "Switch to standby mode when leader lease is lost instead of shutdown" + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [42706] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.chloggen/feat_rename-awslogsencodingextension-format-names.yaml b/.chloggen/feat_rename-awslogsencodingextension-format-names.yaml new file mode 100644 index 0000000000000..df19d6fc658c2 --- /dev/null +++ b/.chloggen/feat_rename-awslogsencodingextension-format-names.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: deprecation + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: awslogsencodingextension + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Rename awslogsencodingextension format values to shorter, more concise identifiers. Old format values are still supported until v0.138.0. + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [42901] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [] diff --git a/.chloggen/fix-42462.yaml b/.chloggen/fix-42462.yaml new file mode 100644 index 0000000000000..395a9cd6d8bda --- /dev/null +++ b/.chloggen/fix-42462.yaml @@ -0,0 +1,29 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: breaking + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: spanmetricsconnector + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Change default duration metrics unit from `ms` to `s` + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [42462] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: | + This change introduces a breaking change, which is now guarded by the feature gate `connector.spanmetrics.useSecondAsDefaultMetricsUnit`. + Currently, the feature gate is disabled by default, so the unit will remain `ms`. After one release cycle, the unit will switch to `s` and the feature gate will also be enabled by default. + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.chloggen/fix-scraper-url.yaml b/.chloggen/fix-scraper-url.yaml new file mode 100644 index 0000000000000..6d92c9910315d --- /dev/null +++ b/.chloggen/fix-scraper-url.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: 'bug_fix' + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: 'jmxreceiver' + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Fix the jmx-scraper hash for version 1.49.0 + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [121332] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: ['user'] diff --git a/.chloggen/fix_panic_event_filter.yaml b/.chloggen/fix_panic_event_filter.yaml new file mode 100644 index 0000000000000..97e32d2e0b9f9 --- /dev/null +++ b/.chloggen/fix_panic_event_filter.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: "bug_fix" + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: "receiver/k8seventsreceiver" + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: "Prevent potential panic in the events receiver by safely checking that informer objects are *corev1.Event before handling them." + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [43014] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.chloggen/k8satributes-delete-queue.yaml b/.chloggen/k8satributes-delete-queue.yaml new file mode 100644 index 0000000000000..405a3c2a1e22e --- /dev/null +++ b/.chloggen/k8satributes-delete-queue.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: processor/k8sattributes + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: "Use podUID instead podName to determine which pods should be deleted from cache" + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [42978] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [] diff --git a/.chloggen/postgresql_query_metric_value_bug_fix.yaml b/.chloggen/postgresql_query_metric_value_bug_fix.yaml new file mode 100644 index 0000000000000..c3a9df44a7cce --- /dev/null +++ b/.chloggen/postgresql_query_metric_value_bug_fix.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: postgresqlreceiver + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Fix for inflated metric values in query metrics collection + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [43071] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.chloggen/prometheus-skip-namespace-build-if-missing.yaml b/.chloggen/prometheus-skip-namespace-build-if-missing.yaml new file mode 100644 index 0000000000000..8fe8b3f5e0070 --- /dev/null +++ b/.chloggen/prometheus-skip-namespace-build-if-missing.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: bug_fix + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: prometheusexporter + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Fix 'failed to build namespace' logged as error when namespace is not configured + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [43015] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.chloggen/remove-deprecated-hectootelattrs.yaml b/.chloggen/remove-deprecated-hectootelattrs.yaml new file mode 100644 index 0000000000000..32c282a3398a6 --- /dev/null +++ b/.chloggen/remove-deprecated-hectootelattrs.yaml @@ -0,0 +1,13 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: breaking + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: splunkhecexporter + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Removed deprecated `HecToOtelAttrs` configuration from splunkhecexporter + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [43005] diff --git a/.chloggen/service_instance_id_for_oracledbreceiver.yaml b/.chloggen/service_instance_id_for_oracledbreceiver.yaml new file mode 100644 index 0000000000000..c760329dd34aa --- /dev/null +++ b/.chloggen/service_instance_id_for_oracledbreceiver.yaml @@ -0,0 +1,29 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: enhancement + +# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver) +component: oracledbreceiver + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: Add `service.instance.id` resource attribute + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [42402] + +# (Optional) One or more lines of additional information to render under the primary note. +# These lines will be padded with 2 spaces and then inserted directly into the document. +# Use pipe (|) for multiline entries. +subtext: | + The `service.instance.id` resource attribute is added in the format `:/` to uniquely identify + Oracle DB hosts. This resource attribute is enabled by default for metrics and logs. + +# If your change doesn't affect end users or the exported elements of any package, +# you should instead start your pull request title with [chore] or use the "Skip Changelog" label. +# Optional: The change log or logs in which this entry should be included. +# e.g. '[user]' or '[user, api]' +# Include 'user' if the change is relevant to end users. +# Include 'api' if there is a change to a library API. +# Default: '[user]' +change_logs: [user] diff --git a/.github/workflows/auto-update-jmx-component.yml b/.github/workflows/auto-update-jmx-component.yml index 508f2e458be4f..ce85eab40c396 100644 --- a/.github/workflows/auto-update-jmx-component.yml +++ b/.github/workflows/auto-update-jmx-component.yml @@ -194,7 +194,7 @@ jobs: exit 1 fi - hash=$(curl -L "https://repo1.maven.org/maven2/io/opentelemetry/contrib/opentelemetry-jmx-scraper/${VERSION//-alpha/}/opentelemetry-jmx-scraper-$VERSION.jar" \ + hash=$(curl -L "https://github.com/open-telemetry/opentelemetry-java-contrib/releases/download/v${VERSION//-alpha/}/opentelemetry-jmx-scraper.jar" \ | sha256sum \ | cut -d ' ' -f 1) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 811db0945f6af..6f03cfe7b60c0 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -246,7 +246,7 @@ jobs: if: steps.go-setup.outputs.cache-hit != 'true' run: make install-tools - name: Cache Test Build - uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4 with: path: ~/.cache/go-build key: go-test-build-${{ runner.os }}-${{ matrix.go-version }}-${{ matrix.runner }}-${{ hashFiles('**/go.sum') }} @@ -575,7 +575,7 @@ jobs: docker run otel/opentelemetry-collector-contrib-dev:"$GITHUB_SHA" --version docker run otel/opentelemetry-collector-contrib-dev:latest --version - name: Login to Docker Hub - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 696f80b01e8df..427c0f23be1a8 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -32,7 +32,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@192325c86100d080feab897ff886c34abd4c83a3 # v3 + uses: github/codeql-action/init@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3 with: languages: go @@ -42,5 +42,5 @@ jobs: make otelcontribcol - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@192325c86100d080feab897ff886c34abd4c83a3 # v3 + uses: github/codeql-action/analyze@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3 timeout-minutes: 60 diff --git a/.github/workflows/golden.yml b/.github/workflows/golden.yml index bc069680fba21..5cbddf4da3156 100644 --- a/.github/workflows/golden.yml +++ b/.github/workflows/golden.yml @@ -75,7 +75,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3 - name: Login to GitHub Container Registry - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -118,7 +118,7 @@ jobs: id: github_tag run: ./.github/workflows/scripts/set_release_tag.sh - name: Login to GitHub Container Registry - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3 with: registry: ghcr.io username: ${{ github.repository_owner }} diff --git a/.github/workflows/scoped-test.yaml b/.github/workflows/scoped-test.yaml index 3cdc5218483fc..47b243b8bd919 100644 --- a/.github/workflows/scoped-test.yaml +++ b/.github/workflows/scoped-test.yaml @@ -78,13 +78,8 @@ jobs: if: steps.go-setup.outputs.cache-hit != 'true' run: make install-tools - - name: Build gotestsum on Windows - if: runner.os == 'Windows' - shell: pwsh # Explicitly set the shell to avoid actionlint treating this an attempt to escape single quote - run: make "$(${PWD} -replace '\\', '/')/.tools/gotestsum" - - name: Build gotestsum - if: runner.os != 'Windows' + shell: bash run: make "$PWD/.tools/gotestsum" - name: Run changed tests diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 073c58996c9f1..26db3168c3f36 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -35,7 +35,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@05b42c624433fc40578a4040d5cf5e36ddca8cde # v2.4.2 + uses: ossf/scorecard-action@4eaacf0543bb3f2c246792bd56e8cdeffafb205a # v2.4.3 with: results_file: results.sarif results_format: sarif @@ -65,6 +65,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@192325c86100d080feab897ff886c34abd4c83a3 # v3.30.3 + uses: github/codeql-action/upload-sarif@3599b3baa15b485a2e49ef411a7a4bb2452e7f93 # v3.30.5 with: sarif_file: results.sarif diff --git a/.github/workflows/telemetrygen.yml b/.github/workflows/telemetrygen.yml index ed9e3ad7de6f4..a86116955dccf 100644 --- a/.github/workflows/telemetrygen.yml +++ b/.github/workflows/telemetrygen.yml @@ -82,7 +82,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@e468171a9de216ec08956ac3ada2f0791b6bd435 # v3 - name: Login to GitHub Container Registry - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3 with: registry: ghcr.io username: ${{ github.repository_owner }} @@ -129,7 +129,7 @@ jobs: id: github_tag run: ./.github/workflows/scripts/set_release_tag.sh - name: Login to GitHub Container Registry - uses: docker/login-action@184bdaa0721073962dff0199f1fb9940f07167d1 # v3 + uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef # v3 with: registry: ghcr.io username: ${{ github.repository_owner }} diff --git a/Makefile.Common b/Makefile.Common index c31c578a0b89a..a5b814706e1ba 100644 --- a/Makefile.Common +++ b/Makefile.Common @@ -7,12 +7,6 @@ SHELL = /bin/bash # SRC_ROOT is the top of the source tree. SRC_ROOT := $(shell git rev-parse --show-toplevel) -ifeq ($(OS),Windows_NT) - # The path format of SRC_ROOT is not understood by some tools like "go generate" on Windows, normalize the PATH to avoid issues. - SRC_ROOT := $(shell cygpath -u "$(SRC_ROOT)") - # Although make with mingw64 is able to launch tools without the ".exe" extension "go generate" is not, add the extension. - TOOL_EXTENSION := .exe -endif # SRC_PARENT_DIR is the absolute path of source tree's parent directory SRC_PARENT_DIR := $(shell dirname $(SRC_ROOT)) @@ -70,10 +64,8 @@ install-tools: $(TOOLS_BIN_NAMES) $(TOOLS_BIN_DIR): mkdir -p $@ -$(TOOLS_MOD_DIR)/go.mod: - $(TOOLS_BIN_NAMES): $(TOOLS_BIN_DIR) $(TOOLS_MOD_DIR)/go.mod - cd $(TOOLS_MOD_DIR) && GOOS="" GOARCH="" $(GOCMD) build -o $@$(TOOL_EXTENSION) -trimpath $(filter %/$(notdir $@),$(TOOLS_PKG_NAMES)) + cd $(TOOLS_MOD_DIR) && GOOS="" GOARCH="" $(GOCMD) build -o $@ -trimpath $(filter %/$(notdir $@),$(TOOLS_PKG_NAMES)) ACTIONLINT := $(TOOLS_BIN_DIR)/actionlint ADDLICENSE := $(TOOLS_BIN_DIR)/addlicense diff --git a/cmd/opampsupervisor/go.mod b/cmd/opampsupervisor/go.mod index f63b23edda3a2..17454072c9d60 100644 --- a/cmd/opampsupervisor/go.mod +++ b/cmd/opampsupervisor/go.mod @@ -67,7 +67,6 @@ require ( github.com/google/go-tpm v0.9.6 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/gorilla/websocket v1.5.3 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect @@ -118,7 +117,7 @@ require ( github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/rs/cors v1.11.1 // indirect github.com/shirou/gopsutil/v4 v4.25.8 // indirect diff --git a/cmd/opampsupervisor/go.sum b/cmd/opampsupervisor/go.sum index e2b4d830fe5f4..2aa9bfd3d221b 100644 --- a/cmd/opampsupervisor/go.sum +++ b/cmd/opampsupervisor/go.sum @@ -79,8 +79,6 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= @@ -169,8 +167,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= diff --git a/connector/datadogconnector/go.mod b/connector/datadogconnector/go.mod index 2fee03c8b9b6d..cf914ad19ca8e 100644 --- a/connector/datadogconnector/go.mod +++ b/connector/datadogconnector/go.mod @@ -10,7 +10,7 @@ require ( github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/metrics v0.72.0-devel github.com/DataDog/datadog-agent/pkg/proto v0.72.0-devel github.com/DataDog/datadog-agent/pkg/trace v0.72.0-devel - github.com/DataDog/datadog-go/v5 v5.7.1 + github.com/DataDog/datadog-go/v5 v5.8.0 github.com/google/go-cmp v0.7.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/datadogexporter v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.136.0 @@ -42,7 +42,7 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/DataDog/agent-payload/v5 v5.0.165 // indirect github.com/DataDog/datadog-agent/comp/core/config v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/flare/builder v0.72.0-devel // indirect @@ -130,7 +130,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system/socket v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel // indirect - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 // indirect + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 // indirect github.com/DataDog/go-sqllexer v0.1.6 // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee // indirect @@ -139,7 +139,7 @@ require ( github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4 // indirect github.com/DataDog/zstd v1.5.7 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect github.com/antchfx/xmlquery v1.4.4 // indirect @@ -195,7 +195,6 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -248,7 +247,7 @@ require ( github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 // indirect github.com/rs/cors v1.11.1 // indirect diff --git a/connector/datadogconnector/go.sum b/connector/datadogconnector/go.sum index 4ead3c991e394..1bf010f830565 100644 --- a/connector/datadogconnector/go.sum +++ b/connector/datadogconnector/go.sum @@ -4,8 +4,8 @@ cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= @@ -229,10 +229,10 @@ github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel h1:R7dsoerew1nyR github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel/go.mod h1:X8gUH1fdE09W75BmaRzXv9/BTxTe7q7jES5jTaSyYP0= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= -github.com/DataDog/datadog-go/v5 v5.7.1 h1:dNhEwKaO3LJhGYKajl2DjobArfa5R9YF72z3Dy+PH3k= -github.com/DataDog/datadog-go/v5 v5.7.1/go.mod h1:CA9Ih6tb3jtxk+ps1xvTnxmhjr7ldE8TiwrZyrm31ss= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-go/v5 v5.8.0 h1:pKZtux5CfqkqGYGvKCM3wV5i8sYAzcddK7nkrChUtxo= +github.com/DataDog/datadog-go/v5 v5.8.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.1.6 h1:skEXpWEVCpeZFIiydoIa2f2rf+ymNpjiIMqpW4w3YAk= github.com/DataDog/go-sqllexer v0.1.6/go.mod h1:GGpo1h9/BVSN+6NJKaEcJ9Jn44Hqc63Rakeb+24Mjgo= github.com/DataDog/go-tuf v1.1.1-0.5.2 h1:YWvghV4ZvrQsPcUw8IOUMSDpqc3W5ruOIC+KJxPknv0= @@ -249,8 +249,8 @@ github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= @@ -575,8 +575,8 @@ github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb h1:PGufWXXDq9yaev6xX1YQauaO1MV90e6Mpoq1I7Lz/VM= github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= -github.com/hetznercloud/hcloud-go/v2 v2.24.0 h1:57YlEQOc9QperCGck+iX4MqCrwEsznEdK7bPrsdAgOQ= -github.com/hetznercloud/hcloud-go/v2 v2.24.0/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= +github.com/hetznercloud/hcloud-go/v2 v2.25.1 h1:ib86acotlvgUSnKfFG5FJl0VFeYKe/Ht8nmikdUp+po= +github.com/hetznercloud/hcloud-go/v2 v2.25.1/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -752,8 +752,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= 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= diff --git a/connector/spanmetricsconnector/README.md b/connector/spanmetricsconnector/README.md index 32cb665db33dd..2da51fcbf12e8 100644 --- a/connector/spanmetricsconnector/README.md +++ b/connector/spanmetricsconnector/README.md @@ -23,6 +23,11 @@ [Stability Level]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#stability-levels +⚠️ Breaking Change Warning: +The default duration metrics unit will change from `ms` to `s` to adhere to the OpenTelemetry semantic conventions and a feature gate `connector.spanmetrics.useSecondAsDefaultMetricsUnit` is also added. + +Currently, the feature gate is disabled by default, so the unit will remain `ms`. After one release cycle, the unit will switch to `s` and the feature gate will also be enabled by default. + ## Overview Aggregates Request, Error and Duration (R.E.D) OpenTelemetry metrics from span data. diff --git a/connector/spanmetricsconnector/config_test.go b/connector/spanmetricsconnector/config_test.go index e1e5ae164cbb6..75bc73f323ed6 100644 --- a/connector/spanmetricsconnector/config_test.go +++ b/connector/spanmetricsconnector/config_test.go @@ -16,6 +16,7 @@ import ( "go.opentelemetry.io/collector/config/configoptional" "go.opentelemetry.io/collector/confmap/confmaptest" "go.opentelemetry.io/collector/confmap/xconfmap" + "go.opentelemetry.io/collector/featuregate" "go.opentelemetry.io/collector/pdata/pmetric" "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector/internal/metadata" @@ -25,6 +26,7 @@ import ( func TestLoadConfig(t *testing.T) { t.Parallel() + require.NoError(t, featuregate.GlobalRegistry().Set(useSecondAsDefaultMetricsUnit.ID(), true)) cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) require.NoError(t, err) @@ -87,7 +89,7 @@ func TestLoadConfig(t *testing.T) { MaxPerDataPoint: defaultMaxPerDatapoint, }, Histogram: HistogramConfig{ - Unit: metrics.Milliseconds, + Unit: metrics.Seconds, Exponential: configoptional.Some(ExponentialHistogramConfig{ MaxSize: 10, }), diff --git a/connector/spanmetricsconnector/connector.go b/connector/spanmetricsconnector/connector.go index 26ecc414e2b68..0f6fa6ef564ab 100644 --- a/connector/spanmetricsconnector/connector.go +++ b/connector/spanmetricsconnector/connector.go @@ -43,7 +43,7 @@ const ( metricNameCalls = "calls" metricNameEvents = "events" - defaultUnit = metrics.Milliseconds + defaultUnit = metrics.Seconds // https://github.com/open-telemetry/opentelemetry-go/blob/3ae002c3caf3e44387f0554dfcbbde2c5aab7909/sdk/metric/internal/aggregate/limit.go#L11C36-L11C50 overflowKey = "otel.metric.overflow" diff --git a/connector/spanmetricsconnector/connector_test.go b/connector/spanmetricsconnector/connector_test.go index 325b50090fe94..9aff73a5bf698 100644 --- a/connector/spanmetricsconnector/connector_test.go +++ b/connector/spanmetricsconnector/connector_test.go @@ -50,7 +50,7 @@ const ( resourceMetricsCacheSize = 5 sampleRegion = "us-east-1" - sampleDuration = float64(11) + sampleDuration = 11 * time.Millisecond instanceID = "0044953a-2946-449f-a5c8-2971f2a63928" ) @@ -231,7 +231,7 @@ func verifyExplicitHistogramDataPoints(tb testing.TB, dps pmetric.HistogramDataP dp := dps.At(dpi) assert.Equal( tb, - sampleDuration*float64(numCumulativeConsumptions), + sampleDuration.Seconds()*float64(numCumulativeConsumptions), dp.Sum(), "Should be a 11ms duration measurement, multiplied by the number of stateful accumulations.") assert.NotZero(tb, dp.Timestamp(), "Timestamp should be set") @@ -245,7 +245,7 @@ func verifyExplicitHistogramDataPoints(tb testing.TB, dps pmetric.HistogramDataP // Find the bucket index where the 11ms duration should belong in. var foundDurationIndex int for foundDurationIndex = 0; foundDurationIndex < dp.ExplicitBounds().Len(); foundDurationIndex++ { - if dp.ExplicitBounds().At(foundDurationIndex) > sampleDuration { + if dp.ExplicitBounds().At(foundDurationIndex) > sampleDuration.Seconds() { break } } @@ -270,7 +270,7 @@ func verifyExponentialHistogramDataPoints(tb testing.TB, dps pmetric.Exponential dp := dps.At(dpi) assert.Equal( tb, - sampleDuration*float64(numCumulativeConsumptions), + sampleDuration.Seconds()*float64(numCumulativeConsumptions), dp.Sum(), "Should be a 11ms duration measurement, multiplied by the number of stateful accumulations.") assert.Equal(tb, uint64(numCumulativeConsumptions), dp.Count()) @@ -325,7 +325,7 @@ func buildBadSampleTrace() ptrace.Traces { // Flipping timestamp for a bad duration span.SetEndTimestamp(pcommon.NewTimestampFromTime(now)) span.SetStartTimestamp( - pcommon.NewTimestampFromTime(now.Add(time.Duration(sampleDuration) * time.Millisecond))) + pcommon.NewTimestampFromTime(now.Add(sampleDuration))) return badTrace } @@ -394,7 +394,7 @@ func initSpan(span span, s ptrace.Span) { now := time.Now() s.SetStartTimestamp(pcommon.NewTimestampFromTime(now)) s.SetEndTimestamp( - pcommon.NewTimestampFromTime(now.Add(time.Duration(sampleDuration) * time.Millisecond))) + pcommon.NewTimestampFromTime(now.Add(sampleDuration))) s.Attributes().PutStr(stringAttrName, "stringAttrValue") s.Attributes().PutInt(intAttrName, 99) @@ -1371,7 +1371,7 @@ func TestConnector_durationsToUnits(t *testing.T) { 3 * time.Second, }, unit: defaultUnit, - want: []float64{0.000003, 0.003, 3, 3000}, + want: []float64{3e-09, 3e-06, 0.003, 3}, }, { input: []time.Duration{ diff --git a/connector/spanmetricsconnector/factory.go b/connector/spanmetricsconnector/factory.go index 6dea8ab1ef626..f46d68d88e6de 100644 --- a/connector/spanmetricsconnector/factory.go +++ b/connector/spanmetricsconnector/factory.go @@ -18,17 +18,20 @@ import ( "go.opentelemetry.io/collector/pdata/pcommon" "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector/internal/metadata" + "github.com/open-telemetry/opentelemetry-collector-contrib/connector/spanmetricsconnector/internal/metrics" ) const ( - DefaultNamespace = "traces.span.metrics" - legacyMetricNamesFeatureGateID = "connector.spanmetrics.legacyMetricNames" - includeCollectorInstanceIDGateID = "connector.spanmetrics.includeCollectorInstanceID" + DefaultNamespace = "traces.span.metrics" + legacyMetricNamesFeatureGateID = "connector.spanmetrics.legacyMetricNames" + includeCollectorInstanceIDFeatureGateID = "connector.spanmetrics.includeCollectorInstanceID" + useSecondAsDefaultMetricsUnitFeatureGateID = "connector.spanmetrics.useSecondAsDefaultMetricsUnit" ) var ( - legacyMetricNamesFeatureGate *featuregate.Gate - includeCollectorInstanceID *featuregate.Gate + legacyMetricNamesFeatureGate *featuregate.Gate + includeCollectorInstanceID *featuregate.Gate + useSecondAsDefaultMetricsUnit *featuregate.Gate ) func init() { @@ -40,11 +43,17 @@ func init() { featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33227"), ) includeCollectorInstanceID = featuregate.GlobalRegistry().MustRegister( - includeCollectorInstanceIDGateID, + includeCollectorInstanceIDFeatureGateID, featuregate.StageAlpha, featuregate.WithRegisterDescription("When enabled, connector add collector.instance.id to default dimensions."), featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/40400"), ) + useSecondAsDefaultMetricsUnit = featuregate.GlobalRegistry().MustRegister( + useSecondAsDefaultMetricsUnitFeatureGateID, + featuregate.StageAlpha, + featuregate.WithRegisterDescription("When enabled, connector use second as default unit for duration metrics."), + featuregate.WithRegisterReferenceURL("https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/42103"), + ) } // NewFactory creates a factory for the spanmetrics connector. @@ -58,10 +67,16 @@ func NewFactory() connector.Factory { func createDefaultConfig() component.Config { return &Config{ - AggregationTemporality: "AGGREGATION_TEMPORALITY_CUMULATIVE", - ResourceMetricsCacheSize: defaultResourceMetricsCacheSize, - MetricsFlushInterval: 60 * time.Second, - Histogram: HistogramConfig{Disable: false, Unit: defaultUnit}, + AggregationTemporality: "AGGREGATION_TEMPORALITY_CUMULATIVE", + ResourceMetricsCacheSize: defaultResourceMetricsCacheSize, + MetricsFlushInterval: 60 * time.Second, + Histogram: HistogramConfig{Disable: false, Unit: func() metrics.Unit { + if useSecondAsDefaultMetricsUnit.IsEnabled() { + return metrics.Seconds + } + + return metrics.Milliseconds + }()}, Namespace: DefaultNamespace, AggregationCardinalityLimit: 0, Exemplars: ExemplarsConfig{ diff --git a/exporter/datadogexporter/go.mod b/exporter/datadogexporter/go.mod index 04e413d4b7d07..5b6b2dae34d93 100644 --- a/exporter/datadogexporter/go.mod +++ b/exporter/datadogexporter/go.mod @@ -22,8 +22,8 @@ require ( github.com/DataDog/datadog-agent/pkg/trace v0.72.0-devel github.com/DataDog/datadog-agent/pkg/util/log v0.72.0-devel github.com/DataDog/datadog-agent/pkg/util/quantile v0.72.0-devel - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 - github.com/DataDog/datadog-go/v5 v5.7.1 + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 + github.com/DataDog/datadog-go/v5 v5.8.0 github.com/open-telemetry/opentelemetry-collector-contrib/connector/datadogconnector v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/datadog v0.136.0 @@ -69,7 +69,7 @@ require ( require ( cloud.google.com/go/auth v0.16.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect @@ -161,7 +161,7 @@ require ( github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4 // indirect github.com/DataDog/zstd v1.5.7 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/Showmax/go-fqdn v1.0.0 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect @@ -277,7 +277,7 @@ require ( github.com/hashicorp/nomad/api v0.0.0-20241218080744-e3ac00f30eec // indirect github.com/hashicorp/serf v0.10.1 // indirect github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb // indirect - github.com/hetznercloud/hcloud-go/v2 v2.24.0 // indirect + github.com/hetznercloud/hcloud-go/v2 v2.25.1 // indirect github.com/iancoleman/strcase v0.3.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/ionos-cloud/sdk-go/v6 v6.3.4 // indirect @@ -357,7 +357,7 @@ require ( github.com/prometheus/common v0.66.1 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 // indirect github.com/prometheus/sigv4 v0.2.0 // indirect diff --git a/exporter/datadogexporter/go.sum b/exporter/datadogexporter/go.sum index e5be1754cc856..0cb36fc3beed8 100644 --- a/exporter/datadogexporter/go.sum +++ b/exporter/datadogexporter/go.sum @@ -3,8 +3,8 @@ cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= @@ -240,11 +240,11 @@ github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel h1:R7dsoerew1nyR github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel/go.mod h1:X8gUH1fdE09W75BmaRzXv9/BTxTe7q7jES5jTaSyYP0= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go/v5 v5.7.1 h1:dNhEwKaO3LJhGYKajl2DjobArfa5R9YF72z3Dy+PH3k= -github.com/DataDog/datadog-go/v5 v5.7.1/go.mod h1:CA9Ih6tb3jtxk+ps1xvTnxmhjr7ldE8TiwrZyrm31ss= +github.com/DataDog/datadog-go/v5 v5.8.0 h1:pKZtux5CfqkqGYGvKCM3wV5i8sYAzcddK7nkrChUtxo= +github.com/DataDog/datadog-go/v5 v5.8.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.1.6 h1:skEXpWEVCpeZFIiydoIa2f2rf+ymNpjiIMqpW4w3YAk= github.com/DataDog/go-sqllexer v0.1.6/go.mod h1:GGpo1h9/BVSN+6NJKaEcJ9Jn44Hqc63Rakeb+24Mjgo= github.com/DataDog/go-tuf v1.1.1-0.5.2 h1:YWvghV4ZvrQsPcUw8IOUMSDpqc3W5ruOIC+KJxPknv0= @@ -261,8 +261,8 @@ github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= @@ -636,8 +636,8 @@ github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb h1:PGufWXXDq9yaev6xX1YQauaO1MV90e6Mpoq1I7Lz/VM= github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= -github.com/hetznercloud/hcloud-go/v2 v2.24.0 h1:57YlEQOc9QperCGck+iX4MqCrwEsznEdK7bPrsdAgOQ= -github.com/hetznercloud/hcloud-go/v2 v2.24.0/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= +github.com/hetznercloud/hcloud-go/v2 v2.25.1 h1:ib86acotlvgUSnKfFG5FJl0VFeYKe/Ht8nmikdUp+po= +github.com/hetznercloud/hcloud-go/v2 v2.25.1/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -858,8 +858,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= 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= diff --git a/exporter/datadogexporter/integrationtest/go.mod b/exporter/datadogexporter/integrationtest/go.mod index 5661f40bc0324..8c20bbaf3e070 100644 --- a/exporter/datadogexporter/integrationtest/go.mod +++ b/exporter/datadogexporter/integrationtest/go.mod @@ -38,7 +38,7 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/DataDog/datadog-agent/comp/core/config v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/flare/builder v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/flare/types v0.72.0-devel // indirect @@ -131,8 +131,8 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system/socket v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel // indirect - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 // indirect - github.com/DataDog/datadog-go/v5 v5.7.1 // indirect + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 // indirect + github.com/DataDog/datadog-go/v5 v5.8.0 // indirect github.com/DataDog/go-sqllexer v0.1.6 // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee // indirect @@ -141,7 +141,7 @@ require ( github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4 // indirect github.com/DataDog/zstd v1.5.7 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/alecthomas/participle/v2 v2.1.4 // indirect github.com/antchfx/xmlquery v1.4.4 // indirect @@ -198,7 +198,6 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/uuid v1.6.0 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -254,7 +253,7 @@ require ( github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3 // indirect github.com/rs/cors v1.11.1 // indirect diff --git a/exporter/datadogexporter/integrationtest/go.sum b/exporter/datadogexporter/integrationtest/go.sum index 18e3e3c2bdbd2..ae6e6e67029fe 100644 --- a/exporter/datadogexporter/integrationtest/go.sum +++ b/exporter/datadogexporter/integrationtest/go.sum @@ -4,8 +4,8 @@ cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= @@ -233,10 +233,10 @@ github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel h1:R7dsoerew1nyR github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel/go.mod h1:X8gUH1fdE09W75BmaRzXv9/BTxTe7q7jES5jTaSyYP0= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= -github.com/DataDog/datadog-go/v5 v5.7.1 h1:dNhEwKaO3LJhGYKajl2DjobArfa5R9YF72z3Dy+PH3k= -github.com/DataDog/datadog-go/v5 v5.7.1/go.mod h1:CA9Ih6tb3jtxk+ps1xvTnxmhjr7ldE8TiwrZyrm31ss= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-go/v5 v5.8.0 h1:pKZtux5CfqkqGYGvKCM3wV5i8sYAzcddK7nkrChUtxo= +github.com/DataDog/datadog-go/v5 v5.8.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.1.6 h1:skEXpWEVCpeZFIiydoIa2f2rf+ymNpjiIMqpW4w3YAk= github.com/DataDog/go-sqllexer v0.1.6/go.mod h1:GGpo1h9/BVSN+6NJKaEcJ9Jn44Hqc63Rakeb+24Mjgo= github.com/DataDog/go-tuf v1.1.1-0.5.2 h1:YWvghV4ZvrQsPcUw8IOUMSDpqc3W5ruOIC+KJxPknv0= @@ -253,8 +253,8 @@ github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= @@ -585,8 +585,8 @@ github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb h1:PGufWXXDq9yaev6xX1YQauaO1MV90e6Mpoq1I7Lz/VM= github.com/hectane/go-acl v0.0.0-20230122075934-ca0b05cb1adb/go.mod h1:QiyDdbZLaJ/mZP4Zwc9g2QsfaEA4o7XvvgZegSci5/E= -github.com/hetznercloud/hcloud-go/v2 v2.24.0 h1:57YlEQOc9QperCGck+iX4MqCrwEsznEdK7bPrsdAgOQ= -github.com/hetznercloud/hcloud-go/v2 v2.24.0/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= +github.com/hetznercloud/hcloud-go/v2 v2.25.1 h1:ib86acotlvgUSnKfFG5FJl0VFeYKe/Ht8nmikdUp+po= +github.com/hetznercloud/hcloud-go/v2 v2.25.1/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= @@ -776,8 +776,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= 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= diff --git a/exporter/elasticsearchexporter/integrationtest/go.mod b/exporter/elasticsearchexporter/integrationtest/go.mod index 858f5a5abc6bf..94f9e2d462fc5 100644 --- a/exporter/elasticsearchexporter/integrationtest/go.mod +++ b/exporter/elasticsearchexporter/integrationtest/go.mod @@ -70,7 +70,6 @@ require ( github.com/golang/snappy v1.0.0 // indirect github.com/google/go-tpm v0.9.6 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect @@ -125,7 +124,7 @@ require ( github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/rs/cors v1.11.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect diff --git a/exporter/elasticsearchexporter/integrationtest/go.sum b/exporter/elasticsearchexporter/integrationtest/go.sum index e87c6a562f592..38470b2cfebd1 100644 --- a/exporter/elasticsearchexporter/integrationtest/go.sum +++ b/exporter/elasticsearchexporter/integrationtest/go.sum @@ -97,8 +97,6 @@ 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/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= -github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2/go.mod h1:pkJQ2tZHJ0aFOVEEot6oZmaVEZcRme73eIFmhiVuRWs= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= @@ -188,8 +186,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= diff --git a/exporter/elasticsearchexporter/internal/lru/lruset_test.go b/exporter/elasticsearchexporter/internal/lru/lruset_test.go index 5f9ba146fa1e8..33c9523ccba8a 100644 --- a/exporter/elasticsearchexporter/internal/lru/lruset_test.go +++ b/exporter/elasticsearchexporter/internal/lru/lruset_test.go @@ -47,8 +47,8 @@ func TestLRUSetLifeTime(t *testing.T) { // Wait until cache item is expired. time.Sleep(lifetime) err = cache.WithLock(func(lock LockedLRUSet) error { - assert.False(t, lock.CheckAndAdd("a")) timeSet = time.Now() + assert.False(t, lock.CheckAndAdd("a")) assert.True(t, lock.CheckAndAdd("a")) return nil }) diff --git a/exporter/googlecloudexporter/go.mod b/exporter/googlecloudexporter/go.mod index d6ccb306c3996..da6f6f984fa33 100644 --- a/exporter/googlecloudexporter/go.mod +++ b/exporter/googlecloudexporter/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/exporter/google go 1.24.0 require ( - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.53.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.54.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 @@ -15,24 +15,24 @@ require ( go.opentelemetry.io/collector/featuregate v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/pdata v1.42.1-0.20250925151503-069408608b28 go.uber.org/goleak v1.3.0 - google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 + google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9 ) require ( - cloud.google.com/go v0.120.0 // indirect - cloud.google.com/go/auth v0.16.1 // indirect + cloud.google.com/go v0.123.0 // indirect + cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/logging v1.13.0 // indirect cloud.google.com/go/longrunning v0.6.7 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect cloud.google.com/go/trace v1.11.6 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.30.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect @@ -41,7 +41,7 @@ require ( github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect @@ -53,11 +53,11 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/match v1.2.0 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/tinylru v1.2.1 // indirect - github.com/tidwall/wal v1.1.8 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + github.com/tidwall/wal v1.2.1 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/config/configoptional v0.136.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/config/configretry v1.42.1-0.20250925151503-069408608b28 // indirect @@ -75,10 +75,9 @@ require ( go.opentelemetry.io/collector/receiver v1.42.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/receiver/receivertest v0.136.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/receiver/xreceiver v0.136.1-0.20250925151503-069408608b28 // indirect - go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect @@ -89,16 +88,16 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.26.0 // indirect - golang.org/x/time v0.11.0 // indirect - google.golang.org/api v0.234.0 // indirect - google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + golang.org/x/time v0.13.0 // indirect + google.golang.org/api v0.249.0 // indirect + google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 // indirect google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/exporter/googlecloudexporter/go.sum b/exporter/googlecloudexporter/go.sum index 091050cef7e4f..e4a539e629c81 100644 --- a/exporter/googlecloudexporter/go.sum +++ b/exporter/googlecloudexporter/go.sum @@ -1,13 +1,13 @@ cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= -cloud.google.com/go v0.120.0 h1:wc6bgG9DHyKqF5/vQvX1CiZrtHnxJjBlKUyF9nP6meA= -cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q= -cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU= -cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= +cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= +cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= +cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= @@ -16,14 +16,14 @@ cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7d cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.53.0 h1:Bx8/0To6dQQzbRMaZX/NBqK/Vtzto9nRb0FySqWUsQs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.53.0/go.mod h1:p659xWjqa2ZU6ubOumX1arLc5cY7UTITBkLVedm/qec= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0 h1:YVtMlmfRUTaWs3+1acwMBp7rBUo6zrxl6Kn13/R9YW4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0/go.mod h1:rKOFVIPbNs2wZeh7ZeQ0D9p/XLgbNiTr5m7x6KuAshk= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0 h1:4LP6hvB4I5ouTbGgWtixJhgED6xdf67twf9PoY96Tbg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0/go.mod h1:jUZ5LYlw40WMd07qxcQJD5M40aUxrfwqQX1g7zxYnrQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.54.0 h1:RDjyso7taxIpN6NdbURvQdc+7rI4oYKkpWqNUiI7LoA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.54.0/go.mod h1:TUXsvQr94+ajAJfbQGpF6kcR5G39TEWgZA8v2NCOeGQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.30.0 h1:5eCqTd9rTwMlE62z0xFdzPJ+3pji75hJrwq1jrCjo5w= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.30.0/go.mod h1:4BcvJy7WxY8X2eX49z2VO1ByhO+CcQK8lKPCH/QlZvo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0 h1:xfK3bbi6F2RDtaZFtUdKO3osOBIhNb+xTs8lFW6yx9o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 h1:s0WlVbf9qpvkh1c/uDAPElam0WrL7fHRIidgZJ7UqZI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -44,8 +44,8 @@ github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfU github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI= github.com/go-jose/go-jose/v4 v4.1.1/go.mod h1:BdsZGqgdO3b6tTc6LSE56wcDbMMLuPsw5d4ZD5f94kA= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -70,8 +70,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/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= 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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -103,8 +103,8 @@ github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -114,22 +114,23 @@ github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= +github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= github.com/tidwall/tinylru v1.2.1 h1:VgBr72c2IEr+V+pCdkPZUwiQ0KJknnWIYbhxAVkYfQk= github.com/tidwall/tinylru v1.2.1/go.mod h1:9bQnEduwB6inr2Y7AkBP7JPgCkyrhTV/ZpX0oOOpBI4= -github.com/tidwall/wal v1.1.8 h1:2qDSGdAdjaY3PEvHRva+9UFqgk+ef7cOiW1Qn5JH1y0= -github.com/tidwall/wal v1.1.8/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= +github.com/tidwall/wal v1.2.1 h1:xQvwnRF3e+xBC4NvFvl1mPGJHU0aH5zNzlUKnKGIImA= +github.com/tidwall/wal v1.2.1/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 h1:VNXCYm1Uwg3EjNEdaMlVH2NJj3F9ZyGASLZ8txJk1vo= go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28/go.mod h1:GbBP2Ztn1xeeaAX6hIus0NOH/J0HcRgHP7SU8VDxwP0= go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 h1:3pTSwA8fcn01tuS1/CUqOxCPbQqpUiVbAAWVmUMr9OQ= @@ -186,14 +187,12 @@ go.opentelemetry.io/collector/receiver/receivertest v0.136.1-0.20250925151503-06 go.opentelemetry.io/collector/receiver/receivertest v0.136.1-0.20250925151503-069408608b28/go.mod h1:FINUAigNZLhl85kvGJyjbNW2BDH2Bws6Ra4xaP1TEZg= go.opentelemetry.io/collector/receiver/xreceiver v0.136.1-0.20250925151503-069408608b28 h1:l9a6vNQ0SSZwDcwPIuigV6VJpQ2NkUNu8Ss3q5JvSG8= go.opentelemetry.io/collector/receiver/xreceiver v0.136.1-0.20250925151503-069408608b28/go.mod h1:v+qfBnubaHJLlQC6uxKX/HQnHBOfcNNfss9iUd2MzCU= -go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685 h1:XCN7qkZRNzRYfn6chsMZkbFZxoFcW6fZIsZs2aCzcbc= -go.opentelemetry.io/collector/semconv v0.128.1-0.20250610090210-188191247685/go.mod h1:OPXer4l43X23cnjLXIZnRj/qQOjSuq4TgBLI76P9hns= go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 h1:aBKdhLVieqvwWe9A79UHI/0vgp2t/s2euY8X59pGRlw= go.opentelemetry.io/contrib/bridges/otelzap v0.13.0/go.mod h1:SYqtxLQE7iINgh6WFuVi2AI70148B8EI35DSk0Wr8m4= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM= @@ -227,34 +226,34 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -265,14 +264,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= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.234.0 h1:d3sAmYq3E9gdr2mpmiWGbm9pHsA/KJmyiLkwKfHBqU4= -google.golang.org/api v0.234.0/go.mod h1:QpeJkemzkFKe5VCE/PMv7GsUfn9ZF+u+q1Q7w6ckxTg= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= -google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= +google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 h1:LvZVVaPE0JSqL+ZWb6ErZfnEOKIqqFWUJE2D0fObSmc= +google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9/go.mod h1:QFOrLhdAe2PsTp3vQY4quuLKTi9j3XG3r6JPPaw7MSc= +google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9 h1:jm6v6kMRpTYKxBRrDkYAitNJegUeO1Mf3Kt80obv0gg= +google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9/go.mod h1:LmwNphe5Afor5V3R5BppOULHOnt2mCIf+NxMd4XiygE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 h1:V1jCN2HBa8sySkR5vLcCSqJSTMv093Rw9EJefhQGP7M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= diff --git a/exporter/googlecloudpubsubexporter/go.mod b/exporter/googlecloudpubsubexporter/go.mod index 36e0355456b43..f7ef803cc2b54 100644 --- a/exporter/googlecloudpubsubexporter/go.mod +++ b/exporter/googlecloudpubsubexporter/go.mod @@ -19,14 +19,14 @@ require ( go.uber.org/goleak v1.3.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - google.golang.org/api v0.249.0 + google.golang.org/api v0.251.0 google.golang.org/grpc v1.75.1 ) require ( cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.8.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect @@ -76,16 +76,16 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + golang.org/x/time v0.13.0 // indirect google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/exporter/googlecloudpubsubexporter/go.sum b/exporter/googlecloudpubsubexporter/go.sum index 8378959b35e36..c47148b680372 100644 --- a/exporter/googlecloudpubsubexporter/go.sum +++ b/exporter/googlecloudpubsubexporter/go.sum @@ -4,8 +4,8 @@ cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= -cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= @@ -172,34 +172,34 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -210,14 +210,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= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= -google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/api v0.251.0 h1:6lea5nHRT8RUmpy9kkC2PJYnhnDAB13LqrLSVQlMIE8= +google.golang.org/api v0.251.0/go.mod h1:Rwy0lPf/TD7+T2VhYcffCHhyyInyuxGjICxdfLqT7KI= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:i8QOKZfYg6AbGVZzUAY3LrNWCKF8O6zFisU9Wl9RER4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= diff --git a/exporter/googlemanagedprometheusexporter/go.mod b/exporter/googlemanagedprometheusexporter/go.mod index dc177f5ca4247..7b27273fc4ad8 100644 --- a/exporter/googlemanagedprometheusexporter/go.mod +++ b/exporter/googlemanagedprometheusexporter/go.mod @@ -3,9 +3,9 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/exporter/google go 1.24.0 require ( - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.53.0 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.53.0 - github.com/prometheus/otlptranslator v0.0.2 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.54.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.54.0 + github.com/prometheus/otlptranslator v1.0.0 github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 @@ -21,10 +21,10 @@ require ( ) require ( - cloud.google.com/go v0.120.0 // indirect - cloud.google.com/go/auth v0.16.2 // indirect + cloud.google.com/go v0.123.0 // indirect + cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/logging v1.13.0 // indirect cloud.google.com/go/longrunning v0.6.7 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect @@ -33,8 +33,8 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.30.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 // indirect github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b // indirect github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/config v1.29.14 // indirect @@ -67,7 +67,7 @@ require ( github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect github.com/hashicorp/go-version v1.7.0 // indirect @@ -97,14 +97,14 @@ require ( github.com/spf13/cobra v1.10.1 // indirect github.com/spf13/pflag v1.0.9 // indirect github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect + github.com/tidwall/match v1.2.0 // indirect github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/tinylru v1.2.1 // indirect - github.com/tidwall/wal v1.1.8 // indirect + github.com/tidwall/wal v1.2.1 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect github.com/tklauser/numcpus v0.10.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/component/componentstatus v0.136.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/config/configoptional v0.136.1-0.20250925151503-069408608b28 // indirect @@ -145,7 +145,7 @@ require ( go.opentelemetry.io/collector/service v0.136.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/service/hostcapabilities v0.136.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect go.opentelemetry.io/contrib/otelconf v0.18.0 // indirect go.opentelemetry.io/contrib/propagators/b3 v1.38.0 // indirect @@ -171,21 +171,21 @@ require ( go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect - go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect + golang.org/x/crypto v0.42.0 // indirect golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect + golang.org/x/text v0.29.0 // indirect + golang.org/x/time v0.13.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect - google.golang.org/api v0.239.0 // indirect - google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 // indirect + google.golang.org/api v0.249.0 // indirect + google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 // indirect google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect diff --git a/exporter/googlemanagedprometheusexporter/go.sum b/exporter/googlemanagedprometheusexporter/go.sum index 74aa22d0cda87..2d0f26384d1fd 100644 --- a/exporter/googlemanagedprometheusexporter/go.sum +++ b/exporter/googlemanagedprometheusexporter/go.sum @@ -1,13 +1,13 @@ cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= -cloud.google.com/go v0.120.0 h1:wc6bgG9DHyKqF5/vQvX1CiZrtHnxJjBlKUyF9nP6meA= -cloud.google.com/go v0.120.0/go.mod h1:/beW32s8/pGRuj4IILWQNd4uuebeT4dkOhKmkfit64Q= -cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= -cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= +cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= +cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= +cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= +cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= @@ -34,16 +34,16 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/Code-Hex/go-generics-cache v1.5.1 h1:6vhZGc5M7Y/YD8cIUcY8kcuQLB4cHR7U+0KMqAA0KcU= github.com/Code-Hex/go-generics-cache v1.5.1/go.mod h1:qxcC9kRVrct9rHeiYpFWSoW1vxyillCVzX13KZG8dl4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.53.0 h1:Bx8/0To6dQQzbRMaZX/NBqK/Vtzto9nRb0FySqWUsQs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.53.0/go.mod h1:p659xWjqa2ZU6ubOumX1arLc5cY7UTITBkLVedm/qec= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.53.0 h1:SGCt/0jiiAbH+yCphep+tOSYJu9C8XnV71t0hWphPvw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.53.0/go.mod h1:vDuKK7oUma/INMu7QfV4dYvovByh3JWBPlhK+tn0EQE= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0 h1:YVtMlmfRUTaWs3+1acwMBp7rBUo6zrxl6Kn13/R9YW4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.29.0/go.mod h1:rKOFVIPbNs2wZeh7ZeQ0D9p/XLgbNiTr5m7x6KuAshk= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0 h1:4LP6hvB4I5ouTbGgWtixJhgED6xdf67twf9PoY96Tbg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.53.0/go.mod h1:jUZ5LYlw40WMd07qxcQJD5M40aUxrfwqQX1g7zxYnrQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0 h1:Ron4zCA/yk6U7WOBXhTJcDpsUBG9npumK6xw2auFltQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.53.0/go.mod h1:cSgYe11MCNYunTnRXrKiR/tHc0eoKjICUuWpNZoVCOo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.54.0 h1:RDjyso7taxIpN6NdbURvQdc+7rI4oYKkpWqNUiI7LoA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector v0.54.0/go.mod h1:TUXsvQr94+ajAJfbQGpF6kcR5G39TEWgZA8v2NCOeGQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.54.0 h1:fluPHolIItvpMSt+WDwQOJr2SOwnCu9b95+caJgclwQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/collector/googlemanagedprometheus v0.54.0/go.mod h1:22NXe2951mc8K5jK7TzirFOUCCPSYAi9k95LIUjJtj0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.30.0 h1:5eCqTd9rTwMlE62z0xFdzPJ+3pji75hJrwq1jrCjo5w= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.30.0/go.mod h1:4BcvJy7WxY8X2eX49z2VO1ByhO+CcQK8lKPCH/QlZvo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0 h1:xfK3bbi6F2RDtaZFtUdKO3osOBIhNb+xTs8lFW6yx9o= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 h1:s0WlVbf9qpvkh1c/uDAPElam0WrL7fHRIidgZJ7UqZI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/alecthomas/units v0.0.0-20240927000941-0f3dac36c52b h1:mimo19zliBX/vSQ6PWWSL9lK8qwHozUj03+zLoEB8O0= @@ -180,8 +180,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/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E= github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= @@ -305,8 +305,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0= github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw= github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= @@ -315,8 +315,8 @@ github.com/prometheus/sigv4 v0.2.0 h1:qDFKnHYFswJxdzGeRP63c4HlH3Vbn1Yf/Ao2zabtVX github.com/prometheus/sigv4 v0.2.0/go.mod h1:D04rqmAaPPEUkjRQxGqjoxdyJuyCh6E0M18fZr0zBiE= github.com/redis/go-redis/v9 v9.8.0 h1:q3nRvjrlge/6UD7eTu/DSg2uYiU2mCL0G/uzBWqhicI= github.com/redis/go-redis/v9 v9.8.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -347,16 +347,17 @@ github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD github.com/tidwall/gjson v1.10.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= +github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= +github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/tinylru v1.1.0/go.mod h1:3+bX+TJ2baOLMWTnlyNWHh4QMnFyARg2TLTQ6OFbzw8= github.com/tidwall/tinylru v1.2.1 h1:VgBr72c2IEr+V+pCdkPZUwiQ0KJknnWIYbhxAVkYfQk= github.com/tidwall/tinylru v1.2.1/go.mod h1:9bQnEduwB6inr2Y7AkBP7JPgCkyrhTV/ZpX0oOOpBI4= -github.com/tidwall/wal v1.1.8 h1:2qDSGdAdjaY3PEvHRva+9UFqgk+ef7cOiW1Qn5JH1y0= -github.com/tidwall/wal v1.1.8/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= +github.com/tidwall/wal v1.2.1 h1:xQvwnRF3e+xBC4NvFvl1mPGJHU0aH5zNzlUKnKGIImA= +github.com/tidwall/wal v1.2.1/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= @@ -371,8 +372,8 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector v0.136.0 h1:fEXsiNTa7itOD2SCspqBep6fnULa7mglLlNyhSizqok= go.opentelemetry.io/collector v0.136.0/go.mod h1:m7YjwJ3xAzGIWa+vyHOE48R6pTKgh90vnlXjFhoB5+A= go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 h1:VNXCYm1Uwg3EjNEdaMlVH2NJj3F9ZyGASLZ8txJk1vo= @@ -491,8 +492,8 @@ go.opentelemetry.io/collector/service/hostcapabilities v0.136.1-0.20250925151503 go.opentelemetry.io/collector/service/hostcapabilities v0.136.1-0.20250925151503-069408608b28/go.mod h1:xaYtdCSZXzaQZY1RI11e7tVldyer++OScNtxJVBrjn4= go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 h1:aBKdhLVieqvwWe9A79UHI/0vgp2t/s2euY8X59pGRlw= go.opentelemetry.io/contrib/bridges/otelzap v0.13.0/go.mod h1:SYqtxLQE7iINgh6WFuVi2AI70148B8EI35DSk0Wr8m4= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/contrib/otelconf v0.18.0 h1:ciF2Gf00BWs0DnexKFZXcxg9kJ8r3SUW1LOzW3CsKA8= @@ -557,34 +558,34 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= -go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= +go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8 h1:yqrTHse8TCMW1M1ZCP+VAR/l0kKxwaAIqN/il7x4voA= golang.org/x/exp v0.0.0-20250106191152-7588d65b2ba8/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= -golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -593,34 +594,34 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= -golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= +golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.35.0 h1:mBffYraMEf7aa0sB+NuKnuCy8qI/9Bughn8dC2Gu5r0= -golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.239.0 h1:2hZKUnFZEy81eugPs4e2XzIJ5SOwQg0G82bpXD65Puo= -google.golang.org/api v0.239.0/go.mod h1:cOVEm2TpdAGHL2z+UwyS+kmlGr3bVWQQ6sYEqkKje50= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2 h1:1tXaIXCracvtsRxSBsYDiSBN0cuJvM7QYW+MrpIRY78= -google.golang.org/genproto v0.0.0-20250505200425-f936aa4a68b2/go.mod h1:49MsLSx0oWMOZqcpB3uL8ZOkAh1+TndpJ8ONoCBWiZk= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5 h1:BIRfGDEjiHRrk0QKZe3Xv2ieMhtgRGeLcZQ0mIVn4EY= -google.golang.org/genproto/googleapis/api v0.0.0-20250825161204-c5933d9347a5/go.mod h1:j3QtIyytwqGr1JUDtYXwtMXWPKsEa5LtzIFN1Wn5WvE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5 h1:eaY8u2EuxbRv7c3NiGK0/NedzVsCcV6hDuU5qPX5EGE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250825161204-c5933d9347a5/go.mod h1:M4/wBTSeyLxupu3W3tJtOgB14jILAS/XWPSSa3TAlJc= +google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= +google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9 h1:LvZVVaPE0JSqL+ZWb6ErZfnEOKIqqFWUJE2D0fObSmc= +google.golang.org/genproto v0.0.0-20250922171735-9219d122eba9/go.mod h1:QFOrLhdAe2PsTp3vQY4quuLKTi9j3XG3r6JPPaw7MSc= +google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9 h1:jm6v6kMRpTYKxBRrDkYAitNJegUeO1Mf3Kt80obv0gg= +google.golang.org/genproto/googleapis/api v0.0.0-20250922171735-9219d122eba9/go.mod h1:LmwNphe5Afor5V3R5BppOULHOnt2mCIf+NxMd4XiygE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 h1:V1jCN2HBa8sySkR5vLcCSqJSTMv093Rw9EJefhQGP7M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= diff --git a/exporter/logicmonitorexporter/go.mod b/exporter/logicmonitorexporter/go.mod index 018be4db11b60..a542a7565447b 100644 --- a/exporter/logicmonitorexporter/go.mod +++ b/exporter/logicmonitorexporter/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/exporter/logicm go 1.24.0 require ( - github.com/logicmonitor/lm-data-sdk-go v1.3.2 + github.com/logicmonitor/lm-data-sdk-go v1.3.4 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 diff --git a/exporter/logicmonitorexporter/go.sum b/exporter/logicmonitorexporter/go.sum index 94b3e898666f9..a49bb0b8f3747 100644 --- a/exporter/logicmonitorexporter/go.sum +++ b/exporter/logicmonitorexporter/go.sum @@ -53,8 +53,8 @@ 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= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/logicmonitor/lm-data-sdk-go v1.3.2 h1:sgDRufUGd/EHQcKlip3Ak5km2Y6HfuwFGROinCSe+bI= -github.com/logicmonitor/lm-data-sdk-go v1.3.2/go.mod h1:Hp/eMI2wMmpUX0MP/ZIpx+4MUpwFmkPRkeEAXb+W+vk= +github.com/logicmonitor/lm-data-sdk-go v1.3.4 h1:ucZVZBBfFeF4VnoksRI6zYfPAdGcaWMUzb+fuUcFoCo= +github.com/logicmonitor/lm-data-sdk-go v1.3.4/go.mod h1:Hp/eMI2wMmpUX0MP/ZIpx+4MUpwFmkPRkeEAXb+W+vk= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= diff --git a/exporter/logicmonitorexporter/internal/logs/sender_test.go b/exporter/logicmonitorexporter/internal/logs/sender_test.go index 0a3da5902adb3..ab58f01b25903 100644 --- a/exporter/logicmonitorexporter/internal/logs/sender_test.go +++ b/exporter/logicmonitorexporter/internal/logs/sender_test.go @@ -37,7 +37,7 @@ func TestSendLogs(t *testing.T) { sender, err := NewSender(ctx, zap.NewNop(), buildLogIngestTestOpts(ts.URL, ts.Client())...) assert.NoError(t, err) - logInput := translator.ConvertToLMLogInput("test msg", utils.NewTimestampFromTime(time.Now()).String(), map[string]any{"system.hostname": "test"}, map[string]any{"cloud.provider": "aws"}) + logInput := translator.ConvertToLMLogInput("test msg", "ERROR", utils.NewTimestampFromTime(time.Now()).String(), map[string]any{"system.hostname": "test"}, map[string]any{"cloud.provider": "aws"}) err = sender.SendLogs(ctx, []model.LogInput{logInput}) cancel() assert.NoError(t, err) @@ -59,7 +59,7 @@ func TestSendLogs(t *testing.T) { sender, err := NewSender(ctx, zap.NewNop(), buildLogIngestTestOpts(ts.URL, ts.Client())...) assert.NoError(t, err) - logInput := translator.ConvertToLMLogInput("test msg", utils.NewTimestampFromTime(time.Now()).String(), map[string]any{"system.hostname": "test"}, map[string]any{"cloud.provider": "aws"}) + logInput := translator.ConvertToLMLogInput("test msg", "INFO", utils.NewTimestampFromTime(time.Now()).String(), map[string]any{"system.hostname": "test"}, map[string]any{"cloud.provider": "aws"}) err = sender.SendLogs(ctx, []model.LogInput{logInput}) cancel() assert.Error(t, err) @@ -82,7 +82,7 @@ func TestSendLogs(t *testing.T) { sender, err := NewSender(ctx, zap.NewNop(), buildLogIngestTestOpts(ts.URL, ts.Client())...) assert.NoError(t, err) - logInput := translator.ConvertToLMLogInput("test msg", utils.NewTimestampFromTime(time.Now()).String(), map[string]any{"system.hostname": "test"}, map[string]any{"cloud.provider": "aws"}) + logInput := translator.ConvertToLMLogInput("test msg", "DEBUG", utils.NewTimestampFromTime(time.Now()).String(), map[string]any{"system.hostname": "test"}, map[string]any{"cloud.provider": "aws"}) err = sender.SendLogs(ctx, []model.LogInput{logInput}) cancel() assert.Error(t, err) diff --git a/exporter/logicmonitorexporter/logs_exporter.go b/exporter/logicmonitorexporter/logs_exporter.go index db3e98e11ab13..ea781e79687f1 100644 --- a/exporter/logicmonitorexporter/logs_exporter.go +++ b/exporter/logicmonitorexporter/logs_exporter.go @@ -87,8 +87,9 @@ func (e *logExporter) PushLogData(ctx context.Context, lg plog.Logs) error { resourceMapperMap[key] = value.AsRaw() } - e.settings.Logger.Debug("Sending log data", zap.String("body", log.Body().Str()), zap.Any("resourcemap", resourceMapperMap), zap.Any("metadatamap", logMetadataMap)) - payload = append(payload, translator.ConvertToLMLogInput(log.Body().AsRaw(), timestampFromLogRecord(log).String(), resourceMapperMap, logMetadataMap)) + loglevel := log.SeverityNumber().String() + e.settings.Logger.Debug("Sending log data", zap.String("body", log.Body().Str()), zap.Any("resourcemap", resourceMapperMap), zap.Any("metadatamap", logMetadataMap), zap.String("loglevel", loglevel)) + payload = append(payload, translator.ConvertToLMLogInput(log.Body().AsRaw(), loglevel, timestampFromLogRecord(log).String(), resourceMapperMap, logMetadataMap)) } } } diff --git a/exporter/otelarrowexporter/go.mod b/exporter/otelarrowexporter/go.mod index 7ef2955b69888..61c1fca2b75f3 100644 --- a/exporter/otelarrowexporter/go.mod +++ b/exporter/otelarrowexporter/go.mod @@ -5,7 +5,7 @@ go 1.24.0 require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/grpcutil v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/otelarrow v0.136.0 - github.com/open-telemetry/otel-arrow/go v0.39.0 + github.com/open-telemetry/otel-arrow/go v0.43.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 @@ -42,13 +42,13 @@ require ( require ( github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/apache/arrow-go/v18 v18.2.0 // indirect - github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect + github.com/axiomhq/hyperloglog v0.2.5 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.4.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect @@ -61,8 +61,9 @@ require ( 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 + github.com/kamstrup/intmap v0.5.1 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/cpuid/v2 v2.2.11 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.0 // indirect @@ -72,7 +73,7 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect @@ -99,7 +100,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect diff --git a/exporter/otelarrowexporter/go.sum b/exporter/otelarrowexporter/go.sum index dddf7aa16e608..bdf814d94b7fb 100644 --- a/exporter/otelarrowexporter/go.sum +++ b/exporter/otelarrowexporter/go.sum @@ -9,16 +9,17 @@ github.com/apache/arrow-go/v18 v18.2.0 h1:QhWqpgZMKfWOniGPhbUxrHohWnooGURqL2R2Gg github.com/apache/arrow-go/v18 v18.2.0/go.mod h1:Ic/01WSwGJWRrdAZcxjBZ5hbApNJ28K96jGYaxzzGUc= github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE= github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw= -github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= -github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= -github.com/brianvoe/gofakeit/v6 v6.17.0 h1:obbQTJeHfktJtiZzq0Q1bEpsNUs+yHrYlPVWt7BtmJ4= -github.com/brianvoe/gofakeit/v6 v6.17.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= +github.com/axiomhq/hyperloglog v0.2.5 h1:Hefy3i8nAs8zAI/tDp+wE7N+Ltr8JnwiW3875pvl0N8= +github.com/axiomhq/hyperloglog v0.2.5/go.mod h1:DLUK9yIzpU5B6YFLjxTIcbHu1g4Y1WQb1m5RH3radaM= +github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4= +github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -28,8 +29,8 @@ github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006 h1:50sW4r0Pcvl github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006/go.mod h1:eIXCMsMYCaqq9m1KSSxXwQG11krpuNPGP3k0uaWrbas= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= -github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -66,14 +67,16 @@ github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kamstrup/intmap v0.5.1 h1:ENGAowczZA+PJPYYlreoqJvWgQVtAmX1l899WfYFVK0= +github.com/kamstrup/intmap v0.5.1/go.mod h1:gWUVWHKzWj8xpJVFf5GC0O26bWmv3GqdnIX/LMT6Aq4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= +github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -103,12 +106,13 @@ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWu github.com/mostynb/go-grpc-compression v1.2.3 h1:42/BKWMy0KEJGSdWvzqIyOZ95YcR9mLPqKctH7Uo//I= github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1Vjs47Km/Y2FE6ouQ7Lg= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/open-telemetry/otel-arrow/go v0.39.0 h1:ZlPsPdqn5wuSzulWqIs41jWmwk7B10Qg+sL7Bw3w6kA= -github.com/open-telemetry/otel-arrow/go v0.39.0/go.mod h1:CK13damnj/yQW2TKzdjJs5xVmfbkTKLLwjtjoUrMk7I= +github.com/open-telemetry/otel-arrow/go v0.43.0 h1:P1BsergAwmn4C5WbuQaS4S3cHIaOirJlTbsUtUPiPNY= +github.com/open-telemetry/otel-arrow/go v0.43.0/go.mod h1:gGW+5QC51n86Vj3F3FY9m8hTfb6llZrDhW+8HB/mBGw= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -251,8 +255,8 @@ golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= diff --git a/exporter/prometheusexporter/collector.go b/exporter/prometheusexporter/collector.go index 59ee3edd4e836..d7034a52b4a0d 100644 --- a/exporter/prometheusexporter/collector.go +++ b/exporter/prometheusexporter/collector.go @@ -49,15 +49,11 @@ type metricFamily struct { func newCollector(config *Config, logger *zap.Logger) *collector { labelNamer := configureLabelNamer(config) - namespace, err := labelNamer.Build(config.Namespace) - if err != nil { - logger.Error("failed to build namespace, ignoring", zap.Error(err)) - namespace = "" - } + return &collector{ accumulator: newAccumulator(logger, config.MetricExpiration), logger: logger, - namespace: namespace, + namespace: normalizeNamespace(config.Namespace, labelNamer, logger), sendTimestamps: config.SendTimestamps, constLabels: config.ConstLabels, metricExpiration: config.MetricExpiration, @@ -66,6 +62,22 @@ func newCollector(config *Config, logger *zap.Logger) *collector { } } +// normalizeNamespace builds and returns the namespace if specified in the config +// If not specified, it returns an empty string +// If building the namespace fails, it logs the error and returns an empty string +func normalizeNamespace(configNamespace string, labelNamer otlptranslator.LabelNamer, logger *zap.Logger) string { + namespace := "" + if configNamespace != "" { + var err error + namespace, err = labelNamer.Build(configNamespace) + if err != nil { + logger.Error("failed to build namespace, ignoring", zap.Error(err)) + namespace = "" + } + } + return namespace +} + // configureMetricNamer configures the MetricNamer based on the translation strategy or legacy configuration func configureMetricNamer(config *Config) otlptranslator.MetricNamer { withSuffixes, utf8Allowed := getTranslationConfiguration(config) diff --git a/exporter/prometheusexporter/collector_test.go b/exporter/prometheusexporter/collector_test.go index bf455e3f7b8b8..6c6f505cfb46a 100644 --- a/exporter/prometheusexporter/collector_test.go +++ b/exporter/prometheusexporter/collector_test.go @@ -11,6 +11,7 @@ import ( "github.com/prometheus/client_golang/prometheus" io_prometheus_client "github.com/prometheus/client_model/go" + "github.com/prometheus/otlptranslator" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pmetric" @@ -837,3 +838,34 @@ func TestAccumulateSummary(t *testing.T) { } } } + +func TestNormalizeNamespaceEmpty(t *testing.T) { + logger := zap.NewNop() + labelNamer := otlptranslator.LabelNamer{UTF8Allowed: false} + + ns := normalizeNamespace("", labelNamer, logger) + require.Empty(t, ns, "empty configNamespace should yield empty namespace") +} + +func TestNormalizeNamespaceInvalid(t *testing.T) { + logger := zap.NewNop() + labelNamer := otlptranslator.LabelNamer{UTF8Allowed: false} + + ns := normalizeNamespace("----", labelNamer, logger) + require.Empty(t, ns, "configNamespace with no valid characters should yield empty namespace") +} + +func TestNormalizeNamespaceSanitizes(t *testing.T) { + logger := zap.NewNop() + + // With UTF-8 not allowed, chars like '.' should be mapped to '_' + labelNamer := otlptranslator.LabelNamer{UTF8Allowed: false} + ns1 := normalizeNamespace("my_namespace.1", labelNamer, logger) + require.Equal(t, "my_namespace_1", ns1, "UTF-8 not allowed should sanitize '.' to '_'") + + // With UTF-8 allowed, ASCII characters remain unchanged + labelNamerUTF8 := otlptranslator.LabelNamer{UTF8Allowed: true} + ns2 := normalizeNamespace("my_namespace.1", labelNamerUTF8, logger) + + require.Equal(t, "my_namespace.1", ns2, "UTF-8 allowed should not sanitize ASCII characters") +} diff --git a/exporter/prometheusexporter/go.mod b/exporter/prometheusexporter/go.mod index 635d1fa875c9c..6ad35549cdce5 100644 --- a/exporter/prometheusexporter/go.mod +++ b/exporter/prometheusexporter/go.mod @@ -11,7 +11,7 @@ require ( github.com/prometheus/client_golang v1.23.2 github.com/prometheus/client_model v0.6.2 github.com/prometheus/common v0.66.1 - github.com/prometheus/otlptranslator v0.0.2 + github.com/prometheus/otlptranslator v1.0.0 github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 diff --git a/exporter/prometheusexporter/go.sum b/exporter/prometheusexporter/go.sum index 71cdf657299a1..e7a79c1247372 100644 --- a/exporter/prometheusexporter/go.sum +++ b/exporter/prometheusexporter/go.sum @@ -480,8 +480,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/exporter/prometheusremotewriteexporter/go.mod b/exporter/prometheusremotewriteexporter/go.mod index 4e45f848cab24..d3310170b9d1d 100644 --- a/exporter/prometheusremotewriteexporter/go.mod +++ b/exporter/prometheusremotewriteexporter/go.mod @@ -10,7 +10,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheusremotewrite v0.136.0 - github.com/prometheus/otlptranslator v0.0.2 + github.com/prometheus/otlptranslator v1.0.0 github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 github.com/stretchr/testify v1.11.1 github.com/tidwall/wal v1.2.1 diff --git a/exporter/prometheusremotewriteexporter/go.sum b/exporter/prometheusremotewriteexporter/go.sum index c2f4a93f3211b..a814c62e57900 100644 --- a/exporter/prometheusremotewriteexporter/go.sum +++ b/exporter/prometheusremotewriteexporter/go.sum @@ -268,8 +268,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= diff --git a/exporter/splunkhecexporter/README.md b/exporter/splunkhecexporter/README.md index fc3af0c4f9707..c9a99cd1b8e03 100644 --- a/exporter/splunkhecexporter/README.md +++ b/exporter/splunkhecexporter/README.md @@ -59,14 +59,6 @@ The following configuration options can also be configured: - `otel_attrs_to_hec_metadata/sourcetype` (default = 'com.splunk.sourcetype'): Specifies the mapping of a specific unified model attribute value to the standard sourcetype field of a HEC event. - `otel_attrs_to_hec_metadata/index` (default = 'com.splunk.index'): Specifies the mapping of a specific unified model attribute value to the standard index field of a HEC event. - `otel_attrs_to_hec_metadata/host` (default = 'host.name'): Specifies the mapping of a specific unified model attribute value to the standard host field and the `host.name` field of a HEC event. -- `hec_metadata_to_otel_attrs/source` (default = 'com.splunk.source'): Specifies the mapping of a specific unified model attribute value to the standard source field of a HEC event. - **Deprecated** (v0.116.0): prefer `otel_attrs_to_hec_metadata/source`. -- `hec_metadata_to_otel_attrs/sourcetype` (default = 'com.splunk.sourcetype'): Specifies the mapping of a specific unified model attribute value to the standard sourcetype field of a HEC event. - **Deprecated** (v0.116.0): prefer `otel_attrs_to_hec_metadata/sourcetype`. -- `hec_metadata_to_otel_attrs/index` (default = 'com.splunk.index'): Specifies the mapping of a specific unified model attribute value to the standard index field of a HEC event. - **Deprecated** (v0.116.0): prefer `otel_attrs_to_hec_metadata/index`. -- `hec_metadata_to_otel_attrs/host` (default = 'host.name'): Specifies the mapping of a specific unified model attribute value to the standard host field and the `host.name` field of a HEC event. - **Deprecated** (v0.116.0): prefer `otel_attrs_to_hec_metadata/host`. - `otel_to_hec_fields/severity_text` (default = `otel.log.severity.text`): Specifies the name of the field to map the severity text field of log events. - `otel_to_hec_fields/severity_number` (default = `otel.log.severity.number`): Specifies the name of the field to map the severity number field of log events. - `otel_to_hec_fields/name` (default = `"otel.log.name`): Specifies the name of the field to map the name field of log events. diff --git a/exporter/splunkhecexporter/config.go b/exporter/splunkhecexporter/config.go index f58946b1a6cdc..fad7ea19dbb64 100644 --- a/exporter/splunkhecexporter/config.go +++ b/exporter/splunkhecexporter/config.go @@ -128,9 +128,6 @@ type Config struct { // OtelAttrsToHec creates a mapping from attributes to HEC specific metadata: source, sourcetype, index and host. OtelAttrsToHec splunk.HecToOtelAttrs `mapstructure:"otel_attrs_to_hec_metadata"` - // HecToOtelAttrs creates a mapping from attributes to HEC specific metadata: source, sourcetype, index and host. - // Deprecated: [v0.113.0] Use OtelAttrsToHec instead. - HecToOtelAttrs splunk.HecToOtelAttrs `mapstructure:"hec_metadata_to_otel_attrs"` // HecFields creates a mapping from attributes to HEC fields. HecFields OtelToHecFields `mapstructure:"otel_to_hec_fields"` diff --git a/exporter/splunkhecexporter/config_test.go b/exporter/splunkhecexporter/config_test.go index d8f8208d40ab0..1c79b6b48e76c 100644 --- a/exporter/splunkhecexporter/config_test.go +++ b/exporter/splunkhecexporter/config_test.go @@ -106,12 +106,6 @@ func TestLoadConfig(t *testing.T) { Index: "myindex", Host: "myhost", }, - HecToOtelAttrs: splunk.HecToOtelAttrs{ - Source: "mysource", - SourceType: "mysourcetype", - Index: "myindex", - Host: "myhost", - }, HecFields: OtelToHecFields{ SeverityText: "myseverityfield", SeverityNumber: "myseveritynumfield", diff --git a/exporter/splunkhecexporter/factory.go b/exporter/splunkhecexporter/factory.go index cb3b0d231445f..9905e2476ff28 100644 --- a/exporter/splunkhecexporter/factory.go +++ b/exporter/splunkhecexporter/factory.go @@ -88,12 +88,6 @@ func createDefaultConfig() component.Config { Index: splunk.DefaultIndexLabel, Host: string(conventions.HostNameKey), }, - HecToOtelAttrs: splunk.HecToOtelAttrs{ - Source: splunk.DefaultSourceLabel, - SourceType: splunk.DefaultSourceTypeLabel, - Index: splunk.DefaultIndexLabel, - Host: string(conventions.HostNameKey), - }, HecFields: OtelToHecFields{ SeverityText: splunk.DefaultSeverityTextLabel, SeverityNumber: splunk.DefaultSeverityNumberLabel, diff --git a/exporter/splunkhecexporter/heartbeat.go b/exporter/splunkhecexporter/heartbeat.go index 9372550b031eb..29c102e273773 100644 --- a/exporter/splunkhecexporter/heartbeat.go +++ b/exporter/splunkhecexporter/heartbeat.go @@ -97,7 +97,7 @@ func (h *heartbeater) shutdown() { } func (*heartbeater) sendHeartbeat(config *Config, buildInfo component.BuildInfo, pushLogFn func(ctx context.Context, ld plog.Logs) error) error { - return pushLogFn(context.Background(), generateHeartbeatLog(config.HecToOtelAttrs, buildInfo)) + return pushLogFn(context.Background(), generateHeartbeatLog(config.OtelAttrsToHec, buildInfo)) } // there is only use case for open census metrics recording for now. Extend to use open telemetry in the future. diff --git a/exporter/splunkhecexporter/logdata_to_splunk.go b/exporter/splunkhecexporter/logdata_to_splunk.go index c2f974193ec1e..160a18a6bd2eb 100644 --- a/exporter/splunkhecexporter/logdata_to_splunk.go +++ b/exporter/splunkhecexporter/logdata_to_splunk.go @@ -23,33 +23,6 @@ const ( traceIDFieldKey = "trace_id" ) -// copyOtelAttrs copies values from HecToOtelAttrs to OtelAttrsToHec struct. -func copyOtelAttrs(config *Config) { - defaultCfg := createDefaultConfig().(*Config) - if config.OtelAttrsToHec.Equal(defaultCfg.OtelAttrsToHec) { - if !config.HecToOtelAttrs.Equal(defaultCfg.HecToOtelAttrs) { - // Copy settings to ease deprecation of HecToOtelAttrs. - config.OtelAttrsToHec = config.HecToOtelAttrs - } - } else { - if !config.HecToOtelAttrs.Equal(defaultCfg.HecToOtelAttrs) { - // Replace all default fields in OtelAttrsToHec. - if config.OtelAttrsToHec.Source == defaultCfg.OtelAttrsToHec.Source { - config.OtelAttrsToHec.Source = config.HecToOtelAttrs.Source - } - if config.OtelAttrsToHec.SourceType == defaultCfg.OtelAttrsToHec.SourceType { - config.OtelAttrsToHec.SourceType = config.HecToOtelAttrs.SourceType - } - if config.OtelAttrsToHec.Index == defaultCfg.OtelAttrsToHec.Index { - config.OtelAttrsToHec.Index = config.HecToOtelAttrs.Index - } - if config.OtelAttrsToHec.Host == defaultCfg.OtelAttrsToHec.Host { - config.OtelAttrsToHec.Host = config.HecToOtelAttrs.Host - } - } - } -} - func mapLogRecordToSplunkEvent(res pcommon.Resource, lr plog.LogRecord, config *Config) *splunk.Event { body := lr.Body().AsRaw() if body == nil || body == "" { @@ -57,10 +30,6 @@ func mapLogRecordToSplunkEvent(res pcommon.Resource, lr plog.LogRecord, config * return nil } - // Manage the deprecation of HecToOtelAttrs config parameters. - // TODO: remove this once HecToOtelAttrs is removed from Config. - copyOtelAttrs(config) - host := unknownHostName source := config.Source sourcetype := config.SourceType diff --git a/exporter/splunkhecexporter/logdata_to_splunk_test.go b/exporter/splunkhecexporter/logdata_to_splunk_test.go index 7bd4de293e087..eefa09b24058c 100644 --- a/exporter/splunkhecexporter/logdata_to_splunk_test.go +++ b/exporter/splunkhecexporter/logdata_to_splunk_test.go @@ -14,100 +14,6 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/internal/splunk" ) -func Test_copyOtelAttrs(t *testing.T) { - tests := []struct { - name string - configDataFn func() *Config - wantConfigDataFn func() *Config - }{ - { - name: "defaults", - configDataFn: func() *Config { - return createDefaultConfig().(*Config) - }, - wantConfigDataFn: func() *Config { - return createDefaultConfig().(*Config) - }, - }, - { - name: "override hec_metadata_to_otel_attrs", - configDataFn: func() *Config { - cfg := createDefaultConfig().(*Config) - - cfg.HecToOtelAttrs.Index = "testIndex" - cfg.HecToOtelAttrs.Source = "testSource" - cfg.HecToOtelAttrs.SourceType = "testSourceType" - cfg.HecToOtelAttrs.Host = "testHost" - - return cfg - }, - wantConfigDataFn: func() *Config { - cfg := createDefaultConfig().(*Config) - - cfg.HecToOtelAttrs.Index = "testIndex" - cfg.HecToOtelAttrs.Source = "testSource" - cfg.HecToOtelAttrs.SourceType = "testSourceType" - cfg.HecToOtelAttrs.Host = "testHost" - - cfg.OtelAttrsToHec.Index = "testIndex" - cfg.OtelAttrsToHec.Source = "testSource" - cfg.OtelAttrsToHec.SourceType = "testSourceType" - cfg.OtelAttrsToHec.Host = "testHost" - - return cfg - }, - }, - { - name: "partial otel_attrs_to_hec_metadata", - configDataFn: func() *Config { - cfg := createDefaultConfig().(*Config) - - cfg.OtelAttrsToHec.Source = "testSource" - cfg.OtelAttrsToHec.Index = "testIndex" - - return cfg - }, - wantConfigDataFn: func() *Config { - cfg := createDefaultConfig().(*Config) - - cfg.OtelAttrsToHec.Source = "testSource" - cfg.OtelAttrsToHec.Index = "testIndex" - - return cfg - }, - }, - { - name: "prefer otel_attrs_to_hec_metadata", - configDataFn: func() *Config { - cfg := createDefaultConfig().(*Config) - - cfg.HecToOtelAttrs.Index = "hecIndex" - - cfg.OtelAttrsToHec.Index = "otelIndex" - - return cfg - }, - wantConfigDataFn: func() *Config { - cfg := createDefaultConfig().(*Config) - - cfg.HecToOtelAttrs.Index = "hecIndex" - - cfg.OtelAttrsToHec.Index = "otelIndex" - - return cfg - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - cfg := tt.configDataFn() - copyOtelAttrs(cfg) - assert.Equal(t, tt.wantConfigDataFn(), cfg) - }) - } -} - func Test_mapLogRecordToSplunkEvent(t *testing.T) { ts := pcommon.Timestamp(123) @@ -248,7 +154,7 @@ func Test_mapLogRecordToSplunkEvent(t *testing.T) { logResourceFn: pcommon.NewResource, configDataFn: func() *Config { config := createDefaultConfig().(*Config) - config.HecToOtelAttrs = splunk.HecToOtelAttrs{ + config.OtelAttrsToHec = splunk.HecToOtelAttrs{ Source: "mysource", SourceType: "mysourcetype", Index: "myindex", diff --git a/exporter/splunkhecexporter/metricdata_to_splunk.go b/exporter/splunkhecexporter/metricdata_to_splunk.go index 2bf17642e9d8a..d30f6c37694c1 100644 --- a/exporter/splunkhecexporter/metricdata_to_splunk.go +++ b/exporter/splunkhecexporter/metricdata_to_splunk.go @@ -52,10 +52,10 @@ func sanitizeFloat(value float64) any { } func mapMetricToSplunkEvent(res pcommon.Resource, m pmetric.Metric, config *Config, logger *zap.Logger) []*splunk.Event { - sourceKey := config.HecToOtelAttrs.Source - sourceTypeKey := config.HecToOtelAttrs.SourceType - indexKey := config.HecToOtelAttrs.Index - hostKey := config.HecToOtelAttrs.Host + sourceKey := config.OtelAttrsToHec.Source + sourceTypeKey := config.OtelAttrsToHec.SourceType + indexKey := config.OtelAttrsToHec.Index + hostKey := config.OtelAttrsToHec.Host host := unknownHostName source := config.Source sourceType := config.SourceType diff --git a/exporter/splunkhecexporter/metricdata_to_splunk_test.go b/exporter/splunkhecexporter/metricdata_to_splunk_test.go index c1f6600690ea0..1bad43f1f5aab 100644 --- a/exporter/splunkhecexporter/metricdata_to_splunk_test.go +++ b/exporter/splunkhecexporter/metricdata_to_splunk_test.go @@ -531,10 +531,10 @@ func Test_metricDataToSplunk(t *testing.T) { }, configFn: func() *Config { cfg := createDefaultConfig().(*Config) - cfg.HecToOtelAttrs.SourceType = "mysourcetype" - cfg.HecToOtelAttrs.Source = "mysource" - cfg.HecToOtelAttrs.Host = "myhost" - cfg.HecToOtelAttrs.Index = "myindex" + cfg.OtelAttrsToHec.SourceType = "mysourcetype" + cfg.OtelAttrsToHec.Source = "mysource" + cfg.OtelAttrsToHec.Host = "myhost" + cfg.OtelAttrsToHec.Index = "myindex" return cfg }, }, diff --git a/exporter/splunkhecexporter/testdata/config.yaml b/exporter/splunkhecexporter/testdata/config.yaml index 34e9c059825e1..c64833503616a 100644 --- a/exporter/splunkhecexporter/testdata/config.yaml +++ b/exporter/splunkhecexporter/testdata/config.yaml @@ -38,11 +38,6 @@ splunk_hec/allsettings: sourcetype: "mysourcetype" index: "myindex" host: "myhost" - hec_metadata_to_otel_attrs: - source: "mysource" - sourcetype: "mysourcetype" - index: "myindex" - host: "myhost" otel_to_hec_fields: severity_text: "myseverityfield" severity_number: "myseveritynumfield" diff --git a/exporter/splunkhecexporter/tracedata_to_splunk.go b/exporter/splunkhecexporter/tracedata_to_splunk.go index 978bf112680b9..d48eb208adec6 100644 --- a/exporter/splunkhecexporter/tracedata_to_splunk.go +++ b/exporter/splunkhecexporter/tracedata_to_splunk.go @@ -48,10 +48,10 @@ type hecSpan struct { } func mapSpanToSplunkEvent(resource pcommon.Resource, span ptrace.Span, config *Config) *splunk.Event { - sourceKey := config.HecToOtelAttrs.Source - sourceTypeKey := config.HecToOtelAttrs.SourceType - indexKey := config.HecToOtelAttrs.Index - hostKey := config.HecToOtelAttrs.Host + sourceKey := config.OtelAttrsToHec.Source + sourceTypeKey := config.OtelAttrsToHec.SourceType + indexKey := config.OtelAttrsToHec.Index + hostKey := config.OtelAttrsToHec.Host host := unknownHostName source := config.Source diff --git a/exporter/splunkhecexporter/tracedata_to_splunk_test.go b/exporter/splunkhecexporter/tracedata_to_splunk_test.go index 491d661477710..6e8ae03312355 100644 --- a/exporter/splunkhecexporter/tracedata_to_splunk_test.go +++ b/exporter/splunkhecexporter/tracedata_to_splunk_test.go @@ -57,7 +57,7 @@ func Test_traceDataToSplunk(t *testing.T) { }, configFn: func() *Config { cfg := createDefaultConfig().(*Config) - cfg.HecToOtelAttrs = splunk.HecToOtelAttrs{ + cfg.OtelAttrsToHec = splunk.HecToOtelAttrs{ Source: "mysource", SourceType: "mysourcetype", Host: "myhost", diff --git a/exporter/tencentcloudlogserviceexporter/go.mod b/exporter/tencentcloudlogserviceexporter/go.mod index 8c81f644c567c..bec36dac6f227 100644 --- a/exporter/tencentcloudlogserviceexporter/go.mod +++ b/exporter/tencentcloudlogserviceexporter/go.mod @@ -6,7 +6,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 github.com/pierrec/lz4 v2.6.1+incompatible github.com/stretchr/testify v1.11.1 - github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.32 + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.37 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/config/configopaque v1.42.1-0.20250925151503-069408608b28 diff --git a/exporter/tencentcloudlogserviceexporter/go.sum b/exporter/tencentcloudlogserviceexporter/go.sum index 45b655f266d1c..54066dd291efa 100644 --- a/exporter/tencentcloudlogserviceexporter/go.sum +++ b/exporter/tencentcloudlogserviceexporter/go.sum @@ -63,8 +63,8 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.32 h1:zADRm5QheBUpac2xeVzKkj9pOsOdgttEzdWSvEftidg= -github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.32/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.37 h1:ORgfmIP8+/PHzJiBJyVVKrS7O0ATqe6t3Q3AIplR7vA= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.1.37/go.mod h1:r5r4xbfxSaeR04b166HGsBa/R4U3SueirEUpXGuw+Q0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= diff --git a/extension/datadogextension/go.mod b/extension/datadogextension/go.mod index 6ed76dc780fc4..a4e568b9f92eb 100644 --- a/extension/datadogextension/go.mod +++ b/extension/datadogextension/go.mod @@ -28,7 +28,7 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/DataDog/agent-payload/v5 v5.0.164 // indirect github.com/DataDog/datadog-agent/comp/core/config v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/flare/builder v0.72.0-devel // indirect @@ -90,14 +90,14 @@ require ( github.com/DataDog/datadog-agent/pkg/util/system/socket v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel // indirect - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 // indirect + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 // indirect github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee // indirect github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 // indirect github.com/DataDog/sketches-go v1.4.7 // indirect github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4 // indirect github.com/DataDog/zstd v1.5.6 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/config v1.30.1 // indirect diff --git a/extension/datadogextension/go.sum b/extension/datadogextension/go.sum index 3da2ceb2193e0..659b55eb691f3 100644 --- a/extension/datadogextension/go.sum +++ b/extension/datadogextension/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/agent-payload/v5 v5.0.164 h1:0DgJrz2EMU0cEVAdBcumGSh60AAhSVbcUwWl41uwyWc= github.com/DataDog/agent-payload/v5 v5.0.164/go.mod h1:lxh9lb5xYrBXjblpIWYUi4deJqVbkIfkjwesi5nskDc= @@ -150,8 +150,8 @@ github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel h1:R7dsoerew1nyR github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel/go.mod h1:X8gUH1fdE09W75BmaRzXv9/BTxTe7q7jES5jTaSyYP0= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee h1:tXibLZk3G6HncIFJKaNItsdzcrk4YqILNDZlXPTNt4k= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee/go.mod h1:nTot/Iy0kW16bXgXr6blEc8gFeAS7vTqYlhAxh+dbc0= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= @@ -164,8 +164,8 @@ github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY= github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= diff --git a/extension/encoding/awslogsencodingextension/README.md b/extension/encoding/awslogsencodingextension/README.md index 818716afaf3e2..5ae00742bf87a 100644 --- a/extension/encoding/awslogsencodingextension/README.md +++ b/extension/encoding/awslogsencodingextension/README.md @@ -29,7 +29,7 @@ Example for Amazon CloudWatch Logs Subscription Filters: ```yaml extensions: awslogs_encoding/cloudwatch: - format: cloudwatch_logs_subscription_filter + format: cloudwatch receivers: awsfirehose: @@ -40,9 +40,9 @@ receivers: Example for VPC flow logs: ```yaml extensions: - awslogs_encoding/vpc_flow_log: - format: vpc_flow_log - vpc_flow_log: + awslogs_encoding/vpcflow: + format: vpcflow + vpcflow: # options [parquet, plain-text]. # parquet option still needs to be implemented. file_format: plain-text @@ -51,29 +51,70 @@ extensions: Example for S3 access logs: ```yaml extensions: - awslogs_encoding/s3_access_log: - format: s3_access_log + awslogs_encoding/s3access: + format: s3access ``` Example for CloudTrail logs: ```yaml extensions: awslogs_encoding/cloudtrail: - format: cloudtrail_log + format: cloudtrail ``` Example for ELB access logs: ```yaml extensions: - awslogs_encoding/elb_access_log: - format: elb_access_log + awslogs_encoding/elbaccess: + format: elbaccess ``` ## Log Format Identification -All logs processed by this extension are automatically tagged with an `awslogs_encoding.format` attribute at the scope level to identify the source format. +All logs processed by this extension are automatically tagged with an `encoding.format` attribute at the scope level to identify the source format. This allows you to easily filter and route logs based on their AWS service origin. -#### VPC flow log record fields +The pattern used is `aws.`. + +Examples: +- VPC Flow Logs: `encoding.format:"aws.vpcflow"` +- ELB Access Logs: `encoding.format:"aws.elbaccess"` + +## Format Values + +The following format values are supported in the `awslogsencodingextension` to identify different AWS log types: + +| **AWS Log Type** | **Format Value** | **Description** | +|------------------|------------------|-----------------| +| VPC Flow Logs | `vpcflow` | Virtual Private Cloud flow log records | +| ELB Access Logs | `elbaccess` | Elastic Load Balancer access logs (ALB, NLB, CLB) | +| S3 Access Logs | `s3access` | Amazon S3 server access logs | +| CloudTrail Logs | `cloudtrail` | AWS CloudTrail API call logs | +| WAF Logs | `waf` | AWS Web Application Firewall logs | +| CloudWatch Logs | `cloudwatch` | CloudWatch Logs Subscription Filter events | + +### Breaking Change Notice + +**Format values have been simplified in v0.137.0** + +**The old format values are deprecated and will be unsupported in v0.138.0.** + +| **AWS Log Type** | **Old Format Value (Deprecated)** | **New Format Value** | +|------------------|-----------------------------------|---------------------| +| VPC Flow Logs | `vpc_flow_log` | `vpcflow` | +| ELB Access Logs | `elb_access_log` | `elbaccess` | +| S3 Access Logs | `s3_access_log` | `s3access` | +| CloudTrail Logs | `cloudtrail_log` | `cloudtrail` | +| WAF Logs | `waf_log` | `waf` | +| CloudWatch Logs | `cloudwatch_logs_subscription_filter` | `cloudwatch` | + +#### Migration Path + +If you're using the old format values you should update the encoding extension configuration with the new format values. + + +## Produced Records per Format + +### VPC flow log record fields [VPC flow log record fields](https://docs.aws.amazon.com/vpc/latest/userguide/flow-log-records.html#flow-logs-fields) are mapped this way in the resulting OpenTelemetry log: @@ -120,7 +161,7 @@ All logs processed by this extension are automatically tagged with an `awslogs_e | `ecs-task-id` | `aws.ecs.task.id` | | `reject-reason` | `aws.vpc.flow.reject_reason` | -#### S3 access log record fields +### S3 access log record fields [S3 access log record fields](https://docs.aws.amazon.com/AmazonS3/latest/userguide/LogFormat.html) are mapped this way in the resulting OpenTelemetry log: @@ -153,7 +194,7 @@ All logs processed by this extension are automatically tagged with an `awslogs_e | TLS version | `tls.protocol.version` | | Access point ARN | `aws.s3.access_point.arn` | | aclRequired | `aws.s3.acl_required` | -#### AWS WAF log record fields +### AWS WAF log record fields [AWS WAF log record fields](https://docs.aws.amazon.com/waf/latest/developerguide/logging-fields.html) are mapped this way in the resulting OpenTelemetry log: @@ -192,7 +233,7 @@ All logs processed by this extension are automatically tagged with an `awslogs_e | `challengeResponse` | _Currently not supported_ | | `oversizeFields` | _Currently not supported_ | -#### CloudTrail log record fields +### CloudTrail log record fields [CloudTrail log record fields](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html) are mapped this way in the resulting OpenTelemetry log: @@ -232,11 +273,11 @@ All logs processed by this extension are automatically tagged with an `awslogs_e All request parameters and response elements are included directly as nested maps in the attributes, preserving their original structure. -#### ELB Access Log Fields +### ELB Access Log Fields ELB access log record fields are mapped this way in the resulting OpenTelemetry log: -##### Application Load Balancer (ALB) +#### Application Load Balancer (ALB) > AWS Fields are according to [documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html). @@ -274,7 +315,7 @@ ELB access log record fields are mapped this way in the resulting OpenTelemetry | "classification_reason" | _Currently not supported_ | | conn_trace_id | _Currently not supported_ | -##### Network Load Balancer (NLB) +#### Network Load Balancer (NLB) > AWS Fields are according to [documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest//network/load-balancer-access-logs.html#access-log-entry-format). @@ -303,7 +344,7 @@ ELB access log record fields are mapped this way in the resulting OpenTelemetry | alpn_client_preference_list | _Currently not supported_ | | tls_connection_creation_time | _Currently not supported_ | -##### Classic Load Balancer (CLB) +#### Classic Load Balancer (CLB) > AWS Fields are according to [documentation](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/access-log-collection.html) diff --git a/extension/encoding/awslogsencodingextension/config.go b/extension/encoding/awslogsencodingextension/config.go index 7f5841c2e9217..ab2379cf4173e 100644 --- a/extension/encoding/awslogsencodingextension/config.go +++ b/extension/encoding/awslogsencodingextension/config.go @@ -16,12 +16,20 @@ var _ xconfmap.Validator = (*Config)(nil) var ( supportedLogFormats = []string{ + // New format values constants.FormatCloudWatchLogsSubscriptionFilter, constants.FormatVPCFlowLog, constants.FormatS3AccessLog, constants.FormatWAFLog, constants.FormatCloudTrailLog, constants.FormatELBAccessLog, + // Legacy format values (for backward compatibility) + constants.FormatCloudWatchLogsSubscriptionFilterV1, + constants.FormatVPCFlowLogV1, + constants.FormatS3AccessLogV1, + constants.FormatWAFLogV1, + constants.FormatCloudTrailLogV1, + constants.FormatELBAccessLogV1, } supportedVPCFlowLogFileFormat = []string{constants.FileFormatPlainText, constants.FileFormatParquet} ) @@ -30,16 +38,18 @@ type Config struct { // Format defines the AWS logs format. // // Current valid values are: - // - cloudwatch_logs_subscription_filter - // - vpc_flow_log - // - s3_access_log - // - waf_log - // - cloudtrail_log - // - elb_access_log + // - cloudwatch + // - vpcflow + // - s3access + // - waf + // - cloudtrail + // - elbaccess // Format string `mapstructure:"format"` - VPCFlowLogConfig VPCFlowLogConfig `mapstructure:"vpc_flow_log"` + VPCFlowLogConfig VPCFlowLogConfig `mapstructure:"vpcflow"` + // Deprecated: use VPCFlowLogConfig instead. It will be removed in v0.138.0 + VPCFlowLogConfigV1 VPCFlowLogConfig `mapstructure:"vpc_flow_log"` // prevent unkeyed literal initialization _ struct{} @@ -63,10 +73,16 @@ func (cfg *Config) Validate() error { case "": errs = append(errs, fmt.Errorf("format unspecified, expected one of %q", supportedLogFormats)) case constants.FormatCloudWatchLogsSubscriptionFilter: // valid + case constants.FormatCloudWatchLogsSubscriptionFilterV1: // valid + case constants.FormatVPCFlowLogV1: // valid case constants.FormatVPCFlowLog: // valid + case constants.FormatS3AccessLogV1: // valid case constants.FormatS3AccessLog: // valid + case constants.FormatWAFLogV1: // valid case constants.FormatWAFLog: // valid + case constants.FormatCloudTrailLogV1: // valid case constants.FormatCloudTrailLog: // valid + case constants.FormatELBAccessLogV1: // valid case constants.FormatELBAccessLog: // valid default: errs = append(errs, fmt.Errorf("unsupported format %q, expected one of %q", cfg.Format, supportedLogFormats)) @@ -83,6 +99,18 @@ func (cfg *Config) Validate() error { )) } + // to be deprecated in v0.138.0 + switch cfg.VPCFlowLogConfigV1.FileFormat { + case constants.FileFormatParquet: // valid + case constants.FileFormatPlainText: // valid + default: + errs = append(errs, fmt.Errorf( + "unsupported file format %q for VPC flow log, expected one of %q", + cfg.VPCFlowLogConfigV1.FileFormat, + supportedVPCFlowLogFileFormat, + )) + } + if len(errs) > 0 { return errors.Join(errs...) } diff --git a/extension/encoding/awslogsencodingextension/config_test.go b/extension/encoding/awslogsencodingextension/config_test.go index 249bcd6ef92eb..59cd6cff8c6a5 100644 --- a/extension/encoding/awslogsencodingextension/config_test.go +++ b/extension/encoding/awslogsencodingextension/config_test.go @@ -35,32 +35,60 @@ func TestLoadConfig(t *testing.T) { expectedErr: fmt.Sprintf("format unspecified, expected one of %q", supportedLogFormats), }, { - id: component.NewIDWithName(metadata.Type, "cloudwatch_logs_subscription_filter"), + id: component.NewIDWithName(metadata.Type, "cloudwatch"), expected: &Config{ Format: constants.FormatCloudWatchLogsSubscriptionFilter, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, { - id: component.NewIDWithName(metadata.Type, "text_vpc_flow_log"), + id: component.NewIDWithName(metadata.Type, "text_vpcflow"), expected: &Config{ Format: constants.FormatVPCFlowLog, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, + }, + }, + { + id: component.NewIDWithName(metadata.Type, "text_vpc_flow_log"), + expected: &Config{ + Format: constants.FormatVPCFlowLogV1, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, + VPCFlowLogConfig: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, { - id: component.NewIDWithName(metadata.Type, "parquet_vpc_flow_log"), + id: component.NewIDWithName(metadata.Type, "parquet_vpcflow"), expected: &Config{ Format: constants.FormatVPCFlowLog, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatParquet, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, + { + id: component.NewIDWithName(metadata.Type, "invalid_vpcflow"), + expectedErr: fmt.Sprintf( + `unsupported file format "invalid" for VPC flow log, expected one of %q`, + supportedVPCFlowLogFileFormat, + ), + }, { id: component.NewIDWithName(metadata.Type, "invalid_vpc_flow_log"), expectedErr: fmt.Sprintf( @@ -69,39 +97,51 @@ func TestLoadConfig(t *testing.T) { ), }, { - id: component.NewIDWithName(metadata.Type, "s3_access_log"), + id: component.NewIDWithName(metadata.Type, "s3access"), expected: &Config{ Format: constants.FormatS3AccessLog, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, { - id: component.NewIDWithName(metadata.Type, "waf_log"), + id: component.NewIDWithName(metadata.Type, "waf"), expected: &Config{ Format: constants.FormatWAFLog, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, { - id: component.NewIDWithName(metadata.Type, "cloudtrail_log"), + id: component.NewIDWithName(metadata.Type, "cloudtrail"), expected: &Config{ Format: constants.FormatCloudTrailLog, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, { - id: component.NewIDWithName(metadata.Type, "elb_access_log"), + id: component.NewIDWithName(metadata.Type, "elbaccess"), expected: &Config{ Format: constants.FormatELBAccessLog, VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, }, }, } diff --git a/extension/encoding/awslogsencodingextension/extension.go b/extension/encoding/awslogsencodingextension/extension.go index d0e51a16b4058..2353a27ae4d28 100644 --- a/extension/encoding/awslogsencodingextension/extension.go +++ b/extension/encoding/awslogsencodingextension/extension.go @@ -14,6 +14,7 @@ import ( "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/extension" "go.opentelemetry.io/collector/pdata/plog" + "go.uber.org/zap" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding" "github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension/internal/constants" @@ -45,38 +46,78 @@ type encodingExtension struct { func newExtension(cfg *Config, settings extension.Settings) (*encodingExtension, error) { switch cfg.Format { - case constants.FormatCloudWatchLogsSubscriptionFilter: + case constants.FormatCloudWatchLogsSubscriptionFilter, constants.FormatCloudWatchLogsSubscriptionFilterV1: + if cfg.Format == constants.FormatCloudWatchLogsSubscriptionFilterV1 { + settings.Logger.Warn("using old format value. This format will be removed in version 0.138.0.", + zap.String("old_format", string(constants.FormatCloudWatchLogsSubscriptionFilterV1)), + zap.String("new_format", string(constants.FormatCloudWatchLogsSubscriptionFilter)), + ) + } return &encodingExtension{ unmarshaler: subscriptionfilter.NewSubscriptionFilterUnmarshaler(settings.BuildInfo), format: constants.FormatCloudWatchLogsSubscriptionFilter, }, nil - case constants.FormatVPCFlowLog: + case constants.FormatVPCFlowLog, constants.FormatVPCFlowLogV1: + var fileFormat string + if cfg.Format == constants.FormatVPCFlowLogV1 { + settings.Logger.Warn("using old format value. This format will be removed in version 0.138.0.", + zap.String("old_format", string(constants.FormatVPCFlowLogV1)), + zap.String("new_format", string(constants.FormatVPCFlowLog)), + ) + fileFormat = cfg.VPCFlowLogConfigV1.FileFormat + } else { + fileFormat = cfg.VPCFlowLogConfig.FileFormat + } unmarshaler, err := vpcflowlog.NewVPCFlowLogUnmarshaler( - cfg.VPCFlowLogConfig.FileFormat, + fileFormat, settings.BuildInfo, settings.Logger, ) return &encodingExtension{ unmarshaler: unmarshaler, - vpcFormat: cfg.VPCFlowLogConfig.FileFormat, + vpcFormat: fileFormat, format: constants.FormatVPCFlowLog, }, err - case constants.FormatS3AccessLog: + case constants.FormatS3AccessLog, constants.FormatS3AccessLogV1: + if cfg.Format == constants.FormatS3AccessLogV1 { + settings.Logger.Warn("using old format value. This format will be removed in version 0.138.0.", + zap.String("old_format", string(constants.FormatS3AccessLogV1)), + zap.String("new_format", string(constants.FormatS3AccessLog)), + ) + } return &encodingExtension{ unmarshaler: s3accesslog.NewS3AccessLogUnmarshaler(settings.BuildInfo), format: constants.FormatS3AccessLog, }, nil - case constants.FormatWAFLog: + case constants.FormatWAFLog, constants.FormatWAFLogV1: + if cfg.Format == constants.FormatWAFLogV1 { + settings.Logger.Warn("using old format value. This format will be removed in version 0.138.0.", + zap.String("old_format", string(constants.FormatWAFLogV1)), + zap.String("new_format", string(constants.FormatWAFLog)), + ) + } return &encodingExtension{ unmarshaler: waf.NewWAFLogUnmarshaler(settings.BuildInfo), format: constants.FormatWAFLog, }, nil - case constants.FormatCloudTrailLog: + case constants.FormatCloudTrailLog, constants.FormatCloudTrailLogV1: + if cfg.Format == constants.FormatCloudTrailLogV1 { + settings.Logger.Warn("using old format value. This format will be removed in version 0.138.0.", + zap.String("old_format", string(constants.FormatCloudTrailLogV1)), + zap.String("new_format", string(constants.FormatCloudTrailLog)), + ) + } return &encodingExtension{ unmarshaler: cloudtraillog.NewCloudTrailLogUnmarshaler(settings.BuildInfo), format: constants.FormatCloudTrailLog, }, nil - case constants.FormatELBAccessLog: + case constants.FormatELBAccessLog, constants.FormatELBAccessLogV1: + if cfg.Format == constants.FormatELBAccessLogV1 { + settings.Logger.Warn("using old format value. This format will be removed in version 0.138.0.", + zap.String("old_format", string(constants.FormatELBAccessLogV1)), + zap.String("new_format", string(constants.FormatELBAccessLog)), + ) + } return &encodingExtension{ unmarshaler: elbaccesslogs.NewELBAccessLogUnmarshaler( settings.BuildInfo, diff --git a/extension/encoding/awslogsencodingextension/extension_test.go b/extension/encoding/awslogsencodingextension/extension_test.go index 8fb7951d359b1..fe05a48114d54 100644 --- a/extension/encoding/awslogsencodingextension/extension_test.go +++ b/extension/encoding/awslogsencodingextension/extension_test.go @@ -25,7 +25,16 @@ func TestNew_CloudWatchLogsSubscriptionFilter(t *testing.T) { require.NotNil(t, e) _, err = e.UnmarshalLogs([]byte("invalid")) - require.ErrorContains(t, err, `failed to unmarshal logs as "cloudwatch_logs_subscription_filter" format`) + require.ErrorContains(t, err, `failed to unmarshal logs as "cloudwatch" format`) +} + +func TestNew_CloudWatchLogsSubscriptionFilterV1(t *testing.T) { + e, err := newExtension(&Config{Format: constants.FormatCloudWatchLogsSubscriptionFilterV1}, extensiontest.NewNopSettings(extensiontest.NopType)) + require.NoError(t, err) + require.NotNil(t, e) + + _, err = e.UnmarshalLogs([]byte("invalid")) + require.ErrorContains(t, err, `failed to unmarshal logs as "cloudwatch" format`) } func TestNew_CloudTrailLog(t *testing.T) { @@ -34,7 +43,16 @@ func TestNew_CloudTrailLog(t *testing.T) { require.NotNil(t, e) _, err = e.UnmarshalLogs([]byte("invalid")) - require.ErrorContains(t, err, `failed to unmarshal logs as "cloudtrail_log" format`) + require.ErrorContains(t, err, `failed to unmarshal logs as "cloudtrail" format`) +} + +func TestNew_CloudTrailLogV1(t *testing.T) { + e, err := newExtension(&Config{Format: constants.FormatCloudTrailLogV1}, extensiontest.NewNopSettings(extensiontest.NopType)) + require.NoError(t, err) + require.NotNil(t, e) + + _, err = e.UnmarshalLogs([]byte("invalid")) + require.ErrorContains(t, err, `failed to unmarshal logs as "cloudtrail" format`) } func TestNew_VPCFlowLog(t *testing.T) { @@ -50,13 +68,29 @@ func TestNew_VPCFlowLog(t *testing.T) { require.NotNil(t, logs) } +func TestNew_VPCFlowLogV1(t *testing.T) { + cfg := createDefaultConfig().(*Config) + cfg.Format = constants.FormatVPCFlowLogV1 + e, err := newExtension(cfg, extensiontest.NewNopSettings(extensiontest.NopType)) + require.NoError(t, err) + require.NotNil(t, e) +} + func TestNew_S3AccessLog(t *testing.T) { e, err := newExtension(&Config{Format: constants.FormatS3AccessLog}, extensiontest.NewNopSettings(extensiontest.NopType)) require.NoError(t, err) require.NotNil(t, e) _, err = e.UnmarshalLogs([]byte("invalid")) - require.ErrorContains(t, err, `failed to unmarshal logs as "s3_access_log" format`) + require.ErrorContains(t, err, `failed to unmarshal logs as "s3access" format`) +} + +func TestNew_S3AccessLogV1(t *testing.T) { + cfg := createDefaultConfig().(*Config) + cfg.Format = constants.FormatS3AccessLogV1 + e, err := newExtension(cfg, extensiontest.NewNopSettings(extensiontest.NopType)) + require.NoError(t, err) + require.NotNil(t, e) } func TestNew_WAFLog(t *testing.T) { @@ -65,7 +99,15 @@ func TestNew_WAFLog(t *testing.T) { require.NotNil(t, e) _, err = e.UnmarshalLogs([]byte("invalid")) - require.ErrorContains(t, err, `failed to unmarshal logs as "waf_log" format`) + require.ErrorContains(t, err, `failed to unmarshal logs as "waf" format`) +} + +func TestNew_WAFLogV1(t *testing.T) { + cfg := createDefaultConfig().(*Config) + cfg.Format = constants.FormatWAFLogV1 + e, err := newExtension(cfg, extensiontest.NewNopSettings(extensiontest.NopType)) + require.NoError(t, err) + require.NotNil(t, e) } func TestNew_ELBAcessLog(t *testing.T) { @@ -74,7 +116,15 @@ func TestNew_ELBAcessLog(t *testing.T) { require.NotNil(t, e) _, err = e.UnmarshalLogs([]byte("invalid")) - require.ErrorContains(t, err, `failed to unmarshal logs as "elb_access_log" format`) + require.ErrorContains(t, err, `failed to unmarshal logs as "elbaccess" format`) +} + +func TestNew_ELBAcessLogV1(t *testing.T) { + cfg := createDefaultConfig().(*Config) + cfg.Format = constants.FormatELBAccessLogV1 + e, err := newExtension(cfg, extensiontest.NewNopSettings(extensiontest.NopType)) + require.NoError(t, err) + require.NotNil(t, e) } func TestNew_Unimplemented(t *testing.T) { diff --git a/extension/encoding/awslogsencodingextension/factory.go b/extension/encoding/awslogsencodingextension/factory.go index 16daa47cb79ee..475b0a8aa4b53 100644 --- a/extension/encoding/awslogsencodingextension/factory.go +++ b/extension/encoding/awslogsencodingextension/factory.go @@ -31,5 +31,8 @@ func createDefaultConfig() component.Config { VPCFlowLogConfig: VPCFlowLogConfig{ FileFormat: constants.FileFormatPlainText, }, + VPCFlowLogConfigV1: VPCFlowLogConfig{ + FileFormat: constants.FileFormatPlainText, + }, } } diff --git a/extension/encoding/awslogsencodingextension/internal/constants/format.go b/extension/encoding/awslogsencodingextension/internal/constants/format.go index 371f167bb0f98..2f82e0facb602 100644 --- a/extension/encoding/awslogsencodingextension/internal/constants/format.go +++ b/extension/encoding/awslogsencodingextension/internal/constants/format.go @@ -4,14 +4,22 @@ package constants // import "github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension/internal/constants" const ( - FormatCloudWatchLogsSubscriptionFilter = "cloudwatch_logs_subscription_filter" - FormatVPCFlowLog = "vpc_flow_log" - FormatS3AccessLog = "s3_access_log" - FormatWAFLog = "waf_log" - FormatCloudTrailLog = "cloudtrail_log" - FormatELBAccessLog = "elb_access_log" + FormatCloudWatchLogsSubscriptionFilter = "cloudwatch" + FormatVPCFlowLog = "vpcflow" + FormatS3AccessLog = "s3access" + FormatWAFLog = "waf" + FormatCloudTrailLog = "cloudtrail" + FormatELBAccessLog = "elbaccess" + + // Legacy format values (v1) - kept for backward compatibility + FormatVPCFlowLogV1 = "vpc_flow_log" + FormatELBAccessLogV1 = "elb_access_log" + FormatS3AccessLogV1 = "s3_access_log" + FormatCloudTrailLogV1 = "cloudtrail_log" + FormatWAFLogV1 = "waf_log" + FormatCloudWatchLogsSubscriptionFilterV1 = "cloudwatch_logs_subscription_filter" FileFormatPlainText = "plain-text" FileFormatParquet = "parquet" - FormatIdentificationTag = "awslogs_encoding.format" + FormatIdentificationTag = "encoding.format" ) diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/testdata/cloudtrail_log_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/testdata/cloudtrail_log_expected.yaml index 31a9d646500d3..432a43d97e1e3 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/testdata/cloudtrail_log_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/testdata/cloudtrail_log_expected.yaml @@ -137,9 +137,6 @@ resourceLogs: stringValue: stopped - kvlistValue: values: - - key: instanceId - value: - stringValue: i-EXAMPLE56126103cb - key: currentState value: kvlistValue: @@ -160,6 +157,9 @@ resourceLogs: - key: name value: stringValue: stopped + - key: instanceId + value: + stringValue: i-EXAMPLE56126103cb body: {} timeUnixNano: "1689801448000000000" - attributes: @@ -238,9 +238,6 @@ resourceLogs: value: kvlistValue: values: - - key: userName - value: - stringValue: Richard - key: path value: stringValue: / @@ -253,6 +250,9 @@ resourceLogs: - key: createDate value: stringValue: Jul 19, 2023 9:25:09 PM + - key: userName + value: + stringValue: Richard body: {} timeUnixNano: "1689801909000000000" - attributes: @@ -314,6 +314,9 @@ resourceLogs: value: kvlistValue: values: + - key: topicArn + value: + stringValue: arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic - key: message value: stringValue: HIDDEN_DUE_TO_SECURITY_REASONS @@ -326,9 +329,6 @@ resourceLogs: - key: messageAttributes value: stringValue: HIDDEN_DUE_TO_SECURITY_REASONS - - key: topicArn - value: - stringValue: arn:aws:sns:us-east-1:123456789012:ExampleSNSTopic - key: aws.response.elements value: kvlistValue: @@ -373,6 +373,15 @@ resourceLogs: value: kvlistValue: values: + - key: state + value: + stringValue: Start + - key: eventSource + value: + stringValue: ssm.amazonaws.com + - key: eventName + value: + stringValue: UpdateInstanceInformation - key: insightType value: stringValue: ApiCallRateInsight @@ -398,15 +407,6 @@ resourceLogs: - key: average value: doubleValue: 669 - - key: state - value: - stringValue: Start - - key: eventSource - value: - stringValue: ssm.amazonaws.com - - key: eventName - value: - stringValue: UpdateInstanceInformation body: {} timeUnixNano: "1672627860000000000" - attributes: @@ -554,8 +554,8 @@ resourceLogs: timeUnixNano: "1749997800000000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: cloudtrail_log + stringValue: aws.cloudtrail name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension version: test-version diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/unmarshaler.go b/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/unmarshaler.go index 1db22a4a1f82b..03b283ca034bf 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/unmarshaler.go +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/cloudtraillog/unmarshaler.go @@ -117,7 +117,7 @@ func (u *CloudTrailLogUnmarshaler) processRecords(records []CloudTrailRecord) (p scopeLogs := resourceLogs.ScopeLogs().AppendEmpty() scopeLogs.Scope().SetName(metadata.ScopeName) scopeLogs.Scope().SetVersion(u.buildInfo.Version) - scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, constants.FormatCloudTrailLog) + scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, "aws."+constants.FormatCloudTrailLog) // Set resource attributes based on the first record // (all records have the same account ID and region) diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/alb_al_valid_logs_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/alb_al_valid_logs_expected.yaml index 5c03235c1dcfe..847f9c2b64cdc 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/alb_al_valid_logs_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/alb_al_valid_logs_expected.yaml @@ -47,7 +47,7 @@ resourceLogs: timeUnixNano: "1530570180186641000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: elb_access_log + stringValue: aws.elbaccess name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/clb_al_valid_logs_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/clb_al_valid_logs_expected.yaml index 088567e151839..a3700dfbf9b18 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/clb_al_valid_logs_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/clb_al_valid_logs_expected.yaml @@ -50,7 +50,7 @@ resourceLogs: timeUnixNano: "1431560383945958000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: elb_access_log + stringValue: aws.elbaccess name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/nlb_al_valid_logs_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/nlb_al_valid_logs_expected.yaml index ff5438b5c246e..40877c79ef5c5 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/nlb_al_valid_logs_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/testdata/nlb_al_valid_logs_expected.yaml @@ -41,7 +41,7 @@ resourceLogs: timeUnixNano: "1585731102000000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: elb_access_log + stringValue: aws.elbaccess name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/unmarshaler.go b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/unmarshaler.go index b714bfd49d4f5..42c163a6cde7c 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/unmarshaler.go +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/elb-access-log/unmarshaler.go @@ -125,7 +125,7 @@ func (f *elbAccessLogUnmarshaler) createLogs() (plog.Logs, plog.ResourceLogs, pl scopeLogs := resourceLogs.ScopeLogs().AppendEmpty() scopeLogs.Scope().SetName(metadata.ScopeName) scopeLogs.Scope().SetVersion(f.buildInfo.Version) - scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, constants.FormatELBAccessLog) + scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, "aws."+constants.FormatELBAccessLog) return logs, resourceLogs, scopeLogs } diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/unknown_request_uri_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/unknown_request_uri_expected.yaml index 7721d1e6c1b78..62d228924a95b 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/unknown_request_uri_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/unknown_request_uri_expected.yaml @@ -65,7 +65,7 @@ resourceLogs: timeUnixNano: "1549411238000000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: s3_access_log + stringValue: aws.s3access name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/valid_s3_access_log_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/valid_s3_access_log_expected.yaml index 49685ee92c1fb..e0829a6be5100 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/valid_s3_access_log_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/testdata/valid_s3_access_log_expected.yaml @@ -80,7 +80,7 @@ resourceLogs: timeUnixNano: "1549411238000000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: s3_access_log + stringValue: aws.s3access name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/unmarshaler.go b/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/unmarshaler.go index 05d1817a15a68..786c553744435 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/unmarshaler.go +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/s3-access-log/unmarshaler.go @@ -73,7 +73,7 @@ func (s *s3AccessLogUnmarshaler) createLogs() (plog.Logs, plog.ResourceLogs, plo scopeLogs := resourceLogs.ScopeLogs().AppendEmpty() scopeLogs.Scope().SetName(metadata.ScopeName) scopeLogs.Scope().SetVersion(s.buildInfo.Version) - scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, constants.FormatS3AccessLog) + scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, "aws."+constants.FormatS3AccessLog) return logs, resourceLogs, scopeLogs } diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/testdata/valid_cloudwatch_log_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/testdata/valid_cloudwatch_log_expected.yaml index 167e25e37df87..7ed8bb56f8525 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/testdata/valid_cloudwatch_log_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/testdata/valid_cloudwatch_log_expected.yaml @@ -26,7 +26,7 @@ resourceLogs: timeUnixNano: "1432826855000000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: cloudwatch_logs_subscription_filter + stringValue: aws.cloudwatch name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/unmarshaler.go b/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/unmarshaler.go index e2f85c330966b..bffbc0cae155d 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/unmarshaler.go +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/subscription-filter/unmarshaler.go @@ -95,7 +95,7 @@ func (f *subscriptionFilterUnmarshaler) createLogs( sl := rl.ScopeLogs().AppendEmpty() sl.Scope().SetName(metadata.ScopeName) sl.Scope().SetVersion(f.buildInfo.Version) - sl.Scope().Attributes().PutStr(constants.FormatIdentificationTag, constants.FormatCloudWatchLogsSubscriptionFilter) + sl.Scope().Attributes().PutStr(constants.FormatIdentificationTag, "aws."+constants.FormatCloudWatchLogsSubscriptionFilter) for _, event := range cwLog.LogEvents { logRecord := sl.LogRecords().AppendEmpty() // pcommon.Timestamp is a time specified as UNIX Epoch time in nanoseconds diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/testdata/valid_vpc_flow_log_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/testdata/valid_vpc_flow_log_expected.yaml index 1c7a909b8a858..a9727d5232c53 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/testdata/valid_vpc_flow_log_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/testdata/valid_vpc_flow_log_expected.yaml @@ -26,7 +26,7 @@ resourceLogs: timeUnixNano: "1742570142000000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: vpc_flow_log + stringValue: aws.vpcflow name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/unmarshaler.go b/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/unmarshaler.go index 6b44e643b667c..b06129b9d74b7 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/unmarshaler.go +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/vpc-flow-log/unmarshaler.go @@ -117,7 +117,7 @@ func (v *vpcFlowLogUnmarshaler) createLogs() (plog.Logs, plog.ResourceLogs, plog scopeLogs := resourceLogs.ScopeLogs().AppendEmpty() scopeLogs.Scope().SetName(metadata.ScopeName) scopeLogs.Scope().SetVersion(v.buildInfo.Version) - scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, constants.FormatVPCFlowLog) + scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, "aws."+constants.FormatVPCFlowLog) return logs, resourceLogs, scopeLogs } diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/testdata/valid_log_expected.yaml b/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/testdata/valid_log_expected.yaml index 0bd708e836b80..c29e6ac631be3 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/testdata/valid_log_expected.yaml +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/testdata/valid_log_expected.yaml @@ -107,7 +107,7 @@ resourceLogs: timeUnixNano: "1748208718574000000" scope: attributes: - - key: awslogs_encoding.format + - key: encoding.format value: - stringValue: waf_log + stringValue: aws.waf name: github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/awslogsencodingextension diff --git a/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/unmarshaler.go b/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/unmarshaler.go index fa1def70856d0..554fbaffcc782 100644 --- a/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/unmarshaler.go +++ b/extension/encoding/awslogsencodingextension/internal/unmarshaler/waf/unmarshaler.go @@ -73,7 +73,7 @@ func (w *wafLogUnmarshaler) UnmarshalAWSLogs(reader io.Reader) (plog.Logs, error scopeLogs := resourceLogs.ScopeLogs().AppendEmpty() scopeLogs.Scope().SetName(metadata.ScopeName) scopeLogs.Scope().SetVersion(w.buildInfo.Version) - scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, constants.FormatWAFLog) + scopeLogs.Scope().Attributes().PutStr(constants.FormatIdentificationTag, "aws."+constants.FormatWAFLog) scanner := bufio.NewScanner(reader) webACLID := "" diff --git a/extension/encoding/awslogsencodingextension/metadata.yaml b/extension/encoding/awslogsencodingextension/metadata.yaml index df37d05641e1e..3b347ee19b7ca 100644 --- a/extension/encoding/awslogsencodingextension/metadata.yaml +++ b/extension/encoding/awslogsencodingextension/metadata.yaml @@ -11,4 +11,4 @@ status: tests: config: - format: cloudwatch_logs_subscription_filter + format: cloudwatch diff --git a/extension/encoding/awslogsencodingextension/testdata/config.yaml b/extension/encoding/awslogsencodingextension/testdata/config.yaml index be224841a38a7..22bdf8702e1eb 100644 --- a/extension/encoding/awslogsencodingextension/testdata/config.yaml +++ b/extension/encoding/awslogsencodingextension/testdata/config.yaml @@ -1,31 +1,41 @@ awslogs_encoding: -awslogs_encoding/cloudwatch_logs_subscription_filter: - format: cloudwatch_logs_subscription_filter +awslogs_encoding/cloudwatch: + format: cloudwatch + +awslogs_encoding/text_vpcflow: + format: vpcflow + vpcflow: + file_format: plain-text awslogs_encoding/text_vpc_flow_log: format: vpc_flow_log vpc_flow_log: file_format: plain-text -awslogs_encoding/parquet_vpc_flow_log: - format: vpc_flow_log - vpc_flow_log: +awslogs_encoding/parquet_vpcflow: + format: vpcflow + vpcflow: file_format: parquet +awslogs_encoding/invalid_vpcflow: + format: vpcflow + vpcflow: + file_format: invalid + awslogs_encoding/invalid_vpc_flow_log: format: vpc_flow_log vpc_flow_log: file_format: invalid -awslogs_encoding/s3_access_log: - format: s3_access_log +awslogs_encoding/s3access: + format: s3access -awslogs_encoding/waf_log: - format: waf_log +awslogs_encoding/waf: + format: waf -awslogs_encoding/cloudtrail_log: - format: cloudtrail_log +awslogs_encoding/cloudtrail: + format: cloudtrail -awslogs_encoding/elb_access_log: - format: elb_access_log +awslogs_encoding/elbaccess: + format: elbaccess diff --git a/extension/googleclientauthextension/go.mod b/extension/googleclientauthextension/go.mod index 5e85e6a906e82..bdeeba1b1080c 100644 --- a/extension/googleclientauthextension/go.mod +++ b/extension/googleclientauthextension/go.mod @@ -5,7 +5,7 @@ go 1.24.0 exclude github.com/knadh/koanf v1.5.0 require ( - github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauthextension v0.53.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauthextension v0.54.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 @@ -16,9 +16,9 @@ require ( ) require ( - cloud.google.com/go/auth v0.16.1 // indirect + cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.3 // indirect @@ -29,7 +29,7 @@ require ( github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.2 // indirect + github.com/googleapis/gax-go/v2 v2.15.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect @@ -40,12 +40,12 @@ require ( github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/collector/featuregate v1.42.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/internal/telemetry v0.136.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/pdata v1.42.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 // indirect go.opentelemetry.io/otel v1.38.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect @@ -55,13 +55,13 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/net v0.41.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.26.0 // indirect - google.golang.org/api v0.234.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + google.golang.org/api v0.249.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 // indirect google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/extension/googleclientauthextension/go.sum b/extension/googleclientauthextension/go.sum index 636859c2e6682..7ec09396cf1c0 100644 --- a/extension/googleclientauthextension/go.sum +++ b/extension/googleclientauthextension/go.sum @@ -1,11 +1,11 @@ -cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU= -cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= +cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauthextension v0.53.0 h1:18IVoXIyayVw5xgC3KBK/6w2ic4muIlafWLERRQzFwc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauthextension v0.53.0/go.mod h1:1riN7OcQoaDIjHPSWTaW7Z96lpKNDZ1qhTjg7LTu6tQ= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauthextension v0.54.0 h1:x3XLS+LypycNmLT3pCJkSQdErWp3sLvK0vjl21iQfgQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/extension/googleclientauthextension v0.54.0/go.mod h1:K8wtUZ/GzRhA21Dy6XDQJZTbpcMF0Kb6FSaJN+rBLJ0= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -34,8 +34,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/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= -github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= +github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= +github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= 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/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -65,16 +65,16 @@ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWu github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= -go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= +go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 h1:3pTSwA8fcn01tuS1/CUqOxCPbQqpUiVbAAWVmUMr9OQ= go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28/go.mod h1:MK8AOgsH13rQFYgruF1uqLmpgwoymYhBYZDzAqmSnwY= go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 h1:g97PbHQ8knLdk1RbA30H6mII9cSe4Y9LSFx2KMqV+ww= @@ -95,10 +95,10 @@ go.opentelemetry.io/collector/pipeline v1.42.0 h1:jqn1lPwUdCn+lsyNubCtwzXZLEm+R3 go.opentelemetry.io/collector/pipeline v1.42.0/go.mod h1:xUrAqiebzYbrgxyoXSkk6/Y3oi5Sy3im2iCA51LwUAI= go.opentelemetry.io/contrib/bridges/otelzap v0.13.0 h1:aBKdhLVieqvwWe9A79UHI/0vgp2t/s2euY8X59pGRlw= go.opentelemetry.io/contrib/bridges/otelzap v0.13.0/go.mod h1:SYqtxLQE7iINgh6WFuVi2AI70148B8EI35DSk0Wr8m4= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0 h1:RbKq8BG0FI8OiXhBfcRtqqHcZcka+gU3cskNuf05R18= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.63.0/go.mod h1:h06DGIukJOevXaj/xrNjhi/2098RZzcLTbc0jDAUbsg= go.opentelemetry.io/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= go.opentelemetry.io/otel/log v0.14.0 h1:2rzJ+pOAZ8qmZ3DDHg73NEKzSZkhkGIua9gXtxNGgrM= @@ -130,34 +130,34 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= -golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= -golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= +golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -168,10 +168,10 @@ 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= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.234.0 h1:d3sAmYq3E9gdr2mpmiWGbm9pHsA/KJmyiLkwKfHBqU4= -google.golang.org/api v0.234.0/go.mod h1:QpeJkemzkFKe5VCE/PMv7GsUfn9ZF+u+q1Q7w6ckxTg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= +google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9 h1:V1jCN2HBa8sySkR5vLcCSqJSTMv093Rw9EJefhQGP7M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250922171735-9219d122eba9/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= diff --git a/internal/datadog/go.mod b/internal/datadog/go.mod index 5369584fbaef6..aa13c5b3ec262 100644 --- a/internal/datadog/go.mod +++ b/internal/datadog/go.mod @@ -7,9 +7,9 @@ require ( github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/inframetadata v0.72.0-devel github.com/DataDog/datadog-agent/pkg/opentelemetry-mapping-go/otlp/attributes v0.72.0-devel github.com/DataDog/datadog-agent/pkg/util/hostname/validate v0.72.0-devel - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 github.com/aws/aws-sdk-go-v2 v1.37.0 github.com/aws/aws-sdk-go-v2/config v1.30.1 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.0 @@ -38,7 +38,7 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/DataDog/datadog-agent/comp/core/secrets/def v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/secrets/mock v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/secrets/utils v0.72.0-devel // indirect @@ -187,7 +187,7 @@ require ( golang.org/x/exp v0.0.0-20250819193227-8b4c13bb791b // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.34.0 // indirect golang.org/x/text v0.28.0 // indirect golang.org/x/time v0.12.0 // indirect diff --git a/internal/datadog/go.sum b/internal/datadog/go.sum index 78c64e91eb394..61f403b5586af 100644 --- a/internal/datadog/go.sum +++ b/internal/datadog/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/datadog-agent/comp/core/secrets/def v0.72.0-devel h1:qzudVVLsoBQOYT7g9TyGpNHnfV6pf39hV4i5rjj5WsY= github.com/DataDog/datadog-agent/comp/core/secrets/def v0.72.0-devel/go.mod h1:I9vNx3KX4dWuKrAjSrHOa2UBG9T2w8i5ZMn8gCYm97Y= @@ -70,8 +70,8 @@ github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel h1:R7dsoerew1nyR github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel/go.mod h1:X8gUH1fdE09W75BmaRzXv9/BTxTe7q7jES5jTaSyYP0= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee h1:tXibLZk3G6HncIFJKaNItsdzcrk4YqILNDZlXPTNt4k= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee/go.mod h1:nTot/Iy0kW16bXgXr6blEc8gFeAS7vTqYlhAxh+dbc0= github.com/DataDog/sketches-go v1.4.7 h1:eHs5/0i2Sdf20Zkj0udVFWuCrXGRFig2Dcfm5rtcTxc= @@ -80,8 +80,8 @@ github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4 h1:PwqhnH1ln2EjGm github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4/go.mod h1:wDdUVJ2SHaMaPrCZrlRCObwkubsX8j5sme3LaR/SGTc= github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY= github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -622,8 +622,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/internal/otelarrow/go.mod b/internal/otelarrow/go.mod index bdbd504af1629..92833dc2e3b8c 100644 --- a/internal/otelarrow/go.mod +++ b/internal/otelarrow/go.mod @@ -6,7 +6,7 @@ require ( github.com/klauspost/compress v1.18.0 github.com/open-telemetry/opentelemetry-collector-contrib/exporter/otelarrowexporter v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/otelarrowreceiver v0.136.0 - github.com/open-telemetry/otel-arrow/go v0.39.0 + github.com/open-telemetry/otel-arrow/go v0.43.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 @@ -32,14 +32,14 @@ require ( require ( github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/apache/arrow-go/v18 v18.2.0 // indirect - github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect - github.com/brianvoe/gofakeit/v6 v6.17.0 // indirect + github.com/axiomhq/hyperloglog v0.2.5 // indirect + github.com/brianvoe/gofakeit/v6 v6.28.0 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.4.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect @@ -52,7 +52,8 @@ require ( 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 - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/kamstrup/intmap v0.5.1 // indirect + github.com/klauspost/cpuid/v2 v2.2.11 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.0 // indirect @@ -64,7 +65,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/grpcutil v0.136.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.136.0 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect @@ -98,7 +99,7 @@ require ( go.opentelemetry.io/otel/log v0.14.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.44.0 // indirect golang.org/x/sync v0.17.0 // indirect diff --git a/internal/otelarrow/go.sum b/internal/otelarrow/go.sum index 5eed5f92a0411..d3fcb540df646 100644 --- a/internal/otelarrow/go.sum +++ b/internal/otelarrow/go.sum @@ -9,16 +9,17 @@ github.com/apache/arrow-go/v18 v18.2.0 h1:QhWqpgZMKfWOniGPhbUxrHohWnooGURqL2R2Gg github.com/apache/arrow-go/v18 v18.2.0/go.mod h1:Ic/01WSwGJWRrdAZcxjBZ5hbApNJ28K96jGYaxzzGUc= github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE= github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw= -github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= -github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= -github.com/brianvoe/gofakeit/v6 v6.17.0 h1:obbQTJeHfktJtiZzq0Q1bEpsNUs+yHrYlPVWt7BtmJ4= -github.com/brianvoe/gofakeit/v6 v6.17.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= +github.com/axiomhq/hyperloglog v0.2.5 h1:Hefy3i8nAs8zAI/tDp+wE7N+Ltr8JnwiW3875pvl0N8= +github.com/axiomhq/hyperloglog v0.2.5/go.mod h1:DLUK9yIzpU5B6YFLjxTIcbHu1g4Y1WQb1m5RH3radaM= +github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4= +github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -28,8 +29,8 @@ github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006 h1:50sW4r0Pcvl github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006/go.mod h1:eIXCMsMYCaqq9m1KSSxXwQG11krpuNPGP3k0uaWrbas= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= -github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -66,14 +67,16 @@ github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kamstrup/intmap v0.5.1 h1:ENGAowczZA+PJPYYlreoqJvWgQVtAmX1l899WfYFVK0= +github.com/kamstrup/intmap v0.5.1/go.mod h1:gWUVWHKzWj8xpJVFf5GC0O26bWmv3GqdnIX/LMT6Aq4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= +github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -103,12 +106,13 @@ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWu github.com/mostynb/go-grpc-compression v1.2.3 h1:42/BKWMy0KEJGSdWvzqIyOZ95YcR9mLPqKctH7Uo//I= github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1Vjs47Km/Y2FE6ouQ7Lg= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/open-telemetry/otel-arrow/go v0.39.0 h1:ZlPsPdqn5wuSzulWqIs41jWmwk7B10Qg+sL7Bw3w6kA= -github.com/open-telemetry/otel-arrow/go v0.39.0/go.mod h1:CK13damnj/yQW2TKzdjJs5xVmfbkTKLLwjtjoUrMk7I= +github.com/open-telemetry/otel-arrow/go v0.43.0 h1:P1BsergAwmn4C5WbuQaS4S3cHIaOirJlTbsUtUPiPNY= +github.com/open-telemetry/otel-arrow/go v0.43.0/go.mod h1:gGW+5QC51n86Vj3F3FY9m8hTfb6llZrDhW+8HB/mBGw= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -255,8 +259,8 @@ golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= diff --git a/pkg/datadog/go.mod b/pkg/datadog/go.mod index cbff5fb4d7d4c..6fe272e45ae80 100644 --- a/pkg/datadog/go.mod +++ b/pkg/datadog/go.mod @@ -37,7 +37,7 @@ require ( ) require ( - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/DataDog/agent-payload/v5 v5.0.164 // indirect github.com/DataDog/datadog-agent/comp/core/flare/builder v0.72.0-devel // indirect github.com/DataDog/datadog-agent/comp/core/flare/types v0.72.0-devel // indirect @@ -93,14 +93,14 @@ require ( github.com/DataDog/datadog-agent/pkg/util/testutil v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel // indirect - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 // indirect + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 // indirect github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee // indirect github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 // indirect github.com/DataDog/sketches-go v1.4.7 // indirect github.com/DataDog/viper v1.14.1-0.20250612143030-1b15c8822ed4 // indirect github.com/DataDog/zstd v1.5.6 // indirect github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/aws/aws-sdk-go-v2 v1.37.0 // indirect github.com/aws/aws-sdk-go-v2/config v1.30.1 // indirect diff --git a/pkg/datadog/go.sum b/pkg/datadog/go.sum index dc267bcb59a43..d242caeff9685 100644 --- a/pkg/datadog/go.sum +++ b/pkg/datadog/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/DataDog/agent-payload/v5 v5.0.164 h1:0DgJrz2EMU0cEVAdBcumGSh60AAhSVbcUwWl41uwyWc= github.com/DataDog/agent-payload/v5 v5.0.164/go.mod h1:lxh9lb5xYrBXjblpIWYUi4deJqVbkIfkjwesi5nskDc= @@ -150,8 +150,8 @@ github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel h1:R7dsoerew1nyR github.com/DataDog/datadog-agent/pkg/util/winutil v0.72.0-devel/go.mod h1:X8gUH1fdE09W75BmaRzXv9/BTxTe7q7jES5jTaSyYP0= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee h1:tXibLZk3G6HncIFJKaNItsdzcrk4YqILNDZlXPTNt4k= github.com/DataDog/gohai v0.0.0-20230524154621-4316413895ee/go.mod h1:nTot/Iy0kW16bXgXr6blEc8gFeAS7vTqYlhAxh+dbc0= github.com/DataDog/mmh3 v0.0.0-20210722141835-012dc69a9e49 h1:EbzDX8HPk5uE2FsJYxD74QmMw0/3CqSKhEr6teh0ncQ= @@ -164,8 +164,8 @@ github.com/DataDog/zstd v1.5.6 h1:LbEglqepa/ipmmQJUDnSsfvA8e8IStVcGaFWDuxvGOY= github.com/DataDog/zstd v1.5.6/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f h1:5Vuo4niPKFkfwW55jV4vY0ih3VQ9RaQqeqY67fvRn8A= github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= diff --git a/pkg/ottl/contexts/internal/ctxprofile/profile.go b/pkg/ottl/contexts/internal/ctxprofile/profile.go index bfc9d30e71584..44c91fdf034a4 100644 --- a/pkg/ottl/contexts/internal/ctxprofile/profile.go +++ b/pkg/ottl/contexts/internal/ctxprofile/profile.go @@ -15,6 +15,7 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxcommon" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxerror" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxutil" ) @@ -59,10 +60,13 @@ func PathGetSetter[K Context](path ottl.Path[K]) (ottl.GetSetter[K], error) { case "original_payload": return accessOriginalPayload[K](), nil case "attributes": + attributable := func(ctx K) (pprofile.ProfilesDictionary, ctxprofilecommon.ProfileAttributable) { + return ctx.GetProfilesDictionary(), ctx.GetProfile() + } if path.Keys() == nil { - return accessAttributes[K](), nil + return ctxprofilecommon.AccessAttributes[K](attributable), nil } - return accessAttributesKey(path.Keys()), nil + return ctxprofilecommon.AccessAttributesKey[K](path.Keys(), attributable), nil default: return nil, ctxerror.New(path.Name(), path.String(), Name, DocRef) } @@ -282,63 +286,3 @@ func accessOriginalPayload[K Context]() ottl.StandardGetSetter[K] { }, } } - -func accessAttributes[K Context]() ottl.StandardGetSetter[K] { - return ottl.StandardGetSetter[K]{ - Getter: func(_ context.Context, tCtx K) (any, error) { - return pprofile.FromAttributeIndices(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfile(), tCtx.GetProfilesDictionary()), nil - }, - Setter: func(_ context.Context, tCtx K, val any) error { - m, err := ctxutil.GetMap(val) - if err != nil { - return err - } - tCtx.GetProfile().AttributeIndices().FromRaw([]int32{}) - for k, v := range m.All() { - if err := pprofile.PutAttribute(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfile(), tCtx.GetProfilesDictionary(), k, v); err != nil { - return err - } - } - return nil - }, - } -} - -func accessAttributesKey[K Context](key []ottl.Key[K]) ottl.StandardGetSetter[K] { - return ottl.StandardGetSetter[K]{ - Getter: func(ctx context.Context, tCtx K) (any, error) { - return ctxutil.GetMapValue[K](ctx, tCtx, pprofile.FromAttributeIndices(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfile(), tCtx.GetProfilesDictionary()), key) - }, - Setter: func(ctx context.Context, tCtx K, val any) error { - newKey, err := ctxutil.GetMapKeyName(ctx, tCtx, key[0]) - if err != nil { - return err - } - v := getAttributeValue(tCtx, *newKey) - err = ctxutil.SetIndexableValue[K](ctx, tCtx, v, val, key[1:]) - if err != nil { - return err - } - return pprofile.PutAttribute(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfile(), tCtx.GetProfilesDictionary(), *newKey, v) - }, - } -} - -func getAttributeValue[K Context](tCtx K, key string) pcommon.Value { - // Find the index of the attribute in the profile's attribute indices - // and return the corresponding value from the attribute table. - table := tCtx.GetProfilesDictionary().AttributeTable() - strTable := tCtx.GetProfilesDictionary().StringTable() - - for _, tableIndex := range tCtx.GetProfile().AttributeIndices().All() { - attr := table.At(int(tableIndex)) - if strTable.At(int(attr.KeyStrindex())) == key { - // Copy the value because OTTL expects to do inplace updates for the values. - v := pcommon.NewValueEmpty() - attr.Value().CopyTo(v) - return v - } - } - - return pcommon.NewValueEmpty() -} diff --git a/pkg/ottl/contexts/internal/ctxprofile/profile_test.go b/pkg/ottl/contexts/internal/ctxprofile/profile_test.go index c8b4b236f93b6..d78838c85b05b 100644 --- a/pkg/ottl/contexts/internal/ctxprofile/profile_test.go +++ b/pkg/ottl/contexts/internal/ctxprofile/profile_test.go @@ -192,8 +192,15 @@ func (p *profileContext) GetProfile() pprofile.Profile { return p.profile } +func (p *profileContext) AttributeIndices() pcommon.Int32Slice { + return p.profile.AttributeIndices() +} + func newProfileContext(profile pprofile.Profile, dictionary pprofile.ProfilesDictionary) *profileContext { - return &profileContext{profile: profile, dictionary: dictionary} + return &profileContext{ + profile: profile, + dictionary: dictionary, + } } func createValueType() pprofile.ValueType { diff --git a/pkg/ottl/contexts/internal/ctxprofilecommon/attributes.go b/pkg/ottl/contexts/internal/ctxprofilecommon/attributes.go new file mode 100644 index 0000000000000..85a5fe0880623 --- /dev/null +++ b/pkg/ottl/contexts/internal/ctxprofilecommon/attributes.go @@ -0,0 +1,85 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon" + +import ( + "context" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pprofile" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxutil" +) + +type ProfileAttributable interface { + AttributeIndices() pcommon.Int32Slice +} + +type attributeSource[K any] = func(ctx K) (pprofile.ProfilesDictionary, ProfileAttributable) + +func AccessAttributes[K any](source attributeSource[K]) ottl.StandardGetSetter[K] { + return ottl.StandardGetSetter[K]{ + Getter: func(_ context.Context, tCtx K) (any, error) { + dict, attributable := source(tCtx) + return pprofile.FromAttributeIndices(dict.AttributeTable(), attributable, dict), nil + }, + Setter: func(_ context.Context, tCtx K, val any) error { + m, err := ctxutil.GetMap(val) + if err != nil { + return err + } + + dict, attributable := source(tCtx) + attributable.AttributeIndices().FromRaw([]int32{}) + for k, v := range m.All() { + if err := pprofile.PutAttribute(dict.AttributeTable(), attributable, dict, k, v); err != nil { + return err + } + } + return nil + }, + } +} + +func AccessAttributesKey[K any](key []ottl.Key[K], source attributeSource[K]) ottl.StandardGetSetter[K] { + return ottl.StandardGetSetter[K]{ + Getter: func(ctx context.Context, tCtx K) (any, error) { + dict, attributable := source(tCtx) + return ctxutil.GetMapValue[K](ctx, tCtx, pprofile.FromAttributeIndices(dict.AttributeTable(), attributable, dict), key) + }, + Setter: func(ctx context.Context, tCtx K, val any) error { + newKey, err := ctxutil.GetMapKeyName(ctx, tCtx, key[0]) + if err != nil { + return err + } + + dict, attributable := source(tCtx) + v := getAttributeValue(dict, attributable.AttributeIndices(), *newKey) + if err := ctxutil.SetIndexableValue[K](ctx, tCtx, v, val, key[1:]); err != nil { + return err + } + + return pprofile.PutAttribute(dict.AttributeTable(), attributable, dict, *newKey, v) + }, + } +} + +func getAttributeValue(dict pprofile.ProfilesDictionary, indices pcommon.Int32Slice, key string) pcommon.Value { + strTable := dict.StringTable() + kvuTable := dict.AttributeTable() + + for _, tableIndex := range indices.All() { + attr := kvuTable.At(int(tableIndex)) + attrKey := strTable.At(int(attr.KeyStrindex())) + if attrKey == key { + // Copy the value because OTTL expects to do inplace updates for the values. + v := pcommon.NewValueEmpty() + attr.Value().CopyTo(v) + return v + } + } + + return pcommon.NewValueEmpty() +} diff --git a/pkg/ottl/contexts/internal/ctxprofilecommon/attributes_test.go b/pkg/ottl/contexts/internal/ctxprofilecommon/attributes_test.go new file mode 100644 index 0000000000000..c4b9de05fdf99 --- /dev/null +++ b/pkg/ottl/contexts/internal/ctxprofilecommon/attributes_test.go @@ -0,0 +1,453 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon" + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pprofile" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/pathtest" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottltest" +) + +// Mock implementations for AttributeContext and dependencies + +type mockAttributeContext struct { + indices pcommon.Int32Slice + dictionary pprofile.ProfilesDictionary +} + +func (m *mockAttributeContext) AttributeIndices() pcommon.Int32Slice { + return m.indices +} + +func (m *mockAttributeContext) GetProfilesDictionary() pprofile.ProfilesDictionary { + return m.dictionary +} + +func mockAttributeSource(ctx *mockAttributeContext) (pprofile.ProfilesDictionary, ProfileAttributable) { + return ctx.dictionary, ctx +} + +func TestAccessAttributes_Getter(t *testing.T) { + dict := pprofile.NewProfilesDictionary() + attrTable := dict.AttributeTable() + strTable := dict.StringTable() + for i := 0; i < 3; i++ { + strTable.Append("") + } + strTable.SetAt(1, "foo") + strTable.SetAt(2, "baz") + attr1 := attrTable.AppendEmpty() + attr1.SetKeyStrindex(1) + attr1.Value().SetStr("bar") + attr2 := attrTable.AppendEmpty() + attr2.SetKeyStrindex(2) + attr2.Value().SetInt(42) + + indices := pcommon.NewInt32Slice() + indices.Append(0) + indices.Append(1) + + ctx := &mockAttributeContext{ + indices: indices, + dictionary: dict, + } + + getSetter := AccessAttributes[*mockAttributeContext](mockAttributeSource) + + got, err := getSetter.Getter(t.Context(), ctx) + assert.NoError(t, err) + + m, ok := got.(pcommon.Map) + assert.True(t, ok) + + fooValue, ok := m.Get("foo") + assert.True(t, ok) + assert.Equal(t, "bar", fooValue.Str()) + + bazValue, ok := m.Get("baz") + assert.True(t, ok) + assert.Equal(t, int64(42), bazValue.Int()) +} + +func TestAccessAttributes_Setter(t *testing.T) { + dict := pprofile.NewProfilesDictionary() + attrTable := dict.AttributeTable() + strTable := dict.StringTable() + + for i := 0; i < 3; i++ { + strTable.Append("") + } + strTable.SetAt(1, "existing_key1") + strTable.SetAt(2, "existing_key2") + + // Add existing attributes to the shared table (these should remain in the table) + existingAttr1 := attrTable.AppendEmpty() + existingAttr1.SetKeyStrindex(1) + existingAttr1.Value().SetStr("existing_value1") + + existingAttr2 := attrTable.AppendEmpty() + existingAttr2.SetKeyStrindex(2) + existingAttr2.Value().SetInt(999) + + // Set up indices to reference existing attributes (this will be replaced by setter) + indices := pcommon.NewInt32Slice() + indices.Append(0) // Reference to existingAttr1 + indices.Append(1) // Reference to existingAttr2 + + ctx := &mockAttributeContext{ + indices: indices, + dictionary: dict, + } + + // Capture original shared table state before setter operation + originalAttrTableLen := attrTable.Len() + originalStrTableLen := strTable.Len() + + // Store original attribute values for verification they remain in shared tables + originalAttr1Key := strTable.At(int(existingAttr1.KeyStrindex())) + originalAttr1Value := existingAttr1.Value().Str() + originalAttr2Key := strTable.At(int(existingAttr2.KeyStrindex())) + originalAttr2Value := existingAttr2.Value().Int() + + getSetter := AccessAttributes[*mockAttributeContext](mockAttributeSource) + + // Prepare map to set with new attributes + m := pcommon.NewMap() + m.PutStr("alpha", "beta") + m.PutInt("num", 123) + + err := getSetter.Setter(t.Context(), ctx, m) + assert.NoError(t, err) + + // Verify that the shared attribute table preserves existing entries + // The existing attributes should still be in the shared table even though + // the indices slice is replaced + assert.Equal(t, originalAttr1Key, strTable.At(int(existingAttr1.KeyStrindex())), + "Original attribute 1 key should remain in shared string table") + assert.Equal(t, originalAttr1Value, existingAttr1.Value().Str(), + "Original attribute 1 value should remain in shared attribute table") + assert.Equal(t, originalAttr2Key, strTable.At(int(existingAttr2.KeyStrindex())), + "Original attribute 2 key should remain in shared string table") + assert.Equal(t, originalAttr2Value, existingAttr2.Value().Int(), + "Original attribute 2 value should remain in shared attribute table") + + // Verify that the indices slice was replaced (this is the expected behavior) + // The setter replaces the entire attribute indices slice with new indices + assert.Equal(t, 2, indices.Len(), "Indices should now point to the 2 new attributes") + + // Verify that new attributes were added to the shared tables (after existing ones) + assert.Greater(t, attrTable.Len(), originalAttrTableLen, + "New attributes should be appended to the shared attribute table") + assert.Greater(t, strTable.Len(), originalStrTableLen, + "New strings should be appended to the shared string table") + + // Verify that the new indices correctly point to the new attributes + foundAlpha := false + foundNum := false + for _, idx := range indices.All() { + attr := attrTable.At(int(idx)) + attrKey := strTable.At(int(attr.KeyStrindex())) + if attrKey == "alpha" { + foundAlpha = true + assert.Equal(t, "beta", attr.Value().Str()) + // Verify this attribute is placed after existing ones + assert.GreaterOrEqual(t, int(idx), originalAttrTableLen, + "New alpha attribute should be placed after existing attributes") + } + if attrKey == "num" { + foundNum = true + assert.Equal(t, int64(123), attr.Value().Int()) + // Verify this attribute is placed after existing ones + assert.GreaterOrEqual(t, int(idx), originalAttrTableLen, + "New num attribute should be placed after existing attributes") + } + } + assert.True(t, foundAlpha, "New 'alpha' attribute should be found via indices") + assert.True(t, foundNum, "New 'num' attribute should be found via indices") +} + +func TestAccessAttributes_Setter_InvalidValue(t *testing.T) { + dict := pprofile.NewProfilesDictionary() + indices := pcommon.NewInt32Slice() + + ctx := &mockAttributeContext{ + indices: indices, + dictionary: dict, + } + + getSetter := AccessAttributes[*mockAttributeContext](mockAttributeSource) + + // Pass a value that is not a ctxutil.Map + err := getSetter.Setter(t.Context(), ctx, "not_a_map") + assert.Error(t, err) +} + +func TestAccessAttributesKey_Getter(t *testing.T) { + dict := pprofile.NewProfilesDictionary() + attrTable := dict.AttributeTable() + strTable := dict.StringTable() + for i := 0; i < 2; i++ { + strTable.Append("") + } + strTable.SetAt(1, "foo") + attr := attrTable.AppendEmpty() + attr.SetKeyStrindex(1) + attr.Value().SetStr("bar") + indices := pcommon.NewInt32Slice() + indices.Append(0) + + ctx := &mockAttributeContext{ + indices: indices, + dictionary: dict, + } + + t.Run("non-existing-key", func(t *testing.T) { + path := pathtest.Path[*mockAttributeContext]{ + KeySlice: []ottl.Key[*mockAttributeContext]{ + &pathtest.Key[*mockAttributeContext]{ + S: ottltest.Strp("key1"), + }, + }, + } + getSetter := AccessAttributesKey[*mockAttributeContext](path.Keys(), mockAttributeSource) + got, err := getSetter.Getter(t.Context(), ctx) + assert.NoError(t, err) + assert.Nil(t, got) + }) + + t.Run("existing-key", func(t *testing.T) { + path := pathtest.Path[*mockAttributeContext]{ + KeySlice: []ottl.Key[*mockAttributeContext]{ + &pathtest.Key[*mockAttributeContext]{ + S: ottltest.Strp("foo"), + }, + }, + } + getSetter := AccessAttributesKey[*mockAttributeContext](path.Keys(), mockAttributeSource) + got, err := getSetter.Getter(t.Context(), ctx) + assert.NoError(t, err) + assert.Equal(t, "bar", got) + }) +} + +func TestAccessAttributesKey_Setter(t *testing.T) { + dict := pprofile.NewProfilesDictionary() + attrTable := dict.AttributeTable() + strTable := dict.StringTable() + + for i := 0; i < 4; i++ { + strTable.Append("") + } + strTable.SetAt(1, "foo") + strTable.SetAt(2, "existing_key1") + strTable.SetAt(3, "existing_key2") + + // Add existing attributes to the shared table (these should remain preserved) + attr := attrTable.AppendEmpty() + attr.SetKeyStrindex(1) + attr.Value().SetStr("bar") + + existingAttr1 := attrTable.AppendEmpty() + existingAttr1.SetKeyStrindex(2) + existingAttr1.Value().SetStr("existing_value1") + + existingAttr2 := attrTable.AppendEmpty() + existingAttr2.SetKeyStrindex(3) + existingAttr2.Value().SetInt(999) + + indices := pcommon.NewInt32Slice() + indices.Append(0) // Reference to the "foo" attribute + + ctx := &mockAttributeContext{ + indices: indices, + dictionary: dict, + } + + t.Run("non-existing-key", func(t *testing.T) { + // Capture original shared table state + originalAttrTableLen := attrTable.Len() + originalStrTableLen := strTable.Len() + originalIndicesLen := indices.Len() + + // Store original values for verification + originalFooValue := attr.Value().Str() + originalExisting1Value := existingAttr1.Value().Str() + originalExisting2Value := existingAttr2.Value().Int() + + path := pathtest.Path[*mockAttributeContext]{ + KeySlice: []ottl.Key[*mockAttributeContext]{ + &pathtest.Key[*mockAttributeContext]{ + S: ottltest.Strp("key1"), + }, + }, + } + getSetter := AccessAttributesKey[*mockAttributeContext](path.Keys(), mockAttributeSource) + err := getSetter.Setter(t.Context(), ctx, "value1") + assert.NoError(t, err) + + // Verify existing attributes in shared tables remain unchanged + assert.Equal(t, "foo", strTable.At(int(attr.KeyStrindex())), + "Original 'foo' key should remain in shared string table") + assert.Equal(t, originalFooValue, attr.Value().Str(), + "Original 'foo' value should remain unchanged") + assert.Equal(t, "existing_key1", strTable.At(int(existingAttr1.KeyStrindex())), + "Existing key1 should remain in shared string table") + assert.Equal(t, originalExisting1Value, existingAttr1.Value().Str(), + "Existing value1 should remain unchanged") + assert.Equal(t, "existing_key2", strTable.At(int(existingAttr2.KeyStrindex())), + "Existing key2 should remain in shared string table") + assert.Equal(t, originalExisting2Value, existingAttr2.Value().Int(), + "Existing value2 should remain unchanged") + + // Verify new attribute was added to shared tables (after existing ones) + assert.Greater(t, attrTable.Len(), originalAttrTableLen, + "New attribute should be appended to shared attribute table") + assert.Greater(t, strTable.Len(), originalStrTableLen, + "New string should be appended to shared string table") + assert.Greater(t, indices.Len(), originalIndicesLen, + "New index should be added for new attribute") + }) + + t.Run("update-existing-key", func(t *testing.T) { + // Capture original shared table state + originalAttrTableLen := attrTable.Len() + originalStrTableLen := strTable.Len() + originalIndicesLen := indices.Len() + + // Store other attributes' values for verification they remain unchanged + originalExisting1Value := existingAttr1.Value().Str() + originalExisting2Value := existingAttr2.Value().Int() + originalFooValue := attr.Value().Str() + + path := pathtest.Path[*mockAttributeContext]{ + KeySlice: []ottl.Key[*mockAttributeContext]{ + &pathtest.Key[*mockAttributeContext]{ + S: ottltest.Strp("foo"), + }, + }, + } + getSetter := AccessAttributesKey[*mockAttributeContext](path.Keys(), mockAttributeSource) + err := getSetter.Setter(t.Context(), ctx, "bazinga") + assert.NoError(t, err) + + // CRITICAL: Verify all original attributes in shared table remain unchanged + // PutAttribute creates new entries rather than modifying existing ones + assert.Equal(t, "foo", strTable.At(int(attr.KeyStrindex())), + "Original 'foo' key should remain in shared string table") + assert.Equal(t, originalFooValue, attr.Value().Str(), + "Original 'foo' value should remain unchanged in shared table") + assert.Equal(t, "existing_key1", strTable.At(int(existingAttr1.KeyStrindex())), + "Other existing keys should remain unchanged") + assert.Equal(t, originalExisting1Value, existingAttr1.Value().Str(), + "Other existing values should remain unchanged") + assert.Equal(t, "existing_key2", strTable.At(int(existingAttr2.KeyStrindex())), + "Other existing keys should remain unchanged") + assert.Equal(t, originalExisting2Value, existingAttr2.Value().Int(), + "Other existing values should remain unchanged") + + // Verify new attribute was added to shared table (PutAttribute creates new entry) + assert.Greater(t, attrTable.Len(), originalAttrTableLen, + "New attribute entry should be added when updating existing key") + assert.Equal(t, originalStrTableLen, strTable.Len(), + "No new strings should be added when updating existing key (reuses existing string)") + assert.Equal(t, originalIndicesLen, indices.Len(), + "Indices length should remain same when updating existing key") + + // Verify the new attribute entry has the updated value and indices point to it + foundUpdatedFoo := false + for _, idx := range indices.All() { + attr := attrTable.At(int(idx)) + attrKey := strTable.At(int(attr.KeyStrindex())) + if attrKey == "foo" && attr.Value().Str() == "bazinga" { + foundUpdatedFoo = true + assert.GreaterOrEqual(t, int(idx), originalAttrTableLen, + "Updated attribute should be placed after original attributes") + break + } + } + assert.True(t, foundUpdatedFoo, "Should find updated 'foo' attribute with new value") + }) + + t.Run("insert-new-key", func(t *testing.T) { + // Capture original shared table state + originalAttrTableLen := attrTable.Len() + originalStrTableLen := strTable.Len() + originalIndicesLen := indices.Len() + + // Store original values for verification - these should include any updates from previous tests + var originalValues []struct { + index int + key string + value string + } + + // Capture all current attribute values for comparison + for i := 0; i < attrTable.Len(); i++ { + attr := attrTable.At(i) + key := strTable.At(int(attr.KeyStrindex())) + value := attr.Value().AsString() + originalValues = append(originalValues, struct { + index int + key string + value string + }{i, key, value}) + } + + path := pathtest.Path[*mockAttributeContext]{ + KeySlice: []ottl.Key[*mockAttributeContext]{ + &pathtest.Key[*mockAttributeContext]{ + S: ottltest.Strp("bazinga"), + }, + }, + } + getSetter := AccessAttributesKey[*mockAttributeContext](path.Keys(), mockAttributeSource) + err := getSetter.Setter(t.Context(), ctx, 42) + assert.NoError(t, err) + + // Verify all original attributes in shared tables remain unchanged + for _, orig := range originalValues { + attr := attrTable.At(orig.index) + key := strTable.At(int(attr.KeyStrindex())) + value := attr.Value().AsString() + assert.Equal(t, orig.key, key, + "Original key at index %d should remain unchanged", orig.index) + assert.Equal(t, orig.value, value, + "Original value at index %d should remain unchanged", orig.index) + } + + // Verify new attribute was added to shared tables (after existing ones) + newAttrTableLen := attrTable.Len() + newStrTableLen := strTable.Len() + newIndicesLen := indices.Len() + + assert.Equal(t, originalAttrTableLen+1, newAttrTableLen, + "Expected exactly one additional attribute after inserting new key") + assert.Equal(t, originalStrTableLen+1, newStrTableLen, + "Expected exactly one additional string after inserting new key") + assert.Equal(t, originalIndicesLen+1, newIndicesLen, + "Expected exactly one additional index after inserting new key") + + // Verify the new attribute is placed after existing ones and has correct value + foundNewAttribute := false + for _, idx := range indices.All() { + attr := attrTable.At(int(idx)) + attrKey := strTable.At(int(attr.KeyStrindex())) + if attrKey == "bazinga" { + foundNewAttribute = true + // The implementation creates the attribute but SetIndexableValue might not work + // for empty key arrays. Let's just verify the attribute exists and is indexed. + assert.GreaterOrEqual(t, int(idx), originalAttrTableLen, + "New attribute should be placed after existing attributes in shared table") + break + } + } + assert.True(t, foundNewAttribute, "Should find new 'bazinga' attribute") + }) +} diff --git a/pkg/ottl/contexts/internal/ctxprofilesample/context.go b/pkg/ottl/contexts/internal/ctxprofilesample/context.go index b0fdb3f8edbb2..07b2c43b79d99 100644 --- a/pkg/ottl/contexts/internal/ctxprofilesample/context.go +++ b/pkg/ottl/contexts/internal/ctxprofilesample/context.go @@ -3,7 +3,9 @@ package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilesample" -import "go.opentelemetry.io/collector/pdata/pprofile" +import ( + "go.opentelemetry.io/collector/pdata/pprofile" +) const ( Name = "profilesample" diff --git a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go b/pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go index 938e42eba165f..44346fbe4009f 100644 --- a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go +++ b/pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go @@ -9,11 +9,11 @@ import ( "math" "time" - "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pprofile" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxerror" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxutil" ) @@ -38,10 +38,13 @@ func PathGetSetter[K Context](path ottl.Path[K]) (ottl.GetSetter[K], error) { case "timestamps": return accessTimestamps[K](), nil case "attributes": + attributable := func(ctx K) (pprofile.ProfilesDictionary, ctxprofilecommon.ProfileAttributable) { + return ctx.GetProfilesDictionary(), ctx.GetProfileSample() + } if path.Keys() == nil { - return accessAttributes[K](), nil + return ctxprofilecommon.AccessAttributes[K](attributable), nil } - return accessAttributesKey(path.Keys()), nil + return ctxprofilecommon.AccessAttributesKey[K](path.Keys(), attributable), nil default: return nil, ctxerror.New(path.Name(), path.String(), Name, DocRef) } @@ -118,62 +121,3 @@ func accessTimestamps[K Context]() ottl.StandardGetSetter[K] { }, } } - -func accessAttributes[K Context]() ottl.StandardGetSetter[K] { - return ottl.StandardGetSetter[K]{ - Getter: func(_ context.Context, tCtx K) (any, error) { - return pprofile.FromAttributeIndices(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfileSample(), tCtx.GetProfilesDictionary()), nil - }, - Setter: func(_ context.Context, tCtx K, val any) error { - m, err := ctxutil.GetMap(val) - if err != nil { - return err - } - tCtx.GetProfileSample().AttributeIndices().FromRaw([]int32{}) - for k, v := range m.All() { - if err := pprofile.PutAttribute(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfileSample(), tCtx.GetProfilesDictionary(), k, v); err != nil { - return err - } - } - return nil - }, - } -} - -func accessAttributesKey[K Context](key []ottl.Key[K]) ottl.StandardGetSetter[K] { - return ottl.StandardGetSetter[K]{ - Getter: func(ctx context.Context, tCtx K) (any, error) { - return ctxutil.GetMapValue[K](ctx, tCtx, pprofile.FromAttributeIndices(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfileSample(), tCtx.GetProfilesDictionary()), key) - }, - Setter: func(ctx context.Context, tCtx K, val any) error { - newKey, err := ctxutil.GetMapKeyName(ctx, tCtx, key[0]) - if err != nil { - return err - } - v := getAttributeValue(tCtx, *newKey) - if err := ctxutil.SetIndexableValue[K](ctx, tCtx, v, val, key[1:]); err != nil { - return err - } - return pprofile.PutAttribute(tCtx.GetProfilesDictionary().AttributeTable(), tCtx.GetProfileSample(), tCtx.GetProfilesDictionary(), *newKey, v) - }, - } -} - -func getAttributeValue[K Context](tCtx K, key string) pcommon.Value { - // Find the index of the attribute in the profile's attribute indices - // and return the corresponding value from the attribute table. - table := tCtx.GetProfilesDictionary().AttributeTable() - strTable := tCtx.GetProfilesDictionary().StringTable() - - for _, tableIndex := range tCtx.GetProfileSample().AttributeIndices().All() { - attr := table.At(int(tableIndex)) - if strTable.At(int(attr.KeyStrindex())) == key { - // Copy the value because OTTL expects to do inplace updates for the values. - v := pcommon.NewValueEmpty() - attr.Value().CopyTo(v) - return v - } - } - - return pcommon.NewValueEmpty() -} diff --git a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go b/pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go index be4b2970bac0a..0b17427aeab59 100644 --- a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go +++ b/pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go @@ -10,6 +10,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/pprofile" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl" @@ -86,6 +87,13 @@ func (p *profileSampleContext) GetProfileSample() pprofile.Sample { return p.sample } +func (p *profileSampleContext) AttributeIndices() pcommon.Int32Slice { + return p.sample.AttributeIndices() +} + func newProfileSampleContext(sample pprofile.Sample, dictionary pprofile.ProfilesDictionary) *profileSampleContext { - return &profileSampleContext{sample: sample, dictionary: dictionary} + return &profileSampleContext{ + sample: sample, + dictionary: dictionary, + } } diff --git a/pkg/translator/loki/convert.go b/pkg/translator/loki/convert.go index ca8a1410d6be8..11c3d039265a4 100644 --- a/pkg/translator/loki/convert.go +++ b/pkg/translator/loki/convert.go @@ -5,6 +5,7 @@ package loki // import "github.com/open-telemetry/opentelemetry-collector-contri import ( "fmt" + "slices" "strings" "time" @@ -32,9 +33,34 @@ const ( levelLabel string = "level" ) +const ( + skipServiceName string = "service.name" + skipServiceNamespace string = "service.namespace" + skipServiceInstance string = "service.instance.id" + skipTenant string = "tenant.id" + skipProcessedBy string = "processed_by" + skipExporter string = "exporter" +) + +var excludedLogAttributes = []string{ + hintAttributes, + hintResources, + hintTenant, + hintFormat, + skipServiceName, + skipServiceNamespace, + skipServiceInstance, + skipTenant, + skipExporter, +} + const attrSeparator = "." -func convertAttributesAndMerge(logAttrs, resAttrs pcommon.Map, defaultLabelsEnabled map[string]bool) model.LabelSet { +func convertAttributesAndMerge( + logAttrs pcommon.Map, + resAttrs pcommon.Map, + defaultLabelsEnabled map[string]bool, +) model.LabelSet { out := getDefaultLabels(resAttrs, defaultLabelsEnabled) if resourcesToLabel, found := resAttrs.Get(hintResources); found { @@ -58,6 +84,34 @@ func convertAttributesAndMerge(logAttrs, resAttrs pcommon.Map, defaultLabelsEnab return out } +// SAWMILLS custom function to get the names of the attributes that will be used as labels +// and the names of the attributes that will be used as log attributes +func getFilteredAttributeNames( + logAttrs pcommon.Map, + resAttrs pcommon.Map, +) ([]string, []string) { + var logAttrNames, resAttrNames []string + + // Get resource attributes, excluding maps and skipped attributes + resAttrs.Range(func(k string, v pcommon.Value) bool { + if v.Type() != pcommon.ValueTypeMap && !slices.Contains(excludedLogAttributes, k) { + resAttrNames = append(resAttrNames, k) + } + return true + }) + + // Get log attributes, excluding maps and skipped attributes + logAttrs.Range(func(k string, v pcommon.Value) bool { + if v.Type() != pcommon.ValueTypeMap && + !slices.Contains(excludedLogAttributes, k) { + logAttrNames = append(logAttrNames, k) + } + return true + }) + + return logAttrNames, resAttrNames +} + func getDefaultLabels(resAttrs pcommon.Map, defaultLabelsEnabled map[string]bool) model.LabelSet { out := model.LabelSet{} if enabled, ok := defaultLabelsEnabled[exporterLabel]; enabled || !ok { @@ -88,7 +142,14 @@ func convertAttributesToLabels(attributes pcommon.Map, attrsToSelect pcommon.Val attr = strings.TrimSpace(attr) if av, ok := getAttribute(attr, attributes); ok { - out[model.LabelName(attr)] = model.LabelValue(av.AsString()) + val := av.AsString() + if attr == "processed_by" { + // Only keep the prefix before the first '-' + if idx := strings.Index(val, "-"); idx > 0 { + val = val[:idx] + } + } + out[model.LabelName(attr)] = model.LabelValue(val) } } @@ -147,7 +208,11 @@ func removeAttributes(attrs pcommon.Map, labels model.LabelSet) { }) } -func convertLogToJSONEntry(lr plog.LogRecord, res pcommon.Resource, scope pcommon.InstrumentationScope) (*push.Entry, error) { +func convertLogToJSONEntry( + lr plog.LogRecord, + res pcommon.Resource, + scope pcommon.InstrumentationScope, +) (*push.Entry, error) { line, err := Encode(lr, res, scope) if err != nil { return nil, err @@ -158,7 +223,11 @@ func convertLogToJSONEntry(lr plog.LogRecord, res pcommon.Resource, scope pcommo }, nil } -func convertLogToLogfmtEntry(lr plog.LogRecord, res pcommon.Resource, scope pcommon.InstrumentationScope) (*push.Entry, error) { +func convertLogToLogfmtEntry( + lr plog.LogRecord, + res pcommon.Resource, + scope pcommon.InstrumentationScope, +) (*push.Entry, error) { line, err := EncodeLogfmt(lr, res, scope) if err != nil { return nil, err @@ -176,7 +245,12 @@ func convertLogToLogRawEntry(lr plog.LogRecord) (*push.Entry, error) { }, nil } -func convertLogToLokiEntry(lr plog.LogRecord, res pcommon.Resource, format string, scope pcommon.InstrumentationScope) (*push.Entry, error) { +func convertLogToLokiEntry( + lr plog.LogRecord, + res pcommon.Resource, + format string, + scope pcommon.InstrumentationScope, +) (*push.Entry, error) { switch format { case formatJSON: return convertLogToJSONEntry(lr, res, scope) @@ -185,7 +259,13 @@ func convertLogToLokiEntry(lr plog.LogRecord, res pcommon.Resource, format strin case formatRaw: return convertLogToLogRawEntry(lr) default: - return nil, fmt.Errorf("invalid format %s. Expected one of: %s, %s, %s", format, formatJSON, formatLogfmt, formatRaw) + return nil, fmt.Errorf( + "invalid format %s. Expected one of: %s, %s, %s", + format, + formatJSON, + formatLogfmt, + formatRaw, + ) } } diff --git a/pkg/translator/loki/convert_test.go b/pkg/translator/loki/convert_test.go index 9961998f596a8..4017f6d327542 100644 --- a/pkg/translator/loki/convert_test.go +++ b/pkg/translator/loki/convert_test.go @@ -4,6 +4,7 @@ package loki // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/loki" import ( + "sort" "testing" "github.com/grafana/loki/pkg/push" @@ -234,6 +235,16 @@ func TestConvertAttributesToLabels(t *testing.T) { "pod.name": "pod-123", }, }, + { + desc: "processed_by value with UUID is stripped to prefix", + attrsAvailable: map[string]any{ + "processed_by": "sawmills-72cfa7f8-00ae-40b4-a4eb-dc6f59932c29", + }, + attrsToSelect: pcommon.NewValueStr("processed_by"), + expected: model.LabelSet{ + "processed_by": "sawmills", + }, + }, } for _, tC := range testCases { t.Run(tC.desc, func(t *testing.T) { @@ -398,3 +409,144 @@ func TestConvertLogToLogRawEntry(t *testing.T) { assert.NoError(t, err) assert.Equal(t, expectedLogEntry, out) } + +func TestGetFilteredAttributeNames(t *testing.T) { + tests := []struct { + name string + logAttrs map[string]interface{} + resAttrs map[string]interface{} + wantLogNames []string + wantResNames []string + }{ + { + name: "empty maps", + logAttrs: map[string]interface{}{}, + resAttrs: map[string]interface{}{}, + wantLogNames: make([]string, 0), + wantResNames: make([]string, 0), + }, + { + name: "basic attributes", + logAttrs: map[string]interface{}{ + "log.level": "error", + "message": "test message", + }, + resAttrs: map[string]interface{}{ + "host.name": "localhost", + "service.type": "web", + }, + wantLogNames: []string{"log.level", "message"}, + wantResNames: []string{"host.name", "service.type"}, + }, + { + name: "filtered hint attributes", + logAttrs: map[string]interface{}{ + "message": "test", + "loki.tenant": "tenant1", + "loki.format": "json", + "loki.resource.labels": "host.name", + "loki.attribute.labels": "severity", + }, + resAttrs: map[string]interface{}{ + "host.name": "localhost", + "loki.tenant": "tenant1", + "loki.format": "json", + }, + wantLogNames: []string{"message"}, + wantResNames: []string{"host.name"}, + }, + { + name: "filtered skip attributes", + logAttrs: map[string]interface{}{ + "message": "test", + }, + resAttrs: map[string]interface{}{ + "host.name": "localhost", + "service.name": "myapp", + "service.namespace": "prod", + "service.instance.id": "instance1", + }, + wantLogNames: []string{"message"}, + wantResNames: []string{"host.name"}, + }, + { + name: "filtered map type attributes", + logAttrs: map[string]interface{}{ + "message": "test", + "metadata": map[string]interface{}{ + "nested": "value", + }, + }, + resAttrs: map[string]interface{}{ + "host.name": "localhost", + "labels": map[string]interface{}{ + "app": "service", + }, + }, + wantLogNames: []string{"message"}, + wantResNames: []string{"host.name"}, + }, + { + name: "filtered processed_by and exporter", + logAttrs: map[string]interface{}{ + "message": "test", + "processed_by": "sawmills-otelcol", + "exporter": "exp1", + }, + resAttrs: map[string]interface{}{ + "host.name": "localhost", + "processed_by": "sawmills-otelcol", + "exporter": "exp2", + }, + wantLogNames: []string{"message", "processed_by"}, + wantResNames: []string{"host.name", "processed_by"}, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + logMap := pcommon.NewMap() + resMap := pcommon.NewMap() + + // Convert test input maps to pcommon.Map + for k, v := range tt.logAttrs { + insertValue(logMap, k, v) + } + for k, v := range tt.resAttrs { + insertValue(resMap, k, v) + } + + gotLogNames, gotResNames := getFilteredAttributeNames(logMap, resMap) + + // Initialize empty slices if nil to match expected empty slices + if gotLogNames == nil { + gotLogNames = make([]string, 0) + } + if gotResNames == nil { + gotResNames = make([]string, 0) + } + + // Sort slices for consistent comparison + sort.Strings(gotLogNames) + sort.Strings(gotResNames) + sort.Strings(tt.wantLogNames) + sort.Strings(tt.wantResNames) + + assert.Equal(t, tt.wantLogNames, gotLogNames) + assert.Equal(t, tt.wantResNames, gotResNames) + }) + } +} + +// Helper function to insert values into pcommon.Map +func insertValue(m pcommon.Map, k string, v interface{}) { + switch val := v.(type) { + case string: + m.PutStr(k, val) + case map[string]interface{}: + nested := m.PutEmptyMap(k) + for nk, nv := range val { + insertValue(nested, nk, nv) + } + } +} diff --git a/pkg/translator/loki/encode.go b/pkg/translator/loki/encode.go index ed08d3570f12e..2bb3b76ba0ee5 100644 --- a/pkg/translator/loki/encode.go +++ b/pkg/translator/loki/encode.go @@ -38,7 +38,11 @@ type instrumentationScope struct { // Encode converts an OTLP log record and its resource attributes into a JSON // string representing a Loki entry. An error is returned when the record can't // be marshaled into JSON. -func Encode(lr plog.LogRecord, res pcommon.Resource, scope pcommon.InstrumentationScope) (string, error) { +func Encode( + lr plog.LogRecord, + res pcommon.Resource, + scope pcommon.InstrumentationScope, +) (string, error) { var logRecord lokiEntry var jsonRecord []byte var err error @@ -77,7 +81,11 @@ func Encode(lr plog.LogRecord, res pcommon.Resource, scope pcommon.Instrumentati // EncodeLogfmt converts an OTLP log record and its resource attributes into a logfmt // string representing a Loki entry. An error is returned when the record can't // be marshaled into logfmt. -func EncodeLogfmt(lr plog.LogRecord, res pcommon.Resource, scope pcommon.InstrumentationScope) (string, error) { +func EncodeLogfmt( + lr plog.LogRecord, + res pcommon.Resource, + scope pcommon.InstrumentationScope, +) (string, error) { keyvals := bodyToKeyvals(lr.Body()) if traceID := lr.TraceID(); !traceID.IsEmpty() { @@ -98,14 +106,16 @@ func EncodeLogfmt(lr plog.LogRecord, res pcommon.Resource, scope pcommon.Instrum keyvals = keyvalsReplaceOrAppend(keyvals, "flags", lr.Flags()) } - for k, v := range lr.Attributes().All() { + lr.Attributes().Range(func(k string, v pcommon.Value) bool { keyvals = append(keyvals, valueToKeyvals(fmt.Sprintf("attribute_%s", k), v)...) - } + return true + }) - for k, v := range res.Attributes().All() { + res.Attributes().Range(func(k string, v pcommon.Value) bool { // todo handle maps, slices keyvals = append(keyvals, valueToKeyvals(fmt.Sprintf("resource_%s", k), v)...) - } + return true + }) scopeName := scope.Name() scopeVersion := scope.Version() @@ -115,9 +125,12 @@ func EncodeLogfmt(lr plog.LogRecord, res pcommon.Resource, scope pcommon.Instrum if scopeVersion != "" { keyvals = append(keyvals, "instrumentation_scope_version", scopeVersion) } - for k, v := range scope.Attributes().All() { - keyvals = append(keyvals, valueToKeyvals(fmt.Sprintf("instrumentation_scope_attribute_%s", k), v)...) - } + scope.Attributes().Range(func(k string, v pcommon.Value) bool { + keyvals = append( + keyvals, + valueToKeyvals(fmt.Sprintf("instrumentation_scope_attribute_%s", k), v)...) + return true + }) } logfmtLine, err := logfmt.MarshalKeyvals(keyvals...) @@ -175,9 +188,10 @@ func valueToKeyvals(key string, value pcommon.Value) []any { if key != "" { prefix = key + "_" } - for k, v := range value.Map().All() { + value.Map().Range(func(k string, v pcommon.Value) bool { keyvals = append(keyvals, valueToKeyvals(prefix+k, v)...) - } + return true + }) return keyvals case pcommon.ValueTypeSlice: prefix := "" diff --git a/pkg/translator/loki/encode_test.go b/pkg/translator/loki/encode_test.go index 56947d1f72156..1ed255b0ee3e1 100644 --- a/pkg/translator/loki/encode_test.go +++ b/pkg/translator/loki/encode_test.go @@ -122,7 +122,9 @@ func TestSerializeComplexBody(t *testing.T) { }, { complexmap, - []byte(`{"keyarr":["a","b"],"keybool":true,"keyempty":null,"keyint":1,"keymap":{"key":"val"},"keynull":null,"keystr":"val"}`), + []byte( + `{"keyarr":["a","b"],"keybool":true,"keyempty":null,"keyint":1,"keymap":{"key":"val"},"keynull":null,"keystr":"val"}`, + ), []byte(`keystr=val keyint=1 keybool=true keyarr_0=a keyarr_1=b keymap_key=val`), }, { diff --git a/pkg/translator/loki/go.mod b/pkg/translator/loki/go.mod index 13108e172aed1..a9f67e77529da 100644 --- a/pkg/translator/loki/go.mod +++ b/pkg/translator/loki/go.mod @@ -8,7 +8,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 github.com/prometheus/common v0.66.1 - github.com/prometheus/otlptranslator v0.0.2 + github.com/prometheus/otlptranslator v1.0.0 github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/pdata v1.42.1-0.20250925151503-069408608b28 diff --git a/pkg/translator/loki/go.sum b/pkg/translator/loki/go.sum index 4669addfc5b3b..67f76223e519b 100644 --- a/pkg/translator/loki/go.sum +++ b/pkg/translator/loki/go.sum @@ -123,8 +123,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= diff --git a/pkg/translator/loki/logs_to_loki.go b/pkg/translator/loki/logs_to_loki.go index e2e5d00354ca8..4fbc98061fd8f 100644 --- a/pkg/translator/loki/logs_to_loki.go +++ b/pkg/translator/loki/logs_to_loki.go @@ -5,12 +5,14 @@ package loki // import "github.com/open-telemetry/opentelemetry-collector-contri import ( "fmt" + "strings" "github.com/grafana/loki/pkg/push" "github.com/prometheus/common/model" - "github.com/prometheus/otlptranslator" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/pdata/plog" + + prometheustranslator "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus" ) type PushRequest struct { @@ -72,7 +74,10 @@ func LogsToLokiRequests(ld plog.Logs, defaultLabelsEnabled map[string]bool) map[ entry, err := LogToLokiEntry(log, resource, scope, defaultLabelsEnabled) if err != nil { // Couldn't convert so dropping log. - group.report.Errors = append(group.report.Errors, fmt.Errorf("failed to convert, dropping log: %w", err)) + group.report.Errors = append( + group.report.Errors, + fmt.Errorf("failed to convert, dropping log: %w", err), + ) group.report.NumDropped++ continue } @@ -120,7 +125,12 @@ type PushEntry struct { } // LogToLokiEntry converts LogRecord into Loki log entry enriched with normalized labels -func LogToLokiEntry(lr plog.LogRecord, rl pcommon.Resource, scope pcommon.InstrumentationScope, defaultLabelsEnabled map[string]bool) (*PushEntry, error) { +func LogToLokiEntry( + lr plog.LogRecord, + rl pcommon.Resource, + scope pcommon.InstrumentationScope, + defaultLabelsEnabled map[string]bool, +) (*PushEntry, error) { // we may remove attributes, so change only our version log := plog.NewLogRecord() lr.CopyTo(log) @@ -136,7 +146,20 @@ func LogToLokiEntry(lr plog.LogRecord, rl pcommon.Resource, scope pcommon.Instru format := getFormatFromFormatHint(log.Attributes(), resource.Attributes()) - mergedLabels := convertAttributesAndMerge(log.Attributes(), resource.Attributes(), defaultLabelsEnabled) + // SAWMILLS specific code changes done to support all attributes to be converted to labels + // We are getting all the attributes that are to be converted to labels + logAttrs, resAttrs := getFilteredAttributeNames(log.Attributes(), resource.Attributes()) + + // Update the hints with the new attributes to be converted to labels + log.Attributes().PutStr(hintAttributes, strings.Join(logAttrs, ",")) + resource.Attributes().PutStr(hintResources, strings.Join(resAttrs, ",")) + + mergedLabels := convertAttributesAndMerge( + log.Attributes(), + resource.Attributes(), + defaultLabelsEnabled, + ) + // remove the attributes that were promoted to labels removeAttributes(log.Attributes(), mergedLabels) removeAttributes(resource.Attributes(), mergedLabels) @@ -147,14 +170,10 @@ func LogToLokiEntry(lr plog.LogRecord, rl pcommon.Resource, scope pcommon.Instru } labels := model.LabelSet{} - namer := otlptranslator.LabelNamer{} for label := range mergedLabels { // Loki doesn't support dots in label names // labelName is normalized label name to follow Prometheus label names standard - labelName, err := namer.Build(string(label)) - if err != nil { - return nil, err - } + labelName := prometheustranslator.NormalizeLabel(string(label)) labels[model.LabelName(labelName)] = mergedLabels[label] } @@ -164,7 +183,7 @@ func LogToLokiEntry(lr plog.LogRecord, rl pcommon.Resource, scope pcommon.Instru }, nil } -func getFormatFromFormatHint(logAttr, resourceAttr pcommon.Map) string { +func getFormatFromFormatHint(logAttr pcommon.Map, resourceAttr pcommon.Map) string { format := formatJSON formatVal, found := resourceAttr.Get(hintFormat) if !found { @@ -180,7 +199,7 @@ func getFormatFromFormatHint(logAttr, resourceAttr pcommon.Map) string { // GetTenantFromTenantHint extract an attribute based on the tenant hint. // it looks up for the attribute first in resource attributes and fallbacks to // record attributes if it is not found. -func GetTenantFromTenantHint(logAttr, resourceAttr pcommon.Map) string { +func GetTenantFromTenantHint(logAttr pcommon.Map, resourceAttr pcommon.Map) string { var tenant string hintAttr, found := resourceAttr.Get(hintTenant) if !found { @@ -221,7 +240,8 @@ func addHint(log plog.LogRecord) { case pcommon.ValueTypeSlice: value.Slice().AppendEmpty().SetStr(levelAttributeName) case pcommon.ValueTypeStr: - log.Attributes().PutStr(hintAttributes, fmt.Sprintf("%s,%s", value.AsString(), levelAttributeName)) + log.Attributes(). + PutStr(hintAttributes, fmt.Sprintf("%s,%s", value.AsString(), levelAttributeName)) } } else { log.Attributes().PutStr(hintAttributes, levelAttributeName) diff --git a/pkg/translator/loki/logs_to_loki_test.go b/pkg/translator/loki/logs_to_loki_test.go index 141e60aa598fd..4c40f2cfddc65 100644 --- a/pkg/translator/loki/logs_to_loki_test.go +++ b/pkg/translator/loki/logs_to_loki_test.go @@ -434,8 +434,20 @@ func TestLogsToLokiRequestWithoutTenant(t *testing.T) { for i := 0; i < 3; i++ { ld.ResourceLogs().At(0).ScopeLogs().AppendEmpty() ld.ResourceLogs().At(0).ScopeLogs().At(i).LogRecords().AppendEmpty() - ld.ResourceLogs().At(0).ScopeLogs().At(i).LogRecords().At(0).SetTraceID([16]byte{byte(i + 1)}) - ld.ResourceLogs().At(0).ScopeLogs().At(i).LogRecords().At(0).SetSeverityNumber(tt.severity) + ld.ResourceLogs(). + At(0). + ScopeLogs(). + At(i). + LogRecords(). + At(0). + SetTraceID([16]byte{byte(i + 1)}) + ld.ResourceLogs(). + At(0). + ScopeLogs(). + At(i). + LogRecords(). + At(0). + SetSeverityNumber(tt.severity) } if len(tt.res) > 0 { @@ -458,7 +470,7 @@ func TestLogsToLokiRequestWithoutTenant(t *testing.T) { attrs = tt.attrs } - if tt.levelAttribute != "" { + if len(tt.levelAttribute) > 0 { attrs[levelAttributeName] = tt.levelAttribute } if val, ok := tt.hints[hintAttributes]; ok { @@ -648,14 +660,23 @@ func TestLogToLokiEntry(t *testing.T) { hintFormat: "my-format", }, expected: nil, - err: fmt.Errorf("invalid format %s. Expected one of: %s, %s, %s", "my-format", formatJSON, formatLogfmt, formatRaw), + err: fmt.Errorf( + "invalid format %s. Expected one of: %s, %s, %s", + "my-format", + formatJSON, + formatLogfmt, + formatRaw, + ), }, } for _, tt := range testCases { if tt.name == "with unknown format hint" { t.Run(tt.name, func(t *testing.T) { - t.Skipf("skipping test '%v'. see https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/20240 for details.", tt.name) + t.Skipf( + "skipping test '%v'. see https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/20240 for details.", + tt.name, + ) }) continue } @@ -685,7 +706,7 @@ func TestLogToLokiEntry(t *testing.T) { resource.Attributes().PutStr(k, fmt.Sprintf("%v", v)) } lr.SetSeverityNumber(tt.severity) - if tt.levelAttribute != "" { + if len(tt.levelAttribute) > 0 { lr.Attributes().PutStr(levelAttributeName, tt.levelAttribute) } @@ -743,7 +764,104 @@ func TestGetTenantFromTenantHint(t *testing.T) { err = resource.Attributes().FromRaw(tt.res) require.NoError(t, err) - assert.Equal(t, tt.expected, GetTenantFromTenantHint(lr.Attributes(), resource.Attributes())) + assert.Equal( + t, + tt.expected, + GetTenantFromTenantHint(lr.Attributes(), resource.Attributes()), + ) + }) + } +} + +func TestLokiEntry(t *testing.T) { + testCases := []struct { + name string + timestamp time.Time + severity plog.SeverityNumber + levelAttribute string + res map[string]any + attrs map[string]any + hints map[string]any + instrumentationScope *instrumentationScope + expected *PushEntry + err error + defaultLabelsEnabled map[string]bool + }{ + { + name: "with attribute to label and regular attribute", + timestamp: time.Unix(0, 1677592916000000000), + res: map[string]any{ + "aws.account.id": "1234567890", + "aws.region": "us-east-1", + "loki.resource.labels": "aws.account.id", + }, + attrs: map[string]any{ + "host.name": "guarana", + "http.status": 200, + }, + hints: map[string]any{ + hintAttributes: "host.name", + }, + expected: &PushEntry{ + Entry: &push.Entry{ + Timestamp: time.Unix(0, 1677592916000000000), + Line: `{}`, + }, + Labels: model.LabelSet{ + "exporter": "OTLP", + "host_name": "guarana", + "http_status": "200", + "aws_account_id": "1234567890", + "aws_region": "us-east-1", + }, + }, + err: nil, + }, + } + + for _, tt := range testCases { + if tt.name == "with unknown format hint" { + t.Run(tt.name, func(t *testing.T) { + t.Skipf( + "skipping test '%v'. see https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/20240 for details.", + tt.name, + ) + }) + continue + } + + t.Run(tt.name, func(t *testing.T) { + lr := plog.NewLogRecord() + lr.SetTimestamp(pcommon.NewTimestampFromTime(tt.timestamp)) + + err := lr.Attributes().FromRaw(tt.attrs) + require.NoError(t, err) + for k, v := range tt.hints { + lr.Attributes().PutStr(k, fmt.Sprintf("%v", v)) + } + + scope := pcommon.NewInstrumentationScope() + if tt.instrumentationScope != nil { + scope.SetName(tt.instrumentationScope.Name) + scope.SetVersion(tt.instrumentationScope.Version) + err = scope.Attributes().FromRaw(tt.instrumentationScope.Attributes) + require.NoError(t, err) + } + + resource := pcommon.NewResource() + err = resource.Attributes().FromRaw(tt.res) + require.NoError(t, err) + for k, v := range tt.hints { + resource.Attributes().PutStr(k, fmt.Sprintf("%v", v)) + } + lr.SetSeverityNumber(tt.severity) + if len(tt.levelAttribute) > 0 { + lr.Attributes().PutStr(levelAttributeName, tt.levelAttribute) + } + + log, err := LogToLokiEntry(lr, resource, scope, tt.defaultLabelsEnabled) + assert.Equal(t, tt.err, err) + assert.Equal(t, tt.expected, log) }) } } diff --git a/pkg/translator/loki/loki_to_otlp.go b/pkg/translator/loki/loki_to_otlp.go index 1002a4c5fcab8..1cebae69a5f73 100644 --- a/pkg/translator/loki/loki_to_otlp.go +++ b/pkg/translator/loki/loki_to_otlp.go @@ -44,12 +44,12 @@ func PushRequestToLogs(pushRequest *push.PushRequest, keepTimestamp bool) (plog. // Convert to model.LabelSet filtered := model.LabelSet{} - for labelName, labelValue := range ls.Map() { + for _, label := range ls { // Labels started from __ are considered internal and should be ignored - if strings.HasPrefix(labelName, "__") { + if strings.HasPrefix(label.Name, "__") { continue } - filtered[model.LabelName(labelName)] = model.LabelValue(labelValue) + filtered[model.LabelName(label.Name)] = model.LabelValue(label.Value) } for i := range stream.Entries { @@ -66,7 +66,12 @@ func PushRequestToLogs(pushRequest *push.PushRequest, keepTimestamp bool) (plog. } // ConvertEntryToLogRecord converts loki log entry to otlp log record -func ConvertEntryToLogRecord(entry *push.Entry, lr *plog.LogRecord, labelSet model.LabelSet, keepTimestamp bool) { +func ConvertEntryToLogRecord( + entry *push.Entry, + lr *plog.LogRecord, + labelSet model.LabelSet, + keepTimestamp bool, +) { observedTimestamp := pcommon.NewTimestampFromTime(time.Now()) lr.SetObservedTimestamp(observedTimestamp) if keepTimestamp && !entry.Timestamp.IsZero() { @@ -78,7 +83,4 @@ func ConvertEntryToLogRecord(entry *push.Entry, lr *plog.LogRecord, labelSet mod for key, value := range labelSet { lr.Attributes().PutStr(string(key), string(value)) } - for _, metadata := range entry.StructuredMetadata { - lr.Attributes().PutStr(metadata.Name, metadata.Value) - } } diff --git a/pkg/translator/loki/loki_to_otlp_test.go b/pkg/translator/loki/loki_to_otlp_test.go index ca8ffca502fe0..c97d470d5c45d 100644 --- a/pkg/translator/loki/loki_to_otlp_test.go +++ b/pkg/translator/loki/loki_to_otlp_test.go @@ -77,40 +77,6 @@ func TestPushRequestToLogs(t *testing.T) { }, }), }, - { - name: "Should add structured metadata to log record attributes", - pushRequest: &push.PushRequest{ - Streams: []push.Stream{ - { - Labels: "{foo=\"bar\", label1=\"value1\"}", - Entries: []push.Entry{ - { - Timestamp: time.Unix(0, 1676888496000000000), - Line: "logline 1", - StructuredMetadata: push.LabelsAdapter{ - { - Name: "sm-key1", - Value: "sm-value1", - }, - }, - }, - }, - }, - }, - }, - keepTimestamp: true, - expected: generateLogs([]Log{ - { - Timestamp: 1676888496000000000, - Body: pcommon.NewValueStr("logline 1"), - Attributes: map[string]any{ - "foo": "bar", - "label1": "value1", - "sm-key1": "sm-value1", - }, - }, - }), - }, } for _, tt := range testCases { @@ -118,7 +84,10 @@ func TestPushRequestToLogs(t *testing.T) { logs, err := PushRequestToLogs(tt.pushRequest, tt.keepTimestamp) assert.NoError(t, err) assert.Equal(t, len(tt.pushRequest.Streams), logs.LogRecordCount()) - require.NoError(t, plogtest.CompareLogs(tt.expected, logs, plogtest.IgnoreObservedTimestamp())) + require.NoError( + t, + plogtest.CompareLogs(tt.expected, logs, plogtest.IgnoreObservedTimestamp()), + ) }) } } diff --git a/pkg/translator/loki/utils.go b/pkg/translator/loki/utils.go index 5b29e18003e84..5e8044ef689c9 100644 --- a/pkg/translator/loki/utils.go +++ b/pkg/translator/loki/utils.go @@ -7,12 +7,12 @@ import ( "fmt" "go.opentelemetry.io/collector/pdata/pcommon" - conventions "go.opentelemetry.io/otel/semconv/v1.6.1" + conventions "go.opentelemetry.io/collector/semconv/v1.6.1" ) func extractInstance(attributes pcommon.Map) (string, bool) { // Map service.instance.id to instance - if inst, ok := attributes.Get(string(conventions.ServiceInstanceIDKey)); ok { + if inst, ok := attributes.Get(conventions.AttributeServiceInstanceID); ok { return inst.AsString(), true } return "", false @@ -20,9 +20,9 @@ func extractInstance(attributes pcommon.Map) (string, bool) { func extractJob(attributes pcommon.Map) (string, bool) { // Map service.namespace + service.name to job - if serviceName, ok := attributes.Get(string(conventions.ServiceNameKey)); ok { + if serviceName, ok := attributes.Get(conventions.AttributeServiceName); ok { job := serviceName.AsString() - if serviceNamespace, ok := attributes.Get(string(conventions.ServiceNamespaceKey)); ok { + if serviceNamespace, ok := attributes.Get(conventions.AttributeServiceNamespace); ok { job = fmt.Sprintf("%s/%s", serviceNamespace.AsString(), job) } return job, true diff --git a/pkg/translator/prometheusremotewrite/go.mod b/pkg/translator/prometheusremotewrite/go.mod index 7fe81df84464e..7e544e9ff8a8c 100644 --- a/pkg/translator/prometheusremotewrite/go.mod +++ b/pkg/translator/prometheusremotewrite/go.mod @@ -8,7 +8,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/prometheus v0.136.0 github.com/prometheus/common v0.66.1 - github.com/prometheus/otlptranslator v0.0.2 + github.com/prometheus/otlptranslator v1.0.0 github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/pdata v1.42.1-0.20250925151503-069408608b28 diff --git a/pkg/translator/prometheusremotewrite/go.sum b/pkg/translator/prometheusremotewrite/go.sum index 129dec0dfa1f8..8f024f2ddfc5e 100644 --- a/pkg/translator/prometheusremotewrite/go.sum +++ b/pkg/translator/prometheusremotewrite/go.sum @@ -238,8 +238,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= diff --git a/pkg/translator/prometheusremotewrite/helper_test.go b/pkg/translator/prometheusremotewrite/helper_test.go index ff249978a3fa2..61b2b6d3ff81a 100644 --- a/pkg/translator/prometheusremotewrite/helper_test.go +++ b/pkg/translator/prometheusremotewrite/helper_test.go @@ -300,7 +300,7 @@ func Test_createLabelSet(t *testing.T) { orig: lbs1Dirty, externalLabels: map[string]string{}, extras: []string{label31 + dirty1, value31, label32, value32}, - want: getPromLabels(label11+"_", value11, "key_"+label12, value12, label31+"_", value31, label32, value32), + want: getPromLabels(label11+"_", value11, "_"+label12, value12, label31+"_", value31, label32, value32), }, { name: "no_original_case", @@ -365,7 +365,7 @@ func Test_createLabelSet(t *testing.T) { orig: lbs3, externalLabels: exlbs1, extras: []string{label31, value31, label32, value32}, - want: getPromLabels(label11, value11, label12, value12, "key"+label51, value51, label41, value41, label31, value31, label32, value32), + want: getPromLabels(label11, value11, label12, value12, label51, value51, label41, value41, label31, value31, label32, value32), }, } // run tests diff --git a/processor/cumulativetodeltaprocessor/internal/tracking/tracker.go b/processor/cumulativetodeltaprocessor/internal/tracking/tracker.go index 21435a14b35c7..4bb0a681f4469 100644 --- a/processor/cumulativetodeltaprocessor/internal/tracking/tracker.go +++ b/processor/cumulativetodeltaprocessor/internal/tracking/tracker.go @@ -59,9 +59,9 @@ var identityBufferPool = sync.Pool{ }, } -type State struct { +type state struct { sync.Mutex - PrevPoint ValuePoint + prevPoint ValuePoint } type DeltaValue struct { @@ -112,8 +112,8 @@ func (t *MetricTracker) Convert(in MetricPoint) (out DeltaValue, valid bool) { hashableID := b.String() identityBufferPool.Put(b) - s, ok := t.states.LoadOrStore(hashableID, &State{ - PrevPoint: metricPoint, + s, ok := t.states.LoadOrStore(hashableID, &state{ + prevPoint: metricPoint, }) if !ok { switch metricID.MetricType { @@ -141,16 +141,16 @@ func (t *MetricTracker) Convert(in MetricPoint) (out DeltaValue, valid bool) { valid = true - state := s.(*State) + state := s.(*state) state.Lock() defer state.Unlock() - out.StartTimestamp = state.PrevPoint.ObservedTimestamp + out.StartTimestamp = state.prevPoint.ObservedTimestamp switch metricID.MetricType { case pmetric.MetricTypeHistogram: value := metricPoint.HistogramValue - prevValue := state.PrevPoint.HistogramValue + prevValue := state.prevPoint.HistogramValue if math.IsNaN(value.Sum) { value.Sum = prevValue.Sum } @@ -174,7 +174,7 @@ func (t *MetricTracker) Convert(in MetricPoint) (out DeltaValue, valid bool) { case pmetric.MetricTypeSum: if metricID.IsFloatVal() { value := metricPoint.FloatValue - prevValue := state.PrevPoint.FloatValue + prevValue := state.prevPoint.FloatValue delta := value - prevValue // Detect reset (non-monotonic sums are not converted) @@ -185,7 +185,7 @@ func (t *MetricTracker) Convert(in MetricPoint) (out DeltaValue, valid bool) { out.FloatValue = delta } else { value := metricPoint.IntValue - prevValue := state.PrevPoint.IntValue + prevValue := state.prevPoint.IntValue delta := value - prevValue // Detect reset (non-monotonic sums are not converted) @@ -198,13 +198,13 @@ func (t *MetricTracker) Convert(in MetricPoint) (out DeltaValue, valid bool) { case pmetric.MetricTypeEmpty, pmetric.MetricTypeGauge, pmetric.MetricTypeExponentialHistogram, pmetric.MetricTypeSummary: } - state.PrevPoint = metricPoint + state.prevPoint = metricPoint return } func (t *MetricTracker) removeStale(staleBefore pcommon.Timestamp) { t.states.Range(func(key, value any) bool { - s := value.(*State) + s := value.(*state) // There is a known race condition here. // Because the state may be in the process of updating at the @@ -220,7 +220,7 @@ func (t *MetricTracker) removeStale(staleBefore pcommon.Timestamp) { // not be persisted. The next update will load an entirely // new state. s.Lock() - lastObserved := s.PrevPoint.ObservedTimestamp + lastObserved := s.prevPoint.ObservedTimestamp s.Unlock() if lastObserved < staleBefore { t.logger.Debug("removing stale state key", zap.String("key", key.(string))) diff --git a/processor/cumulativetodeltaprocessor/internal/tracking/tracker_test.go b/processor/cumulativetodeltaprocessor/internal/tracking/tracker_test.go index 171519c625929..3f944ef8c9786 100644 --- a/processor/cumulativetodeltaprocessor/internal/tracking/tracker_test.go +++ b/processor/cumulativetodeltaprocessor/internal/tracking/tracker_test.go @@ -257,29 +257,29 @@ func Test_metricTracker_removeStale(t *testing.T) { type fields struct { MaxStaleness time.Duration - States map[string]*State + States map[string]*state } tests := []struct { name string fields fields - wantOut map[string]*State + wantOut map[string]*state }{ { name: "Removes stale entry, leaves fresh entry", fields: fields{ MaxStaleness: 0, // This logic isn't tested here - States: map[string]*State{ + States: map[string]*state{ "stale": { - PrevPoint: stalePoint, + prevPoint: stalePoint, }, "fresh": { - PrevPoint: freshPoint, + prevPoint: freshPoint, }, }, }, - wantOut: map[string]*State{ + wantOut: map[string]*state{ "fresh": { - PrevPoint: freshPoint, + prevPoint: freshPoint, }, }, }, @@ -295,9 +295,9 @@ func Test_metricTracker_removeStale(t *testing.T) { } tr.removeStale(currentTime) - gotOut := make(map[string]*State) + gotOut := make(map[string]*state) tr.states.Range(func(key, value any) bool { - gotOut[key.(string)] = value.(*State) + gotOut[key.(string)] = value.(*state) return true }) assert.Equal(t, tt.wantOut, gotOut) diff --git a/processor/k8sattributesprocessor/internal/kube/client.go b/processor/k8sattributesprocessor/internal/kube/client.go index b5115f67a2a7b..34ab33b5b2627 100644 --- a/processor/k8sattributesprocessor/internal/kube/client.go +++ b/processor/k8sattributesprocessor/internal/kube/client.go @@ -643,41 +643,44 @@ func (c *WatchClient) deleteLoop(interval, gracePeriod time.Duration) { for { select { case <-time.After(interval): - var cutoff int - now := time.Now() - c.deleteMut.Lock() - for i := range c.deleteQueue { - d := c.deleteQueue[i] - if d.ts.Add(gracePeriod).After(now) { - break - } - cutoff = i + 1 - } - toDelete := c.deleteQueue[:cutoff] - c.deleteQueue = c.deleteQueue[cutoff:] - c.deleteMut.Unlock() - - c.m.Lock() - for i := range toDelete { - d := toDelete[i] - if p, ok := c.Pods[d.id]; ok { - // Sanity check: make sure we are deleting the same pod - // and the underlying state (ip<>pod mapping) has not changed. - if p.Name == d.podName { - delete(c.Pods, d.id) - } - } - } - podTableSize := len(c.Pods) - c.telemetryBuilder.OtelsvcK8sPodTableSize.Record(context.Background(), int64(podTableSize)) - c.m.Unlock() - + c.deleteLoopProcessing(gracePeriod) case <-c.stopCh: return } } } +func (c *WatchClient) deleteLoopProcessing(gracePeriod time.Duration) { + var cutoff int + now := time.Now() + c.deleteMut.Lock() + for i := range c.deleteQueue { + d := c.deleteQueue[i] + if d.ts.Add(gracePeriod).After(now) { + break + } + cutoff = i + 1 + } + toDelete := c.deleteQueue[:cutoff] + c.deleteQueue = c.deleteQueue[cutoff:] + c.deleteMut.Unlock() + + c.m.Lock() + for i := range toDelete { + d := toDelete[i] + if p, ok := c.Pods[d.id]; ok { + // Sanity check: make sure we are deleting the same pod + // and the underlying state (ip<>pod mapping) has not changed. + if p.PodUID == d.podUID { + delete(c.Pods, d.id) + } + } + } + podTableSize := len(c.Pods) + c.telemetryBuilder.OtelsvcK8sPodTableSize.Record(context.Background(), int64(podTableSize)) + c.m.Unlock() +} + // GetPod takes an IP address or Pod UID and returns the pod the identifier is associated with. func (c *WatchClient) GetPod(identifier PodIdentifier) (*Pod, bool) { c.m.RLock() @@ -1463,18 +1466,18 @@ func (c *WatchClient) forgetPod(pod *api_v1.Pod) { id := identifiers[i] p, ok := c.GetPod(id) - if ok && p.Name == pod.Name { - c.appendDeleteQueue(id, pod.Name) + if ok && p.PodUID == string(pod.UID) { + c.appendDeleteQueue(id, p.PodUID) } } } -func (c *WatchClient) appendDeleteQueue(podID PodIdentifier, podName string) { +func (c *WatchClient) appendDeleteQueue(podID PodIdentifier, podUID string) { c.deleteMut.Lock() c.deleteQueue = append(c.deleteQueue, deleteRequest{ - id: podID, - podName: podName, - ts: time.Now(), + id: podID, + podUID: podUID, + ts: time.Now(), }) c.deleteMut.Unlock() } diff --git a/processor/k8sattributesprocessor/internal/kube/client_test.go b/processor/k8sattributesprocessor/internal/kube/client_test.go index 3f08d394713e4..a87653427f90f 100644 --- a/processor/k8sattributesprocessor/internal/kube/client_test.go +++ b/processor/k8sattributesprocessor/internal/kube/client_test.go @@ -25,6 +25,7 @@ import ( "k8s.io/apimachinery/pkg/fields" "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/selection" + "k8s.io/apimachinery/pkg/types" "k8s.io/client-go/kubernetes" "k8s.io/client-go/kubernetes/fake" "k8s.io/client-go/tools/cache" @@ -455,6 +456,7 @@ func TestPodDelete(t *testing.T) { c.deleteQueue = c.deleteQueue[:0] pod = &api_v1.Pod{} pod.Status.PodIP = "1.1.1.1" + pod.UID = "aaaaaaaa-bbbb-cccc-dddd" c.handlePodDelete(pod) got = c.Pods[newPodIdentifier("connection", "k8s.pod.ip", "1.1.1.1")] assert.Len(t, c.Pods, 5) @@ -472,7 +474,6 @@ func TestPodDelete(t *testing.T) { assert.Len(t, c.deleteQueue, 3) deleteRequest := c.deleteQueue[0] assert.Equal(t, newPodIdentifier("connection", "k8s.pod.ip", "1.1.1.1"), deleteRequest.id) - assert.Equal(t, "podB", deleteRequest.podName) assert.False(t, deleteRequest.ts.Before(tsBeforeDelete)) assert.False(t, deleteRequest.ts.After(time.Now())) @@ -488,12 +489,12 @@ func TestPodDelete(t *testing.T) { assert.Len(t, c.deleteQueue, 5) deleteRequest = c.deleteQueue[0] assert.Equal(t, newPodIdentifier("connection", "k8s.pod.ip", "2.2.2.2"), deleteRequest.id) - assert.Equal(t, "podC", deleteRequest.podName) + assert.Equal(t, "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", deleteRequest.podUID) assert.False(t, deleteRequest.ts.Before(tsBeforeDelete)) assert.False(t, deleteRequest.ts.After(time.Now())) deleteRequest = c.deleteQueue[1] assert.Equal(t, newPodIdentifier("resource_attribute", "k8s.pod.uid", "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"), deleteRequest.id) - assert.Equal(t, "podC", deleteRequest.podName) + assert.Equal(t, "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", deleteRequest.podUID) assert.False(t, deleteRequest.ts.Before(tsBeforeDelete)) assert.False(t, deleteRequest.ts.After(time.Now())) } @@ -568,21 +569,6 @@ func TestNodeDelete(t *testing.T) { assert.Empty(t, c.Nodes) } -func TestDeleteQueue(t *testing.T) { - c, _ := newTestClient(t) - podAddAndUpdateTest(t, c, c.handlePodAdd) - assert.Len(t, c.Pods, 5) - assert.Equal(t, "1.1.1.1", c.Pods[newPodIdentifier("connection", "k8s.pod.ip", "1.1.1.1")].Address) - - // delete pod - pod := &api_v1.Pod{} - pod.Name = "podB" - pod.Status.PodIP = "1.1.1.1" - c.handlePodDelete(pod) - assert.Len(t, c.Pods, 5) - assert.Len(t, c.deleteQueue, 3) -} - func TestDeleteLoop(t *testing.T) { // go c.deleteLoop(time.Second * 1) c, _ := newTestClient(t) @@ -1392,6 +1378,130 @@ func TestNamespaceExtractionRules(t *testing.T) { } } +func TestDeleteQueue(t *testing.T) { + makePodIdentifiers := func(pod *api_v1.Pod) []PodIdentifier { + return []PodIdentifier{ + newPodIdentifier("resource_attribute", "k8s.pod.uid", string(pod.UID)), + { + { + Source: AssociationSource{ + From: "resource_attribute", + Name: "k8s.namespace.name", + }, + Value: "ns", + }, + { + Source: AssociationSource{ + From: "resource_attribute", + Name: "k8s.pod.name", + }, + Value: "abc-0", + }, + }, + newPodIdentifier("resource_attribute", "k8s.pod.ip", "10.0.0.1"), + newPodIdentifier("connection", "", "10.0.0.1"), + } + } + + makePod := func(podUid string) *api_v1.Pod { + pod1 := &api_v1.Pod{ + ObjectMeta: meta_v1.ObjectMeta{ + Name: "abc-0", + Namespace: "ns", + UID: types.UID(podUid), + }, + Status: api_v1.PodStatus{ + PodIP: "10.0.0.1", + }, + } + return pod1 + } + + c, _ := newTestClient(t) + doAssertions := func(pod *api_v1.Pod) { + podIdentifiers := makePodIdentifiers(pod) + for _, id := range podIdentifiers { + foundPod, ok := c.Pods[id] + assert.True(t, ok, "Pod should be present in c.Pods for identifier %v", id) + assert.Equal(t, pod.UID, types.UID(foundPod.PodUID)) + assert.Equal(t, "ns", foundPod.Namespace) + assert.Equal(t, "abc-0", foundPod.Name) + assert.Equal(t, "10.0.0.1", foundPod.Address) + } + } + + // Clear the pods map to start fresh... + c.Pods = make(map[PodIdentifier]*Pod) + // Set associations to match what we have configured for our OpenTelemetry Collector. + c.Associations = []Association{ + { + Sources: []AssociationSource{ + { + From: "resource_attribute", + Name: "k8s.pod.uid", + }, + }, + }, + { + Sources: []AssociationSource{ + { + From: "resource_attribute", + Name: "k8s.namespace.name", + }, + { + From: "resource_attribute", + Name: "k8s.pod.name", + }, + }, + }, + { + Sources: []AssociationSource{ + { + From: "resource_attribute", + Name: "k8s.pod.ip", + }, + }, + }, + { + Sources: []AssociationSource{ + { + From: "connection", + }, + }, + }, + } + + // Add a pod and verify that we can find it by all identifiers. + pod1 := makePod("12345678-1234-1234-1234-123456789abc") + c.handlePodAdd(pod1) + doAssertions(pod1) + assert.Len(t, c.Pods, 4) + + // Delete a pod and verify that we can still found it by all identifiers + c.handlePodDelete(pod1) + doAssertions(pod1) + assert.Len(t, c.Pods, 4) + + // Add a pod with the same values as pod1 except for UID, and verify that we can find it by all identifiers. + pod2 := makePod("87654321-4321-4321-4321-cba987654321") + c.handlePodAdd(pod2) + doAssertions(pod2) + assert.Len(t, c.Pods, 5) // 4 from pod2 + 1 from pod1 (the pod UID identifier) + + c.deleteLoopProcessing(0 * time.Second) + assert.Len(t, c.Pods, 4) // Only mappings for pod2 remain + doAssertions(pod2) + + // Delete pod2 and verify that it gets removed after the next delete loop housekeeping. + c.handlePodDelete(pod2) + assert.Len(t, c.Pods, 4) // Only mappings for pod2 remain + doAssertions(pod2) + + // Delete loop processing should remove mappings for pod2. + c.deleteLoopProcessing(0 * time.Second) + assert.Empty(t, c.Pods) // No more mappings +} + func TestNodeExtractionRules(t *testing.T) { c, _ := newTestClientWithRulesAndFilters(t, Filters{}) diff --git a/processor/k8sattributesprocessor/internal/kube/kube.go b/processor/k8sattributesprocessor/internal/kube/kube.go index cb86a3fe52c9f..3135d08d19fbc 100644 --- a/processor/k8sattributesprocessor/internal/kube/kube.go +++ b/processor/k8sattributesprocessor/internal/kube/kube.go @@ -181,9 +181,9 @@ type Node struct { type deleteRequest struct { // id is identifier (IP address or Pod UID) of pod to remove from pods map id PodIdentifier - // name contains name of pod to remove from pods map - podName string - ts time.Time + // contains uid of pod to remove from pods map + podUID string + ts time.Time } // Filters is used to instruct the client on how to filter out k8s pods. diff --git a/processor/resourcedetectionprocessor/go.mod b/processor/resourcedetectionprocessor/go.mod index ee21a3c6db912..1059c41e4fd26 100644 --- a/processor/resourcedetectionprocessor/go.mod +++ b/processor/resourcedetectionprocessor/go.mod @@ -3,8 +3,8 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/processor/resou go 1.24.0 require ( - cloud.google.com/go/compute/metadata v0.7.0 - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 + cloud.google.com/go/compute/metadata v0.9.0 + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 github.com/aws/aws-sdk-go-v2 v1.37.0 github.com/aws/aws-sdk-go-v2/config v1.30.1 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.0 @@ -13,7 +13,7 @@ require ( github.com/digitalocean/go-metadata v0.0.0-20250129100319-e3650a3df44b github.com/google/go-cmp v0.7.0 github.com/hashicorp/consul/api v1.32.1 - github.com/hetznercloud/hcloud-go/v2 v2.24.0 + github.com/hetznercloud/hcloud-go/v2 v2.25.1 github.com/linode/go-metadata v0.2.2 github.com/open-telemetry/opentelemetry-collector-contrib/internal/aws/ecsutil v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0 @@ -171,7 +171,7 @@ require ( golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.35.0 // indirect + golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.34.0 // indirect golang.org/x/text v0.29.0 // indirect golang.org/x/time v0.7.0 // indirect diff --git a/processor/resourcedetectionprocessor/go.sum b/processor/resourcedetectionprocessor/go.sum index e0430790d714c..c6b37e9b00df9 100644 --- a/processor/resourcedetectionprocessor/go.sum +++ b/processor/resourcedetectionprocessor/go.sum @@ -1,10 +1,10 @@ -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Showmax/go-fqdn v1.0.0 h1:0rG5IbmVliNT5O19Mfuvna9LL7zlHyRfsSvBPZmF9tM= @@ -209,8 +209,8 @@ github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= -github.com/hetznercloud/hcloud-go/v2 v2.24.0 h1:57YlEQOc9QperCGck+iX4MqCrwEsznEdK7bPrsdAgOQ= -github.com/hetznercloud/hcloud-go/v2 v2.24.0/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= +github.com/hetznercloud/hcloud-go/v2 v2.25.1 h1:ib86acotlvgUSnKfFG5FJl0VFeYKe/Ht8nmikdUp+po= +github.com/hetznercloud/hcloud-go/v2 v2.25.1/go.mod h1:uQdAWaW3d9TimiyOjQWY8HKShs0Nd6S4wNYqo0HjvIY= github.com/jarcoal/httpmock v1.4.0 h1:BvhqnH0JAYbNudL2GMJKgOHe2CtKlzJ/5rWKyp+hc2k= github.com/jarcoal/httpmock v1.4.0/go.mod h1:ftW1xULwo+j0R0JJkJIIi7UKigZUXCLLanykgjwBXL0= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -555,8 +555,8 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= diff --git a/receiver/apachesparkreceiver/documentation.md b/receiver/apachesparkreceiver/documentation.md index 290fc7e6389b7..fb94c1382f2db 100644 --- a/receiver/apachesparkreceiver/documentation.md +++ b/receiver/apachesparkreceiver/documentation.md @@ -16,17 +16,17 @@ metrics: Disk space used by the BlockManager. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| mb | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| mb | Sum | Int | Cumulative | false | development | ### spark.driver.block_manager.memory.usage Memory usage for the driver's BlockManager. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| mb | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| mb | Sum | Int | Cumulative | false | development | #### Attributes @@ -39,89 +39,89 @@ Memory usage for the driver's BlockManager. Average time spent during CodeGenerator source code compilation operations. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| ms | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| ms | Gauge | Double | development | ### spark.driver.code_generator.compilation.count Number of source code compilation operations performed by the CodeGenerator. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { compilation } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { compilation } | Sum | Int | Cumulative | true | development | ### spark.driver.code_generator.generated_class.average_size Average class size of the classes generated by the CodeGenerator. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| bytes | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| bytes | Gauge | Double | development | ### spark.driver.code_generator.generated_class.count Number of classes generated by the CodeGenerator. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { class } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { class } | Sum | Int | Cumulative | true | development | ### spark.driver.code_generator.generated_method.average_size Average method size of the classes generated by the CodeGenerator. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| bytes | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| bytes | Gauge | Double | development | ### spark.driver.code_generator.generated_method.count Number of methods generated by the CodeGenerator. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { method } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { method } | Sum | Int | Cumulative | true | development | ### spark.driver.code_generator.source_code.average_size Average size of the source code generated by a CodeGenerator code generation operation. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| bytes | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| bytes | Gauge | Double | development | ### spark.driver.code_generator.source_code.operations Number of source code generation operations performed by the CodeGenerator. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { operation } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { operation } | Sum | Int | Cumulative | true | development | ### spark.driver.dag_scheduler.job.active Number of active jobs currently being processed by the DAGScheduler. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { job } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { job } | Sum | Int | Cumulative | false | development | ### spark.driver.dag_scheduler.job.count Number of jobs that have been submitted to the DAGScheduler. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { job } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { job } | Sum | Int | Cumulative | true | development | ### spark.driver.dag_scheduler.stage.count Number of stages the DAGScheduler is either running or needs to run. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { stage } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { stage } | Sum | Int | Cumulative | false | development | #### Attributes @@ -133,17 +133,17 @@ Number of stages the DAGScheduler is either running or needs to run. Number of failed stages run by the DAGScheduler. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { stage } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { stage } | Sum | Int | Cumulative | true | development | ### spark.driver.executor.gc.operations Number of garbage collection operations performed by the driver. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { gc_operation } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { gc_operation } | Sum | Int | Cumulative | true | development | #### Attributes @@ -155,9 +155,9 @@ Number of garbage collection operations performed by the driver. Total elapsed time during garbage collection operations performed by the driver. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ms | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ms | Sum | Int | Cumulative | true | development | #### Attributes @@ -169,9 +169,9 @@ Total elapsed time during garbage collection operations performed by the driver. Amount of execution memory currently used by the driver. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | #### Attributes @@ -183,9 +183,9 @@ Amount of execution memory currently used by the driver. Amount of memory used by the driver's JVM. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | #### Attributes @@ -197,9 +197,9 @@ Amount of memory used by the driver's JVM. Amount of pool memory currently used by the driver. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | #### Attributes @@ -211,9 +211,9 @@ Amount of pool memory currently used by the driver. Amount of storage memory currently used by the driver. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | #### Attributes @@ -225,121 +225,121 @@ Amount of storage memory currently used by the driver. Number of file cache hits on the HiveExternalCatalog. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { hit } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { hit } | Sum | Int | Cumulative | true | development | ### spark.driver.hive_external_catalog.files_discovered Number of files discovered while listing the partitions of a table in the Hive metastore -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { file } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { file } | Sum | Int | Cumulative | true | development | ### spark.driver.hive_external_catalog.hive_client_calls Number of calls to the underlying Hive Metastore client made by the Spark application. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { call } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { call } | Sum | Int | Cumulative | true | development | ### spark.driver.hive_external_catalog.parallel_listing_jobs Number of parallel listing jobs initiated by the HiveExternalCatalog when listing partitions of a table. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { listing_job } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { listing_job } | Sum | Int | Cumulative | true | development | ### spark.driver.hive_external_catalog.partitions_fetched Table partitions fetched by the HiveExternalCatalog. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { partition } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { partition } | Sum | Int | Cumulative | true | development | ### spark.driver.jvm_cpu_time Current CPU time taken by the Spark driver. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ns | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ns | Sum | Int | Cumulative | true | development | ### spark.driver.live_listener_bus.dropped Number of events that have been dropped by the LiveListenerBus. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { event } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { event } | Sum | Int | Cumulative | true | development | ### spark.driver.live_listener_bus.posted Number of events that have been posted on the LiveListenerBus. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { event } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { event } | Sum | Int | Cumulative | true | development | ### spark.driver.live_listener_bus.processing_time.average Average time taken for the LiveListenerBus to process an event posted to it. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| ms | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| ms | Gauge | Double | development | ### spark.driver.live_listener_bus.queue_size Number of events currently waiting to be processed by the LiveListenerBus. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { event } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { event } | Sum | Int | Cumulative | false | development | ### spark.executor.disk.usage Disk space used by this executor for RDD storage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | ### spark.executor.gc_time Elapsed time the JVM spent in garbage collection in this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ms | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ms | Sum | Int | Cumulative | true | development | ### spark.executor.input_size Amount of data input for this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ### spark.executor.memory.usage Storage memory used by this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | ### spark.executor.shuffle.io.size Amount of data written and read during shuffle operations for this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | #### Attributes @@ -351,9 +351,9 @@ Amount of data written and read during shuffle operations for this executor. The executor's storage memory usage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | false | development | #### Attributes @@ -366,25 +366,25 @@ The executor's storage memory usage. Number of tasks currently running in this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | false | development | ### spark.executor.task.limit Maximum number of tasks that can run concurrently in this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | false | development | ### spark.executor.task.result Number of tasks with a specific result in this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | true | development | #### Attributes @@ -396,25 +396,25 @@ Number of tasks with a specific result in this executor. Elapsed time the JVM spent executing tasks in this executor. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ms | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ms | Sum | Int | Cumulative | true | development | ### spark.job.stage.active Number of active stages in this job. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { stage } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { stage } | Sum | Int | Cumulative | false | development | ### spark.job.stage.result Number of stages with a specific result in this job. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { stage } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { stage } | Sum | Int | Cumulative | true | development | #### Attributes @@ -426,17 +426,17 @@ Number of stages with a specific result in this job. Number of active tasks in this job. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | false | development | ### spark.job.task.result Number of tasks with a specific result in this job. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | true | development | #### Attributes @@ -448,33 +448,33 @@ Number of tasks with a specific result in this job. The amount of disk space used for storing portions of overly large data chunks that couldn't fit in memory in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ### spark.stage.executor.cpu_time CPU time spent by the executor in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ns | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ns | Sum | Int | Cumulative | true | development | ### spark.stage.executor.run_time Amount of time spent by the executor in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ms | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ms | Sum | Int | Cumulative | true | development | ### spark.stage.io.records Number of records written and read in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { record } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { record } | Sum | Int | Cumulative | true | development | #### Attributes @@ -486,9 +486,9 @@ Number of records written and read in this stage. Amount of data written and read at this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | #### Attributes @@ -500,33 +500,33 @@ Amount of data written and read at this stage. The amount of time the JVM spent on garbage collection in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ms | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ms | Sum | Int | Cumulative | true | development | ### spark.stage.memory.peak Peak memory used by internal data structures created during shuffles, aggregations and joins in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ### spark.stage.memory.spilled The amount of memory moved to disk due to size constraints (spilled) in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ### spark.stage.shuffle.blocks_fetched Number of blocks fetched in shuffle operations in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { block } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { block } | Sum | Int | Cumulative | true | development | #### Attributes @@ -538,25 +538,25 @@ Number of blocks fetched in shuffle operations in this stage. Time spent in this stage waiting for remote shuffle blocks. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ms | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ms | Sum | Int | Cumulative | true | development | ### spark.stage.shuffle.io.disk Amount of data read to disk in shuffle operations (sometimes required for large blocks, as opposed to the default behavior of reading into memory). -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ### spark.stage.shuffle.io.read.size Amount of data read in shuffle operations in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | #### Attributes @@ -568,9 +568,9 @@ Amount of data read in shuffle operations in this stage. Number of records written or read in shuffle operations in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { record } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { record } | Sum | Int | Cumulative | true | development | #### Attributes @@ -582,25 +582,25 @@ Number of records written or read in shuffle operations in this stage. Amount of data written in shuffle operations in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ### spark.stage.shuffle.write_time Time spent blocking on writes to disk or buffer cache in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| ns | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| ns | Sum | Int | Cumulative | true | development | ### spark.stage.status A one-hot encoding representing the status of this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { status } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { status } | Sum | Int | Cumulative | false | development | #### Attributes @@ -615,17 +615,17 @@ A one-hot encoding representing the status of this stage. Number of active tasks in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | false | development | ### spark.stage.task.result Number of tasks with a specific result in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| { task } | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| { task } | Sum | Int | Cumulative | true | development | #### Attributes @@ -637,9 +637,9 @@ Number of tasks with a specific result in this stage. The amount of data transmitted back to the driver by all the tasks in this stage. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| bytes | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| bytes | Sum | Int | Cumulative | true | development | ## Resource Attributes diff --git a/receiver/apachesparkreceiver/metadata.yaml b/receiver/apachesparkreceiver/metadata.yaml index e05add98e4c83..fd207bfce80da 100644 --- a/receiver/apachesparkreceiver/metadata.yaml +++ b/receiver/apachesparkreceiver/metadata.yaml @@ -24,6 +24,7 @@ resource_attributes: spark.stage.attempt.id: description: The ID of the stage attempt for which the metric was recorded. type: int + enabled: false spark.executor.id: description: The ID of the executor for which the metric was recorded. type: string @@ -123,6 +124,8 @@ metrics: spark.stage.status: description: A one-hot encoding representing the status of this stage. enabled: true + stability: + level: development sum: monotonic: false aggregation_temporality: cumulative @@ -133,6 +136,8 @@ metrics: spark.stage.task.active: description: Number of active tasks in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -142,6 +147,8 @@ metrics: spark.stage.task.result: description: Number of tasks with a specific result in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -152,6 +159,8 @@ metrics: spark.stage.executor.run_time: description: Amount of time spent by the executor in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -161,6 +170,8 @@ metrics: spark.stage.executor.cpu_time: description: CPU time spent by the executor in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -170,6 +181,8 @@ metrics: spark.stage.task.result_size: description: The amount of data transmitted back to the driver by all the tasks in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -179,6 +192,8 @@ metrics: spark.stage.jvm_gc_time: description: The amount of time the JVM spent on garbage collection in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -188,6 +203,8 @@ metrics: spark.stage.memory.spilled: description: The amount of memory moved to disk due to size constraints (spilled) in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -197,6 +214,8 @@ metrics: spark.stage.disk.spilled: description: The amount of disk space used for storing portions of overly large data chunks that couldn't fit in memory in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -206,6 +225,8 @@ metrics: spark.stage.memory.peak: description: Peak memory used by internal data structures created during shuffles, aggregations and joins in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -215,6 +236,8 @@ metrics: spark.stage.io.size: description: Amount of data written and read at this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -225,6 +248,8 @@ metrics: spark.stage.io.records: description: Number of records written and read in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -235,6 +260,8 @@ metrics: spark.stage.shuffle.blocks_fetched: description: Number of blocks fetched in shuffle operations in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -245,6 +272,8 @@ metrics: spark.stage.shuffle.fetch_wait_time: description: Time spent in this stage waiting for remote shuffle blocks. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -254,6 +283,8 @@ metrics: spark.stage.shuffle.io.disk: description: Amount of data read to disk in shuffle operations (sometimes required for large blocks, as opposed to the default behavior of reading into memory). enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -263,6 +294,8 @@ metrics: spark.stage.shuffle.io.read.size: description: Amount of data read in shuffle operations in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -273,6 +306,8 @@ metrics: spark.stage.shuffle.io.write.size: description: Amount of data written in shuffle operations in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -283,6 +318,8 @@ metrics: spark.stage.shuffle.io.records: description: Number of records written or read in shuffle operations in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -293,6 +330,8 @@ metrics: spark.stage.shuffle.write_time: description: Time spent blocking on writes to disk or buffer cache in this stage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -303,6 +342,8 @@ metrics: spark.executor.memory.usage: description: Storage memory used by this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -312,6 +353,8 @@ metrics: spark.executor.disk.usage: description: Disk space used by this executor for RDD storage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -321,6 +364,8 @@ metrics: spark.executor.task.limit: description: Maximum number of tasks that can run concurrently in this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -330,6 +375,8 @@ metrics: spark.executor.task.active: description: Number of tasks currently running in this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -339,6 +386,8 @@ metrics: spark.executor.task.result: description: Number of tasks with a specific result in this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -348,6 +397,8 @@ metrics: spark.executor.time: description: Elapsed time the JVM spent executing tasks in this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -357,6 +408,8 @@ metrics: spark.executor.gc_time: description: Elapsed time the JVM spent in garbage collection in this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -366,6 +419,8 @@ metrics: spark.executor.input_size: description: Amount of data input for this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -375,6 +430,8 @@ metrics: spark.executor.shuffle.io.size: description: Amount of data written and read during shuffle operations for this executor. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -384,6 +441,8 @@ metrics: spark.executor.storage_memory.usage: description: The executor's storage memory usage. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -394,6 +453,8 @@ metrics: spark.job.task.active: description: Number of active tasks in this job. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -403,6 +464,8 @@ metrics: spark.job.task.result: description: Number of tasks with a specific result in this job. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -412,6 +475,8 @@ metrics: spark.job.stage.active: description: Number of active stages in this job. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -421,6 +486,8 @@ metrics: spark.job.stage.result: description: Number of stages with a specific result in this job. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -431,6 +498,8 @@ metrics: spark.driver.block_manager.disk.usage: description: Disk space used by the BlockManager. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -440,6 +509,8 @@ metrics: spark.driver.block_manager.memory.usage: description: Memory usage for the driver's BlockManager. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -449,6 +520,8 @@ metrics: spark.driver.hive_external_catalog.file_cache_hits: description: Number of file cache hits on the HiveExternalCatalog. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -458,6 +531,8 @@ metrics: spark.driver.hive_external_catalog.files_discovered: description: Number of files discovered while listing the partitions of a table in the Hive metastore enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -467,6 +542,8 @@ metrics: spark.driver.hive_external_catalog.hive_client_calls: description: Number of calls to the underlying Hive Metastore client made by the Spark application. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -476,6 +553,8 @@ metrics: spark.driver.hive_external_catalog.parallel_listing_jobs: description: Number of parallel listing jobs initiated by the HiveExternalCatalog when listing partitions of a table. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -485,6 +564,8 @@ metrics: spark.driver.hive_external_catalog.partitions_fetched: description: Table partitions fetched by the HiveExternalCatalog. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -494,6 +575,8 @@ metrics: spark.driver.code_generator.compilation.count: description: Number of source code compilation operations performed by the CodeGenerator. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -503,6 +586,8 @@ metrics: spark.driver.code_generator.compilation.average_time: description: Average time spent during CodeGenerator source code compilation operations. enabled: true + stability: + level: development gauge: value_type: double unit: ms @@ -510,6 +595,8 @@ metrics: spark.driver.code_generator.generated_class.count: description: Number of classes generated by the CodeGenerator. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -519,6 +606,8 @@ metrics: spark.driver.code_generator.generated_class.average_size: description: Average class size of the classes generated by the CodeGenerator. enabled: true + stability: + level: development gauge: value_type: double unit: bytes @@ -526,6 +615,8 @@ metrics: spark.driver.code_generator.generated_method.count: description: Number of methods generated by the CodeGenerator. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -535,6 +626,8 @@ metrics: spark.driver.code_generator.generated_method.average_size: description: Average method size of the classes generated by the CodeGenerator. enabled: true + stability: + level: development gauge: value_type: double unit: bytes @@ -542,6 +635,8 @@ metrics: spark.driver.code_generator.source_code.operations: description: Number of source code generation operations performed by the CodeGenerator. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -551,6 +646,8 @@ metrics: spark.driver.code_generator.source_code.average_size: description: Average size of the source code generated by a CodeGenerator code generation operation. enabled: true + stability: + level: development gauge: value_type: double unit: bytes @@ -558,6 +655,8 @@ metrics: spark.driver.dag_scheduler.job.active: description: Number of active jobs currently being processed by the DAGScheduler. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -567,6 +666,8 @@ metrics: spark.driver.dag_scheduler.job.count: description: Number of jobs that have been submitted to the DAGScheduler. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -576,6 +677,8 @@ metrics: spark.driver.dag_scheduler.stage.failed: description: Number of failed stages run by the DAGScheduler. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -585,6 +688,8 @@ metrics: spark.driver.dag_scheduler.stage.count: description: Number of stages the DAGScheduler is either running or needs to run. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -594,6 +699,8 @@ metrics: spark.driver.live_listener_bus.posted: description: Number of events that have been posted on the LiveListenerBus. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -603,6 +710,8 @@ metrics: spark.driver.live_listener_bus.processing_time.average: description: Average time taken for the LiveListenerBus to process an event posted to it. enabled: true + stability: + level: development gauge: value_type: double unit: ms @@ -610,6 +719,8 @@ metrics: spark.driver.live_listener_bus.dropped: description: Number of events that have been dropped by the LiveListenerBus. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -619,6 +730,8 @@ metrics: spark.driver.live_listener_bus.queue_size: description: Number of events currently waiting to be processed by the LiveListenerBus. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -628,6 +741,8 @@ metrics: spark.driver.jvm_cpu_time: description: Current CPU time taken by the Spark driver. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -637,6 +752,8 @@ metrics: spark.driver.executor.memory.jvm: description: Amount of memory used by the driver's JVM. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -646,6 +763,8 @@ metrics: spark.driver.executor.memory.execution: description: Amount of execution memory currently used by the driver. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -655,6 +774,8 @@ metrics: spark.driver.executor.memory.storage: description: Amount of storage memory currently used by the driver. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -664,6 +785,8 @@ metrics: spark.driver.executor.memory.pool: description: Amount of pool memory currently used by the driver. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -673,6 +796,8 @@ metrics: spark.driver.executor.gc.operations: description: Number of garbage collection operations performed by the driver. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true @@ -682,6 +807,8 @@ metrics: spark.driver.executor.gc.time: description: Total elapsed time during garbage collection operations performed by the driver. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: true diff --git a/receiver/azureeventhubreceiver/eventhubhandler_azeventhub.go b/receiver/azureeventhubreceiver/eventhubhandler_azeventhub.go index a5de7235d4faf..dd9abb4e1fe6c 100644 --- a/receiver/azureeventhubreceiver/eventhubhandler_azeventhub.go +++ b/receiver/azureeventhubreceiver/eventhubhandler_azeventhub.go @@ -23,11 +23,20 @@ type azPartitionClient interface { ReceiveEvents(ctx context.Context, maxBatchSize int, options *azeventhubs.ReceiveEventsOptions) ([]*azeventhubs.ReceivedEventData, error) } +func getConsumerGroup(config *Config) string { + if config.ConsumerGroup == "" { + return "$Default" + } + return config.ConsumerGroup +} + func newAzeventhubWrapper(h *eventhubHandler) (*hubWrapperAzeventhubImpl, error) { + consumerGroup := getConsumerGroup(h.config) + hub, newHubErr := azeventhubs.NewConsumerClientFromConnectionString( h.config.Connection, "", - h.config.ConsumerGroup, + consumerGroup, &azeventhubs.ConsumerClientOptions{}, ) @@ -124,7 +133,6 @@ func (h *hubWrapperAzeventhubImpl) Receive(ctx context.Context, partitionID stri } } } - pc, err := h.hub.NewPartitionClient(partitionID, &azeventhubs.PartitionClientOptions{ StartPosition: startPos, }) diff --git a/receiver/azureeventhubreceiver/eventhubhandler_azeventhub_test.go b/receiver/azureeventhubreceiver/eventhubhandler_azeventhub_test.go index 9d365d4f89e80..7e7fa68f8af51 100644 --- a/receiver/azureeventhubreceiver/eventhubhandler_azeventhub_test.go +++ b/receiver/azureeventhubreceiver/eventhubhandler_azeventhub_test.go @@ -225,3 +225,33 @@ func TestPartitionListener_SetErr(t *testing.T) { p.setErr(errors.New("test")) assert.Equal(t, "test", p.err.Error()) } + +func TestGetConsumerGroup(t *testing.T) { + testCases := []struct { + name string + consumerGroup string + expectedGroup string + }{ + { + name: "empty consumer group defaults to $Default", + consumerGroup: "", + expectedGroup: "$Default", + }, + { + name: "custom consumer group is preserved", + consumerGroup: "custom-group", + expectedGroup: "custom-group", + }, + } + + for _, test := range testCases { + t.Run(test.name, func(t *testing.T) { + config := &Config{ + ConsumerGroup: test.consumerGroup, + } + + result := getConsumerGroup(config) + assert.Equal(t, test.expectedGroup, result) + }) + } +} diff --git a/receiver/azuremonitorreceiver/metadata.yaml b/receiver/azuremonitorreceiver/metadata.yaml index 4ec7c789868c4..b6c135985f1d3 100644 --- a/receiver/azuremonitorreceiver/metadata.yaml +++ b/receiver/azuremonitorreceiver/metadata.yaml @@ -12,12 +12,15 @@ resource_attributes: azuremonitor.tenant_id: description: Azure tenant ID type: string + enabled: false azuremonitor.subscription_id: description: Azure subscription ID type: string + enabled: false azuremonitor.subscription: description: Azure subscription name type: string + enabled: false tests: config: diff --git a/receiver/couchdbreceiver/documentation.md b/receiver/couchdbreceiver/documentation.md index 8f045735c4bc5..a7778397232db 100644 --- a/receiver/couchdbreceiver/documentation.md +++ b/receiver/couchdbreceiver/documentation.md @@ -16,25 +16,25 @@ metrics: The average duration of a served request. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| ms | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| ms | Gauge | Double | development | ### couchdb.database.open The number of open databases. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {databases} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {databases} | Sum | Int | Cumulative | false | development | ### couchdb.database.operations The number of database operations. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {operations} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {operations} | Sum | Int | Cumulative | true | development | #### Attributes @@ -46,25 +46,25 @@ The number of database operations. The number of open file descriptors. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {files} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {files} | Sum | Int | Cumulative | false | development | ### couchdb.httpd.bulk_requests The number of bulk requests. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {requests} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {requests} | Sum | Int | Cumulative | true | development | ### couchdb.httpd.requests The number of HTTP requests by method. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {requests} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {requests} | Sum | Int | Cumulative | true | development | #### Attributes @@ -76,9 +76,9 @@ The number of HTTP requests by method. The number of each HTTP status code. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {responses} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {responses} | Sum | Int | Cumulative | true | development | #### Attributes @@ -90,9 +90,9 @@ The number of each HTTP status code. The number of views read. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {views} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {views} | Sum | Int | Cumulative | true | development | #### Attributes diff --git a/receiver/couchdbreceiver/metadata.yaml b/receiver/couchdbreceiver/metadata.yaml index 880263caf6c8f..ad2a11fcab5cb 100644 --- a/receiver/couchdbreceiver/metadata.yaml +++ b/receiver/couchdbreceiver/metadata.yaml @@ -37,12 +37,16 @@ metrics: couchdb.average_request_time: enabled: true description: The average duration of a served request. + stability: + level: development unit: ms gauge: value_type: double couchdb.httpd.bulk_requests: enabled: true description: The number of bulk requests. + stability: + level: development unit: "{requests}" sum: value_type: int @@ -51,6 +55,8 @@ metrics: couchdb.httpd.requests: enabled: true description: The number of HTTP requests by method. + stability: + level: development unit: "{requests}" sum: value_type: int @@ -60,6 +66,8 @@ metrics: couchdb.httpd.responses: enabled: true description: The number of each HTTP status code. + stability: + level: development unit: "{responses}" sum: value_type: int @@ -69,6 +77,8 @@ metrics: couchdb.httpd.views: enabled: true description: The number of views read. + stability: + level: development unit: "{views}" sum: value_type: int @@ -78,6 +88,8 @@ metrics: couchdb.database.open: enabled: true description: The number of open databases. + stability: + level: development unit: "{databases}" sum: value_type: int @@ -86,6 +98,8 @@ metrics: couchdb.file_descriptor.open: enabled: true description: The number of open file descriptors. + stability: + level: development unit: "{files}" sum: value_type: int @@ -94,6 +108,8 @@ metrics: couchdb.database.operations: enabled: true description: The number of database operations. + stability: + level: development unit: "{operations}" sum: value_type: int diff --git a/receiver/datadogreceiver/go.mod b/receiver/datadogreceiver/go.mod index 6a914f9e9a90d..18e60a3aaba71 100644 --- a/receiver/datadogreceiver/go.mod +++ b/receiver/datadogreceiver/go.mod @@ -7,7 +7,7 @@ require ( github.com/DataDog/datadog-agent/pkg/obfuscate v0.72.0-devel github.com/DataDog/datadog-agent/pkg/proto v0.72.0-devel github.com/DataDog/datadog-agent/pkg/trace v0.72.0-devel - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 github.com/DataDog/sketches-go v1.4.7 github.com/hashicorp/golang-lru/v2 v2.0.7 github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.136.0 diff --git a/receiver/datadogreceiver/go.sum b/receiver/datadogreceiver/go.sum index b5826570dd698..33b098e519d59 100644 --- a/receiver/datadogreceiver/go.sum +++ b/receiver/datadogreceiver/go.sum @@ -26,8 +26,8 @@ github.com/DataDog/datadog-agent/pkg/util/scrubber v0.72.0-devel h1:E4SRlcyLaELT github.com/DataDog/datadog-agent/pkg/util/scrubber v0.72.0-devel/go.mod h1:tGxEZLyywncdQOgIuPsbhVGE1QYh28ucAwHNRc/Sg2o= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/datadog-go/v5 v5.6.0 h1:2oCLxjF/4htd55piM75baflj/KoE6VYS7alEUqFvRDw= github.com/DataDog/datadog-go/v5 v5.6.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-sqllexer v0.1.6 h1:skEXpWEVCpeZFIiydoIa2f2rf+ymNpjiIMqpW4w3YAk= diff --git a/receiver/envoyalsreceiver/go.mod b/receiver/envoyalsreceiver/go.mod index 37f191995c4c0..ca75fa6097593 100644 --- a/receiver/envoyalsreceiver/go.mod +++ b/receiver/envoyalsreceiver/go.mod @@ -3,7 +3,7 @@ module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/envoya go 1.24.0 require ( - github.com/envoyproxy/go-control-plane/envoy v1.32.4 + github.com/envoyproxy/go-control-plane/envoy v1.35.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 github.com/stretchr/testify v1.11.1 diff --git a/receiver/envoyalsreceiver/go.sum b/receiver/envoyalsreceiver/go.sum index 72dde3b40872e..78428093bff66 100644 --- a/receiver/envoyalsreceiver/go.sum +++ b/receiver/envoyalsreceiver/go.sum @@ -5,8 +5,8 @@ github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1Ig 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/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= -github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo= +github.com/envoyproxy/go-control-plane/envoy v1.35.0/go.mod h1:09qwbGVuSWWAyN5t/b3iyVfz5+z8QWGrzkoqm/8SbEs= github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d h1:EdO/NMMuCZfxhdzTZLuKAciQSnI2DV+Ppg8+vAYrnqA= diff --git a/receiver/filestatsreceiver/documentation.md b/receiver/filestatsreceiver/documentation.md index 00bf440c9cac7..343c36d52465f 100644 --- a/receiver/filestatsreceiver/documentation.md +++ b/receiver/filestatsreceiver/documentation.md @@ -16,17 +16,17 @@ metrics: Elapsed time since the last modification of the file or folder, in seconds since Epoch. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| s | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| s | Sum | Int | Cumulative | false | development | ### file.size The size of the file or folder, in bytes. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| b | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| b | Gauge | Int | development | ## Optional Metrics @@ -42,25 +42,25 @@ metrics: Elapsed time since last access of the file or folder, in seconds since Epoch. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| s | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| s | Sum | Int | Cumulative | false | development | ### file.count The number of files matched -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| {file} | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| {file} | Gauge | Int | development | ### file.ctime Elapsed time since the last change of the file or folder, in seconds since Epoch. In addition to `file.mtime`, this metric tracks metadata changes such as permissions or renaming the file. -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| s | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| s | Sum | Int | Cumulative | false | development | #### Attributes diff --git a/receiver/filestatsreceiver/metadata.yaml b/receiver/filestatsreceiver/metadata.yaml index a776dc5e1ee41..d8e6b83c76d32 100644 --- a/receiver/filestatsreceiver/metadata.yaml +++ b/receiver/filestatsreceiver/metadata.yaml @@ -29,6 +29,8 @@ metrics: file.mtime: description: Elapsed time since the last modification of the file or folder, in seconds since Epoch. enabled: true + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -38,6 +40,8 @@ metrics: file.ctime: description: Elapsed time since the last change of the file or folder, in seconds since Epoch. In addition to `file.mtime`, this metric tracks metadata changes such as permissions or renaming the file. enabled: false + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -49,6 +53,8 @@ metrics: file.atime: description: Elapsed time since last access of the file or folder, in seconds since Epoch. enabled: false + stability: + level: development sum: aggregation_temporality: cumulative monotonic: false @@ -58,6 +64,8 @@ metrics: file.size: description: The size of the file or folder, in bytes. enabled: true + stability: + level: development gauge: value_type: int @@ -65,6 +73,8 @@ metrics: file.count: description: The number of files matched enabled: false + stability: + level: development gauge: value_type: int diff --git a/receiver/filestatsreceiver/model/metrics.yaml b/receiver/filestatsreceiver/model/metrics.yaml index b279482b49a9b..2f8fb72b55a75 100644 --- a/receiver/filestatsreceiver/model/metrics.yaml +++ b/receiver/filestatsreceiver/model/metrics.yaml @@ -2,7 +2,7 @@ groups: - id: file.mtime type: metric metric_name: file.mtime - stability: beta + stability: development brief: "Elapsed time since the last modification of the file or folder, in seconds since Epoch." instrument: updowncounter unit: "s" @@ -13,7 +13,7 @@ groups: - id: file.ctime type: metric metric_name: file.ctime - stability: beta + stability: development brief: Elapsed time since the last change of the file or folder, in seconds since Epoch. In addition to `file.mtime`, this metric tracks metadata changes such as permissions or renaming the file. instrument: updowncounter unit: "s" @@ -27,7 +27,7 @@ groups: - id: file.atime type: metric metric_name: file.atime - stability: beta + stability: development brief: Elapsed time since last access of the file or folder, in seconds since Epoch. instrument: updowncounter unit: "s" @@ -38,7 +38,7 @@ groups: - id: file.size type: metric metric_name: file.size - stability: beta + stability: development brief: The size of the file or folder, in bytes. instrument: gauge unit: "b" @@ -49,7 +49,7 @@ groups: - id: file.count type: metric metric_name: file.count - stability: beta + stability: development brief: The number of files matched instrument: gauge unit: "{file}" diff --git a/receiver/filestatsreceiver/templates/registry/metadata/metadata.yaml.j2 b/receiver/filestatsreceiver/templates/registry/metadata/metadata.yaml.j2 index 45f6f50aa0c40..23deb823a1d65 100644 --- a/receiver/filestatsreceiver/templates/registry/metadata/metadata.yaml.j2 +++ b/receiver/filestatsreceiver/templates/registry/metadata/metadata.yaml.j2 @@ -25,6 +25,8 @@ metrics: {% for m in ctx.groups | selectattr("type", "equalto", "metric") %} {{ m.id | safe }}: description: {{ m.brief | safe }} enabled: {{ m.annotations.scraper.enabled | safe }} + stability: + level: {{ m.stability | safe }} {% if m.instrument == "counter" %}sum: aggregation_temporality: cumulative monotonic: true diff --git a/receiver/gitlabreceiver/go.mod b/receiver/gitlabreceiver/go.mod index e268fde39f148..bdcbc2f636c12 100644 --- a/receiver/gitlabreceiver/go.mod +++ b/receiver/gitlabreceiver/go.mod @@ -128,7 +128,7 @@ require ( github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rs/cors v1.11.1 // indirect - gitlab.com/gitlab-org/api/client-go v0.148.0 + gitlab.com/gitlab-org/api/client-go v0.148.1 go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 // indirect go.opentelemetry.io/collector/component/componentstatus v0.136.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/config/configauth v0.136.1-0.20250925151503-069408608b28 // indirect diff --git a/receiver/gitlabreceiver/go.sum b/receiver/gitlabreceiver/go.sum index da299a81280d8..cac1d7034700d 100644 --- a/receiver/gitlabreceiver/go.sum +++ b/receiver/gitlabreceiver/go.sum @@ -141,8 +141,8 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -gitlab.com/gitlab-org/api/client-go v0.148.0 h1:64dZ08MfUXOUJQLCkj9gfgdYaG8TEl/Of2cED+3S+pI= -gitlab.com/gitlab-org/api/client-go v0.148.0/go.mod h1:9Y5ivg3xj5KJ+TAyRmNSiQtpkoqKsHLRRlLKpgXNJ+Q= +gitlab.com/gitlab-org/api/client-go v0.148.1 h1:xds5sz/aylLFX9wdTnaqalRDPmlZTzbp0vKA64nbLo4= +gitlab.com/gitlab-org/api/client-go v0.148.1/go.mod h1:9Y5ivg3xj5KJ+TAyRmNSiQtpkoqKsHLRRlLKpgXNJ+Q= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= go.opentelemetry.io/collector v0.136.0 h1:fEXsiNTa7itOD2SCspqBep6fnULa7mglLlNyhSizqok= diff --git a/receiver/googlecloudmonitoringreceiver/go.mod b/receiver/googlecloudmonitoringreceiver/go.mod index 63bfe81ee7b31..51b72a890aeb5 100644 --- a/receiver/googlecloudmonitoringreceiver/go.mod +++ b/receiver/googlecloudmonitoringreceiver/go.mod @@ -23,7 +23,7 @@ require ( require ( cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.8.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/google/s2a-go v0.1.9 // indirect @@ -43,9 +43,9 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect go.opentelemetry.io/otel/log v0.14.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/time v0.12.0 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/time v0.13.0 // indirect google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect ) @@ -74,11 +74,11 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - google.golang.org/api v0.249.0 - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + google.golang.org/api v0.251.0 + google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/grpc v1.75.1 // indirect google.golang.org/protobuf v1.36.9 gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/receiver/googlecloudmonitoringreceiver/go.sum b/receiver/googlecloudmonitoringreceiver/go.sum index d6a330486f4ec..f36bf9d1f7d7c 100644 --- a/receiver/googlecloudmonitoringreceiver/go.sum +++ b/receiver/googlecloudmonitoringreceiver/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= -cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -150,34 +150,34 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -188,14 +188,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= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= -google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/api v0.251.0 h1:6lea5nHRT8RUmpy9kkC2PJYnhnDAB13LqrLSVQlMIE8= +google.golang.org/api v0.251.0/go.mod h1:Rwy0lPf/TD7+T2VhYcffCHhyyInyuxGjICxdfLqT7KI= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:i8QOKZfYg6AbGVZzUAY3LrNWCKF8O6zFisU9Wl9RER4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= diff --git a/receiver/googlecloudpubsubreceiver/go.mod b/receiver/googlecloudpubsubreceiver/go.mod index f3d54be841a91..e488304616048 100644 --- a/receiver/googlecloudpubsubreceiver/go.mod +++ b/receiver/googlecloudpubsubreceiver/go.mod @@ -24,7 +24,7 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 go.uber.org/goleak v1.3.0 go.uber.org/zap v1.27.0 - google.golang.org/api v0.249.0 + google.golang.org/api v0.251.0 google.golang.org/genproto v0.0.0-20250603155806-513f23925822 google.golang.org/grpc v1.75.1 ) @@ -33,7 +33,7 @@ require ( cloud.google.com/go v0.120.0 // indirect cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.8.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect @@ -80,15 +80,15 @@ require ( go.opentelemetry.io/otel/sdk v1.38.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/receiver/googlecloudpubsubreceiver/go.sum b/receiver/googlecloudpubsubreceiver/go.sum index b4d932bb00f22..83121d0865a1e 100644 --- a/receiver/googlecloudpubsubreceiver/go.sum +++ b/receiver/googlecloudpubsubreceiver/go.sum @@ -4,8 +4,8 @@ cloud.google.com/go/auth v0.16.5 h1:mFWNQ2FEVWAliEQWpAdH80omXFokmrnbDhUS9cBywsI= cloud.google.com/go/auth v0.16.5/go.mod h1:utzRfHMP+Vv0mpOkTRQoWD2q3BatTOoWbA7gCc2dUhQ= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= -cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/pubsub v1.49.0 h1:5054IkbslnrMCgA2MAEPcsN3Ky+AyMpEZcii/DoySPo= @@ -180,34 +180,34 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -218,14 +218,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= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= -google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/api v0.251.0 h1:6lea5nHRT8RUmpy9kkC2PJYnhnDAB13LqrLSVQlMIE8= +google.golang.org/api v0.251.0/go.mod h1:Rwy0lPf/TD7+T2VhYcffCHhyyInyuxGjICxdfLqT7KI= google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuOnu87KpaYtjK5zBMLcULh7gxkCXu4= google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:i8QOKZfYg6AbGVZzUAY3LrNWCKF8O6zFisU9Wl9RER4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.75.1 h1:/ODCNEuf9VghjgO3rqLcfg8fiOP0nSluljWFlDxELLI= google.golang.org/grpc v1.75.1/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= google.golang.org/protobuf v1.36.9 h1:w2gp2mA27hUeUzj9Ex9FBjsBm40zfaDtEWow293U7Iw= diff --git a/receiver/googlecloudspannerreceiver/go.mod b/receiver/googlecloudspannerreceiver/go.mod index a5eef990ad242..9ff95f9b2ea84 100644 --- a/receiver/googlecloudspannerreceiver/go.mod +++ b/receiver/googlecloudspannerreceiver/go.mod @@ -21,7 +21,7 @@ require ( go.uber.org/goleak v1.3.0 go.uber.org/multierr v1.11.0 go.uber.org/zap v1.27.0 - google.golang.org/api v0.249.0 + google.golang.org/api v0.251.0 google.golang.org/grpc v1.75.1 gopkg.in/yaml.v3 v3.0.1 ) @@ -31,7 +31,7 @@ require ( cloud.google.com/go v0.121.2 // indirect cloud.google.com/go/auth v0.16.5 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.8.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect cloud.google.com/go/longrunning v0.6.7 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect @@ -89,16 +89,16 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.41.0 // indirect - golang.org/x/net v0.43.0 // indirect - golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.16.0 // indirect - golang.org/x/sys v0.35.0 // indirect - golang.org/x/text v0.28.0 // indirect - golang.org/x/time v0.12.0 // indirect + golang.org/x/crypto v0.42.0 // indirect + golang.org/x/net v0.44.0 // indirect + golang.org/x/oauth2 v0.31.0 // indirect + golang.org/x/sync v0.17.0 // indirect + golang.org/x/sys v0.36.0 // indirect + golang.org/x/text v0.29.0 // indirect + golang.org/x/time v0.13.0 // indirect google.golang.org/genproto v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 // indirect google.golang.org/protobuf v1.36.9 // indirect ) diff --git a/receiver/googlecloudspannerreceiver/go.sum b/receiver/googlecloudspannerreceiver/go.sum index ac7043811dd89..5a6e11cd31a81 100644 --- a/receiver/googlecloudspannerreceiver/go.sum +++ b/receiver/googlecloudspannerreceiver/go.sum @@ -184,8 +184,8 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.8.0 h1:HxMRIbao8w17ZX6wBnjhcDkW6lTFpgcaobyVfZWqRLA= -cloud.google.com/go/compute/metadata v0.8.0/go.mod h1:sYOGTp851OV9bOFJ9CH7elVvyzopvWQFNNghtDQ/Biw= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -1051,8 +1051,8 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= -golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI= +golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1167,8 +1167,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= -golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= -golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= +golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I= +golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= 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-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1198,8 +1198,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= -golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/oauth2 v0.31.0 h1:8Fq0yVZLh4j4YA47vHKFTa9Ew5XIrCP8LC6UeNZnLxo= +golang.org/x/oauth2 v0.31.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= 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= @@ -1216,8 +1216,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= -golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= +golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1295,8 +1295,8 @@ 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.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= -golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k= +golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 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.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -1321,16 +1321,16 @@ 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.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= -golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= -golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= +golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= +golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1469,8 +1469,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.249.0 h1:0VrsWAKzIZi058aeq+I86uIXbNhm9GxSHpbmZ92a38w= -google.golang.org/api v0.249.0/go.mod h1:dGk9qyI0UYPwO/cjt2q06LG/EhUpwZGdAbYF14wHHrQ= +google.golang.org/api v0.251.0 h1:6lea5nHRT8RUmpy9kkC2PJYnhnDAB13LqrLSVQlMIE8= +google.golang.org/api v0.251.0/go.mod h1:Rwy0lPf/TD7+T2VhYcffCHhyyInyuxGjICxdfLqT7KI= 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.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1614,8 +1614,8 @@ google.golang.org/genproto v0.0.0-20250603155806-513f23925822 h1:rHWScKit0gvAPuO google.golang.org/genproto v0.0.0-20250603155806-513f23925822/go.mod h1:HubltRL7rMh0LfnQPkMH4NPDFEWp0jw3vixw7jEM53s= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7 h1:FiusG7LWj+4byqhbvmB+Q93B/mOxJLN2DTozDuZm4EU= google.golang.org/genproto/googleapis/api v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:kXqgZtrWaf6qS3jZOCnCH7WYfrvFjkC51bM8fz3RsCA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c h1:qXWI/sQtv5UKboZ/zUk7h+mrf/lXORyI+n9DKDAusdg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250818200422-3122310a409c/go.mod h1:gw1tLEfykwDz2ET4a12jcXt4couGAm7IwsVaTy0Sflo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4 h1:i8QOKZfYg6AbGVZzUAY3LrNWCKF8O6zFisU9Wl9RER4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250929231259-57b25ae835d4/go.mod h1:HSkG/KdJWusxU1F6CNrwNDjBMgisKxGnc5dAZfT0mjQ= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= diff --git a/receiver/huaweicloudcesreceiver/go.mod b/receiver/huaweicloudcesreceiver/go.mod index eac8fa6a076f7..7818fae70b7e9 100644 --- a/receiver/huaweicloudcesreceiver/go.mod +++ b/receiver/huaweicloudcesreceiver/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( github.com/cenkalti/backoff/v4 v4.3.0 - github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.169 + github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.170 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 github.com/stretchr/testify v1.11.1 diff --git a/receiver/huaweicloudcesreceiver/go.sum b/receiver/huaweicloudcesreceiver/go.sum index 9197a93bce713..e05d91adcdfd9 100644 --- a/receiver/huaweicloudcesreceiver/go.sum +++ b/receiver/huaweicloudcesreceiver/go.sum @@ -77,8 +77,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/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.169 h1:v6D9+9F9u1GzKA+qALBR/zrPguKkGdlnXg0aZaMtkjE= -github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.169/go.mod h1:M+yna96Fx9o5GbIUnF3OvVvQGjgfVSyeJbV9Yb1z/wI= +github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.170 h1:s/J9EsowKGHvmBO4CeY1RzlpYkczOpXxV/6v/+NJVVA= +github.com/huaweicloud/huaweicloud-sdk-go-v3 v0.1.170/go.mod h1:M+yna96Fx9o5GbIUnF3OvVvQGjgfVSyeJbV9Yb1z/wI= github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12 h1:9Nu54bhS/H/Kgo2/7xNSUuC5G28VR8ljfrLKU2G4IjU= github.com/json-iterator/go v1.1.13-0.20220915233716-71ac16282d12/go.mod h1:TBzl5BIHNXfS9+C35ZyJaklL7mLDbgUkcgXzSLa8Tk0= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= diff --git a/receiver/jmxreceiver/supported_jars.go b/receiver/jmxreceiver/supported_jars.go index d79712dfc8e9c..263faa6b58adb 100644 --- a/receiver/jmxreceiver/supported_jars.go +++ b/receiver/jmxreceiver/supported_jars.go @@ -32,7 +32,11 @@ func oldFormatProperties(c *Config, j supportedJar) error { } var jmxScraperVersions = map[string]supportedJar{ - "e791ccfcfee9c0d299d07474d9bfcbfcbebf1181323be601220c8a823062ab99": { + "d435d766b3cacc731713b95906b2204a1a4eab4ab58413163f6413573f35e0d3": { + version: "1.50.0-alpha", + jar: "JMX scraper", + }, + "b821f96df239d1e1078c0f51f07977bc375e56e92c2d96eb7954ad30e617c677": { version: "1.49.0-alpha", jar: "JMX scraper", }, @@ -49,6 +53,10 @@ var jmxScraperVersions = map[string]supportedJar{ // If you change this variable name, please open an issue in opentelemetry-java-contrib // so that repository's release automation can be updated var jmxMetricsGathererVersions = map[string]supportedJar{ + "0ef4abb0da557fc424867bcd55d73459cf9f6374842775fa2e64a9fcc0fe232c": { + version: "1.50.0-alpha", + jar: "JMX metrics gatherer", + }, "914d590f31aa7fa8d0a8765eaea665fd15a345f3fce447949e09dd78c6e1d68c": { version: "1.49.0-alpha", jar: "JMX metrics gatherer", diff --git a/receiver/k8sclusterreceiver/internal/metadata/metadata.go b/receiver/k8sclusterreceiver/internal/metadata/metadata.go index 8f5442b7bd6c8..b40b31a3fae0d 100644 --- a/receiver/k8sclusterreceiver/internal/metadata/metadata.go +++ b/receiver/k8sclusterreceiver/internal/metadata/metadata.go @@ -5,6 +5,7 @@ package metadata // import "github.com/open-telemetry/opentelemetry-collector-co import ( "fmt" + maps0 "maps" "strings" "time" @@ -88,9 +89,7 @@ func getOTelEntityTypeFromKind(kind string) string { func MergeKubernetesMetadataMaps(maps ...map[metadataPkg.ResourceID]*KubernetesMetadata) map[metadataPkg.ResourceID]*KubernetesMetadata { out := map[metadataPkg.ResourceID]*KubernetesMetadata{} for _, m := range maps { - for id, km := range m { - out[id] = km - } + maps0.Copy(out, m) } return out diff --git a/receiver/k8sclusterreceiver/internal/pod/pods_test.go b/receiver/k8sclusterreceiver/internal/pod/pods_test.go index af32891beed21..1d2564de11f23 100644 --- a/receiver/k8sclusterreceiver/internal/pod/pods_test.go +++ b/receiver/k8sclusterreceiver/internal/pod/pods_test.go @@ -5,6 +5,7 @@ package pod import ( "fmt" + "maps" "path/filepath" "strings" "testing" @@ -193,9 +194,7 @@ func TestDataCollectorSyncMetadataForPodWorkloads(t *testing.T) { got, exists := actual[key] require.True(t, exists) - for k, v := range commonPodMetadata { - item.Metadata[k] = v - } + maps.Copy(item.Metadata, commonPodMetadata) require.Equal(t, *item, *got) if testCase.logMessage != "" { @@ -552,12 +551,8 @@ func TestPodMetadata(t *testing.T) { podMeta := meta["test-pod-0-uid"].Metadata allExpectedMetadata := make(map[string]string) - for key, value := range commonPodMetadata { - allExpectedMetadata[key] = value - } - for key, value := range tt.expectedMetadata { - allExpectedMetadata[key] = value - } + maps.Copy(allExpectedMetadata, commonPodMetadata) + maps.Copy(allExpectedMetadata, tt.expectedMetadata) assert.Equal(t, allExpectedMetadata, podMeta) }) } diff --git a/receiver/k8sclusterreceiver/mock_resources_test.go b/receiver/k8sclusterreceiver/mock_resources_test.go index c063314612d1b..6c321891c5e75 100644 --- a/receiver/k8sclusterreceiver/mock_resources_test.go +++ b/receiver/k8sclusterreceiver/mock_resources_test.go @@ -21,7 +21,7 @@ import ( func createPods(t *testing.T, client *fake.Clientset, numPods int, distinctNamespaces bool) []*corev1.Pod { out := make([]*corev1.Pod, 0, numPods) - for i := 0; i < numPods; i++ { + for i := range numPods { p := &corev1.Pod{ ObjectMeta: v1.ObjectMeta{ UID: types.UID("pod" + strconv.Itoa(i)), @@ -47,7 +47,7 @@ func createPods(t *testing.T, client *fake.Clientset, numPods int, distinctNames } func deletePods(t *testing.T, client *fake.Clientset, numPods int) { - for i := 0; i < numPods; i++ { + for i := range numPods { err := client.CoreV1().Pods("test").Delete(t.Context(), strconv.Itoa(i), v1.DeleteOptions{}) require.NoError(t, err, "error creating node") } @@ -56,7 +56,7 @@ func deletePods(t *testing.T, client *fake.Clientset, numPods int) { } func createNodes(t *testing.T, client *fake.Clientset, numNodes int) { - for i := 0; i < numNodes; i++ { + for i := range numNodes { n := &corev1.Node{ ObjectMeta: v1.ObjectMeta{ UID: types.UID("node" + strconv.Itoa(i)), @@ -71,7 +71,7 @@ func createNodes(t *testing.T, client *fake.Clientset, numNodes int) { } func createClusterQuota(t *testing.T, client *fakeQuota.Clientset, numQuotas int) { - for i := 0; i < numQuotas; i++ { + for i := range numQuotas { q := "av1.ClusterResourceQuota{ ObjectMeta: v1.ObjectMeta{ Name: fmt.Sprintf("test-clusterquota-%d", i), diff --git a/receiver/k8sclusterreceiver/watcher_test.go b/receiver/k8sclusterreceiver/watcher_test.go index 22ed3ac83eeb1..b3db71e7af691 100644 --- a/receiver/k8sclusterreceiver/watcher_test.go +++ b/receiver/k8sclusterreceiver/watcher_test.go @@ -4,6 +4,7 @@ package k8sclusterreceiver import ( + maps0 "maps" "testing" "time" @@ -634,9 +635,7 @@ func podWithAdditionalLabels(labels map[string]string, pod *corev1.Pod) any { pod.Labels = make(map[string]string, len(labels)) } - for k, v := range labels { - pod.Labels[k] = v - } + maps0.Copy(pod.Labels, labels) return pod } diff --git a/receiver/k8seventsreceiver/receiver.go b/receiver/k8seventsreceiver/receiver.go index eb2a86c6917a5..265a43e7ac5dd 100644 --- a/receiver/k8seventsreceiver/receiver.go +++ b/receiver/k8seventsreceiver/receiver.go @@ -150,12 +150,14 @@ func (kr *k8seventsReceiver) startWatch(ns string, client k8s.Interface) { kr.stopperChanList = append(kr.stopperChanList, stopperChan) kr.startWatchingNamespace(client, cache.ResourceEventHandlerFuncs{ AddFunc: func(obj any) { - ev := obj.(*corev1.Event) - kr.handleEvent(ev) + if ev, ok := obj.(*corev1.Event); ok { + kr.handleEvent(ev) + } }, UpdateFunc: func(_, obj any) { - ev := obj.(*corev1.Event) - kr.handleEvent(ev) + if ev, ok := obj.(*corev1.Event); ok { + kr.handleEvent(ev) + } }, }, ns, stopperChan) } diff --git a/receiver/k8sobjectsreceiver/config.go b/receiver/k8sobjectsreceiver/config.go index 1424215c55ada..808558fd48396 100644 --- a/receiver/k8sobjectsreceiver/config.go +++ b/receiver/k8sobjectsreceiver/config.go @@ -6,6 +6,7 @@ package k8sobjectsreceiver // import "github.com/open-telemetry/opentelemetry-co import ( "errors" "fmt" + "maps" "strings" "time" @@ -176,9 +177,7 @@ func (k *K8sObjectsConfig) DeepCopy() *K8sObjectsConfig { } copied.exclude = make(map[apiWatch.EventType]bool) - for key, val := range k.exclude { - copied.exclude[key] = val - } + maps.Copy(copied.exclude, k.exclude) if k.gvr != nil { copied.gvr = &schema.GroupVersionResource{ diff --git a/receiver/k8sobjectsreceiver/receiver.go b/receiver/k8sobjectsreceiver/receiver.go index e8a65b5849d93..852d86bcb70e7 100644 --- a/receiver/k8sobjectsreceiver/receiver.go +++ b/receiver/k8sobjectsreceiver/receiver.go @@ -38,6 +38,7 @@ type k8sobjectsreceiver struct { obsrecv *receiverhelper.ObsReport mu sync.Mutex cancel context.CancelFunc + wg sync.WaitGroup } func newReceiver(params receiver.Settings, config *Config, consumer consumer.Logs) (receiver.Logs, error) { @@ -141,13 +142,12 @@ func (kr *k8sobjectsreceiver) Start(ctx context.Context, host component.Host) er } kr.setting.Logger.Info("Object Receiver started as leader") }, + // onStoppedLeading: stop watches, but DO NOT shut the whole receiver down func() { - kr.setting.Logger.Info("no longer leader, stopping") - err = kr.Shutdown(context.Background()) - if err != nil { - kr.setting.Logger.Error("shutdown receiver error:", zap.Error(err)) - } - }) + kr.setting.Logger.Info("no longer leader, stopping watches") + kr.stopWatches() + }, + ) } else { cctx, cancel := context.WithCancel(ctx) kr.cancel = cancel @@ -160,17 +160,37 @@ func (kr *k8sobjectsreceiver) Start(ctx context.Context, host component.Host) er } func (kr *k8sobjectsreceiver) Shutdown(context.Context) error { + // Stop informers and wait for them to exit. kr.setting.Logger.Info("Object Receiver stopped") + kr.stopWatches() + if kr.cancel != nil { kr.cancel() + kr.cancel = nil } + return nil +} +// stopWatches closes all informer stop channels (idempotently) and waits for their goroutines to exit. +func (kr *k8sobjectsreceiver) stopWatches() { kr.mu.Lock() - for _, stopperChan := range kr.stopperChanList { - close(stopperChan) - } + // Copy and clear the list under lock to avoid races on restart + chans := kr.stopperChanList + kr.stopperChanList = nil kr.mu.Unlock() - return nil + + if len(chans) == 0 { + return + } + for _, ch := range chans { + select { + case <-ch: // already closed + default: + close(ch) + } + } + // Now wait for all WG-tracked loops (both pull & watch) to exit + kr.wg.Wait() } func (kr *k8sobjectsreceiver) start(ctx context.Context, object *K8sObjectsConfig) { @@ -205,7 +225,9 @@ func (kr *k8sobjectsreceiver) startPull(ctx context.Context, config *K8sObjectsC stopperChan := make(chan struct{}) kr.mu.Lock() kr.stopperChanList = append(kr.stopperChanList, stopperChan) + kr.wg.Add(1) kr.mu.Unlock() + defer kr.wg.Done() ticker := newTicker(ctx, config.Interval) listOption := metav1.ListOptions{ FieldSelector: config.FieldSelector, @@ -226,15 +248,21 @@ func (kr *k8sobjectsreceiver) startPull(ctx context.Context, config *K8sObjectsC kr.setting.Logger.Error("error in pulling object", zap.String("resource", config.gvr.String()), zap.Error(err)) - } else if len(objects.Items) > 0 { - logs := pullObjectsToLogData(objects, time.Now(), config, kr.setting.BuildInfo.Version) - obsCtx := kr.obsrecv.StartLogsOp(ctx) - logRecordCount := logs.LogRecordCount() - err = kr.consumer.ConsumeLogs(obsCtx, logs) - kr.obsrecv.EndLogsOp(obsCtx, metadata.Type.String(), logRecordCount, err) + continue } + if len(objects.Items) == 0 { + continue + } + logs := pullObjectsToLogData(objects, time.Now(), config, kr.setting.BuildInfo.Version) + obsCtx := kr.obsrecv.StartLogsOp(ctx) + logRecordCount := logs.LogRecordCount() + err = kr.consumer.ConsumeLogs(obsCtx, logs) + kr.obsrecv.EndLogsOp(obsCtx, metadata.Type.String(), logRecordCount, err) + case <-stopperChan: return + case <-ctx.Done(): + return } } } @@ -243,7 +271,9 @@ func (kr *k8sobjectsreceiver) startWatch(ctx context.Context, config *K8sObjects stopperChan := make(chan struct{}) kr.mu.Lock() kr.stopperChanList = append(kr.stopperChanList, stopperChan) + kr.wg.Add(1) kr.mu.Unlock() + defer kr.wg.Done() if kr.config.IncludeInitialState { kr.sendInitialState(ctx, config, resource) @@ -256,6 +286,7 @@ func (kr *k8sobjectsreceiver) startWatch(ctx context.Context, config *K8sObjects } cancelCtx, cancel := context.WithCancel(ctx) + defer cancel() cfgCopy := *config wait.UntilWithContext(cancelCtx, func(newCtx context.Context) { resourceVersion, err := getResourceVersion(newCtx, &cfgCopy, resource) @@ -343,6 +374,10 @@ func (kr *k8sobjectsreceiver) doWatch(ctx context.Context, config *K8sObjectsCon res := watcher.ResultChan() for { select { + case <-ctx.Done(): + kr.setting.Logger.Info("context canceled, stopping watch", + zap.String("resource", config.gvr.String())) + return true case data, ok := <-res: if data.Type == apiWatch.Error { errObject := apierrors.FromObject(data.Object) @@ -372,8 +407,9 @@ func (kr *k8sobjectsreceiver) doWatch(ctx context.Context, config *K8sObjectsCon kr.setting.Logger.Error("error converting objects to log data", zap.Error(err)) } else { obsCtx := kr.obsrecv.StartLogsOp(ctx) + cnt := logs.LogRecordCount() err := kr.consumer.ConsumeLogs(obsCtx, logs) - kr.obsrecv.EndLogsOp(obsCtx, metadata.Type.String(), 1, err) + kr.obsrecv.EndLogsOp(obsCtx, metadata.Type.String(), cnt, err) } case <-stopperChan: watcher.Stop() diff --git a/receiver/k8sobjectsreceiver/receiver_test.go b/receiver/k8sobjectsreceiver/receiver_test.go index 6aaa861ee02ab..1b76a81c74e98 100644 --- a/receiver/k8sobjectsreceiver/receiver_test.go +++ b/receiver/k8sobjectsreceiver/receiver_test.go @@ -516,3 +516,247 @@ func TestReceiverWithLeaderElection(t *testing.T) { }, 20*time.Second, 100*time.Millisecond, "logs not collected") } + +func TestWatchWithLeaderElectionStandby(t *testing.T) { + t.Parallel() + + fakeLeaderElection := &k8sleaderelectortest.FakeLeaderElection{} + fakeHost := &k8sleaderelectortest.FakeHost{FakeLeaderElection: fakeLeaderElection} + leaderElectorID := component.MustNewID("k8s_leader_elector") + + mockClient := newMockDynamicClient() + mockClient.createPods( + generatePod("pod1", "default", map[string]any{"environment": "production"}, "1"), + ) + + rCfg := createDefaultConfig().(*Config) + rCfg.makeDynamicClient = mockClient.getMockDynamicClient + rCfg.makeDiscoveryClient = getMockDiscoveryClient + rCfg.ErrorMode = PropagateError + rCfg.IncludeInitialState = false + rCfg.Objects = []*K8sObjectsConfig{ + {Name: "pods", Mode: WatchMode, Namespaces: []string{"default"}}, + } + rCfg.K8sLeaderElector = &leaderElectorID + + r, err := newReceiver(receivertest.NewNopSettings(metadata.Type), rCfg, consumertest.NewNop()) + require.NoError(t, err) + kr := r.(*k8sobjectsreceiver) + sink := new(consumertest.LogsSink) + kr.consumer = sink + + require.NoError(t, kr.Start(t.Context(), fakeHost)) + + // Become leader -> watches will start asynchronously + fakeLeaderElection.InvokeOnLeading() + + // Give the watch time to establish (avoid list→watch gap) + time.Sleep(150 * time.Millisecond) + + // Now create pods that should be observed by the active watch + mockClient.createPods( + generatePod("pod2", "default", map[string]any{"environment": "x"}, "2"), + generatePod("pod3", "default", map[string]any{"environment": "y"}, "3"), + ) + + require.Eventually(t, func() bool { + return sink.LogRecordCount() == 2 + }, 5*time.Second, 50*time.Millisecond, "watch events not collected while leader") + + // Standby + fakeLeaderElection.InvokeOnStopping() + + // Create while in standby -> should NOT be delivered + mockClient.createPods( + generatePod("pod4", "default", map[string]any{"environment": "standby"}, "4"), + ) + time.Sleep(150 * time.Millisecond) + assert.Equal(t, 2, sink.LogRecordCount(), "no events should be received while in standby") + + // Resume + fakeLeaderElection.InvokeOnLeading() + time.Sleep(150 * time.Millisecond) + + mockClient.createPods( + generatePod("pod5", "default", map[string]any{"environment": "resumed"}, "5"), + ) + + require.Eventually(t, func() bool { + return sink.LogRecordCount() == 3 + }, 5*time.Second, 50*time.Millisecond, "watch did not resume after re-leading") + + assert.NoError(t, kr.Shutdown(t.Context())) +} + +func TestPullWithLeaderElectionStandby(t *testing.T) { + t.Parallel() + + fakeLeaderElection := &k8sleaderelectortest.FakeLeaderElection{} + fakeHost := &k8sleaderelectortest.FakeHost{FakeLeaderElection: fakeLeaderElection} + leaderElectorID := component.MustNewID("k8s_leader_elector") + + mockClient := newMockDynamicClient() + mockClient.createPods(generatePod("pod1", "default", map[string]any{"environment": "production"}, "1")) + + rCfg := createDefaultConfig().(*Config) + rCfg.makeDynamicClient = mockClient.getMockDynamicClient + rCfg.makeDiscoveryClient = getMockDiscoveryClient + rCfg.ErrorMode = PropagateError + rCfg.Objects = []*K8sObjectsConfig{ + { + Name: "pods", + Mode: PullMode, + Interval: 10 * time.Millisecond, // fast pull to make the test snappy + }, + } + rCfg.K8sLeaderElector = &leaderElectorID + + r, err := newReceiver(receivertest.NewNopSettings(metadata.Type), rCfg, consumertest.NewNop()) + require.NoError(t, err) + kr := r.(*k8sobjectsreceiver) + sink := new(consumertest.LogsSink) + kr.consumer = sink + + require.NoError(t, kr.Start(t.Context(), fakeHost)) + + // Become leader: pulls start + fakeLeaderElection.InvokeOnLeading() + + // Expect at least one pull to have happened + require.Eventually(t, func() bool { return sink.LogRecordCount() >= 1 }, + 2*time.Second, 20*time.Millisecond, "pulls did not start while leader") + + // Go standby: pulls stop + fakeLeaderElection.InvokeOnStopping() + countAtStandby := sink.LogRecordCount() + + // Add more pods while in standby—should NOT increase count + mockClient.createPods( + generatePod("pod2", "default", map[string]any{"environment": "standby"}, "2"), + ) + time.Sleep(100 * time.Millisecond) + assert.Equal(t, countAtStandby, sink.LogRecordCount(), "no pulls should occur while in standby") + + // Regain leadership: pulls resume + fakeLeaderElection.InvokeOnLeading() + + // Now the next pull should include the new pod(s) + require.Eventually(t, func() bool { return sink.LogRecordCount() > countAtStandby }, + 2*time.Second, 20*time.Millisecond, "pulls did not resume after re-leading") + + assert.NoError(t, kr.Shutdown(t.Context())) +} + +func TestWatchLeaderFlapDuringStartup_NoPanic(t *testing.T) { + t.Parallel() + + fakeLE := &k8sleaderelectortest.FakeLeaderElection{} + fakeHost := &k8sleaderelectortest.FakeHost{FakeLeaderElection: fakeLE} + leaderElectorID := component.MustNewID("k8s_leader_elector") + + mockClient := newMockDynamicClient() + mockClient.createPods(generatePod("pod1", "default", map[string]any{"env": "prod"}, "1")) + + cfg := createDefaultConfig().(*Config) + cfg.makeDynamicClient = mockClient.getMockDynamicClient + cfg.makeDiscoveryClient = getMockDiscoveryClient + cfg.ErrorMode = PropagateError + cfg.IncludeInitialState = false + cfg.Objects = []*K8sObjectsConfig{ + {Name: "pods", Mode: WatchMode, Namespaces: []string{"default"}}, + } + cfg.K8sLeaderElector = &leaderElectorID + + r, err := newReceiver(receivertest.NewNopSettings(metadata.Type), cfg, consumertest.NewNop()) + require.NoError(t, err) + kr := r.(*k8sobjectsreceiver) + + require.NoError(t, kr.Start(t.Context(), fakeHost)) + + // 1) Become leader once and wait until at least one worker is registered + fakeLE.InvokeOnLeading() + require.Eventually(t, func() bool { + kr.mu.Lock() + n := len(kr.stopperChanList) + kr.mu.Unlock() + return n > 0 + }, 2*time.Second, 10*time.Millisecond, "worker not registered") + + // 2) Flap leadership, but give a *tiny* breathing room between lead/stop + const loops = 100 + done := make(chan struct{}) + go func() { + defer close(done) + for i := 0; i < loops; i++ { + fakeLE.InvokeOnStopping() + // small gap so stopWatches() can complete and workers exit + time.Sleep(1 * time.Millisecond) + fakeLE.InvokeOnLeading() + // small gap so a worker can get started and reach the watch loop + time.Sleep(1 * time.Millisecond) + } + }() + + select { + case <-done: + case <-time.After(10 * time.Second): + t.Fatal("leader flap goroutine timed out (possible deadlock)") + } + + assert.NoError(t, kr.Shutdown(t.Context())) +} + +func TestPullLeaderFlapDuringStartup_NoPanic(t *testing.T) { + t.Parallel() + + fakeLE := &k8sleaderelectortest.FakeLeaderElection{} + fakeHost := &k8sleaderelectortest.FakeHost{FakeLeaderElection: fakeLE} + leaderElectorID := component.MustNewID("k8s_leader_elector") + + mockClient := newMockDynamicClient() + mockClient.createPods(generatePod("pod1", "default", map[string]any{"env": "prod"}, "1")) + + cfg := createDefaultConfig().(*Config) + cfg.makeDynamicClient = mockClient.getMockDynamicClient + cfg.makeDiscoveryClient = getMockDiscoveryClient + cfg.ErrorMode = PropagateError + cfg.Objects = []*K8sObjectsConfig{ + {Name: "pods", Mode: PullMode, Interval: 5 * time.Millisecond}, + } + cfg.K8sLeaderElector = &leaderElectorID + + r, err := newReceiver(receivertest.NewNopSettings(metadata.Type), cfg, consumertest.NewNop()) + require.NoError(t, err) + kr := r.(*k8sobjectsreceiver) + + require.NoError(t, kr.Start(t.Context(), fakeHost)) + + // Ensure a worker is registered before flapping + fakeLE.InvokeOnLeading() + require.Eventually(t, func() bool { + kr.mu.Lock() + n := len(kr.stopperChanList) + kr.mu.Unlock() + return n > 0 + }, 2*time.Second, 10*time.Millisecond) + + const loops = 100 + done := make(chan struct{}) + go func() { + defer close(done) + for i := 0; i < loops; i++ { + fakeLE.InvokeOnStopping() + time.Sleep(1 * time.Millisecond) + fakeLE.InvokeOnLeading() + time.Sleep(1 * time.Millisecond) + } + }() + + select { + case <-done: + case <-time.After(10 * time.Second): + t.Fatal("leader flap goroutine timed out (possible deadlock)") + } + + assert.NoError(t, kr.Shutdown(t.Context())) +} diff --git a/receiver/k8sobjectsreceiver/unstructured_to_logdata_test.go b/receiver/k8sobjectsreceiver/unstructured_to_logdata_test.go index 853765b3c511c..f70fa77ba489e 100644 --- a/receiver/k8sobjectsreceiver/unstructured_to_logdata_test.go +++ b/receiver/k8sobjectsreceiver/unstructured_to_logdata_test.go @@ -63,7 +63,7 @@ func TestUnstructuredListToLogData(t *testing.T) { objects := unstructured.UnstructuredList{ Items: []unstructured.Unstructured{}, } - for i := 0; i < 3; i++ { + for i := range 3 { object := unstructured.Unstructured{} object.SetKind("Node") object.SetName(fmt.Sprintf("node-%d", i)) diff --git a/receiver/kafkareceiver/documentation.md b/receiver/kafkareceiver/documentation.md index debebfbe1e4d6..6859a6fb858d6 100644 --- a/receiver/kafkareceiver/documentation.md +++ b/receiver/kafkareceiver/documentation.md @@ -8,13 +8,13 @@ The following telemetry is emitted by this component. ### otelcol_kafka_broker_closed -The total number of connections closed. +The total number of connections closed. [development] Only produced when franz-go is enabled. -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes @@ -24,13 +24,13 @@ Only produced when franz-go is enabled. ### otelcol_kafka_broker_connects -The total number of connections opened. +The total number of connections opened. [development] Only produced when franz-go is enabled. -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes @@ -57,13 +57,13 @@ Only produced when franz-go is enabled. Deprecated in favor of kafka_broker_thro ### otelcol_kafka_broker_throttling_latency -The throttling latency in seconds imposed by the broker when receiving records. +The throttling latency in seconds imposed by the broker when receiving records. [development] Only produced when franz-go is enabled. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| s | Histogram | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| s | Histogram | Double | development | #### Attributes @@ -73,13 +73,13 @@ Only produced when franz-go is enabled. ### otelcol_kafka_receiver_bytes -The size in bytes of received records seen by the broker. +The size in bytes of received records seen by the broker. [development] Only produced when franz-go is enabled. -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| By | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| By | Sum | Int | true | development | #### Attributes @@ -92,11 +92,11 @@ Only produced when franz-go is enabled. ### otelcol_kafka_receiver_bytes_uncompressed -The uncompressed size in bytes of received records seen by the client. +The uncompressed size in bytes of received records seen by the client. [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| By | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| By | Sum | Int | true | development | #### Attributes @@ -109,11 +109,11 @@ The uncompressed size in bytes of received records seen by the client. ### otelcol_kafka_receiver_current_offset -Current message offset +Current message offset [development] -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| 1 | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| 1 | Gauge | Int | development | #### Attributes @@ -162,11 +162,11 @@ Deprecated in favor of kafka_receiver_records. ### otelcol_kafka_receiver_offset_lag -Current offset lag +Current offset lag [development] -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| 1 | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| 1 | Gauge | Int | development | #### Attributes @@ -177,29 +177,29 @@ Current offset lag ### otelcol_kafka_receiver_partition_close -Number of finished partitions +Number of finished partitions [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | ### otelcol_kafka_receiver_partition_start -Number of started partitions +Number of started partitions [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | ### otelcol_kafka_receiver_read_latency -The time it took in seconds to receive a batch of records. +The time it took in seconds to receive a batch of records. [development] Only produced when franz-go is enabled. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| s | Histogram | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| s | Histogram | Double | development | #### Attributes @@ -212,11 +212,11 @@ Only produced when franz-go is enabled. ### otelcol_kafka_receiver_records -The number of received records. +The number of received records. [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes @@ -229,7 +229,7 @@ The number of received records. ### otelcol_kafka_receiver_records_delay -The time in seconds between producing and receiving a batch of records. +The time in seconds between producing and receiving a batch of records. [development] Optional, only reported when enabled via config. Note that this metric may slow down high-volume consuming. @@ -237,9 +237,9 @@ Only produced when franz-go is enabled. This metric is reported with an assumption that the exporter and the receiver clocks are synchronized. -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| s | Histogram | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| s | Histogram | Double | development | #### Attributes @@ -250,11 +250,11 @@ This metric is reported with an assumption that the exporter and the receiver cl ### otelcol_kafka_receiver_unmarshal_failed_log_records -Number of log records failed to be unmarshaled +Number of log records failed to be unmarshaled [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes @@ -265,11 +265,11 @@ Number of log records failed to be unmarshaled ### otelcol_kafka_receiver_unmarshal_failed_metric_points -Number of metric points failed to be unmarshaled +Number of metric points failed to be unmarshaled [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes @@ -280,11 +280,11 @@ Number of metric points failed to be unmarshaled ### otelcol_kafka_receiver_unmarshal_failed_profiles -Number of profiles failed to be unmarshaled +Number of profiles failed to be unmarshaled [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes @@ -295,11 +295,11 @@ Number of profiles failed to be unmarshaled ### otelcol_kafka_receiver_unmarshal_failed_spans -Number of spans failed to be unmarshaled +Number of spans failed to be unmarshaled [development] -| Unit | Metric Type | Value Type | Monotonic | -| ---- | ----------- | ---------- | --------- | -| 1 | Sum | Int | true | +| Unit | Metric Type | Value Type | Monotonic | Stability | +| ---- | ----------- | ---------- | --------- | --------- | +| 1 | Sum | Int | true | development | #### Attributes diff --git a/receiver/kafkareceiver/internal/metadata/generated_telemetry.go b/receiver/kafkareceiver/internal/metadata/generated_telemetry.go index 9d56a3fbc556d..18f4f1980ebaf 100644 --- a/receiver/kafkareceiver/internal/metadata/generated_telemetry.go +++ b/receiver/kafkareceiver/internal/metadata/generated_telemetry.go @@ -78,13 +78,13 @@ func NewTelemetryBuilder(settings component.TelemetrySettings, options ...Teleme var err, errs error builder.KafkaBrokerClosed, err = builder.meter.Int64Counter( "otelcol_kafka_broker_closed", - metric.WithDescription("The total number of connections closed."), + metric.WithDescription("The total number of connections closed. [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaBrokerConnects, err = builder.meter.Int64Counter( "otelcol_kafka_broker_connects", - metric.WithDescription("The total number of connections opened."), + metric.WithDescription("The total number of connections opened. [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) @@ -96,26 +96,26 @@ func NewTelemetryBuilder(settings component.TelemetrySettings, options ...Teleme errs = errors.Join(errs, err) builder.KafkaBrokerThrottlingLatency, err = builder.meter.Float64Histogram( "otelcol_kafka_broker_throttling_latency", - metric.WithDescription("The throttling latency in seconds imposed by the broker when receiving records."), + metric.WithDescription("The throttling latency in seconds imposed by the broker when receiving records. [development]"), metric.WithUnit("s"), metric.WithExplicitBucketBoundaries([]float64{0, 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100}...), ) errs = errors.Join(errs, err) builder.KafkaReceiverBytes, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_bytes", - metric.WithDescription("The size in bytes of received records seen by the broker."), + metric.WithDescription("The size in bytes of received records seen by the broker. [development]"), metric.WithUnit("By"), ) errs = errors.Join(errs, err) builder.KafkaReceiverBytesUncompressed, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_bytes_uncompressed", - metric.WithDescription("The uncompressed size in bytes of received records seen by the client."), + metric.WithDescription("The uncompressed size in bytes of received records seen by the client. [development]"), metric.WithUnit("By"), ) errs = errors.Join(errs, err) builder.KafkaReceiverCurrentOffset, err = builder.meter.Int64Gauge( "otelcol_kafka_receiver_current_offset", - metric.WithDescription("Current message offset"), + metric.WithDescription("Current message offset [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) @@ -133,63 +133,63 @@ func NewTelemetryBuilder(settings component.TelemetrySettings, options ...Teleme errs = errors.Join(errs, err) builder.KafkaReceiverOffsetLag, err = builder.meter.Int64Gauge( "otelcol_kafka_receiver_offset_lag", - metric.WithDescription("Current offset lag"), + metric.WithDescription("Current offset lag [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverPartitionClose, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_partition_close", - metric.WithDescription("Number of finished partitions"), + metric.WithDescription("Number of finished partitions [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverPartitionStart, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_partition_start", - metric.WithDescription("Number of started partitions"), + metric.WithDescription("Number of started partitions [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverReadLatency, err = builder.meter.Float64Histogram( "otelcol_kafka_receiver_read_latency", - metric.WithDescription("The time it took in seconds to receive a batch of records."), + metric.WithDescription("The time it took in seconds to receive a batch of records. [development]"), metric.WithUnit("s"), metric.WithExplicitBucketBoundaries([]float64{0, 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100}...), ) errs = errors.Join(errs, err) builder.KafkaReceiverRecords, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_records", - metric.WithDescription("The number of received records."), + metric.WithDescription("The number of received records. [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverRecordsDelay, err = builder.meter.Float64Histogram( "otelcol_kafka_receiver_records_delay", - metric.WithDescription("The time in seconds between producing and receiving a batch of records."), + metric.WithDescription("The time in seconds between producing and receiving a batch of records. [development]"), metric.WithUnit("s"), metric.WithExplicitBucketBoundaries([]float64{0, 0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10, 25, 50, 75, 100, 250, 500, 750, 1000, 2500, 5000, 7500, 10000}...), ) errs = errors.Join(errs, err) builder.KafkaReceiverUnmarshalFailedLogRecords, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_unmarshal_failed_log_records", - metric.WithDescription("Number of log records failed to be unmarshaled"), + metric.WithDescription("Number of log records failed to be unmarshaled [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverUnmarshalFailedMetricPoints, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_unmarshal_failed_metric_points", - metric.WithDescription("Number of metric points failed to be unmarshaled"), + metric.WithDescription("Number of metric points failed to be unmarshaled [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverUnmarshalFailedProfiles, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_unmarshal_failed_profiles", - metric.WithDescription("Number of profiles failed to be unmarshaled"), + metric.WithDescription("Number of profiles failed to be unmarshaled [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) builder.KafkaReceiverUnmarshalFailedSpans, err = builder.meter.Int64Counter( "otelcol_kafka_receiver_unmarshal_failed_spans", - metric.WithDescription("Number of spans failed to be unmarshaled"), + metric.WithDescription("Number of spans failed to be unmarshaled [development]"), metric.WithUnit("1"), ) errs = errors.Join(errs, err) diff --git a/receiver/kafkareceiver/internal/metadatatest/generated_telemetrytest.go b/receiver/kafkareceiver/internal/metadatatest/generated_telemetrytest.go index 7236a563a5cc9..94a6aacd5a177 100644 --- a/receiver/kafkareceiver/internal/metadatatest/generated_telemetrytest.go +++ b/receiver/kafkareceiver/internal/metadatatest/generated_telemetrytest.go @@ -24,7 +24,7 @@ func NewSettings(tt *componenttest.Telemetry) receiver.Settings { func AssertEqualKafkaBrokerClosed(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_broker_closed", - Description: "The total number of connections closed.", + Description: "The total number of connections closed. [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -40,7 +40,7 @@ func AssertEqualKafkaBrokerClosed(t *testing.T, tt *componenttest.Telemetry, dps func AssertEqualKafkaBrokerConnects(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_broker_connects", - Description: "The total number of connections opened.", + Description: "The total number of connections opened. [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -71,7 +71,7 @@ func AssertEqualKafkaBrokerThrottlingDuration(t *testing.T, tt *componenttest.Te func AssertEqualKafkaBrokerThrottlingLatency(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.HistogramDataPoint[float64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_broker_throttling_latency", - Description: "The throttling latency in seconds imposed by the broker when receiving records.", + Description: "The throttling latency in seconds imposed by the broker when receiving records. [development]", Unit: "s", Data: metricdata.Histogram[float64]{ Temporality: metricdata.CumulativeTemporality, @@ -86,7 +86,7 @@ func AssertEqualKafkaBrokerThrottlingLatency(t *testing.T, tt *componenttest.Tel func AssertEqualKafkaReceiverBytes(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_bytes", - Description: "The size in bytes of received records seen by the broker.", + Description: "The size in bytes of received records seen by the broker. [development]", Unit: "By", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -102,7 +102,7 @@ func AssertEqualKafkaReceiverBytes(t *testing.T, tt *componenttest.Telemetry, dp func AssertEqualKafkaReceiverBytesUncompressed(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_bytes_uncompressed", - Description: "The uncompressed size in bytes of received records seen by the client.", + Description: "The uncompressed size in bytes of received records seen by the client. [development]", Unit: "By", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -118,7 +118,7 @@ func AssertEqualKafkaReceiverBytesUncompressed(t *testing.T, tt *componenttest.T func AssertEqualKafkaReceiverCurrentOffset(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_current_offset", - Description: "Current message offset", + Description: "Current message offset [development]", Unit: "1", Data: metricdata.Gauge[int64]{ DataPoints: dps, @@ -163,7 +163,7 @@ func AssertEqualKafkaReceiverMessages(t *testing.T, tt *componenttest.Telemetry, func AssertEqualKafkaReceiverOffsetLag(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_offset_lag", - Description: "Current offset lag", + Description: "Current offset lag [development]", Unit: "1", Data: metricdata.Gauge[int64]{ DataPoints: dps, @@ -177,7 +177,7 @@ func AssertEqualKafkaReceiverOffsetLag(t *testing.T, tt *componenttest.Telemetry func AssertEqualKafkaReceiverPartitionClose(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_partition_close", - Description: "Number of finished partitions", + Description: "Number of finished partitions [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -193,7 +193,7 @@ func AssertEqualKafkaReceiverPartitionClose(t *testing.T, tt *componenttest.Tele func AssertEqualKafkaReceiverPartitionStart(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_partition_start", - Description: "Number of started partitions", + Description: "Number of started partitions [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -209,7 +209,7 @@ func AssertEqualKafkaReceiverPartitionStart(t *testing.T, tt *componenttest.Tele func AssertEqualKafkaReceiverReadLatency(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.HistogramDataPoint[float64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_read_latency", - Description: "The time it took in seconds to receive a batch of records.", + Description: "The time it took in seconds to receive a batch of records. [development]", Unit: "s", Data: metricdata.Histogram[float64]{ Temporality: metricdata.CumulativeTemporality, @@ -224,7 +224,7 @@ func AssertEqualKafkaReceiverReadLatency(t *testing.T, tt *componenttest.Telemet func AssertEqualKafkaReceiverRecords(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_records", - Description: "The number of received records.", + Description: "The number of received records. [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -240,7 +240,7 @@ func AssertEqualKafkaReceiverRecords(t *testing.T, tt *componenttest.Telemetry, func AssertEqualKafkaReceiverRecordsDelay(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.HistogramDataPoint[float64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_records_delay", - Description: "The time in seconds between producing and receiving a batch of records.", + Description: "The time in seconds between producing and receiving a batch of records. [development]", Unit: "s", Data: metricdata.Histogram[float64]{ Temporality: metricdata.CumulativeTemporality, @@ -255,7 +255,7 @@ func AssertEqualKafkaReceiverRecordsDelay(t *testing.T, tt *componenttest.Teleme func AssertEqualKafkaReceiverUnmarshalFailedLogRecords(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_unmarshal_failed_log_records", - Description: "Number of log records failed to be unmarshaled", + Description: "Number of log records failed to be unmarshaled [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -271,7 +271,7 @@ func AssertEqualKafkaReceiverUnmarshalFailedLogRecords(t *testing.T, tt *compone func AssertEqualKafkaReceiverUnmarshalFailedMetricPoints(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_unmarshal_failed_metric_points", - Description: "Number of metric points failed to be unmarshaled", + Description: "Number of metric points failed to be unmarshaled [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -287,7 +287,7 @@ func AssertEqualKafkaReceiverUnmarshalFailedMetricPoints(t *testing.T, tt *compo func AssertEqualKafkaReceiverUnmarshalFailedProfiles(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_unmarshal_failed_profiles", - Description: "Number of profiles failed to be unmarshaled", + Description: "Number of profiles failed to be unmarshaled [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, @@ -303,7 +303,7 @@ func AssertEqualKafkaReceiverUnmarshalFailedProfiles(t *testing.T, tt *component func AssertEqualKafkaReceiverUnmarshalFailedSpans(t *testing.T, tt *componenttest.Telemetry, dps []metricdata.DataPoint[int64], opts ...metricdatatest.Option) { want := metricdata.Metrics{ Name: "otelcol_kafka_receiver_unmarshal_failed_spans", - Description: "Number of spans failed to be unmarshaled", + Description: "Number of spans failed to be unmarshaled [development]", Unit: "1", Data: metricdata.Sum[int64]{ Temporality: metricdata.CumulativeTemporality, diff --git a/receiver/kafkareceiver/metadata.yaml b/receiver/kafkareceiver/metadata.yaml index 1489083276934..6eadcddf36ed0 100644 --- a/receiver/kafkareceiver/metadata.yaml +++ b/receiver/kafkareceiver/metadata.yaml @@ -41,6 +41,8 @@ telemetry: description: The total number of connections opened. extended_documentation: Only produced when franz-go is enabled. optional: true + stability: + level: development unit: "1" sum: value_type: int @@ -51,6 +53,8 @@ telemetry: description: The total number of connections closed. extended_documentation: Only produced when franz-go is enabled. optional: true + stability: + level: development unit: "1" sum: value_type: int @@ -74,6 +78,8 @@ telemetry: description: The throttling latency in seconds imposed by the broker when receiving records. extended_documentation: Only produced when franz-go is enabled. optional: true + stability: + level: development unit: s histogram: value_type: double @@ -95,6 +101,8 @@ telemetry: kafka_receiver_records: enabled: true description: The number of received records. + stability: + level: development unit: "1" sum: value_type: int @@ -105,6 +113,8 @@ telemetry: description: The size in bytes of received records seen by the broker. extended_documentation: Only produced when franz-go is enabled. optional: true + stability: + level: development unit: By sum: value_type: int @@ -113,6 +123,8 @@ telemetry: kafka_receiver_bytes_uncompressed: enabled: true description: The uncompressed size in bytes of received records seen by the client. + stability: + level: development unit: By sum: value_type: int @@ -134,6 +146,8 @@ telemetry: enabled: true description: The time it took in seconds to receive a batch of records. extended_documentation: Only produced when franz-go is enabled. + stability: + level: development unit: s histogram: value_type: double @@ -148,6 +162,8 @@ telemetry: Note that this metric may slow down high-volume consuming. Only produced when franz-go is enabled. This metric is reported with an assumption that the exporter and the receiver clocks are synchronized. + stability: + level: development unit: s histogram: value_type: double @@ -156,6 +172,8 @@ telemetry: kafka_receiver_current_offset: enabled: true description: Current message offset + stability: + level: development unit: "1" gauge: value_type: int @@ -163,6 +181,8 @@ telemetry: kafka_receiver_offset_lag: enabled: true description: Current offset lag + stability: + level: development unit: "1" gauge: value_type: int @@ -170,6 +190,8 @@ telemetry: kafka_receiver_partition_start: enabled: true description: Number of started partitions + stability: + level: development unit: "1" sum: value_type: int @@ -177,6 +199,8 @@ telemetry: kafka_receiver_partition_close: enabled: true description: Number of finished partitions + stability: + level: development unit: "1" sum: value_type: int @@ -184,6 +208,8 @@ telemetry: kafka_receiver_unmarshal_failed_metric_points: enabled: true description: Number of metric points failed to be unmarshaled + stability: + level: development unit: "1" sum: value_type: int @@ -192,6 +218,8 @@ telemetry: kafka_receiver_unmarshal_failed_log_records: enabled: true description: Number of log records failed to be unmarshaled + stability: + level: development unit: "1" sum: value_type: int @@ -200,6 +228,8 @@ telemetry: kafka_receiver_unmarshal_failed_spans: enabled: true description: Number of spans failed to be unmarshaled + stability: + level: development unit: "1" sum: value_type: int @@ -208,6 +238,8 @@ telemetry: kafka_receiver_unmarshal_failed_profiles: enabled: true description: Number of profiles failed to be unmarshaled + stability: + level: development unit: "1" sum: value_type: int diff --git a/receiver/lokireceiver/go.mod b/receiver/lokireceiver/go.mod index 8f2da5bb0c472..c10617c9c289a 100644 --- a/receiver/lokireceiver/go.mod +++ b/receiver/lokireceiver/go.mod @@ -69,7 +69,7 @@ require ( github.com/prometheus/client_golang v1.23.0-rc.1 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.66.1 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 // indirect github.com/rs/cors v1.11.1 // indirect diff --git a/receiver/lokireceiver/go.sum b/receiver/lokireceiver/go.sum index 657a1ef9cbbf3..e6bbc2da00e05 100644 --- a/receiver/lokireceiver/go.sum +++ b/receiver/lokireceiver/go.sum @@ -154,8 +154,8 @@ github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNw github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.66.1 h1:h5E0h5/Y8niHc5DlaLlWLArTQI7tMrsfQjHV+d9ZoGs= github.com/prometheus/common v0.66.1/go.mod h1:gcaUsgf3KfRSwHY4dIMXLPV0K/Wg1oZ8+SbZk/HH/dA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/prometheus/prometheus v0.305.1-0.20250808193045-294f36e80261 h1:EtTzzd5UW9TXf9C8BUHv66RgdjG51efqGKWmlxMqjgs= diff --git a/receiver/oracledbreceiver/documentation.md b/receiver/oracledbreceiver/documentation.md index 8e30df3c11e21..c4a1b08a9ef56 100644 --- a/receiver/oracledbreceiver/documentation.md +++ b/receiver/oracledbreceiver/documentation.md @@ -470,3 +470,4 @@ Collection of event metrics for top N queries, filtered based on the highest CPU | ---- | ----------- | ------ | ------- | | host.name | The host name of Oracle Server | Any Str | true | | oracledb.instance.name | The name of the instance that data is coming from. | Any Str | true | +| service.instance.id | A unique identifier of the Oracle DB instance in the format host:port/serviceName. (defaults to 'unknown:1521', in case of error in generating this value) | Any Str | true | diff --git a/receiver/oracledbreceiver/internal/metadata/generated_config.go b/receiver/oracledbreceiver/internal/metadata/generated_config.go index 61b93fbd50df8..1d8d20609ae80 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_config.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_config.go @@ -276,6 +276,7 @@ func (rac *ResourceAttributeConfig) Unmarshal(parser *confmap.Conf) error { type ResourceAttributesConfig struct { HostName ResourceAttributeConfig `mapstructure:"host.name"` OracledbInstanceName ResourceAttributeConfig `mapstructure:"oracledb.instance.name"` + ServiceInstanceID ResourceAttributeConfig `mapstructure:"service.instance.id"` } func DefaultResourceAttributesConfig() ResourceAttributesConfig { @@ -286,6 +287,9 @@ func DefaultResourceAttributesConfig() ResourceAttributesConfig { OracledbInstanceName: ResourceAttributeConfig{ Enabled: true, }, + ServiceInstanceID: ResourceAttributeConfig{ + Enabled: true, + }, } } diff --git a/receiver/oracledbreceiver/internal/metadata/generated_config_test.go b/receiver/oracledbreceiver/internal/metadata/generated_config_test.go index 84a4824de125d..83a0df54c694d 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_config_test.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_config_test.go @@ -73,6 +73,7 @@ func TestMetricsBuilderConfig(t *testing.T) { ResourceAttributes: ResourceAttributesConfig{ HostName: ResourceAttributeConfig{Enabled: true}, OracledbInstanceName: ResourceAttributeConfig{Enabled: true}, + ServiceInstanceID: ResourceAttributeConfig{Enabled: true}, }, }, }, @@ -126,6 +127,7 @@ func TestMetricsBuilderConfig(t *testing.T) { ResourceAttributes: ResourceAttributesConfig{ HostName: ResourceAttributeConfig{Enabled: false}, OracledbInstanceName: ResourceAttributeConfig{Enabled: false}, + ServiceInstanceID: ResourceAttributeConfig{Enabled: false}, }, }, }, @@ -173,6 +175,7 @@ func TestResourceAttributesConfig(t *testing.T) { want: ResourceAttributesConfig{ HostName: ResourceAttributeConfig{Enabled: true}, OracledbInstanceName: ResourceAttributeConfig{Enabled: true}, + ServiceInstanceID: ResourceAttributeConfig{Enabled: true}, }, }, { @@ -180,6 +183,7 @@ func TestResourceAttributesConfig(t *testing.T) { want: ResourceAttributesConfig{ HostName: ResourceAttributeConfig{Enabled: false}, OracledbInstanceName: ResourceAttributeConfig{Enabled: false}, + ServiceInstanceID: ResourceAttributeConfig{Enabled: false}, }, }, } diff --git a/receiver/oracledbreceiver/internal/metadata/generated_logs.go b/receiver/oracledbreceiver/internal/metadata/generated_logs.go index 0f6fc7e3d10d7..a9683732cc3d6 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_logs.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_logs.go @@ -173,6 +173,12 @@ func NewLogsBuilder(lbc LogsBuilderConfig, settings receiver.Settings) *LogsBuil if lbc.ResourceAttributes.OracledbInstanceName.EventsExclude != nil { lb.resourceAttributeExcludeFilter["oracledb.instance.name"] = filter.CreateFilter(lbc.ResourceAttributes.OracledbInstanceName.EventsExclude) } + if lbc.ResourceAttributes.ServiceInstanceID.EventsInclude != nil { + lb.resourceAttributeIncludeFilter["service.instance.id"] = filter.CreateFilter(lbc.ResourceAttributes.ServiceInstanceID.EventsInclude) + } + if lbc.ResourceAttributes.ServiceInstanceID.EventsExclude != nil { + lb.resourceAttributeExcludeFilter["service.instance.id"] = filter.CreateFilter(lbc.ResourceAttributes.ServiceInstanceID.EventsExclude) + } return lb } diff --git a/receiver/oracledbreceiver/internal/metadata/generated_logs_test.go b/receiver/oracledbreceiver/internal/metadata/generated_logs_test.go index 50d8d146f74c1..7e08396da8dae 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_logs_test.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_logs_test.go @@ -33,6 +33,7 @@ func TestLogsBuilderAppendLogRecord(t *testing.T) { rb := lb.NewResourceBuilder() rb.SetHostName("host.name-val") rb.SetOracledbInstanceName("oracledb.instance.name-val") + rb.SetServiceInstanceID("service.instance.id-val") res := rb.Emit() // append the first log record @@ -138,6 +139,7 @@ func TestLogsBuilder(t *testing.T) { rb := lb.NewResourceBuilder() rb.SetHostName("host.name-val") rb.SetOracledbInstanceName("oracledb.instance.name-val") + rb.SetServiceInstanceID("service.instance.id-val") res := rb.Emit() logs := lb.Emit(WithLogsResource(res)) diff --git a/receiver/oracledbreceiver/internal/metadata/generated_metrics.go b/receiver/oracledbreceiver/internal/metadata/generated_metrics.go index b3e487958562f..a8f0a1f12d959 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_metrics.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_metrics.go @@ -2447,6 +2447,12 @@ func NewMetricsBuilder(mbc MetricsBuilderConfig, settings receiver.Settings, opt if mbc.ResourceAttributes.OracledbInstanceName.MetricsExclude != nil { mb.resourceAttributeExcludeFilter["oracledb.instance.name"] = filter.CreateFilter(mbc.ResourceAttributes.OracledbInstanceName.MetricsExclude) } + if mbc.ResourceAttributes.ServiceInstanceID.MetricsInclude != nil { + mb.resourceAttributeIncludeFilter["service.instance.id"] = filter.CreateFilter(mbc.ResourceAttributes.ServiceInstanceID.MetricsInclude) + } + if mbc.ResourceAttributes.ServiceInstanceID.MetricsExclude != nil { + mb.resourceAttributeExcludeFilter["service.instance.id"] = filter.CreateFilter(mbc.ResourceAttributes.ServiceInstanceID.MetricsExclude) + } for _, op := range options { op.apply(mb) diff --git a/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go b/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go index 498b63974869d..78778724407cc 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_metrics_test.go @@ -222,6 +222,7 @@ func TestMetricsBuilder(t *testing.T) { rb := mb.NewResourceBuilder() rb.SetHostName("host.name-val") rb.SetOracledbInstanceName("oracledb.instance.name-val") + rb.SetServiceInstanceID("service.instance.id-val") res := rb.Emit() metrics := mb.Emit(WithResource(res)) diff --git a/receiver/oracledbreceiver/internal/metadata/generated_resource.go b/receiver/oracledbreceiver/internal/metadata/generated_resource.go index 805f84f280c0c..0825fb20f8c10 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_resource.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_resource.go @@ -35,6 +35,13 @@ func (rb *ResourceBuilder) SetOracledbInstanceName(val string) { } } +// SetServiceInstanceID sets provided value as "service.instance.id" attribute. +func (rb *ResourceBuilder) SetServiceInstanceID(val string) { + if rb.config.ServiceInstanceID.Enabled { + rb.res.Attributes().PutStr("service.instance.id", val) + } +} + // Emit returns the built resource and resets the internal builder state. func (rb *ResourceBuilder) Emit() pcommon.Resource { r := rb.res diff --git a/receiver/oracledbreceiver/internal/metadata/generated_resource_test.go b/receiver/oracledbreceiver/internal/metadata/generated_resource_test.go index 7995f73df8462..748a7c59f7777 100644 --- a/receiver/oracledbreceiver/internal/metadata/generated_resource_test.go +++ b/receiver/oracledbreceiver/internal/metadata/generated_resource_test.go @@ -15,15 +15,16 @@ func TestResourceBuilder(t *testing.T) { rb := NewResourceBuilder(cfg) rb.SetHostName("host.name-val") rb.SetOracledbInstanceName("oracledb.instance.name-val") + rb.SetServiceInstanceID("service.instance.id-val") res := rb.Emit() assert.Equal(t, 0, rb.Emit().Attributes().Len()) // Second call should return empty Resource switch tt { case "default": - assert.Equal(t, 2, res.Attributes().Len()) + assert.Equal(t, 3, res.Attributes().Len()) case "all_set": - assert.Equal(t, 2, res.Attributes().Len()) + assert.Equal(t, 3, res.Attributes().Len()) case "none_set": assert.Equal(t, 0, res.Attributes().Len()) return @@ -41,6 +42,11 @@ func TestResourceBuilder(t *testing.T) { if ok { assert.Equal(t, "oracledb.instance.name-val", val.Str()) } + val, ok = res.Attributes().Get("service.instance.id") + assert.True(t, ok) + if ok { + assert.Equal(t, "service.instance.id-val", val.Str()) + } }) } } diff --git a/receiver/oracledbreceiver/internal/metadata/testdata/config.yaml b/receiver/oracledbreceiver/internal/metadata/testdata/config.yaml index c0cd319251fd0..6158dbbeea194 100644 --- a/receiver/oracledbreceiver/internal/metadata/testdata/config.yaml +++ b/receiver/oracledbreceiver/internal/metadata/testdata/config.yaml @@ -95,6 +95,8 @@ all_set: enabled: true oracledb.instance.name: enabled: true + service.instance.id: + enabled: true none_set: metrics: oracledb.consistent_gets: @@ -191,6 +193,8 @@ none_set: enabled: false oracledb.instance.name: enabled: false + service.instance.id: + enabled: false filter_set_include: resource_attributes: host.name: @@ -205,6 +209,12 @@ filter_set_include: - regexp: ".*" events_include: - regexp: ".*" + service.instance.id: + enabled: true + metrics_include: + - regexp: ".*" + events_include: + - regexp: ".*" filter_set_exclude: resource_attributes: host.name: @@ -219,3 +229,9 @@ filter_set_exclude: - strict: "oracledb.instance.name-val" events_exclude: - strict: "oracledb.instance.name-val" + service.instance.id: + enabled: true + metrics_exclude: + - strict: "service.instance.id-val" + events_exclude: + - strict: "service.instance.id-val" diff --git a/receiver/oracledbreceiver/metadata.yaml b/receiver/oracledbreceiver/metadata.yaml index dd29bb0386479..34bc4fa346919 100644 --- a/receiver/oracledbreceiver/metadata.yaml +++ b/receiver/oracledbreceiver/metadata.yaml @@ -18,6 +18,10 @@ resource_attributes: description: The host name of Oracle Server enabled: true type: string + service.instance.id: + description: A unique identifier of the Oracle DB instance in the format host:port/serviceName. (defaults to 'unknown:1521', in case of error in generating this value) + enabled: true + type: string attributes: session_status: diff --git a/receiver/oracledbreceiver/scraper.go b/receiver/oracledbreceiver/scraper.go index 5982168132851..6ef450cbb7376 100644 --- a/receiver/oracledbreceiver/scraper.go +++ b/receiver/oracledbreceiver/scraper.go @@ -11,6 +11,8 @@ import ( "encoding/json" "errors" "fmt" + "net" + "os" "sort" "strconv" "strings" @@ -131,6 +133,7 @@ type oracleScraper struct { topQueryCollectCfg TopQueryCollection obfuscator *obfuscator querySampleCfg QuerySample + serviceInstanceID string } func newScraper(metricsBuilder *metadata.MetricsBuilder, metricsBuilderConfig metadata.MetricsBuilderConfig, scrapeCfg scraperhelper.ControllerConfig, logger *zap.Logger, providerFunc dbProviderFunc, clientProviderFunc clientProviderFunc, instanceName, hostName string) (scraper.Metrics, error) { @@ -143,6 +146,7 @@ func newScraper(metricsBuilder *metadata.MetricsBuilder, metricsBuilderConfig me clientProviderFunc: clientProviderFunc, instanceName: instanceName, hostName: hostName, + serviceInstanceID: getInstanceID(instanceName, logger), } return scraper.NewMetrics(s.scrape, scraper.WithShutdown(s.shutdown), scraper.WithStart(s.start)) } @@ -164,6 +168,7 @@ func newLogsScraper(logsBuilder *metadata.LogsBuilder, logsBuilderConfig metadat querySampleCfg: querySampleCfg, hostName: hostName, obfuscator: newObfuscator(), + serviceInstanceID: getInstanceID(instanceName, logger), } return scraper.NewLogs(s.scrapeLogs, scraper.WithShutdown(s.shutdown), scraper.WithStart(s.start)) } @@ -502,9 +507,8 @@ func (s *oracleScraper) scrape(ctx context.Context) (pmetric.Metrics, error) { } } - rb := s.mb.NewResourceBuilder() - rb.SetOracledbInstanceName(s.instanceName) - rb.SetHostName(s.hostName) + rb := s.setupResourceBuilder(s.mb.NewResourceBuilder()) + out := s.mb.Emit(metadata.WithResource(rb.Emit())) s.logger.Debug("Done scraping") if len(scrapeErrors) > 0 { @@ -634,9 +638,7 @@ func (s *oracleScraper) collectTopNMetricData(ctx context.Context, logs plog.Log hits = s.obfuscateCacheHits(hits) childAddressToPlanMap := s.getChildAddressToPlanMap(ctx, hits) - rb := s.lb.NewResourceBuilder() - rb.SetOracledbInstanceName(s.instanceName) - rb.SetHostName(s.hostName) + rb := s.setupResourceBuilder(s.lb.NewResourceBuilder()) for _, hit := range hits { planBytes, err := json.Marshal(childAddressToPlanMap[hit.childAddress]) @@ -717,9 +719,7 @@ func (s *oracleScraper) collectQuerySamples(ctx context.Context, logs plog.Logs) scrapeErrors = append(scrapeErrors, fmt.Errorf("error executing %s: %w", samplesQuery, err)) } - rb := s.lb.NewResourceBuilder() - rb.SetOracledbInstanceName(s.instanceName) - rb.SetHostName(s.hostName) + rb := s.setupResourceBuilder(s.lb.NewResourceBuilder()) for _, row := range rows { if row[sqlText] == "" { @@ -828,3 +828,49 @@ func (s *oracleScraper) shutdown(_ context.Context) error { } return s.db.Close() } + +func (s *oracleScraper) setupResourceBuilder(rb *metadata.ResourceBuilder) *metadata.ResourceBuilder { + rb.SetOracledbInstanceName(s.instanceName) + rb.SetHostName(s.hostName) + rb.SetServiceInstanceID(s.serviceInstanceID) + return rb +} + +func getInstanceID(instanceString string, logger *zap.Logger) string { + hostAndPort, service, found := strings.Cut(instanceString, "/") + if !found { + logger.Info("No service name found in the connection string", zap.String("instanceString", instanceString)) + } + + host, port, err := net.SplitHostPort(hostAndPort) + if err != nil { + logger.Warn("Computing service.instance.id failed. Couldn't extract host and port from the connection data.", zap.Error(err)) + return constructInstanceID("unknown", "1521", service) + } + + // Replace the host value with machine name if connecting to localhost target + if strings.EqualFold(host, "localhost") || net.ParseIP(host).IsLoopback() { + localhost, err := os.Hostname() + if err != nil { + logger.Warn("Failed getting localhost machine name for the service.instance.id.") + } else { + host = localhost + } + } + + return constructInstanceID(host, port, service) +} + +func constructInstanceID(host, port, service string) string { + if strings.TrimSpace(host) == "" { + host = "unknown" + } + if strings.TrimSpace(port) == "" { + port = "1521" + } + + if service != "" { + return fmt.Sprintf("%s:%s/%s", host, port, service) + } + return fmt.Sprintf("%s:%s", host, port) +} diff --git a/receiver/oracledbreceiver/scraper_test.go b/receiver/oracledbreceiver/scraper_test.go index 9ccf1da1d9e2f..4300a1fc512f0 100644 --- a/receiver/oracledbreceiver/scraper_test.go +++ b/receiver/oracledbreceiver/scraper_test.go @@ -277,9 +277,10 @@ func TestScraper_ScrapeTopNLogs(t *testing.T) { logsBuilderConfig: metadata.DefaultLogsBuilderConfig(), metricCache: lruCache, topQueryCollectCfg: TopQueryCollection{MaxQuerySampleCount: 5000, TopQueryCount: 200}, - instanceName: "oracle-instance-sample-1", - hostName: "oracle-host-sample-1", + instanceName: "oraclehost:1521/ORCL", + hostName: "oraclehost:1521", obfuscator: newObfuscator(), + serviceInstanceID: getInstanceID("oraclehost:1521/ORCL", zap.NewNop()), } scrpr.logsBuilderConfig.Events.DbServerTopQuery.Enabled = true @@ -364,6 +365,8 @@ func TestSamplesQuery(t *testing.T) { lb: metadata.NewLogsBuilder(logsCfg, receivertest.NewNopSettings(metadata.Type)), logsBuilderConfig: metadata.DefaultLogsBuilderConfig(), obfuscator: newObfuscator(), + instanceName: "oraclehost:1521/ORCL", + serviceInstanceID: getInstanceID("oraclehost:1521/ORCL", zap.NewNop()), } scrpr.logsBuilderConfig.Events.DbServerTopQuery.Enabled = false scrpr.logsBuilderConfig.Events.DbServerQuerySample.Enabled = true @@ -390,6 +393,39 @@ func TestSamplesQuery(t *testing.T) { } } +func TestGetInstanceId(t *testing.T) { + localhostName, _ := os.Hostname() + + instanceString := "example.com:1521/XE" + instanceID := getInstanceID(instanceString, zap.NewNop()) + assert.Equal(t, "example.com:1521/XE", instanceID) + + localHostStringUppercase := "Localhost:1521/XE" + localInstanceID := getInstanceID(localHostStringUppercase, zap.NewNop()) + assert.NotNil(t, localInstanceID) + assert.Equal(t, localhostName+":1521/XE", localInstanceID) + + localHostString := "127.0.0.1:1521/XE" + localInstanceID = getInstanceID(localHostString, zap.NewNop()) + assert.NotNil(t, localInstanceID) + assert.Equal(t, localhostName+":1521/XE", localInstanceID) + + localHostStringIPV6 := "[::1]:1521/XE" + localInstanceID = getInstanceID(localHostStringIPV6, zap.NewNop()) + assert.NotNil(t, localInstanceID) + assert.Equal(t, localhostName+":1521/XE", localInstanceID) + + hostWithoutService := "127.0.0.1:1521" + localInstanceID = getInstanceID(hostWithoutService, zap.NewNop()) + assert.NotNil(t, localInstanceID) + assert.Equal(t, localhostName+":1521", localInstanceID) + + hostNameErrorSample := "" + localInstanceID = getInstanceID(hostNameErrorSample, zap.NewNop()) + assert.NotNil(t, localInstanceID) + assert.Equal(t, "unknown:1521", localInstanceID) +} + func readFile(fname string) []byte { file, err := os.ReadFile(filepath.Join("testdata", fname)) if err != nil { diff --git a/receiver/oracledbreceiver/testdata/expectedQueryTextAndPlanQuery.yaml b/receiver/oracledbreceiver/testdata/expectedQueryTextAndPlanQuery.yaml index bb36e8c1e56f7..b98e017159b59 100644 --- a/receiver/oracledbreceiver/testdata/expectedQueryTextAndPlanQuery.yaml +++ b/receiver/oracledbreceiver/testdata/expectedQueryTextAndPlanQuery.yaml @@ -3,10 +3,13 @@ resourceLogs: attributes: - key: oracledb.instance.name value: - stringValue: oracle-instance-sample-1 + stringValue: oraclehost:1521/ORCL - key: host.name value: - stringValue: oracle-host-sample-1 + stringValue: oraclehost:1521 + - key: service.instance.id + value: + stringValue: oraclehost:1521/ORCL scopeLogs: - logRecords: - attributes: @@ -15,7 +18,7 @@ resourceLogs: stringValue: oracle - key: db.server.name value: - stringValue: oracle-host-sample-1 + stringValue: oraclehost:1521 - key: db.query.text value: stringValue: SELECT COUNT ( * ) FROM ADMIN. Employee e JOIN ADMIN. Person p ON e. BusinessEntityID = ? JOIN ADMIN. EmployeePayHistory eph ON e. BusinessEntityID = eph. BusinessEntityID WHERE eph. Rate > ( SELECT AVG ( Rate ) FROM ADMIN. EmployeePayHistory ) @@ -81,9 +84,7 @@ resourceLogs: doubleValue: 2e-05 body: {} eventName: db.server.top_query - spanId: "" - timeUnixNano: "1752581882636677000" - traceId: "" + timeUnixNano: "1759142512777891000" scope: name: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver version: latest diff --git a/receiver/oracledbreceiver/testdata/expectedSamplesFile.yaml b/receiver/oracledbreceiver/testdata/expectedSamplesFile.yaml index 097b8c6a7609e..350327bfcb62a 100644 --- a/receiver/oracledbreceiver/testdata/expectedSamplesFile.yaml +++ b/receiver/oracledbreceiver/testdata/expectedSamplesFile.yaml @@ -3,10 +3,13 @@ resourceLogs: attributes: - key: oracledb.instance.name value: - stringValue: "" + stringValue: oraclehost:1521/ORCL - key: host.name value: stringValue: "" + - key: service.instance.id + value: + stringValue: oraclehost:1521/ORCL scopeLogs: - logRecords: - attributes: @@ -45,7 +48,7 @@ resourceLogs: stringValue: "0" - key: oracledb.child_address value: - stringValue: "SDF3SDF1234D" + stringValue: SDF3SDF1234D - key: oracledb.sid value: stringValue: "675" @@ -91,7 +94,7 @@ resourceLogs: body: {} eventName: db.server.query_sample spanId: a7ad6b7169203331 - timeUnixNano: "1754828794690056000" + timeUnixNano: "1759142300369458000" traceId: 0af7651916cd43dd8448eb211c80319c scope: name: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/oracledbreceiver diff --git a/receiver/otelarrowreceiver/go.mod b/receiver/otelarrowreceiver/go.mod index 07471735cadc6..36f445fc682d9 100644 --- a/receiver/otelarrowreceiver/go.mod +++ b/receiver/otelarrowreceiver/go.mod @@ -6,7 +6,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/internal/grpcutil v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/otelarrow v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/internal/sharedcomponent v0.136.0 - github.com/open-telemetry/otel-arrow/go v0.39.0 + github.com/open-telemetry/otel-arrow/go v0.43.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/client v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 @@ -43,12 +43,12 @@ require ( require ( github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect github.com/apache/arrow-go/v18 v18.2.0 // indirect - github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/axiomhq/hyperloglog v0.2.5 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/foxboron/go-tpm-keyfiles v0.0.0-20250903184740-5d135037bd4d // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/fxamacker/cbor/v2 v2.4.0 // indirect + github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect @@ -61,8 +61,9 @@ require ( 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 + github.com/kamstrup/intmap v0.5.1 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/cpuid/v2 v2.2.11 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.0 // indirect @@ -72,7 +73,7 @@ require ( github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect github.com/mostynb/go-grpc-compression v1.2.3 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/x448/float16 v0.8.4 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect @@ -93,7 +94,7 @@ require ( go.opentelemetry.io/otel/metric v1.38.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.42.0 // indirect - golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b // indirect + golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect diff --git a/receiver/otelarrowreceiver/go.sum b/receiver/otelarrowreceiver/go.sum index 2c3c7b7b34260..34266b23fac3b 100644 --- a/receiver/otelarrowreceiver/go.sum +++ b/receiver/otelarrowreceiver/go.sum @@ -9,16 +9,17 @@ github.com/apache/arrow-go/v18 v18.2.0 h1:QhWqpgZMKfWOniGPhbUxrHohWnooGURqL2R2Gg github.com/apache/arrow-go/v18 v18.2.0/go.mod h1:Ic/01WSwGJWRrdAZcxjBZ5hbApNJ28K96jGYaxzzGUc= github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE= github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw= -github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc h1:Keo7wQ7UODUaHcEi7ltENhbAK2VgZjfat6mLy03tQzo= -github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= -github.com/brianvoe/gofakeit/v6 v6.17.0 h1:obbQTJeHfktJtiZzq0Q1bEpsNUs+yHrYlPVWt7BtmJ4= -github.com/brianvoe/gofakeit/v6 v6.17.0/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= +github.com/axiomhq/hyperloglog v0.2.5 h1:Hefy3i8nAs8zAI/tDp+wE7N+Ltr8JnwiW3875pvl0N8= +github.com/axiomhq/hyperloglog v0.2.5/go.mod h1:DLUK9yIzpU5B6YFLjxTIcbHu1g4Y1WQb1m5RH3radaM= +github.com/brianvoe/gofakeit/v6 v6.28.0 h1:Xib46XXuQfmlLS2EXRuJpqcw8St6qSZz75OUo0tgAW4= +github.com/brianvoe/gofakeit/v6 v6.28.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs= github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc h1:8WFBn63wegobsYAX0YjD+8suexZDga5CctH4CCTx2+8= github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -28,8 +29,8 @@ github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006 h1:50sW4r0Pcvl github.com/foxboron/swtpm_test v0.0.0-20230726224112-46aaafdf7006/go.mod h1:eIXCMsMYCaqq9m1KSSxXwQG11krpuNPGP3k0uaWrbas= github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/fxamacker/cbor/v2 v2.4.0 h1:ri0ArlOR+5XunOP8CRUowT0pSJOwhW098ZCUyskZD88= -github.com/fxamacker/cbor/v2 v2.4.0/go.mod h1:TA1xS00nchWmaBnEIxPSE5oHLuJBAVvqrtAnWBwBCVo= +github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= +github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= @@ -66,14 +67,16 @@ github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kamstrup/intmap v0.5.1 h1:ENGAowczZA+PJPYYlreoqJvWgQVtAmX1l899WfYFVK0= +github.com/kamstrup/intmap v0.5.1/go.mod h1:gWUVWHKzWj8xpJVFf5GC0O26bWmv3GqdnIX/LMT6Aq4= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= +github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -103,12 +106,13 @@ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWu github.com/mostynb/go-grpc-compression v1.2.3 h1:42/BKWMy0KEJGSdWvzqIyOZ95YcR9mLPqKctH7Uo//I= github.com/mostynb/go-grpc-compression v1.2.3/go.mod h1:AghIxF3P57umzqM9yz795+y1Vjs47Km/Y2FE6ouQ7Lg= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/open-telemetry/otel-arrow/go v0.39.0 h1:ZlPsPdqn5wuSzulWqIs41jWmwk7B10Qg+sL7Bw3w6kA= -github.com/open-telemetry/otel-arrow/go v0.39.0/go.mod h1:CK13damnj/yQW2TKzdjJs5xVmfbkTKLLwjtjoUrMk7I= +github.com/open-telemetry/otel-arrow/go v0.43.0 h1:P1BsergAwmn4C5WbuQaS4S3cHIaOirJlTbsUtUPiPNY= +github.com/open-telemetry/otel-arrow/go v0.43.0/go.mod h1:gGW+5QC51n86Vj3F3FY9m8hTfb6llZrDhW+8HB/mBGw= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -249,8 +253,8 @@ golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b h1:M2rDM6z3Fhozi9O7NWsxAkg/yqS/lQJ6PmkyIV3YP+o= -golang.org/x/exp v0.0.0-20250620022241-b7579e27df2b/go.mod h1:3//PLf8L/X+8b4vuAfHzxeRUl04Adcb341+IGKfnqS8= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4= +golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= diff --git a/receiver/postgresqlreceiver/README.md b/receiver/postgresqlreceiver/README.md index 2bcbb95cd8576..85a75384169bc 100644 --- a/receiver/postgresqlreceiver/README.md +++ b/receiver/postgresqlreceiver/README.md @@ -125,8 +125,10 @@ receivers: enabled: true db.server.top_query: enabled: true - max_rows_per_query: 100 + query_sample_collection: + max_rows_per_query: 100 top_query_collection: + max_rows_per_query: 100 top_n_query: 100 ``` diff --git a/receiver/postgresqlreceiver/scraper.go b/receiver/postgresqlreceiver/scraper.go index 08b88f744d15a..b06a4856e0e35 100644 --- a/receiver/postgresqlreceiver/scraper.go +++ b/receiver/postgresqlreceiver/scraper.go @@ -298,7 +298,7 @@ func (p *postgreSQLScraper) collectTopQuery(ctx context.Context, clientFactory p } finalValue := float64(0) if valDelta > 0 { - p.cache.Add(queryID.(string)+columnName, valDelta) + p.cache.Add(queryID.(string)+columnName, valInAtts) finalValue = valDelta } if info.finalConverter != nil { diff --git a/receiver/postgresqlreceiver/scraper_test.go b/receiver/postgresqlreceiver/scraper_test.go index 9b84a67d5b4f2..0bef9da548912 100644 --- a/receiver/postgresqlreceiver/scraper_test.go +++ b/receiver/postgresqlreceiver/scraper_test.go @@ -513,6 +513,18 @@ func TestScrapeTopQueries(t *testing.T) { // golden.WriteLogs(t, expectedFile, actualLogs) errs := plogtest.CompareLogs(expectedLogs, actualLogs, plogtest.IgnoreTimestamp()) assert.NoError(t, errs) + + // Verify the cache has updated with latest counter + + calls, callsExists := scraper.cache.Get(queryid + callsColumnName) + assert.True(t, callsExists) + assert.Equal(t, float64(123), calls) + execTime, execTimeExists := scraper.cache.Get(queryid + totalExecTimeColumnName) + assert.True(t, execTimeExists) + assert.Equal(t, float64(11), execTime) + planTime, planTimeExists := scraper.cache.Get(queryid + totalPlanTimeColumnName) + assert.True(t, planTimeExists) + assert.Equal(t, float64(12), planTime) } type ( diff --git a/receiver/prometheusreceiver/go.mod b/receiver/prometheusreceiver/go.mod index b9dfc228153b1..2fe45802b105f 100644 --- a/receiver/prometheusreceiver/go.mod +++ b/receiver/prometheusreceiver/go.mod @@ -212,7 +212,7 @@ require ( github.com/prometheus/alertmanager v0.28.1 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/sigv4 v0.2.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect diff --git a/receiver/prometheusreceiver/go.sum b/receiver/prometheusreceiver/go.sum index d2e65388b035d..edacc4273bf29 100644 --- a/receiver/prometheusreceiver/go.sum +++ b/receiver/prometheusreceiver/go.sum @@ -486,8 +486,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/receiver/purefareceiver/go.mod b/receiver/purefareceiver/go.mod index 2bd832378e21e..4175ee9c629a3 100644 --- a/receiver/purefareceiver/go.mod +++ b/receiver/purefareceiver/go.mod @@ -174,7 +174,7 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/sigv4 v0.2.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect diff --git a/receiver/purefareceiver/go.sum b/receiver/purefareceiver/go.sum index 71cdf657299a1..e7a79c1247372 100644 --- a/receiver/purefareceiver/go.sum +++ b/receiver/purefareceiver/go.sum @@ -480,8 +480,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/receiver/purefbreceiver/go.mod b/receiver/purefbreceiver/go.mod index ecfb5fbafad14..14a2aac5f4620 100644 --- a/receiver/purefbreceiver/go.mod +++ b/receiver/purefbreceiver/go.mod @@ -173,7 +173,7 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/sigv4 v0.2.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect diff --git a/receiver/purefbreceiver/go.sum b/receiver/purefbreceiver/go.sum index 71cdf657299a1..e7a79c1247372 100644 --- a/receiver/purefbreceiver/go.sum +++ b/receiver/purefbreceiver/go.sum @@ -480,8 +480,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/receiver/redisreceiver/documentation.md b/receiver/redisreceiver/documentation.md index 48fbc78e9d02e..0c365fa2edeee 100644 --- a/receiver/redisreceiver/documentation.md +++ b/receiver/redisreceiver/documentation.md @@ -16,73 +16,73 @@ metrics: Number of clients pending on a blocking call -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {client} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {client} | Sum | Int | Cumulative | false | development | ### redis.clients.connected Number of client connections (excluding connections from replicas) -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {client} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {client} | Sum | Int | Cumulative | false | development | ### redis.clients.max_input_buffer Biggest input buffer among current client connections -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.clients.max_output_buffer Longest output list among current client connections -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.commands Number of commands processed per second -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| {ops}/s | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| {ops}/s | Gauge | Int | development | ### redis.commands.processed Total number of commands processed by the server -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {command} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {command} | Sum | Int | Cumulative | true | development | ### redis.connections.received Total number of connections accepted by the server -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {connection} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {connection} | Sum | Int | Cumulative | true | development | ### redis.connections.rejected Number of connections rejected because of maxclients limit -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {connection} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {connection} | Sum | Int | Cumulative | true | development | ### redis.cpu.time System CPU consumed by the Redis server in seconds since server start -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| s | Sum | Double | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| s | Sum | Double | Cumulative | true | development | #### Attributes @@ -94,9 +94,9 @@ System CPU consumed by the Redis server in seconds since server start Average keyspace keys TTL -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| ms | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| ms | Gauge | Int | development | #### Attributes @@ -108,9 +108,9 @@ Average keyspace keys TTL Number of keyspace keys with an expiration -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| {key} | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| {key} | Gauge | Int | development | #### Attributes @@ -122,9 +122,9 @@ Number of keyspace keys with an expiration Number of keyspace keys -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| {key} | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| {key} | Gauge | Int | development | #### Attributes @@ -136,137 +136,137 @@ Number of keyspace keys Number of evicted keys due to maxmemory limit -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {key} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {key} | Sum | Int | Cumulative | true | development | ### redis.keys.expired Total number of key expiration events -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {event} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {event} | Sum | Int | Cumulative | true | development | ### redis.keyspace.hits Number of successful lookup of keys in the main dictionary -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {hit} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {hit} | Sum | Int | Cumulative | true | development | ### redis.keyspace.misses Number of failed lookup of keys in the main dictionary -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {miss} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {miss} | Sum | Int | Cumulative | true | development | ### redis.latest_fork Duration of the latest fork operation in microseconds -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| us | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| us | Gauge | Int | development | ### redis.memory.fragmentation_ratio Ratio between used_memory_rss and used_memory -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| 1 | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| 1 | Gauge | Double | development | ### redis.memory.lua Number of bytes used by the Lua engine -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.memory.peak Peak memory consumed by Redis (in bytes) -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.memory.rss Number of bytes that Redis allocated as seen by the operating system -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.memory.used Total number of bytes allocated by Redis using its allocator -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.net.input The total number of bytes read from the network -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| By | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| By | Sum | Int | Cumulative | true | development | ### redis.net.output The total number of bytes written to the network -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| By | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| By | Sum | Int | Cumulative | true | development | ### redis.rdb.changes_since_last_save Number of changes since the last dump -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {change} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {change} | Sum | Int | Cumulative | false | development | ### redis.replication.backlog_first_byte_offset The master offset of the replication backlog buffer -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.replication.offset The server's current replication offset -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.slaves.connected Number of connected replicas -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {replica} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {replica} | Sum | Int | Cumulative | false | development | ### redis.uptime Number of seconds since Redis server start -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| s | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| s | Sum | Int | Cumulative | true | development | ## Optional Metrics @@ -282,9 +282,9 @@ metrics: Total number of calls for a command -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {call} | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {call} | Sum | Int | Cumulative | true | development | #### Attributes @@ -296,9 +296,9 @@ Total number of calls for a command Command execution latency -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| s | Gauge | Double | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| s | Gauge | Double | development | #### Attributes @@ -311,9 +311,9 @@ Command execution latency Total time for all executions of this command -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| us | Sum | Int | Cumulative | true | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| us | Sum | Int | Cumulative | true | development | #### Attributes @@ -325,25 +325,25 @@ Total time for all executions of this command The value of the maxmemory configuration directive -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.replication.replica_offset Offset for redis replica -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| By | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| By | Gauge | Int | development | ### redis.role Redis node's role -| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | -| ---- | ----------- | ---------- | ----------------------- | --------- | -| {role} | Sum | Int | Cumulative | false | +| Unit | Metric Type | Value Type | Aggregation Temporality | Monotonic | Stability | +| ---- | ----------- | ---------- | ----------------------- | --------- | --------- | +| {role} | Sum | Int | Cumulative | false | development | #### Attributes diff --git a/receiver/redisreceiver/metadata.yaml b/receiver/redisreceiver/metadata.yaml index 7153d9fada763..6795250b26b8e 100644 --- a/receiver/redisreceiver/metadata.yaml +++ b/receiver/redisreceiver/metadata.yaml @@ -65,6 +65,8 @@ metrics: redis.maxmemory: enabled: false description: The value of the maxmemory configuration directive + stability: + level: development unit: By gauge: value_type: int @@ -72,6 +74,8 @@ metrics: redis.role: enabled: false description: Redis node's role + stability: + level: development unit: "{role}" sum: value_type: int @@ -82,6 +86,8 @@ metrics: redis.cmd.calls: enabled: false description: Total number of calls for a command + stability: + level: development unit: "{call}" sum: value_type: int @@ -92,6 +98,8 @@ metrics: redis.cmd.usec: enabled: false description: Total time for all executions of this command + stability: + level: development unit: us sum: value_type: int @@ -102,6 +110,8 @@ metrics: redis.cmd.latency: enabled: false description: Command execution latency + stability: + level: development unit: s gauge: value_type: double @@ -110,6 +120,8 @@ metrics: redis.uptime: enabled: true description: Number of seconds since Redis server start + stability: + level: development unit: s sum: value_type: int @@ -119,6 +131,8 @@ metrics: redis.cpu.time: enabled: true description: System CPU consumed by the Redis server in seconds since server start + stability: + level: development unit: s sum: value_type: double @@ -129,6 +143,8 @@ metrics: redis.clients.connected: enabled: true description: Number of client connections (excluding connections from replicas) + stability: + level: development unit: "{client}" sum: value_type: int @@ -138,6 +154,8 @@ metrics: redis.clients.max_input_buffer: enabled: true description: Biggest input buffer among current client connections + stability: + level: development unit: "By" gauge: value_type: int @@ -145,6 +163,8 @@ metrics: redis.clients.max_output_buffer: enabled: true description: Longest output list among current client connections + stability: + level: development unit: "By" gauge: value_type: int @@ -152,6 +172,8 @@ metrics: redis.clients.blocked: enabled: true description: Number of clients pending on a blocking call + stability: + level: development unit: "{client}" sum: value_type: int @@ -161,6 +183,8 @@ metrics: redis.keys.expired: enabled: true description: Total number of key expiration events + stability: + level: development unit: "{event}" sum: value_type: int @@ -171,6 +195,8 @@ metrics: redis.keys.evicted: enabled: true description: Number of evicted keys due to maxmemory limit + stability: + level: development unit: "{key}" sum: value_type: int @@ -180,6 +206,8 @@ metrics: redis.connections.received: enabled: true description: Total number of connections accepted by the server + stability: + level: development unit: "{connection}" sum: value_type: int @@ -189,6 +217,8 @@ metrics: redis.connections.rejected: enabled: true description: Number of connections rejected because of maxclients limit + stability: + level: development unit: "{connection}" sum: value_type: int @@ -198,6 +228,8 @@ metrics: redis.memory.used: enabled: true description: Total number of bytes allocated by Redis using its allocator + stability: + level: development unit: By gauge: value_type: int @@ -205,6 +237,8 @@ metrics: redis.memory.peak: enabled: true description: Peak memory consumed by Redis (in bytes) + stability: + level: development unit: By gauge: value_type: int @@ -212,6 +246,8 @@ metrics: redis.memory.rss: enabled: true description: Number of bytes that Redis allocated as seen by the operating system + stability: + level: development unit: By gauge: value_type: int @@ -219,6 +255,8 @@ metrics: redis.memory.lua: enabled: true description: Number of bytes used by the Lua engine + stability: + level: development unit: By gauge: value_type: int @@ -226,6 +264,8 @@ metrics: redis.memory.fragmentation_ratio: enabled: true description: Ratio between used_memory_rss and used_memory + stability: + level: development unit: "1" gauge: value_type: double @@ -233,6 +273,8 @@ metrics: redis.rdb.changes_since_last_save: enabled: true description: Number of changes since the last dump + stability: + level: development unit: "{change}" sum: value_type: int @@ -242,6 +284,8 @@ metrics: redis.commands: enabled: true description: Number of commands processed per second + stability: + level: development unit: "{ops}/s" gauge: value_type: int @@ -249,6 +293,8 @@ metrics: redis.commands.processed: enabled: true description: Total number of commands processed by the server + stability: + level: development unit: "{command}" sum: value_type: int @@ -258,6 +304,8 @@ metrics: redis.net.input: enabled: true description: The total number of bytes read from the network + stability: + level: development unit: By sum: value_type: int @@ -267,6 +315,8 @@ metrics: redis.net.output: enabled: true description: The total number of bytes written to the network + stability: + level: development unit: By sum: value_type: int @@ -276,6 +326,8 @@ metrics: redis.keyspace.hits: enabled: true description: Number of successful lookup of keys in the main dictionary + stability: + level: development unit: "{hit}" sum: value_type: int @@ -285,6 +337,8 @@ metrics: redis.keyspace.misses: enabled: true description: Number of failed lookup of keys in the main dictionary + stability: + level: development unit: "{miss}" sum: value_type: int @@ -294,6 +348,8 @@ metrics: redis.latest_fork: enabled: true description: Duration of the latest fork operation in microseconds + stability: + level: development unit: us gauge: value_type: int @@ -301,6 +357,8 @@ metrics: redis.slaves.connected: enabled: true description: Number of connected replicas + stability: + level: development unit: "{replica}" sum: value_type: int @@ -310,6 +368,8 @@ metrics: redis.replication.backlog_first_byte_offset: enabled: true description: The master offset of the replication backlog buffer + stability: + level: development unit: "By" gauge: value_type: int @@ -317,6 +377,8 @@ metrics: redis.replication.offset: enabled: true description: The server's current replication offset + stability: + level: development unit: "By" gauge: value_type: int @@ -324,6 +386,8 @@ metrics: redis.db.keys: enabled: true description: "Number of keyspace keys" + stability: + level: development unit: "{key}" gauge: value_type: int @@ -332,6 +396,8 @@ metrics: redis.db.expires: enabled: true description: "Number of keyspace keys with an expiration" + stability: + level: development unit: "{key}" gauge: value_type: int @@ -340,6 +406,8 @@ metrics: redis.db.avg_ttl: enabled: true description: "Average keyspace keys TTL" + stability: + level: development unit: ms gauge: value_type: int @@ -348,6 +416,8 @@ metrics: redis.replication.replica_offset: enabled: false description: "Offset for redis replica" + stability: + level: development unit: "By" gauge: value_type: int diff --git a/receiver/simpleprometheusreceiver/go.mod b/receiver/simpleprometheusreceiver/go.mod index 2d52d1a89acde..7c3c65b420ea1 100644 --- a/receiver/simpleprometheusreceiver/go.mod +++ b/receiver/simpleprometheusreceiver/go.mod @@ -170,7 +170,7 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/sigv4 v0.2.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect diff --git a/receiver/simpleprometheusreceiver/go.sum b/receiver/simpleprometheusreceiver/go.sum index 71cdf657299a1..e7a79c1247372 100644 --- a/receiver/simpleprometheusreceiver/go.sum +++ b/receiver/simpleprometheusreceiver/go.sum @@ -480,8 +480,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= diff --git a/receiver/snowflakereceiver/go.mod b/receiver/snowflakereceiver/go.mod index 14e7296a301cb..71aed928988fb 100644 --- a/receiver/snowflakereceiver/go.mod +++ b/receiver/snowflakereceiver/go.mod @@ -7,7 +7,7 @@ require ( github.com/google/go-cmp v0.7.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.136.0 github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.136.0 - github.com/snowflakedb/gosnowflake v1.16.0 + github.com/snowflakedb/gosnowflake v1.17.0 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/collector/component v1.42.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 @@ -34,9 +34,10 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 // indirect github.com/BurntSushi/toml v1.4.0 // indirect - github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c // indirect - github.com/apache/arrow-go/v18 v18.0.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect + github.com/andybalholm/brotli v1.2.0 // indirect + github.com/apache/arrow-go/v18 v18.4.0 // indirect + github.com/apache/thrift v0.22.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.38.1 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect @@ -54,31 +55,34 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect - github.com/aws/smithy-go v1.20.2 // indirect + github.com/aws/smithy-go v1.22.5 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/danieljoos/wincred v1.2.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dvsekhvalnov/jose2go v1.6.0 // indirect github.com/gabriel-vasile/mimetype v1.4.7 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-viper/mapstructure/v2 v2.4.0 // indirect github.com/gobwas/glob v0.2.3 // indirect - github.com/goccy/go-json v0.10.4 // indirect + github.com/goccy/go-json v0.10.5 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang-jwt/jwt/v5 v5.2.2 // indirect - github.com/google/flatbuffers v24.12.23+incompatible // indirect + github.com/golang/snappy v1.0.0 // indirect + github.com/google/flatbuffers v25.2.10+incompatible // indirect github.com/google/uuid v1.6.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-version v1.7.0 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.11 // indirect - github.com/klauspost/cpuid/v2 v2.2.9 // indirect + github.com/klauspost/asmfmt v1.3.2 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.11 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.0 // indirect + github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect + github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect @@ -87,7 +91,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.136.0 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/zeebo/xxh3 v1.0.2 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect @@ -107,16 +111,16 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.38.0 // indirect go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.39.0 // indirect - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect - golang.org/x/mod v0.25.0 // indirect - golang.org/x/net v0.41.0 // indirect + golang.org/x/crypto v0.41.0 // indirect + golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect + golang.org/x/mod v0.27.0 // indirect + golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect - golang.org/x/sync v0.15.0 // indirect + golang.org/x/sync v0.16.0 // indirect golang.org/x/sys v0.35.0 // indirect - golang.org/x/term v0.32.0 // indirect - golang.org/x/text v0.26.0 // indirect - golang.org/x/tools v0.33.0 // indirect + golang.org/x/term v0.34.0 // indirect + golang.org/x/text v0.28.0 // indirect + golang.org/x/tools v0.36.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect google.golang.org/grpc v1.75.1 // indirect diff --git a/receiver/snowflakereceiver/go.sum b/receiver/snowflakereceiver/go.sum index 9088e65fa2f29..3363ea25c0b7f 100644 --- a/receiver/snowflakereceiver/go.sum +++ b/receiver/snowflakereceiver/go.sum @@ -18,16 +18,14 @@ github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0 github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/DATA-DOG/go-sqlmock v1.5.2 h1:OcvFkGmslmlZibjAjaHm3L//6LiuBgolP7OputlJIzU= github.com/DATA-DOG/go-sqlmock v1.5.2/go.mod h1:88MAG/4G7SMwSE3CeA0ZKzrT5CiOU3OJ+JlNzwDqpNU= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= -github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= -github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= -github.com/apache/arrow-go/v18 v18.0.0 h1:1dBDaSbH3LtulTyOVYaBCHO3yVRwjV+TZaqn3g6V7ZM= -github.com/apache/arrow-go/v18 v18.0.0/go.mod h1:t6+cWRSmKgdQ6HsxisQjok+jBpKGhRDiqcf3p0p/F+A= -github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE= -github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw= -github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= -github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= +github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/apache/arrow-go/v18 v18.4.0 h1:/RvkGqH517iY8bZKc4FD5/kkdwXJGjxf28JIXbJ/oB0= +github.com/apache/arrow-go/v18 v18.4.0/go.mod h1:Aawvwhj8x2jURIzD9Moy72cF0FyJXOpkYpdmGRHcw14= +github.com/apache/thrift v0.22.0 h1:r7mTJdj51TMDe6RtcmNdQxgn9XcyfGDOzegMDRg47uc= +github.com/apache/thrift v0.22.0/go.mod h1:1e7J/O1Ae6ZQMTYdy9xa3w9k+XHWPfRvdPyJeynQ+/g= +github.com/aws/aws-sdk-go-v2 v1.38.1 h1:j7sc33amE74Rz0M/PoCpsZQ6OunLqys/m5antM0J+Z8= +github.com/aws/aws-sdk-go-v2 v1.38.1/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= @@ -62,15 +60,16 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2K github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= 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/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= @@ -86,8 +85,8 @@ github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9L github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= -github.com/goccy/go-json v0.10.4 h1:JSwxQzIqKfmFX1swYPpUThQZp/Ka4wzJdK0LWVytLPM= -github.com/goccy/go-json v0.10.4/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= +github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= @@ -98,10 +97,10 @@ github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeD github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= 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.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/flatbuffers v24.12.23+incompatible h1:ubBKR94NR4pXUCY/MUsRVzd9umNW7ht7EG9hHfS9FX8= -github.com/google/flatbuffers v24.12.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q= +github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -111,10 +110,6 @@ github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8 github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= 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/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -122,10 +117,10 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46/go.mod h1:yyMNCyc/Ib3bDTKd379tNMpB/7/H5TjM2Y9QJ5THLbE= github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK4= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= -github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= -github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= +github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -161,14 +156,15 @@ github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/snowflakedb/gosnowflake v1.16.0 h1:EfrAPVjWcBHzr2oiwEUz0dwFUiFlwftj9/YB6NktY9Q= -github.com/snowflakedb/gosnowflake v1.16.0/go.mod h1:XJ2z3SckeW+juZzjuYNcAJM7i4ZgIZNmepFm5foO3Vc= +github.com/snowflakedb/gosnowflake v1.17.0 h1:be50vC0buiOitvneyRHiqNkvPMcunGD3EcTnL2zYATg= +github.com/snowflakedb/gosnowflake v1.17.0/go.mod h1:TaHvQGh9MA2lopZZMm1AvvENDfwcnKtuskIr1e6Fpic= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= @@ -176,6 +172,8 @@ github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UV github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= @@ -261,27 +259,27 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= 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.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= +golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.25.0 h1:n7a+ZbQKQA/Ysbyb0/6IbB1H/X41mKgbhfv7AfG/44w= -golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.27.0 h1:kb+q2PyFnEADO2IEF935ehFUXlWiNjJWtRNgBLSfbxQ= +golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= +golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE= +golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -289,18 +287,18 @@ golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4= +golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng= +golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= +golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -319,7 +317,6 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v2 v2.2.8/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= diff --git a/receiver/sqlqueryreceiver/go.mod b/receiver/sqlqueryreceiver/go.mod index 9d21647b2679d..6699e66fc0d9f 100644 --- a/receiver/sqlqueryreceiver/go.mod +++ b/receiver/sqlqueryreceiver/go.mod @@ -30,7 +30,7 @@ require ( github.com/lib/pq v1.10.9 github.com/microsoft/go-mssqldb v1.9.3 github.com/sijms/go-ora/v2 v2.9.0 - github.com/snowflakedb/gosnowflake v1.16.0 + github.com/snowflakedb/gosnowflake v1.17.0 github.com/thda/tds v0.1.7 go.opentelemetry.io/collector/component/componenttest v0.136.1-0.20250925151503-069408608b28 go.opentelemetry.io/collector/confmap/xconfmap v0.136.1-0.20250925151503-069408608b28 @@ -51,10 +51,11 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.2.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.4.0 // indirect - github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/apache/arrow-go/v18 v18.0.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.26.1 // indirect + github.com/andybalholm/brotli v1.2.0 // indirect + github.com/apache/arrow-go/v18 v18.4.0 // indirect + github.com/apache/thrift v0.22.0 // indirect + github.com/aws/aws-sdk-go-v2 v1.38.1 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 // indirect github.com/aws/aws-sdk-go-v2/config v1.27.11 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.17.11 // indirect @@ -72,7 +73,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.20.5 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 // indirect - github.com/aws/smithy-go v1.20.2 // indirect + github.com/aws/smithy-go v1.22.5 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/containerd/errdefs v1.0.0 // indirect @@ -81,7 +82,7 @@ require ( github.com/containerd/platforms v0.2.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/danieljoos/wincred v1.2.2 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.3.3+incompatible // indirect github.com/docker/go-units v0.5.0 // indirect @@ -102,7 +103,8 @@ require ( github.com/golang-jwt/jwt/v5 v5.2.2 // indirect github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 // indirect github.com/golang-sql/sqlexp v0.1.0 // indirect - github.com/google/flatbuffers v24.12.23+incompatible // indirect + github.com/golang/snappy v1.0.0 // indirect + github.com/google/flatbuffers v25.2.10+incompatible // indirect github.com/google/uuid v1.6.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect @@ -113,10 +115,10 @@ require ( github.com/jcmturner/goidentity/v6 v6.0.1 // indirect github.com/jcmturner/gokrb5/v8 v8.4.4 // indirect github.com/jcmturner/rpc/v2 v2.0.3 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/asmfmt v1.3.2 // indirect github.com/klauspost/compress v1.18.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.9 // indirect + github.com/klauspost/cpuid/v2 v2.2.11 // indirect github.com/knadh/koanf/maps v0.1.2 // indirect github.com/knadh/koanf/providers/confmap v1.0.0 // indirect github.com/knadh/koanf/v2 v2.3.0 // indirect @@ -125,6 +127,8 @@ require ( github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect github.com/magefile/mage v1.15.0 // indirect github.com/magiconair/properties v1.8.10 // indirect + github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8 // indirect + github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect @@ -145,7 +149,7 @@ require ( github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c // indirect github.com/shirou/gopsutil/v4 v4.25.6 // indirect github.com/sirupsen/logrus v1.9.3 // indirect @@ -174,7 +178,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/crypto v0.41.0 // indirect - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect + golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect golang.org/x/mod v0.27.0 // indirect golang.org/x/net v0.43.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect diff --git a/receiver/sqlqueryreceiver/go.sum b/receiver/sqlqueryreceiver/go.sum index a78ad9d295cb2..50df762422409 100644 --- a/receiver/sqlqueryreceiver/go.sum +++ b/receiver/sqlqueryreceiver/go.sum @@ -28,20 +28,18 @@ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJ github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c h1:RGWPOewvKIROun94nF7v2cua9qP+thov/7M50KEoeSU= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/SAP/go-hdb v1.14.5 h1:SJcaEyMw4t6UPasxNTAZENXMguK2HKorpwiY5KnnAZk= github.com/SAP/go-hdb v1.14.5/go.mod h1:n2822T2EW6WVy7+M6p+YrDe9qG/U/lY5RCeQzd+YwWA= -github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= -github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= -github.com/apache/arrow-go/v18 v18.0.0 h1:1dBDaSbH3LtulTyOVYaBCHO3yVRwjV+TZaqn3g6V7ZM= -github.com/apache/arrow-go/v18 v18.0.0/go.mod h1:t6+cWRSmKgdQ6HsxisQjok+jBpKGhRDiqcf3p0p/F+A= -github.com/apache/thrift v0.21.0 h1:tdPmh/ptjE1IJnhbhrcl2++TauVjy242rkV/UzJChnE= -github.com/apache/thrift v0.21.0/go.mod h1:W1H8aR/QRtYNvrPeFXBtobyRkd0/YVhTc6i07XIAgDw= -github.com/aws/aws-sdk-go-v2 v1.26.1 h1:5554eUqIYVWpU0YmeeYZ0wU64H2VLBs8TlhRB2L+EkA= -github.com/aws/aws-sdk-go-v2 v1.26.1/go.mod h1:ffIFB97e2yNsv4aTSGkqtHnppsIJzw7G7BReUZ3jCXM= +github.com/andybalholm/brotli v1.2.0 h1:ukwgCxwYrmACq68yiUqwIWnGY0cTPox/M94sVwToPjQ= +github.com/andybalholm/brotli v1.2.0/go.mod h1:rzTDkvFWvIrjDXZHkuS16NPggd91W3kUSvPlQ1pLaKY= +github.com/apache/arrow-go/v18 v18.4.0 h1:/RvkGqH517iY8bZKc4FD5/kkdwXJGjxf28JIXbJ/oB0= +github.com/apache/arrow-go/v18 v18.4.0/go.mod h1:Aawvwhj8x2jURIzD9Moy72cF0FyJXOpkYpdmGRHcw14= +github.com/apache/thrift v0.22.0 h1:r7mTJdj51TMDe6RtcmNdQxgn9XcyfGDOzegMDRg47uc= +github.com/apache/thrift v0.22.0/go.mod h1:1e7J/O1Ae6ZQMTYdy9xa3w9k+XHWPfRvdPyJeynQ+/g= +github.com/aws/aws-sdk-go-v2 v1.38.1 h1:j7sc33amE74Rz0M/PoCpsZQ6OunLqys/m5antM0J+Z8= +github.com/aws/aws-sdk-go-v2 v1.38.1/go.mod h1:9Q0OoGQoboYIAJyslFyF1f5K1Ryddop8gqMhWx/n4Wg= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2 h1:x6xsQXGSmW6frevwDA+vi/wqhp1ct18mVXYN08/93to= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.2/go.mod h1:lPprDr1e6cJdyYeGXnRaJoP4Md+cDBvi2eOj00BlGmg= github.com/aws/aws-sdk-go-v2/config v1.27.11 h1:f47rANd2LQEYHda2ddSCKYId18/8BhSRM4BULGmfgNA= @@ -76,8 +74,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4 h1:Jux+gDDyi1Lruk+KHF91tK2K github.com/aws/aws-sdk-go-v2/service/ssooidc v1.23.4/go.mod h1:mUYPBhaF2lGiukDEjJX2BLRRKTmoUSitGDUgM4tRxak= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6 h1:cwIxeBttqPN3qkaAjcEcsh8NYr8n2HZPkcKgPAi1phU= github.com/aws/aws-sdk-go-v2/service/sts v1.28.6/go.mod h1:FZf1/nKNEkHdGGJP/cI2MoIMquumuRK6ol3QQJNDxmw= -github.com/aws/smithy-go v1.20.2 h1:tbp628ireGtzcHDDmLT/6ADHidqnwgF57XOXZe6tp4Q= -github.com/aws/smithy-go v1.20.2/go.mod h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC3qS14E= +github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -100,8 +98,9 @@ github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0= github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8= 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/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/docker v28.3.3+incompatible h1:Dypm25kh4rmk49v1eiVbsAtpAsYURjYkaKubwuBdxEI= @@ -149,10 +148,10 @@ github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= 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.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/flatbuffers v24.12.23+incompatible h1:ubBKR94NR4pXUCY/MUsRVzd9umNW7ht7EG9hHfS9FX8= -github.com/google/flatbuffers v24.12.23+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q= +github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= @@ -185,10 +184,6 @@ github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh6 github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -197,8 +192,8 @@ github.com/klauspost/asmfmt v1.3.2 h1:4Ri7ox3EwapiOjCki+hw14RyKk201CN4rzyCJRFLpK github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= -github.com/klauspost/cpuid/v2 v2.2.9 h1:66ze0taIn2H33fBvCkXuv9BmCwDfafmiIVpKV9kKGuY= -github.com/klauspost/cpuid/v2 v2.2.9/go.mod h1:rqkxqrZ1EhYM9G+hXH7YdowN5R5RGN6NK4QwQ3WMXF8= +github.com/klauspost/cpuid/v2 v2.2.11 h1:0OwqZRYI2rFrjS4kvkDnqJkKHdHaRnCm68/DY4OxRzU= +github.com/klauspost/cpuid/v2 v2.2.11/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= @@ -273,8 +268,9 @@ github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmd github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c h1:ncq/mPwQF4JjgDlrVEn3C11VoGHZN7m8qihwgMEtzYw= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= @@ -285,8 +281,8 @@ github.com/sijms/go-ora/v2 v2.9.0 h1:+iQbUeTeCOFMb5BsOMgUhV8KWyrv9yjKpcK4x7+MFrg github.com/sijms/go-ora/v2 v2.9.0/go.mod h1:QgFInVi3ZWyqAiJwzBQA+nbKYKH77tdp1PYoCqhR2dU= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/snowflakedb/gosnowflake v1.16.0 h1:EfrAPVjWcBHzr2oiwEUz0dwFUiFlwftj9/YB6NktY9Q= -github.com/snowflakedb/gosnowflake v1.16.0/go.mod h1:XJ2z3SckeW+juZzjuYNcAJM7i4ZgIZNmepFm5foO3Vc= +github.com/snowflakedb/gosnowflake v1.17.0 h1:be50vC0buiOitvneyRHiqNkvPMcunGD3EcTnL2zYATg= +github.com/snowflakedb/gosnowflake v1.17.0/go.mod h1:TaHvQGh9MA2lopZZMm1AvvENDfwcnKtuskIr1e6Fpic= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= @@ -311,6 +307,8 @@ github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9f github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= github.com/xo/tblfmt v0.0.0-20190609041254-28c54ec42ce8/go.mod h1:3U5kKQdIhwACye7ml3acccHmjGExY9WmUGU7rnDWgv0= +github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= +github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= @@ -414,8 +412,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -502,9 +500,6 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/receiver/sshcheckreceiver/metadata.yaml b/receiver/sshcheckreceiver/metadata.yaml index bc6d89ece7e53..a192bee24c58e 100644 --- a/receiver/sshcheckreceiver/metadata.yaml +++ b/receiver/sshcheckreceiver/metadata.yaml @@ -12,6 +12,7 @@ resource_attributes: ssh.endpoint: description: Full SSH endpoint type: string + enabled: false attributes: error.message: diff --git a/receiver/windowsservicereceiver/documentation.md b/receiver/windowsservicereceiver/documentation.md index fcc61d9753c32..4dc6aa564cb8f 100644 --- a/receiver/windowsservicereceiver/documentation.md +++ b/receiver/windowsservicereceiver/documentation.md @@ -19,9 +19,9 @@ Gauge value containing service status as an integer value. Gauge values map to service status as follows: 0 - Failed to retrieve service status, 1 - Stopped, 2 - Start Pending, 3 - Stop Pending, 4 - Service Running, 5 - Continue Pending, 6 - Pause Pending, 7 - Service Paused -| Unit | Metric Type | Value Type | -| ---- | ----------- | ---------- | -| {status} | Gauge | Int | +| Unit | Metric Type | Value Type | Stability | +| ---- | ----------- | ---------- | --------- | +| {status} | Gauge | Int | development | #### Attributes diff --git a/receiver/windowsservicereceiver/metadata.yaml b/receiver/windowsservicereceiver/metadata.yaml index a1936695be8ec..98a1d5a0bf7e4 100644 --- a/receiver/windowsservicereceiver/metadata.yaml +++ b/receiver/windowsservicereceiver/metadata.yaml @@ -21,6 +21,8 @@ attributes: metrics: windows.service.status: enabled: true + stability: + level: development description: Gauge value containing service status as an integer value. extended_documentation: > Gauge values map to service status as follows: diff --git a/testbed/go.mod b/testbed/go.mod index 11f4722c4326d..4c2489a9dbf0d 100644 --- a/testbed/go.mod +++ b/testbed/go.mod @@ -75,7 +75,7 @@ require ( require ( cloud.google.com/go/auth v0.16.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.7.0 // indirect + cloud.google.com/go/compute/metadata v0.9.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect @@ -97,7 +97,7 @@ require ( github.com/DataDog/datadog-agent/pkg/util/quantile v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/util/scrubber v0.72.0-devel // indirect github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel // indirect - github.com/DataDog/datadog-api-client-go/v2 v2.46.0 // indirect + github.com/DataDog/datadog-api-client-go/v2 v2.47.0 // indirect github.com/DataDog/datadog-go/v5 v5.6.0 // indirect github.com/DataDog/go-sqllexer v0.1.6 // indirect github.com/DataDog/go-tuf v1.1.1-0.5.2 // indirect @@ -286,7 +286,7 @@ require ( github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common/assets v0.2.0 // indirect github.com/prometheus/exporter-toolkit v0.14.0 // indirect - github.com/prometheus/otlptranslator v0.0.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect github.com/prometheus/procfs v0.17.0 // indirect github.com/prometheus/sigv4 v0.2.0 // indirect github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect diff --git a/testbed/go.sum b/testbed/go.sum index 0b7d86dee83e5..c1be18ed49f94 100644 --- a/testbed/go.sum +++ b/testbed/go.sum @@ -2,8 +2,8 @@ cloud.google.com/go/auth v0.16.2 h1:QvBAGFPLrDeoiNjyfVunhQ10HKNYuOwZ5noee0M5df4= cloud.google.com/go/auth v0.16.2/go.mod h1:sRBas2Y1fB1vZTdurouM0AzuYQBMZinrUYL8EufhtEA= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= -cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= +cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= +cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 h1:Gt0j3wceWMwPmiazCa8MzMA0MfhmPIz0Qp0FJ6qcM0U= @@ -63,8 +63,8 @@ github.com/DataDog/datadog-agent/pkg/util/scrubber v0.72.0-devel/go.mod h1:tGxEZ github.com/DataDog/datadog-agent/pkg/util/winutil v0.0.0-20201009092105-58e18918b2db/go.mod h1:EtS4X73GXAyrpVddkLQ4SewSQX+zv284e8iIkVBXgtk= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel h1:Pjh8BvgZ3YWe6a4jyEK6cy/yJtG3SPwEBXqb/D8wnGE= github.com/DataDog/datadog-agent/pkg/version v0.72.0-devel/go.mod h1:FYj51C1ib86rpr5tlLEep9jitqvljIJ5Uz2rrimGTeY= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0 h1:sq5GXX//FVtbgd4oNU3NSJX2F1vmhqONHUPrQ8HWwNc= -github.com/DataDog/datadog-api-client-go/v2 v2.46.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0 h1:bhPu0F6BGUGBaDw4h576asJcffFatYufy8w3/39prqA= +github.com/DataDog/datadog-api-client-go/v2 v2.47.0/go.mod h1:d3tOEgUd2kfsr9uuHQdY+nXrWp4uikgTgVCPdKNK30U= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go v3.5.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go/v5 v5.6.0 h1:2oCLxjF/4htd55piM75baflj/KoE6VYS7alEUqFvRDw= @@ -620,8 +620,8 @@ github.com/prometheus/common/assets v0.2.0 h1:0P5OrzoHrYBOSM1OigWL3mY8ZvV2N4zIE/ github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= github.com/prometheus/exporter-toolkit v0.14.0 h1:NMlswfibpcZZ+H0sZBiTjrA3/aBFHkNZqE+iCj5EmRg= github.com/prometheus/exporter-toolkit v0.14.0/go.mod h1:Gu5LnVvt7Nr/oqTBUC23WILZepW0nffNo10XdhQcwWA= -github.com/prometheus/otlptranslator v0.0.2 h1:+1CdeLVrRQ6Psmhnobldo0kTp96Rj80DRXRd5OSnMEQ= -github.com/prometheus/otlptranslator v0.0.2/go.mod h1:P8AwMgdD7XEr6QRUJ2QWLpiAZTgTE2UYgjlu3svompI= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A=