diff --git a/.buildkite/hooks/pre-command b/.buildkite/hooks/pre-command index acb73845547..2b6f463b662 100755 --- a/.buildkite/hooks/pre-command +++ b/.buildkite/hooks/pre-command @@ -70,7 +70,7 @@ if command -v docker &>/dev/null; then DOCKER_USERNAME_SECRET=$(retry 5 vault kv get -field username "${DOCKER_REGISTRY_SECRET_PATH}") DOCKER_PASSWORD_SECRET=$(retry 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") DOCKER_REGISTRY_SECRET=$(retry 5 vault kv get -field registry "${DOCKER_REGISTRY_SECRET_PATH}") - docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKER_REGISTRY_SECRET}" + retry 4 docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKER_REGISTRY_SECRET}" unset DOCKER_USERNAME_SECRET DOCKER_PASSWORD_SECRET export DOCKER_REGISTRY_SECRET retry 4 docker pull --quiet docker.elastic.co/infra/release-manager:latest @@ -80,7 +80,7 @@ if command -v docker &>/dev/null; then DOCKER_USERNAME_SECRET=$(retry 5 vault kv get -field username "${DOCKER_REGISTRY_SECRET_PATH}") DOCKER_PASSWORD_SECRET=$(retry 5 vault kv get -field password "${DOCKER_REGISTRY_SECRET_PATH}") DOCKERHUB_REGISTRY_SECRET=$(retry 5 vault kv get -field registry "${DOCKER_REGISTRY_SECRET_PATH}") - docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKERHUB_REGISTRY_SECRET}" + retry 4 docker login -u "${DOCKER_USERNAME_SECRET}" -p "${DOCKER_PASSWORD_SECRET}" "${DOCKERHUB_REGISTRY_SECRET}" unset DOCKER_USERNAME_SECRET DOCKER_PASSWORD_SECRET fi diff --git a/.ci/update-beats.yml b/.ci/update-beats.yml index fb0fadf2c26..85c5882bfef 100644 --- a/.ci/update-beats.yml +++ b/.ci/update-beats.yml @@ -44,15 +44,14 @@ sources: captureindex: 1 conditions: - is: + is-already-updated: name: Is version 'github.com/elastic/beats@{{ source "beats" }}' not updated in 'go.mod'? - kind: file + kind: shell disablesourceinput: true scmid: default spec: - file: go.mod - matchpattern: 'github\.com/elastic/beats.*-{{ source "beats" }}' - failwhen: true + command: grep {{ source "beats" }} go.mod && exit 1 || exit 0 + failwhen: false targets: beats: @@ -64,5 +63,4 @@ targets: command: .ci/scripts/update-beats.sh environments: - name: PATH - - name: GOPATH - name: HOME diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000000..be09f01d2be --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,42 @@ +version: 2 +updates: + + # GitHub actions + - package-ecosystem: "github-actions" + directory: "/" + reviewers: + - "elastic/observablt-ci" + schedule: + interval: "weekly" + day: "sunday" + time: "22:00" + groups: + github-actions: + patterns: + - "*" + + # GitHub composite actions + - package-ecosystem: "github-actions" + directory: "/.github/workflows/generate-smoke-tests-list" + schedule: + interval: "weekly" + day: "sunday" + time: "22:00" + reviewers: + - "elastic/observablt-ci" + groups: + github-actions: + patterns: + - "*" + - package-ecosystem: "github-actions" + directory: "/.github/workflows/setup-cluster-env" + schedule: + interval: "weekly" + day: "sunday" + time: "22:00" + reviewers: + - "elastic/observablt-ci" + groups: + github-actions: + patterns: + - "*" diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 01d6d721bc4..13e1f4cd451 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -44,13 +44,13 @@ jobs: TF_VAR_REPO: ${{ github.repository }} GOBENCH_TAGS: branch=${{ github.head_ref || github.ref }},commit=${{ github.sha }},target_branch=${{ github.base_ref }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version-file: 'go.mod' - - uses: rlespinasse/github-slug-action@d1ca8ffbce40ea2371e35bca356db0acacf567d2 + - uses: rlespinasse/github-slug-action@5ee5b39fa5c99792f9d15268f75694c7746408e5 - name: Set up env run: | @@ -67,7 +67,7 @@ jobs: echo "BENCHMARK_RUN=${{ inputs.benchmarkRun }}" >> "$GITHUB_ENV" fi - - uses: hashicorp/vault-action@v2.6.0 + - uses: hashicorp/vault-action@v2.7.4 env: AWS_CREDENTIALS_PATH: secret/observability-team/ci/elastic-observability-aws-account-auth BENCHMARK_CLOUD_CREDENTIALS_PATH: secret/observability-team/ci/benchmark-cloud @@ -97,7 +97,7 @@ jobs: url: ${{ secrets.VAULT_ADDR }} roleId: ${{ secrets.VAULT_ROLE_ID }} secretId: ${{ secrets.VAULT_SECRET_ID }} - - uses: hashicorp/setup-terraform@v2 + - uses: hashicorp/setup-terraform@v3 with: terraform_version: 1.3.7 terraform_wrapper: false @@ -134,7 +134,7 @@ jobs: $PNG_REPORT_FILE - name: Upload PNG - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: kibana-png-report path: ${{ env.WORKING_DIRECTORY }}/${{ env.PNG_REPORT_FILE }} @@ -150,7 +150,7 @@ jobs: echo "png_report_url=https://elastic-apm-server-benchmark-reports.s3.amazonaws.com/${DEST_NAME}" >> "$GITHUB_OUTPUT" - name: Upload benchmark result - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: always() with: name: benchmark-result @@ -166,7 +166,7 @@ jobs: uses: elastic/apm-pipeline-library/.github/actions/notify-build-status@current with: message: | - Nightly benchmarks failed! SDH Duty assignee, please have a look and follow this ! + Nightly APM Server benchmarks failed! SDH Duty assignee, please have a look and follow this ! vaultUrl: ${{ secrets.VAULT_ADDR }} vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} @@ -187,7 +187,7 @@ jobs: "type": "section", "text": { "type": "mrkdwn", - "text": "${{ github.event_name == 'schedule' && 'Nightly succesfully executed!' || 'Benchmarks succesfully executed!' }}" + "text": "${{ github.event_name == 'schedule' && 'Nightly' || '' }} APM Server benchmarks succesfully executed!" }, "accessory": { "type": "button", diff --git a/.github/workflows/bump-elastic-stack.yml b/.github/workflows/bump-elastic-stack.yml index 426c7f635f4..6680ec511db 100644 --- a/.github/workflows/bump-elastic-stack.yml +++ b/.github/workflows/bump-elastic-stack.yml @@ -26,7 +26,7 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.filter.outputs.matrix) }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ matrix.branch }} diff --git a/.github/workflows/bump-golang.yml b/.github/workflows/bump-golang.yml index c76efe51de9..da8e4009e6b 100644 --- a/.github/workflows/bump-golang.yml +++ b/.github/workflows/bump-golang.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: elastic/apm-pipeline-library/.github/actions/updatecli@current with: vaultUrl: ${{ secrets.VAULT_ADDR }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 17e48009f48..6702ff56074 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,8 +26,8 @@ jobs: lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true @@ -45,8 +45,8 @@ jobs: os: ['macos-latest', 'ubuntu-latest', 'windows-latest'] runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: go-version-file: go.mod cache: true @@ -57,8 +57,8 @@ jobs: system-test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: go-version-file: systemtest/go.mod cache: true @@ -71,7 +71,7 @@ jobs: go run -modfile=tools/go.mod gotest.tools/gotestsum \ --no-color -f standard-quiet --jsonfile "$OUTPUT_JSON_FILE" --junitfile "$OUTPUT_JUNIT_FILE" \ --raw-command -- make system-test - - uses: actions/upload-artifact@v3 # upload test results + - uses: actions/upload-artifact@v4 # upload test results if: ${{ always() }} # run this step even if previous step failed with: name: test-results diff --git a/.github/workflows/generate-smoke-tests-list/action.yml b/.github/workflows/generate-smoke-tests-list/action.yml index c2d690d0ac0..12984edeaa3 100644 --- a/.github/workflows/generate-smoke-tests-list/action.yml +++ b/.github/workflows/generate-smoke-tests-list/action.yml @@ -33,6 +33,7 @@ runs: - id: generate name: Generate matrix and date run: | - echo "tests=$(make smoketest/discover)" >> "${GITHUB_OUTPUT}" + # remove the full path and use a relative path instead to be github runner agnostic + echo "tests=$(make smoketest/discover | sed "s#${GITHUB_WORKSPACE}/#./#g")" >> "${GITHUB_OUTPUT}" echo "date=$(date +%s)" >> "${GITHUB_OUTPUT}" shell: 'bash' diff --git a/.github/workflows/opentelemetry.yml b/.github/workflows/opentelemetry.yml index d7f8ffca444..2274ed913eb 100644 --- a/.github/workflows/opentelemetry.yml +++ b/.github/workflows/opentelemetry.yml @@ -3,13 +3,17 @@ name: OpenTelemetry Export Trace on: workflow_run: workflows: + - benchmarks - bump-elastic-stack-snapshot - bump-golang - ci - microbenchmark - - system-test-reporter + - run-minor-release + - run-patch-release + - smoke-tests - smoke-tests-os - smoke-tests-ess + - system-test-reporter - Terraform Format - update-beats types: [completed] diff --git a/.github/workflows/prepare-release/action.yml b/.github/workflows/prepare-release/action.yml new file mode 100644 index 00000000000..9e1578fc73c --- /dev/null +++ b/.github/workflows/prepare-release/action.yml @@ -0,0 +1,109 @@ +--- +name: prepare-release +description: Common tasks for preparing minor and patch releases + +inputs: + type: + description: 'Release type (minor or patch)' + required: true + version: + description: 'The version' + required: true + vault-url: + description: 'Vault URL' + required: true + vault-role-id: + description: 'Vault role ID' + required: true + vault-secret-id: + description: 'Vault secret ID' + required: true + +outputs: + release-branch: + description: "Release branch (relevant for minor releases)" + value: ${{ steps.generate.outputs.release-branch }} + release-version: + description: "Release version" + value: ${{ steps.generate.outputs.release-version }} + slack-thread: + description: "Slack thread id" + value: ${{ steps.slack-thread.outputs.threadTimestamp }} + +runs: + using: "composite" + steps: + - name: Send slack message when started + id: slack-thread + uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + with: + url: ${{ inputs.vault-url }} + roleId: ${{ inputs.vault-role-id }} + secretId: ${{ inputs.vault-secret-id }} + channel: ${{ env.SLACK_CHANNEL }} + message: ":wave: This is the thread for the ${{ inputs.type }} release `${{ github.repository }}@${{ env.VERSION }}`. (<${{ env.JOB_URL }}|workflow run>)" + env: + VERSION: ${{ inputs.version }} + JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + + - id: generate + run: |- + echo "release-branch=${VERSION%.*}" >> "${GITHUB_OUTPUT}" + echo "release-version=${VERSION}" >> "${GITHUB_OUTPUT}" + env: + VERSION: ${{ inputs.version }} + shell: 'bash' + + - name: validate version format (minor only) + if: ${{ inputs.type == 'minor' && ! endsWith(inputs.version, '0') }} + run: |- + FAILURE_MESSAGE='version is not a minor one but a patch (only support for ..0)' + echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" + echo "::error::${FAILURE_MESSAGE}" ; exit 1 + shell: 'bash' + + - name: validate version format (patch only) + if: ${{ inputs.type == 'patch' && endsWith(inputs.version, '0') }} + run: |- + FAILURE_MESSAGE='version is not a patch one but a minor (only support for ..[1-9]+[0-9]*)' + echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" + echo "::error::${FAILURE_MESSAGE}" ; exit 1 + shell: 'bash' + + - name: validate if branch already exists (minor only) + if: ${{ inputs.type == 'minor' }} + run: |- + if git ls-remote --exit-code --heads https://github.com/${{ github.repository }}.git "$BRANCH" > /dev/null ; then + FAILURE_MESSAGE='Branch already exists. This is not a minor release.' + echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" + echo "::error::${FAILURE_MESSAGE}" ; exit 1 + fi + shell: 'bash' + env: + BRANCH: ${{ steps.generate.outputs.release-branch }} + + - name: validate if tag already exists + run: |- + if git ls-remote --exit-code https://github.com/${{ github.repository }}.git "$TAG" > /dev/null ; then + FAILURE_MESSAGE='Tag already exists.' + echo "FAILURE_MESSAGE=${FAILURE_MESSAGE}" >> "$GITHUB_ENV" + echo "::error::${FAILURE_MESSAGE}" ; exit 1 + fi + shell: 'bash' + env: + TAG: 'refs/tags/v${{ steps.generate.outputs.release-version }}' + + - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + if: failure() + with: + url: ${{ inputs.vault-url }} + roleId: ${{ inputs.vault-role-id }} + secretId: ${{ inputs.vault-secret-id }} + channel: ${{ env.SLACK_CHANNEL }} + threadTimestamp: ${{ steps.slack-thread.outputs.threadTimestamp || '' }} + message: |- + :fire: Something went wrong with the ${{ inputs.type }} release preparation. It failed with the below error message: + `${{ env.FAILURE_MESSAGE }}`. + See <${{ env.JOB_URL }}|logs>. + env: + JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} diff --git a/.github/workflows/run-minor-release.yml b/.github/workflows/run-minor-release.yml new file mode 100644 index 00000000000..f5dba2bb0d6 --- /dev/null +++ b/.github/workflows/run-minor-release.yml @@ -0,0 +1,109 @@ +--- +name: run-minor-release + +on: + workflow_dispatch: + inputs: + version: + description: 'The version (semver format: major.minor.0)' + required: true + type: string + +# Avoid concurrency so we can watch the releases correctly +concurrency: + group: ${{ github.workflow }} + +permissions: + contents: read + +env: + JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + SLACK_CHANNEL: "#apm-server" + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + release-branch: ${{ steps.prepare.outputs.release-branch }} + release-version: ${{ steps.prepare.outputs.release-version }} + slack-thread: ${{ steps.prepare.outputs.slack-thread }} + steps: + - uses: actions/checkout@v4 + - id: prepare + uses: ./.github/workflows/prepare-release + with: + vault-url: ${{ secrets.VAULT_ADDR }} + vault-role-id: ${{ secrets.VAULT_ROLE_ID }} + vault-secret-id: ${{ secrets.VAULT_SECRET_ID }} + version: ${{ inputs.version }} + type: 'minor' + + run-minor: + runs-on: ubuntu-latest + needs: [ prepare ] + env: + RELEASE_BRANCH: ${{ needs.prepare.outputs.release-branch }} + RELEASE_VERSION: ${{ needs.prepare.outputs.release-version }} + permissions: + contents: write + steps: + + - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + channel: ${{ env.SLACK_CHANNEL }} + threadTimestamp: ${{ needs.prepare.outputs.slack-thread || '' }} + message: |- + Feature freeze for `${{ github.repository }}@${{ env.RELEASE_VERSION }}` just started. + The `${{ github.repository }}@${{ env.RELEASE_BRANCH }}` branch will be created Today. + + - uses: actions/checkout@v4 + with: + # 0 indicates all history for all branches and tags. + fetch-depth: 0 + + # Required to use a service account, otherwise PRs created by + # GitHub bot won't trigger any CI builds. + # See https://github.com/peter-evans/create-pull-request/issues/48#issuecomment-537478081 + - name: Configure github token + uses: elastic/apm-pipeline-library/.github/actions/github-token@current + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + + - name: Configure git user + uses: elastic/apm-pipeline-library/.github/actions/setup-git@current + with: + username: ${{ env.GIT_USER }} + email: ${{ env.GIT_EMAIL }} + token: ${{ env.GITHUB_TOKEN }} + + - run: make minor-release + env: + GH_TOKEN: ${{ env.GITHUB_TOKEN }} + + - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + if: success() + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + channel: ${{ env.SLACK_CHANNEL }} + threadTimestamp: ${{ needs.prepare.outputs.slack-thread || '' }} + message: |- + `${{ github.repository }}@${{ env.RELEASE_BRANCH }}` is now available. + The docs and other references are updated. You can start using it. + + - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + if: failure() + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + channel: ${{ env.SLACK_CHANNEL }} + threadTimestamp: ${{ needs.prepare.outputs.slack-thread || '' }} + message: |- + :fire: Something went wrong with the release. See <${{ env.JOB_URL }}|logs>. diff --git a/.github/workflows/run-patch-release.yml b/.github/workflows/run-patch-release.yml new file mode 100644 index 00000000000..a40979f119b --- /dev/null +++ b/.github/workflows/run-patch-release.yml @@ -0,0 +1,94 @@ +--- +name: run-patch-release + +on: + workflow_dispatch: + inputs: + version: + description: 'The version (semver format: major.minor.patch)' + required: true + type: string + +# Avoid concurrency so we can watch the releases correctly +concurrency: + group: ${{ github.workflow }} + +permissions: + contents: read + +env: + JOB_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + SLACK_CHANNEL: "#apm-server" + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + release-version: ${{ steps.prepare.outputs.release-version }} + slack-thread: ${{ steps.prepare.outputs.slack-thread }} + steps: + - uses: actions/checkout@v4 + + - id: prepare + uses: ./.github/workflows/prepare-release + with: + vault-url: ${{ secrets.VAULT_ADDR }} + vault-role-id: ${{ secrets.VAULT_ROLE_ID }} + vault-secret-id: ${{ secrets.VAULT_SECRET_ID }} + version: ${{ inputs.version }} + type: 'patch' + + run-patch: + runs-on: ubuntu-latest + needs: [ prepare ] + env: + RELEASE_VERSION: ${{ needs.prepare.outputs.release-version }} + steps: + - uses: actions/checkout@v4 + with: + # 0 indicates all history for all branches and tags. + fetch-depth: 0 + + # Required to use a service account, otherwise PRs created by + # GitHub bot won't trigger any CI builds. + # See https://github.com/peter-evans/create-pull-request/issues/48#issuecomment-537478081 + - name: Configure github token + uses: elastic/apm-pipeline-library/.github/actions/github-token@current + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + + - name: Configure git user + uses: elastic/apm-pipeline-library/.github/actions/setup-git@current + with: + username: ${{ env.GIT_USER }} + email: ${{ env.GIT_EMAIL }} + token: ${{ env.GITHUB_TOKEN }} + + - run: make patch-release + env: + GH_TOKEN: ${{ env.GITHUB_TOKEN }} + + - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + if: success() + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + channel: ${{ env.SLACK_CHANNEL }} + threadTimestamp: ${{ needs.prepare.outputs.slack-thread || '' }} + message: |- + Feature freeze for `${{ github.repository }}@${{ env.RELEASE_VERSION }}` is Today. + All the relevant PRs and issues have been created. + + - uses: elastic/apm-pipeline-library/.github/actions/slack-message@current + if: failure() + with: + url: ${{ secrets.VAULT_ADDR }} + roleId: ${{ secrets.VAULT_ROLE_ID }} + secretId: ${{ secrets.VAULT_SECRET_ID }} + channel: ${{ env.SLACK_CHANNEL }} + threadTimestamp: ${{ needs.prepare.outputs.slack-thread || '' }} + message: |- + :fire: Something went wrong with the patch release. See <${{ env.JOB_URL }}|logs>. diff --git a/.github/workflows/setup-cluster-env/action.yml b/.github/workflows/setup-cluster-env/action.yml index 47c23237482..9995a77fa8e 100644 --- a/.github/workflows/setup-cluster-env/action.yml +++ b/.github/workflows/setup-cluster-env/action.yml @@ -13,30 +13,34 @@ inputs: vault-secret-id: description: 'Vault secret ID' required: true + ec-key-secret: + default: 'secret/observability-team/ci/elastic-cloud/observability-pro' + description: 'EC Key secret' + required: false + aws-account-secret: + default: 'secret/observability-team/ci/elastic-observability-aws-account-auth' + description: 'AWS account secret' + required: false runs: using: "composite" steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v5 with: go-version-file: go.mod - cache: true cache-dependency-path: | go.sum tools/go.sum - - uses: hashicorp/vault-action@v2.5.0 - env: - AWS_ACCOUNT_SECRET: 'secret/observability-team/ci/elastic-observability-aws-account-auth' - EC_KEY_SECRET: 'secret/observability-team/ci/elastic-cloud/observability-pro' + - uses: hashicorp/vault-action@v2.7.4 with: url: ${{ inputs.vault-url }} roleId: ${{ inputs.vault-role-id }} secretId: ${{ inputs.vault-secret-id }} method: approle secrets: | - ${{ env.EC_KEY_SECRET }} apiKey | EC_API_KEY ; - ${{ env.AWS_ACCOUNT_SECRET }} user | AWS_PROFILE ; - ${{ env.AWS_ACCOUNT_SECRET }} csv | AWS_ACCOUNT_IMPORT + ${{ inputs.ec-key-secret }} apiKey | EC_API_KEY ; + ${{ inputs.aws-account-secret }} user | AWS_PROFILE ; + ${{ inputs.aws-account-secret }} csv | AWS_ACCOUNT_IMPORT - name: Configure AWS account run: | echo "${AWS_ACCOUNT_IMPORT}" > ${{ runner.temp }}/account.csv; diff --git a/.github/workflows/smoke-tests-ess.yml b/.github/workflows/smoke-tests-ess.yml index f80202ba176..b8266ed40dd 100644 --- a/.github/workflows/smoke-tests-ess.yml +++ b/.github/workflows/smoke-tests-ess.yml @@ -21,7 +21,7 @@ jobs: tests: ${{ steps.generate.outputs.tests }} date: ${{ steps.generate.outputs.date }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ inputs.branch }} - id: generate @@ -50,7 +50,7 @@ jobs: - '7.17' - 'latest' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ inputs.branch }} - name: Setup cluster env @@ -66,23 +66,3 @@ jobs: - if: always() name: Teardown smoke test infra run: make smoketest/cleanup TEST_DIR=${{ matrix.test }} - - all-smoke-tests-ess: - name: All Smoke Tests ESS - if: always() - runs-on: ubuntu-latest - needs: - - smoke-tests-ess - steps: - - id: check - uses: elastic/apm-pipeline-library/.github/actions/check-dependent-jobs@current - with: - needs: ${{ toJSON(needs) }} - - uses: elastic/apm-pipeline-library/.github/actions/notify-build-status@current - with: - status: ${{ steps.check.outputs.status }} - vaultUrl: ${{ secrets.VAULT_ADDR }} - vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} - vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} - slackChannel: "#apm-server" - message: "Build result for Smoke Tests ESS" diff --git a/.github/workflows/smoke-tests-os.yml b/.github/workflows/smoke-tests-os.yml index d8c66ffe978..d71a7f7a7e6 100644 --- a/.github/workflows/smoke-tests-os.yml +++ b/.github/workflows/smoke-tests-os.yml @@ -20,7 +20,7 @@ jobs: tests: ${{ steps.generate.outputs.tests }} date: ${{ steps.generate.outputs.date }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ inputs.branch }} - id: generate @@ -42,7 +42,7 @@ jobs: TF_VAR_REPO: ${{ github.repository }} TF_VAR_CREATED_DATE: ${{ needs.prepare.outputs.date }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: ${{ inputs.branch }} - name: Get version diff --git a/.github/workflows/smoke-tests-schedule.yml b/.github/workflows/smoke-tests-schedule.yml index 0a32d3e0bda..2ac98b2fddd 100644 --- a/.github/workflows/smoke-tests-schedule.yml +++ b/.github/workflows/smoke-tests-schedule.yml @@ -2,7 +2,7 @@ name: smoke-tests run-name: Smoke Tests on: - workflow_dispatch: + workflow_dispatch: ~ schedule: - cron: '0 3 * * 1-5' @@ -17,7 +17,7 @@ jobs: outputs: matrix: ${{ steps.generate.outputs.matrix }} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - id: generate name: Generate matrix uses: elastic/apm-pipeline-library/.github/actions/elastic-stack-snapshot-branches@current @@ -35,12 +35,20 @@ jobs: branch: ${{ matrix.branch }} secrets: inherit - all-smoke-tests-os: - name: All Smoke Tests OS + smoke-tests-ess: + name: Run smoke tests ESS + uses: ./.github/workflows/smoke-tests-ess.yml + with: + branch: 'main' + secrets: inherit + + all-smoke-tests: + name: All Smoke Tests if: always() runs-on: ubuntu-latest needs: - smoke-tests-os + - smoke-tests-ess steps: - id: check uses: elastic/apm-pipeline-library/.github/actions/check-dependent-jobs@current @@ -53,10 +61,3 @@ jobs: vaultRoleId: ${{ secrets.VAULT_ROLE_ID }} vaultSecretId: ${{ secrets.VAULT_SECRET_ID }} slackChannel: "#apm-server" - - smoke-tests-ess: - name: Run smoke tests ESS - uses: ./.github/workflows/smoke-tests-ess.yml - with: - branch: 'main' - secrets: inherit diff --git a/.github/workflows/terraform-fmt.yml b/.github/workflows/terraform-fmt.yml index d0605b73bdf..23a3518b502 100644 --- a/.github/workflows/terraform-fmt.yml +++ b/.github/workflows/terraform-fmt.yml @@ -12,6 +12,6 @@ jobs: terraform-fmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: hashicorp/setup-terraform@v2 + - uses: actions/checkout@v4 + - uses: hashicorp/setup-terraform@v3 - run: terraform fmt -recursive -check -diff diff --git a/.github/workflows/update-beats.yml b/.github/workflows/update-beats.yml index ac5213772ec..4dafff9cdf1 100644 --- a/.github/workflows/update-beats.yml +++ b/.github/workflows/update-beats.yml @@ -25,8 +25,8 @@ jobs: fail-fast: false matrix: ${{ fromJson(needs.filter.outputs.matrix) }} steps: - - uses: actions/checkout@v3 - - uses: actions/setup-go@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-go@v5 with: go-version-file: go.mod - uses: elastic/apm-pipeline-library/.github/actions/updatecli@current diff --git a/.gitignore b/.gitignore index 67236797153..c7bfbb2ebc1 100644 --- a/.gitignore +++ b/.gitignore @@ -50,3 +50,4 @@ testing/smoke/**/main.tf !testing/smoke/supported-os/main.tf !testing/smoke/managed/main.tf testing/rally-cloud/build +.bck \ No newline at end of file diff --git a/.mergify.yml b/.mergify.yml index d06ba9c242c..173043031e2 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -92,6 +92,8 @@ pull_request_rules: - "{{ author }}" branches: - "7.17" + labels: + - "backport" title: "[{{ destination_branch }}] {{ title }} (backport #{{ number }})" - name: backport patches to 7.16 branch conditions: @@ -288,3 +290,31 @@ pull_request_rules: labels: - "backport" title: "[{{ destination_branch }}] {{ title }} (backport #{{ number }})" + - name: backport patches to 8.11 branch + conditions: + - merged + - base=main + - label=backport-8.11 + actions: + backport: + assignees: + - "{{ author }}" + branches: + - "8.11" + labels: + - "backport" + title: "[{{ destination_branch }}] {{ title }} (backport #{{ number }})" + - name: backport patches to 8.12 branch + conditions: + - merged + - base=main + - label=backport-8.12 + actions: + backport: + assignees: + - "{{ author }}" + branches: + - "8.12" + labels: + - "backport" + title: "[{{ destination_branch }}] {{ title }} (backport #{{ number }})" diff --git a/CHANGELOG.asciidoc b/CHANGELOG.asciidoc index b2ab86191bc..7b32b7b3575 100644 --- a/CHANGELOG.asciidoc +++ b/CHANGELOG.asciidoc @@ -1,4 +1,5 @@ // tag::list[] +* <> * <> * <> * <> @@ -14,6 +15,8 @@ // end::list[] // tag::includes[] +include::./changelogs/head.asciidoc[] +include::./changelogs/8.12.asciidoc[] include::./changelogs/8.11.asciidoc[] include::./changelogs/8.10.asciidoc[] include::./changelogs/8.9.asciidoc[] diff --git a/Makefile b/Makefile index 2b284572d5b..c2909871c5f 100644 --- a/Makefile +++ b/Makefile @@ -38,9 +38,7 @@ CURRENT_DIR=$(shell dirname $(shell readlink -f $(firstword $(MAKEFILE_LIST)))) APM_SERVER_BINARIES:= \ build/apm-server-linux-amd64 \ - build/apm-server-linux-386 \ build/apm-server-linux-arm64 \ - build/apm-server-windows-386.exe \ build/apm-server-windows-amd64.exe \ build/apm-server-darwin-amd64 \ build/apm-server-darwin-arm64 @@ -65,7 +63,6 @@ $(APM_SERVER_BINARIES): build/apm-server-linux-%: GOOS=linux build/apm-server-darwin-%: GOOS=darwin build/apm-server-windows-%: GOOS=windows -build/apm-server-%-386 build/apm-server-%-386.exe: GOARCH=386 build/apm-server-%-amd64 build/apm-server-%-amd64.exe: GOARCH=amd64 build/apm-server-%-amd64 build/apm-server-%-amd64.exe: GOFLAGS+=-buildmode=pie build/apm-server-%-arm64 build/apm-server-%-arm64.exe: GOARCH=arm64 @@ -76,7 +73,6 @@ GOVERSIONINFO_FLAGS := \ -product-version "$(APM_SERVER_VERSION)" \ -comment "commit=$(GITCOMMIT)" -build/apm-server-windows-386.exe: x-pack/apm-server/versioninfo_windows_386.syso build/apm-server-windows-amd64.exe: x-pack/apm-server/versioninfo_windows_amd64.syso x-pack/apm-server/versioninfo_windows_amd64.syso: GOVERSIONINFO_FLAGS+=-64 x-pack/apm-server/versioninfo_%.syso: $(GOVERSIONINFO) $(GITREFFILE) packaging/versioninfo.json diff --git a/NOTICE.txt b/NOTICE.txt index 8038a04e5e2..54dd7d3563f 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1,5 +1,5 @@ Elastic APM Server -Copyright 2014-2023 Elasticsearch BV +Copyright 2014-2024 Elasticsearch BV This product includes software developed by The Apache Software Foundation (http://www.apache.org/). @@ -362,11 +362,11 @@ these terms. -------------------------------------------------------------------------------- Dependency : github.com/elastic/apm-data -Version: v0.1.1-0.20230928144734-40b63726f3b7 +Version: v0.1.1-0.20231212041654-b2a4dabeb6e3 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/apm-data@v0.1.1-0.20230928144734-40b63726f3b7/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/apm-data@v0.1.1-0.20231212041654-b2a4dabeb6e3/LICENSE: Apache License Version 2.0, January 2004 @@ -596,11 +596,11 @@ License Version 2.0. -------------------------------------------------------------------------------- Dependency : github.com/elastic/elastic-agent-client/v7 -Version: v7.4.0 +Version: v7.6.0 Licence type (autodetected): Elastic -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-client/v7@v7.4.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/elastic-agent-client/v7@v7.6.0/LICENSE.txt: ELASTIC LICENSE AGREEMENT @@ -1462,11 +1462,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/gmux@v0.3.1/LIC -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-docappender -Version: v0.2.1-0.20230829163624-c69a1cf8ce35 +Version: v0.2.1-0.20231207080152-44217001fa53 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-docappender@v0.2.1-0.20230829163624-c69a1cf8ce35/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-docappender@v0.2.1-0.20231207080152-44217001fa53/LICENSE: Apache License Version 2.0, January 2004 @@ -1673,11 +1673,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-docappender@ -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-elasticsearch/v8 -Version: v8.10.0 +Version: v8.11.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearch/v8@v8.10.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearch/v8@v8.11.1/LICENSE: Apache License Version 2.0, January 2004 @@ -1884,11 +1884,11 @@ Contents of probable licence file $GOMODCACHE/github.com/elastic/go-elasticsearc -------------------------------------------------------------------------------- Dependency : github.com/elastic/go-sysinfo -Version: v1.11.1 +Version: v1.11.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sysinfo@v1.11.1/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/elastic/go-sysinfo@v1.11.2/LICENSE.txt: Apache License @@ -4227,11 +4227,11 @@ SOFTWARE. -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmelasticsearch/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasticsearch/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasticsearch/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -4438,11 +4438,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmelasti -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmgorilla/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmgorilla/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmgorilla/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -4649,11 +4649,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmgorill -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmgrpc/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmgrpc/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmgrpc/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -4860,11 +4860,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmgrpc/v -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmhttp/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -5071,11 +5071,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmhttp/v -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmotel/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmotel/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmotel/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -5282,11 +5282,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmotel/v -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -5526,11 +5526,11 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/collector/consumer -Version: v0.81.0 +Version: v0.87.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/consumer@v0.81.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/consumer@v0.87.0/LICENSE: Apache License @@ -5738,11 +5738,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/cons -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/collector/pdata -Version: v1.0.0-rcv0013 +Version: v1.0.0-rcv0016 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/pdata@v1.0.0-rcv0013/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/pdata@v1.0.0-rcv0016/LICENSE: Apache License @@ -5950,11 +5950,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/pdat -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/otel -Version: v1.17.0 +Version: v1.21.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel@v1.17.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel@v1.21.0/LICENSE: Apache License Version 2.0, January 2004 @@ -6161,11 +6161,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel@v1.17.0/L -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/otel/metric -Version: v1.17.0 +Version: v1.21.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/metric@v1.17.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/metric@v1.21.0/LICENSE: Apache License Version 2.0, January 2004 @@ -6372,11 +6372,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/metric@v1 -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/otel/sdk/metric -Version: v0.40.0 +Version: v1.21.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/sdk/metric@v0.40.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/sdk/metric@v1.21.0/LICENSE: Apache License Version 2.0, January 2004 @@ -6611,11 +6611,11 @@ THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : go.uber.org/zap -Version: v1.25.0 +Version: v1.26.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.uber.org/zap@v1.25.0/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/go.uber.org/zap@v1.26.0/LICENSE.txt: Copyright (c) 2016-2017 Uber Technologies, Inc. @@ -7202,11 +7202,11 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/apache/thrift -Version: v0.18.1 +Version: v0.19.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/apache/thrift@v0.18.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/apache/thrift@v0.19.0/LICENSE: Apache License @@ -8843,6 +8843,207 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Dependency : github.com/docker/go-units +Version: v0.5.0 +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/docker/go-units@v0.5.0/LICENSE: + + + Apache License + Version 2.0, January 2004 + https://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + Copyright 2015 Docker, Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + -------------------------------------------------------------------------------- Dependency : github.com/andrewkroh/goja Version: v0.0.0-20190128172624-dd2ac4456e20 @@ -10176,11 +10377,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : github.com/go-logr/logr -Version: v1.2.4 +Version: v1.3.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/go-logr/logr@v1.2.4/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/go-logr/logr@v1.3.0/LICENSE: Apache License Version 2.0, January 2004 @@ -15082,11 +15283,11 @@ Contents of probable licence file $GOMODCACHE/github.com/prometheus/common@v0.44 -------------------------------------------------------------------------------- Dependency : github.com/prometheus/procfs -Version: v0.10.1 +Version: v0.11.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/prometheus/procfs@v0.10.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/prometheus/procfs@v0.11.1/LICENSE: Apache License Version 2.0, January 2004 @@ -17017,11 +17218,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- Dependency : go.elastic.co/apm/module/apmzap/v2 -Version: v2.4.4 +Version: v2.4.7 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmzap/v2@v2.4.4/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmzap/v2@v2.4.7/LICENSE: Apache License Version 2.0, January 2004 @@ -17228,11 +17429,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/apm/module/apmzap/v2 -------------------------------------------------------------------------------- Dependency : go.elastic.co/ecszap -Version: v1.0.1 +Version: v1.0.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.elastic.co/ecszap@v1.0.1/LICENSE: +Contents of probable licence file $GOMODCACHE/go.elastic.co/ecszap@v1.0.2/LICENSE: Apache License @@ -17439,11 +17640,11 @@ Contents of probable licence file $GOMODCACHE/go.elastic.co/ecszap@v1.0.1/LICENS -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/collector/semconv -Version: v0.81.0 +Version: v0.87.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/semconv@v0.81.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/semconv@v0.87.0/LICENSE: Apache License @@ -17651,11 +17852,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/collector/semc -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/otel/sdk -Version: v1.17.0 +Version: v1.21.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/sdk@v1.17.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/sdk@v1.21.0/LICENSE: Apache License Version 2.0, January 2004 @@ -17862,11 +18063,11 @@ Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/sdk@v1.17 -------------------------------------------------------------------------------- Dependency : go.opentelemetry.io/otel/trace -Version: v1.17.0 +Version: v1.21.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/trace@v1.17.0/LICENSE: +Contents of probable licence file $GOMODCACHE/go.opentelemetry.io/otel/trace@v1.21.0/LICENSE: Apache License Version 2.0, January 2004 @@ -18168,11 +18369,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- Dependency : golang.org/x/exp -Version: v0.0.0-20230713183714-613f0c0eb8a1 +Version: v0.0.0-20231127185646-65229373498e Licence type (autodetected): BSD-3-Clause -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/golang.org/x/exp@v0.0.0-20230713183714-613f0c0eb8a1/LICENSE: +Contents of probable licence file $GOMODCACHE/golang.org/x/exp@v0.0.0-20231127185646-65229373498e/LICENSE: Copyright (c) 2009 The Go Authors. All rights reserved. diff --git a/README.md b/README.md index 349684aef62..aab51704333 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ For questions and feature requests, visit the [discussion forum](https://discuss ## Getting Started -To get started with APM, see our [Quick start guide](https://www.elastic.co/guide/en/apm/get-started/current/install-and-run.html). +To get started with APM, see our [Quick start guide](https://www.elastic.co/guide/en/apm/guide/current/apm-quick-start.html). ## APM Server Development @@ -61,7 +61,7 @@ To run APM Server with debugging output enabled, run: ``` APM Server expects index templates, ILM policies, and ingest pipelines to be set up externally. -This should be done by [installing the APM integration](https://www.elastic.co/guide/en/fleet/current/fleet-quick-start-traces.html#add-apm-integration). +This should be done by [installing the APM integration](https://www.elastic.co/guide/en/observability/current/traces-get-started.html#add-apm-integration). When running APM Server directly, it is only necessary to install the integration and not to run an Elastic Agent. #### Tilt @@ -139,7 +139,7 @@ When complete, packages can be found in `build/distributions/`. ### Building docker packages -To customize image configuration, see [the docs](https://www.elastic.co/guide/en/apm/server/current/running-on-docker.html). +To customize image configuration, see [the docs](https://www.elastic.co/guide/en/apm/guide/current/running-on-docker.html). To build docker images from source, run: @@ -154,5 +154,13 @@ Building pre-release images can be done by running `make package-docker-snapshot ## Documentation -[Documentation](https://www.elastic.co/guide/en/apm/server/current/index.html) -for the APM Server can be found in the `docs` and `dev_docs` folders. +Documentation for the APM Server can be found in the [Observability guide's APM section](https://www.elastic.co/guide/en/observability/master/apm.html). Most documentation files live in the [elastic/observability-docs](https://github.com/elastic/observability-docs) repo's [`docs/en/observability/apm/` directory](https://github.com/elastic/observability-docs/tree/main/docs/en/observability/apm). + +However, the following content lives in this repo: + +* The **changelog** page listing all release notes is in [`CHANGELOG.asciidoc`](/CHANGELOG.asciidoc). +* Each minor version's **release notes** are documented in individual files in the [`changelogs/`](/changelogs/) directory. +* A list of all **breaking changes** are documented in [`changelogs/all-breaking-changes.asciidoc`](/changelogs/all-breaking-changes.asciidoc). +* **Sample data sets** that are injected into the docs are in the [`docs/data/`](/docs/data/) directory. +* **Specifications** that are injected into the docs are in the [`docs/spec/`](/docs/spec/) directory. + diff --git a/apm-server.docker.yml b/apm-server.docker.yml index 60ddf447b88..f5fba96ea9d 100644 --- a/apm-server.docker.yml +++ b/apm-server.docker.yml @@ -170,14 +170,10 @@ apm-server: # Note that values configured without a time unit will be interpreted as seconds. #cache.expiration: 5m - # Source maps may be fetched from Elasticsearch by using the output.elasticsearch configuration, - # and running apm-server standalone. + # Source map retrieval location. # - # Note: fetching source maps from Elasticsearch is not supported if apm-server is being managed by - # Fleet. This configuration is only applicable to standalone apm-servers, for backwards compatibility - # with source maps stored in Elasticsearch by older versions of apm-server. New source maps must now - # be uploaded via Kibana, and `apm-server.kibana` configured in standalone apm-servers for fetching - # them. + # If using an output other than Elasticsearch that is writing to Elasticsearch, you must + # set this option. If not set, the standard output elasticsearch configuration is used. #elasticsearch: # Array of hosts to connect to. # Scheme and port can be left out and will be set to the default (`http` and `9200`). diff --git a/apmpackage/apm/data_stream/app_logs/elasticsearch/ilm/default_policy.json b/apmpackage/apm/data_stream/app_logs/elasticsearch/ilm/default_policy.json index 8a46dcb692a..acf21096844 100644 --- a/apmpackage/apm/data_stream/app_logs/elasticsearch/ilm/default_policy.json +++ b/apmpackage/apm/data_stream/app_logs/elasticsearch/ilm/default_policy.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/app_metrics/elasticsearch/ilm/default_policy.json b/apmpackage/apm/data_stream/app_metrics/elasticsearch/ilm/default_policy.json index 3f5bf4b44b8..c1cdcca3f7d 100644 --- a/apmpackage/apm/data_stream/app_metrics/elasticsearch/ilm/default_policy.json +++ b/apmpackage/apm/data_stream/app_metrics/elasticsearch/ilm/default_policy.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/error_logs/elasticsearch/ilm/default_policy.json b/apmpackage/apm/data_stream/error_logs/elasticsearch/ilm/default_policy.json index 8a46dcb692a..acf21096844 100644 --- a/apmpackage/apm/data_stream/error_logs/elasticsearch/ilm/default_policy.json +++ b/apmpackage/apm/data_stream/error_logs/elasticsearch/ilm/default_policy.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/error_logs/fields/fields.yml b/apmpackage/apm/data_stream/error_logs/fields/fields.yml index c24ddc4e677..ccc71027862 100644 --- a/apmpackage/apm/data_stream/error_logs/fields/fields.yml +++ b/apmpackage/apm/data_stream/error_logs/fields/fields.yml @@ -6,6 +6,12 @@ - name: error.culprit type: keyword description: Function call which was the primary perpetrator of this event. +- name: error.custom + type: flattened + description: Custom error context. +- name: error.exception.attributes + type: flattened + description: Arbitrary attributes associated with the exception. - name: error.exception.code type: keyword description: The error code set when the error happened, e.g. database error code. @@ -18,6 +24,10 @@ - name: error.exception.module type: keyword description: The module namespace of the original error. +- name: error.exception.stacktrace + type: flattened + description: | + Stacktrace identifying the instrumented source code corresponding to the error. - name: error.exception.type type: keyword description: The type of the original error, e.g. the Java exception class name. @@ -42,8 +52,27 @@ type: keyword description: | A parametrized message. E.g. 'Could not connect to %s'. The property message is still required, and should be equal to the param_message, but with placeholders replaced. In some situations the param_message is used to group errors together. +- name: error.log.stacktrace + type: flattened + description: | + Stacktrace identifying the instrumented source code corresponding to the error. +- name: http.request.body + type: flattened + description: | + The original body of the monitored HTTP request. +- name: http.request.env + type: object + dynamic: true + description: | + The CGI-like environment variables of the monitored HTTP request. +- name: http.request.cookies + type: object + dynamic: true + description: | + The cookies of the monitored HTTP request. - name: http.request.headers type: object + dynamic: true description: | The canonical headers of the monitored HTTP request. - name: http.response.finished @@ -52,8 +81,13 @@ Used by the Node agent to indicate when in the response life cycle an error has occurred. - name: http.response.headers type: object + dynamic: true description: | The canonical headers of the monitored HTTP response. +- name: http.response.headers_sent + type: boolean + description: | + Used by the Node agent to indicate whether HTTP response headers were sent. - name: kubernetes.namespace type: keyword description: | diff --git a/apmpackage/apm/data_stream/internal_metrics/elasticsearch/ilm/default_policy.json b/apmpackage/apm/data_stream/internal_metrics/elasticsearch/ilm/default_policy.json index 3f5bf4b44b8..c1cdcca3f7d 100644 --- a/apmpackage/apm/data_stream/internal_metrics/elasticsearch/ilm/default_policy.json +++ b/apmpackage/apm/data_stream/internal_metrics/elasticsearch/ilm/default_policy.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/rum_traces/elasticsearch/ilm/default_policy.json b/apmpackage/apm/data_stream/rum_traces/elasticsearch/ilm/default_policy.json index 3f5bf4b44b8..c1cdcca3f7d 100644 --- a/apmpackage/apm/data_stream/rum_traces/elasticsearch/ilm/default_policy.json +++ b/apmpackage/apm/data_stream/rum_traces/elasticsearch/ilm/default_policy.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.10m.json b/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.10m.json index 0c61ace104e..6e76da1b75e 100644 --- a/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.10m.json +++ b/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.10m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "14d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.1m.json b/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.1m.json index b38cbf7b32f..1f42f14f9c8 100644 --- a/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.1m.json +++ b/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.1m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "7d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.60m.json b/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.60m.json index e3cf396022f..8f7dc0e16bd 100644 --- a/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.60m.json +++ b/apmpackage/apm/data_stream/service_destination_interval_metrics/elasticsearch/ilm/default_policy.60m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.10m.json b/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.10m.json index 0c61ace104e..6e76da1b75e 100644 --- a/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.10m.json +++ b/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.10m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "14d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.1m.json b/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.1m.json index b38cbf7b32f..1f42f14f9c8 100644 --- a/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.1m.json +++ b/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.1m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "7d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.60m.json b/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.60m.json index e3cf396022f..8f7dc0e16bd 100644 --- a/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.60m.json +++ b/apmpackage/apm/data_stream/service_summary_interval_metrics/elasticsearch/ilm/default_policy.60m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json b/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json index 0c61ace104e..6e76da1b75e 100644 --- a/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json +++ b/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "14d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json b/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json index b38cbf7b32f..1f42f14f9c8 100644 --- a/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json +++ b/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "7d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json b/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json index e3cf396022f..8f7dc0e16bd 100644 --- a/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json +++ b/apmpackage/apm/data_stream/service_transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/traces/elasticsearch/ilm/default_policy.json b/apmpackage/apm/data_stream/traces/elasticsearch/ilm/default_policy.json index 8a46dcb692a..acf21096844 100644 --- a/apmpackage/apm/data_stream/traces/elasticsearch/ilm/default_policy.json +++ b/apmpackage/apm/data_stream/traces/elasticsearch/ilm/default_policy.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/traces/elasticsearch/ingest_pipeline/apm_data_stream_migration.yml b/apmpackage/apm/data_stream/traces/elasticsearch/ingest_pipeline/apm_data_stream_migration.yml deleted file mode 100644 index ce9480e5fbc..00000000000 --- a/apmpackage/apm/data_stream/traces/elasticsearch/ingest_pipeline/apm_data_stream_migration.yml +++ /dev/null @@ -1,42 +0,0 @@ ---- -description: | - Pipeline for migrating APM events from indices to data streams. - This pipeline is not used directly by apmserver; it is installed - for manually migrating legacy indices to data streams. -processors: - - pipeline: - name: observer_version - - pipeline: - name: observer_ids - - pipeline: - name: remove_ecs_version - - pipeline: - name: process_ppid - - script: - if: ctx.processor?.event == 'span' || ctx.processor?.event == 'transaction' - source: | - ctx.data_stream = ["type": "traces", "dataset": "apm", "namespace": "migrated"] - - script: - if: ctx.processor?.event == 'error' - source: | - ctx.data_stream = ["type": "logs", "dataset": "apm.error", "namespace": "migrated"] - - script: - if: ctx.processor?.event == 'metric' - source: | - String dataset; - if (ctx["metricset.name"] != "app") { - dataset = "apm.internal"; - } else { - String serviceName = ctx.service.name; - serviceName = serviceName.toLowerCase(); - serviceName = /[\\\/*?"<>| ,#:-]/.matcher(serviceName).replaceAll('_'); - dataset = "apm.app." + serviceName; - } - ctx.data_stream = ["type": "metrics", "dataset": dataset, "namespace": "migrated"]; - - set: - if: ctx.data_stream != null - field: _index - value: "{{data_stream.type}}-{{data_stream.dataset}}-{{data_stream.namespace}}" - - remove: - field: timeseries # remove timeseries.instance - ignore_missing: true diff --git a/apmpackage/apm/data_stream/traces/fields/fields.yml b/apmpackage/apm/data_stream/traces/fields/fields.yml index 94ec29db330..3d86d9434eb 100644 --- a/apmpackage/apm/data_stream/traces/fields/fields.yml +++ b/apmpackage/apm/data_stream/traces/fields/fields.yml @@ -56,8 +56,23 @@ type: keyword description: | The lambda function version. +- name: http.request.body + type: flattened + description: | + The original body of the monitored HTTP request. +- name: http.request.env + type: object + dynamic: true + description: | + The CGI-like environment variables of the monitored HTTP request. +- name: http.request.cookies + type: object + dynamic: true + description: | + The cookies of the monitored HTTP request. - name: http.request.headers type: object + dynamic: true description: | The canonical headers of the monitored HTTP request. - name: http.response.finished @@ -66,8 +81,14 @@ Used by the Node agent to indicate when in the response life cycle an error has occurred. - name: http.response.headers type: object + dynamic: true description: | The canonical headers of the monitored HTTP response. +- name: http.response.headers_sent + type: boolean + index: false + description: | + Used by the Node agent to indicate whether HTTP response headers were sent. - name: http.response.transfer_size type: long unit: byte @@ -221,10 +242,26 @@ type: long description: | Sum of the durations of the compressed spans, in microseconds. +- name: span.db.instance + type: keyword + description: | + Database instance. - name: span.db.link type: keyword description: | Database link. +- name: span.db.type + type: keyword + description: | + Database type. +- name: span.db.user.name + type: keyword + description: | + Database username. +- name: span.db.statement + type: keyword + description: | + Database statement. - name: span.db.rows_affected type: long description: | @@ -245,6 +282,18 @@ type: long description: | Duration of the span, in microseconds. +- name: span.message.body + type: keyword + description: The message body + index: false +- name: span.message.routing_key + type: keyword + description: The message routing key + index: false +- name: span.message.headers + type: object + dynamic: true + description: The message headers - name: span.message.age.ms type: long description: | @@ -257,6 +306,10 @@ type: keyword description: | Generic designation of a span in the scope of a transaction. +- name: span.stacktrace + type: flattened + description: | + Stacktrace identifying the instrumented source code corresponding to the span. - name: span.subtype type: keyword description: | @@ -279,6 +332,9 @@ type: long description: | Timestamp of the event in microseconds since Unix epoch. +- name: transaction.custom + type: flattened + description: Custom transaction context. - name: transaction.duration.us type: long description: | @@ -306,6 +362,18 @@ description: | A user-defined mapping of groups of marks in milliseconds. dynamic: true +- name: transaction.message.body + type: keyword + description: The message body + index: false +- name: transaction.message.routing_key + type: keyword + description: The message routing key + index: false +- name: transaction.message.headers + type: object + dynamic: true + description: The message headers - name: transaction.message.age.ms type: long description: | @@ -332,6 +400,9 @@ - name: transaction.span_count.dropped type: long description: The total amount of dropped spans for this transaction. +- name: transaction.span_count.started + type: long + description: The total amount of started spans for this transaction. - name: transaction.type type: keyword description: | diff --git a/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json b/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json index 0c61ace104e..6e76da1b75e 100644 --- a/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json +++ b/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.10m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "14d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json b/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json index b38cbf7b32f..1f42f14f9c8 100644 --- a/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json +++ b/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.1m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "7d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json b/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json index e3cf396022f..8f7dc0e16bd 100644 --- a/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json +++ b/apmpackage/apm/data_stream/transaction_interval_metrics/elasticsearch/ilm/default_policy.60m.json @@ -5,7 +5,7 @@ "actions": { "rollover": { "max_age": "30d", - "max_size": "50gb" + "max_primary_shard_size": "50gb" }, "set_priority": { "priority": 100 diff --git a/changelogs/8.11.asciidoc b/changelogs/8.11.asciidoc index 92e7df1cea9..3766e88ce73 100644 --- a/changelogs/8.11.asciidoc +++ b/changelogs/8.11.asciidoc @@ -1,6 +1,7 @@ [[release-notes-8.11]] == APM version 8.11 +<<<<<<<< HEAD:changelogs/8.11.asciidoc https://github.com/elastic/apm-server/compare/8.10\...8.11[View commits] * <> @@ -39,16 +40,26 @@ No significant changes. [float] ==== Breaking Changes - The `ecs.version` field has been removed from APM data streams {pull}11632[11632] +======== +https://github.com/elastic/apm-server/compare/8.12\...main[View commits] + +[float] +==== Breaking Changes +- Reverts a breaking change that ignored the beat name. This is visible in Stack Monitoring {pull}12176[12176] +>>>>>>>> feature/patch-release:changelogs/head.asciidoc [float] ==== Bug fixes -- Add back gzip support for grpc otlp endpoint {pull}11434[11434] -- Correctly mark jvm.memory.non_heap.pool.* and jvm.fd.* metrics as internal {pull}11303[11303] -- Fix tail-based sampling discarding low throughput and low sample rate traces {pull}11642[11642] -- Add memory based autoscaling for service destination aggregation groups {pull}11739[11739] + +[float] +==== Deprecations [float] ==== Added +<<<<<<<< HEAD:changelogs/8.11.asciidoc - Support and define DLM data retention period in the apmpackage {pull}11539[11539] - Expose new metrics into the local batch processor {pull}11582[11582] - Add geoip processing to app_logs ingest pipeline on `client.ip` {pull}11699[11699] +======== +- map OTel's `span.Status: Unset` to `event.outcome: success` instead of `event.outcome: unknown` +>>>>>>>> feature/patch-release:changelogs/head.asciidoc diff --git a/changelogs/8.12.asciidoc b/changelogs/8.12.asciidoc new file mode 100644 index 00000000000..94abff210f4 --- /dev/null +++ b/changelogs/8.12.asciidoc @@ -0,0 +1,30 @@ +[[release-notes-8.12]] +== APM version 8.12 + +https://github.com/elastic/apm-server/compare/8.11\...8.12[View commits] + +* <> + +[float] +[[release-notes-8.12.0]] +=== APM version 8.12.0 + +[float] +==== Breaking Changes +- The unsupported apm_data_stream_migration ingest pipeline has been removed {pull}12102[12102]. +- "publish_ready" is always false in the "GET /" response until events are received by apm-server {pull}12150[12150] + +[float] +==== Bug fixes +- Switch built-in ILM rollover policies from max_size to max_primary_shard_size {pull}11729[11729]. +- Handle empty request bodies gracefully {pull}12242[12242]. +- Wrap processor errors to provide more details {pull}12242[12242]. +- Require only one of exception.{type,message} for log exceptions {pull}12242[12242]. + +[float] +==== Added +- Update container base image to Ubuntu 22.04 {pull}11778[11778] +- Add support for returning partial success response in OTLP input {pull}11883[11883] +- Setting event timestamp from OTel observed timestamp when needed {pull}11935[11935] +- Field mappings have been added for various formerly unindexed fields {pull}12102[12102] +- We now assert that index templates are installed by attempting to create data streams {pull}12150[12150] diff --git a/dev_docs/RELEASES.md b/dev_docs/RELEASES.md index f16f9d73c08..4021fbe449f 100644 --- a/dev_docs/RELEASES.md +++ b/dev_docs/RELEASES.md @@ -9,7 +9,7 @@ For patch releases, only the version on the existing major and minor version bra ## Feature Freeze -* For patch releases, ensure all relevant backport PRs are merged. +* For patch releases, ensure all relevant backport PRs are merged. We use backport labels on PRs and automation to ensure labels are set. * Update Changelog @@ -30,9 +30,9 @@ For patch releases, only the version on the existing major and minor version bra Update versions and ensure that the `BEATS_VERSION` in the Makefile is updated, e.g. [#2803](https://github.com/elastic/apm-server/pull/2803/files). Trigger a new beats update, once the beats branch is also created. - Remove the [changelogs/head.asciidoc](https://github.com/elastic/apm-server/blob/main/changelogs/head.asciidoc) file from the release branch. + Remove the [changelogs/head.asciidoc](https://github.com/elastic/apm-server/blob/main/changelogs/head.asciidoc) file from the release branch. - * Main branch: + * Main branch: Update [.mergify.yml](https://github.com/elastic/apm-server/blob/main/.mergify.yml) with a new backport rule for the next version, and update versions to next minor version, e.g. [#2804](https://github.com/elastic/apm-server/pull/2804). @@ -86,7 +86,7 @@ For patch releases, only the version on the existing major and minor version bra ## When compatibility between Agents & Server changes -* Update the [agent/server compatibility matrix](https://github.com/elastic/apm-server/blob/main/docs/guide/agent-server-compatibility.asciidoc). +* Update the [agent/server compatibility matrix](https://github.com/elastic/observability-docs/blob/main/docs/en/observability/apm/agent-server-compatibility.asciidoc) in the elastic/observability repo. ## Templates diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000000..b1bb0e5c123 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,10 @@ +> [!IMPORTANT] +> As of 8.12, most documentation source files have moved to the [elastic/observability-docs](https://github.com/elastic/observability-docs) repo and been integrated into the Observability guide ([`docs/en/observability/apm/`](https://github.com/elastic/observability-docs/tree/main/docs/en/observability/apm)). +> +> However, the following content still lives in this repo: +> +> * The **changelog** page listing all release notes is in [`CHANGELOG.asciidoc`](/CHANGELOG.asciidoc). +> * Each minor version's **release notes** are documented in individual files in the [`changelogs/`](/changelogs/) directory. +> * A list of all **breaking changes** are documented in [`changelogs/all-breaking-changes.asciidoc`](/changelogs/all-breaking-changes.asciidoc). +> * **Sample data sets** that are injected into the docs are in the [`docs/data/`](/docs/data/) directory. +> * **Specifications** that are injected into the docs are in the [`docs/spec/`](/docs/spec/) directory. diff --git a/docs/agent-server-compatibility.asciidoc b/docs/agent-server-compatibility.asciidoc deleted file mode 100644 index d092b0450de..00000000000 --- a/docs/agent-server-compatibility.asciidoc +++ /dev/null @@ -1,51 +0,0 @@ -[[agent-server-compatibility]] -=== {apm-agent} compatibility - -The chart below outlines the compatibility between different versions of Elastic APM agents and extensions with the APM integration. - -[options="header"] -|==== -|Language |{apm-agent} version |APM integration version -// APM AWS Lambda extension -.1+|**APM AWS Lambda extension** -|`1.x` |≥ `8.2` - -// Go -.2+|**Go agent** -|`1.x` |≥ `6.5` -|`2.x` |≥ `6.5` - -// iOS -.1+|**iOS agent** -|`0.x` |≥ `7.14` - -// Java -.1+|**Java agent** -|`1.x`|≥ `6.5` - -// .NET -.1+|**.NET agent** -|`1.x` |≥ `6.5` - -// Node -.1+|**Node.js agent** -|`3.x` |≥ `6.6` - -// PHP -.1+|**PHP agent** -|`1.x` |≥ `7.0` - -// Python -.1+|**Python agent** -|`6.x` |≥ `6.6` - -// Ruby -.2+|**Ruby agent** -|`3.x` |≥ `6.5` -|`4.x` |≥ `6.5` - -// RUM -.2+|**JavaScript RUM agent** -|`4.x` |≥ `6.5` -|`5.x` |≥ `7.0` -|==== diff --git a/docs/anonymous-auth.asciidoc b/docs/anonymous-auth.asciidoc deleted file mode 100644 index d1b9bce778f..00000000000 --- a/docs/anonymous-auth.asciidoc +++ /dev/null @@ -1,63 +0,0 @@ -[[anonymous-auth]] -=== Anonymous authentication - -Elastic APM agents can send unauthenticated (anonymous) events to the APM Server. -An event is considered to be anonymous if no authentication token can be extracted from the incoming request. -The APM Server's default response to these these requests depends on its configuration: - -[options="header"] -|==== -|Configuration |Default -|An <> or <> is configured | Anonymous requests are rejected and an authentication error is returned. -|No API key or secret token is configured | Anonymous requests are accepted by the APM Server. -|==== - -In some cases, however, it makes sense to allow both authenticated and anonymous requests. -For example, it isn't possible to authenticate requests from front-end services as -the secret token or API key can't be protected. This is the case with the Real User Monitoring (RUM) -agent running in a browser, or the iOS/Swift agent running in a user application. -However, you still likely want to authenticate requests from back-end services. -To solve this problem, you can enable anonymous authentication in the APM Server to allow the -ingestion of unauthenticated client-side APM data while still requiring authentication for server-side services. - -[float] -[[anonymous-auth-config]] -=== Configuring anonymous auth for client-side services - -[NOTE] -==== -You can only enable and configure anonymous authentication if an <> or -<> is configured. If neither are configured, these settings will be ignored. -==== - -include::{tab-widget-dir}/anonymous-auth-widget.asciidoc[] - -[float] -[[derive-client-ip]] -=== Deriving an incoming request's `client.ip` address - -The remote IP address of an incoming request might be different -from the end-user's actual IP address, for example, because of a proxy. For this reason, -the APM Server attempts to derive the IP address of an incoming request from HTTP headers. -The supported headers are parsed in the following order: - -1. `Forwarded` -2. `X-Real-Ip` -3. `X-Forwarded-For` - -If none of these headers are present, the remote address for the incoming request is used. - -[float] -[[derive-client-ip-concerns]] -==== Using a reverse proxy or load balancer - -HTTP headers are easily modified; -it's possible for anyone to spoof the derived `client.ip` value by changing or setting, -for example, the value of the `X-Forwarded-For` header. -For this reason, if any of your clients are not trusted, -we recommend setting up a reverse proxy or load balancer in front of the APM Server. - -Using a proxy allows you to clear any existing IP-forwarding HTTP headers, -and replace them with one set by the proxy. -This prevents malicious users from cycling spoofed IP addresses to bypass the -APM Server's rate limiting feature. diff --git a/docs/api-config.asciidoc b/docs/api-config.asciidoc deleted file mode 100644 index ef78db2272d..00000000000 --- a/docs/api-config.asciidoc +++ /dev/null @@ -1,98 +0,0 @@ -[[api-config]] -=== Elastic APM agent configuration API - -APM Server exposes API endpoints that allow Elastic APM agents to query the APM Server for configuration changes. -More information on this feature is available in {kibana-ref}/agent-configuration.html[{apm-agent} configuration in {kib}]. - -[float] -[[api-config-endpoint]] -=== Agent configuration endpoints - -[options="header"] -|==== -|Name |Endpoint -|Agent configuration intake |`/config/v1/agents` -|RUM configuration intake |`/config/v1/rum/agents` -|==== - -The Agent configuration endpoints accepts both `HTTP GET` and `HTTP POST` requests. -If an <> or <> is configured, requests to this endpoint must be authenticated. - -[float] -[[api-config-api-get]] -==== HTTP GET - -`service.name` is a required query string parameter. - -[source,bash] ------------------------------------------------------------- -http(s)://{hostname}:{port}/config/v1/agents?service.name=SERVICE_NAME ------------------------------------------------------------- - -[float] -[[api-config-api-post]] -==== HTTP POST - -Encode parameters as a JSON object in the body. -`service.name` is a required parameter. - -[source,bash] ------------------------------------------------------------- -http(s)://{hostname}:{port}/config/v1/agents -{ - "service": { - "name": "test-service", - "environment": "all" - }, - "CAPTURE_BODY": "off" -} ------------------------------------------------------------- - -[float] -[[api-config-api-response]] -==== Responses - -* Successful - `200` -* APM Server is configured to fetch agent configuration from {es} but the configuration is invalid - `403` -* APM Server is starting up or {es} is unreachable - `503` - -[float] -[[api-config-api-example]] -==== Example request - -Example Agent configuration `GET` request including the service name "test-service": - -["source","sh",subs="attributes"] ---------------------------------------------------------------------------- -curl -i http://127.0.0.1:8200/config/v1/agents?service.name=test-service ---------------------------------------------------------------------------- - -Example Agent configuration `POST` request including the service name "test-service": - -["source","sh",subs="attributes"] ---------------------------------------------------------------------------- -curl -X POST http://127.0.0.1:8200/config/v1/agents \ - -H "Authorization: Bearer secret_token" \ - -H 'content-type: application/json' \ - -d '{"service": {"name": "test-service"}}' ---------------------------------------------------------------------------- - -[float] -[[api-config-api-ex-response]] -==== Example response - -["source","sh",subs="attributes"] ---------------------------------------------------------------------------- -HTTP/1.1 200 OK -Cache-Control: max-age=30, must-revalidate -Content-Type: application/json -Etag: "7b23d63c448a863fa" -Date: Mon, 24 Feb 2020 20:53:07 GMT -Content-Length: 98 - -{ - "capture_body": "off", - "transaction_max_spans": "500", - "transaction_sample_rate": "0.3" -} ---------------------------------------------------------------------------- diff --git a/docs/api-error.asciidoc b/docs/api-error.asciidoc deleted file mode 100644 index 22e3c9da4cb..00000000000 --- a/docs/api-error.asciidoc +++ /dev/null @@ -1,16 +0,0 @@ -[[api-error]] -==== Errors - -An error or a logged error message captured by an agent occurring in a monitored service. - -[float] -[[api-error-schema]] -==== Error Schema - -APM Server uses JSON Schema to validate requests. The specification for errors is defined on -{github_repo_link}/docs/spec/v2/error.json[GitHub] and included below: - -[source,json] ----- -include::./spec/v2/error.json[] ----- diff --git a/docs/api-event-example.asciidoc b/docs/api-event-example.asciidoc deleted file mode 100644 index 9297e327c78..00000000000 --- a/docs/api-event-example.asciidoc +++ /dev/null @@ -1,9 +0,0 @@ -[[api-event-example]] -==== Example request body - -A request body example containing one event for all currently supported event types. - -[source,json] ----- -include::./data/intake-api/generated/events.ndjson[] ----- diff --git a/docs/api-events.asciidoc b/docs/api-events.asciidoc deleted file mode 100644 index e83604972f5..00000000000 --- a/docs/api-events.asciidoc +++ /dev/null @@ -1,153 +0,0 @@ -[[api-events]] -=== Elastic APM events intake API - -NOTE: Most users do not need to interact directly with the events intake API. - -The events intake API is what we call the internal protocol that APM agents use to talk to the APM Server. -Agents communicate with the Server by sending events -- captured pieces of information -- in an HTTP request. -Events can be: - -* Transactions -* Spans -* Errors -* Metrics - -Each event is sent as its own line in the HTTP request body. -This is known as http://ndjson.org[newline delimited JSON (NDJSON)]. - -With NDJSON, agents can open an HTTP POST request and use chunked encoding to stream events to the APM Server -as soon as they are recorded in the agent. -This makes it simple for agents to serialize each event to a stream of newline delimited JSON. -The APM Server also treats the HTTP body as a compressed stream and thus reads and handles each event independently. - -See the <> to learn more about the different types of events. - -[[api-events-endpoint]] -[float] -=== Endpoints - -APM Server exposes the following endpoints for Elastic APM agent data intake: - -[options="header"] -|==== -|Name |Endpoint -|APM agent event intake |`/intake/v2/events` -|RUM event intake (v2) |`/intake/v2/rum/events` -|RUM event intake (v3) |`/intake/v3/rum/events` -|==== - -[[api-events-example]] -[float] -=== Request - -Send an `HTTP POST` request to the APM Server `intake/v2/events` endpoint: - -[source,bash] ------------------------------------------------------------- -http(s)://{hostname}:{port}/intake/v2/events ------------------------------------------------------------- - -From version `8.5.0` onwards, the APM Server supports asynchronous processing of batches. -To request asynchronous processing the `async` query parameter can be set in the POST requst -to the `intake/v2/events` endpoint: - -[source,bash] ------------------------------------------------------------- -http(s)://{hostname}:{port}/intake/v2/events?async=true ------------------------------------------------------------- - -NOTE: Since asynchronous processing defers some of the event processing to the -background and takes place after the client has closed the request, some errors -can't be communicated back to the client and are logged by the APM Server. -Furthermore, asynchronous processing requests will only be scheduled if the APM Server can -service the incoming request, requests that cannot be serviced will receive an internal error -`503` "queue is full" error. - -For <> send an `HTTP POST` request to the APM Server `intake/v3/rum/events` endpoint instead: - -[source,bash] ------------------------------------------------------------- -http(s)://{hostname}:{port}/intake/v3/rum/events ------------------------------------------------------------- - -[[api-events-response]] -[float] -=== Response - -On success, the server will respond with a 202 Accepted status code and no body. - -Keep in mind that events can succeed and fail independently of each other. Only if all events succeed does the server respond with a 202. - -[[api-events-errors]] -[float] -=== Errors - -There are two types of errors that the APM Server may return to an agent: - -* Event related errors (typically validation errors) -* Non-event related errors - -The APM Server processes events one after the other. -If an error is encountered while processing an event, -the error encountered as well as the document causing the error are added to an internal array. -The APM Server will only save 5 event related errors. -If it encounters more than 5 event related errors, -the additional errors will not be returned to agent. -Once all events have been processed, -the error response is sent. - -Some errors, not relating to specific events, -may terminate the request immediately. -For example: IP rate limit reached, wrong metadata, etc. -If at any point one of these errors is encountered, -it is added to the internal array and immediately returned. - -An example error response might look something like this: - -[source,json] ------------------------------------------------------------- -{ - "errors": [ - { - "message": "", <1> - "document": "" <2> - },{ - "message": "", - "document": "" - },{ - "message": "", - "document": "" - },{ - "message": "too many requests" <3> - }, - ], - "accepted": 2320 <4> -} ------------------------------------------------------------- - -<1> An event related error -<2> The document causing the error -<3> An immediately returning non-event related error -<4> The number of accepted events - -If you're developing an agent, these errors can be useful for debugging. - -[[api-events-schema-definition]] -[float] -=== Event API Schemas - -The APM Server uses a collection of JSON Schemas for validating requests to the intake API: - -* <> -* <> -* <> -* <> -* <> -* <> - -include::./api-metadata.asciidoc[] -include::./api-transaction.asciidoc[] -include::./api-span.asciidoc[] -include::./api-error.asciidoc[] -include::./api-metricset.asciidoc[] -include::./api-event-example.asciidoc[] diff --git a/docs/api-info.asciidoc b/docs/api-info.asciidoc deleted file mode 100644 index 3bd7544ed54..00000000000 --- a/docs/api-info.asciidoc +++ /dev/null @@ -1,39 +0,0 @@ -[[api-info]] -=== APM Server information API - -The APM Server exposes an API endpoint to query general server information. -This lightweight endpoint is useful as a server up/down health check. - -[float] -[[api-info-endpoint]] -=== Server Information endpoint - -Send an `HTTP GET` request to the server information endpoint: - -[source,bash] ------------------------------------------------------------- -http(s)://{hostname}:{port}/ ------------------------------------------------------------- - -This endpoint always returns an HTTP 200. - -If <> or a <> is configured, requests to this endpoint must be authenticated. - -[float] -[[api-info-examples]] -==== Example - -Example APM Server information request: - -["source","sh",subs="attributes"] ---------------------------------------------------------------------------- -curl -X POST http://127.0.0.1:8200/ \ - -H "Authorization: Bearer secret_token" - -{ - "build_date": "2021-12-18T19:59:06Z", - "build_sha": "24fe620eeff5a19e2133c940c7e5ce1ceddb1445", - "publish_ready": true, - "version": "{version}" -} ---------------------------------------------------------------------------- diff --git a/docs/api-jaeger.asciidoc b/docs/api-jaeger.asciidoc deleted file mode 100644 index af4a8add47c..00000000000 --- a/docs/api-jaeger.asciidoc +++ /dev/null @@ -1,14 +0,0 @@ -[[api-jaeger]] -=== Jaeger event intake - -Elastic APM natively supports Jaeger, an open-source, distributed tracing system. -<>. - -**Jaeger/gRPC paths** - -[options="header"] -|==== -|Name |Endpoint -|Jaeger span intake |`/jaeger.api_v2.CollectorService/PostSpans` -|Sampling endpoint |`/jaeger.api_v2.SamplingManager/GetSamplingStrategy` -|==== \ No newline at end of file diff --git a/docs/api-keys.asciidoc b/docs/api-keys.asciidoc deleted file mode 100644 index 418724db856..00000000000 --- a/docs/api-keys.asciidoc +++ /dev/null @@ -1,321 +0,0 @@ -[[api-key]] -=== API keys - -IMPORTANT: API keys are sent as plain-text, -so they only provide security when used in combination with <>. - -When enabled, API keys are used to authorize requests to the APM Server. -API keys are not applicable for APM agents running on clients, like the RUM agent, -as there is no way to prevent them from being publicly exposed. - -You can assign one or more unique privileges to each API key: - -* *Agent configuration* (`config_agent:read`): Required for agents to read -{kibana-ref}/agent-configuration.html[Agent configuration remotely]. -* *Ingest* (`event:write`): Required for ingesting agent events. - -To secure the communication between APM Agents and the APM Server with API keys, -make sure <> is enabled, then complete these steps: - -. <> -. <> -. <> -. <> - -[[enable-api-key]] -[float] -=== Enable API keys - -include::{tab-widget-dir}/api-key-widget.asciidoc[] - -[[create-api-key-user]] -[float] -=== Create an API key user in {kib} - -API keys can only have the same or lower access rights than the user that creates them. -Instead of using a superuser account to create API keys, you can create a role with the minimum required -privileges. - -The user creating an {apm-agent} API key must have at least the `manage_own_api_key` cluster privilege -and the APM application-level privileges that it wishes to grant. -In addition, when creating an API key from the {apm-app}, -you'll need the appropriate {kib} Space and Feature privileges. - -The example below uses the {kib} {kibana-ref}/role-management-api.html[role management API] -to create a role named `apm_agent_key_role`. - -[source,js] ----- -POST /_security/role/apm_agent_key_role -{ - "cluster": [ "manage_own_api_key" ], - "applications": [ - { - "application":"apm", - "privileges":[ - "event:write", - "config_agent:read" - ], - "resources":[ "*" ] - }, - { - "application":"kibana-.kibana", - "privileges":[ "feature_apm.all" ], - "resources":[ "space:default" ] <1> - } - ] -} ----- -<1> This example assigns privileges for the default space. - -Assign the newly created `apm_agent_key_role` role to any user that wishes to create {apm-agent} API keys. - -[[create-an-api-key]] -[float] -=== Create an API key in the {apm-app} - -The {apm-app} has a built-in workflow that you can use to easily create and view {apm-agent} API keys. -Only API keys created in the {apm-app} will show up here. - -Using a superuser account, or a user with the role created in the previous step, -open {kib} and navigate to **{observability}** > **APM** > **Settings** > **Agent keys**. -Enter a name for your API key and select at least one privilege. - -For example, to create an API key that can be used to ingest APM events -and read agent central configuration, select `config_agent:read` and `event:write`. - -// lint ignore apm-agent -Click **Create APM Agent key** and copy the Base64 encoded API key. -You will need this for the next step, and you will not be able to view it again. - -[role="screenshot"] -image::images/apm-ui-api-key.png[{apm-app} API key] - -[[agent-api-key]] -[float] -=== Set the API key in your APM agents - -You can now apply your newly created API keys in the configuration of each of your APM agents. -See the relevant agent documentation for additional information: - -// Not relevant for RUM and iOS -* *Go agent*: {apm-go-ref}/configuration.html#config-api-key[`ELASTIC_APM_API_KEY`] -* *.NET agent*: {apm-dotnet-ref}/config-reporter.html#config-api-key[`ApiKey`] -* *Java agent*: {apm-java-ref}/config-reporter.html#config-api-key[`api_key`] -* *Node.js agent*: {apm-node-ref}/configuration.html#api-key[`apiKey`] -* *PHP agent*: {apm-php-ref-v}/configuration-reference.html#config-api-key[`api_key`] -* *Python agent*: {apm-py-ref}/configuration.html#config-api-key[`api_key`] -* *Ruby agent*: {apm-ruby-ref}/configuration.html#config-api-key[`api_key`] - -[[configure-api-key-alternative]] -[float] -=== Alternate API key creation methods - -API keys can also be created and validated outside of {kib}: - -* <> -* <> - -[[create-api-key-workflow-apm-server]] -[float] -==== APM Server API key workflow - -This API creation method only works with the APM Server binary. - -deprecated::[8.6.0, Users should create API Keys through {kib} or the {es} REST API] - -APM Server provides a command line interface for creating, retrieving, invalidating, and verifying API keys. -Keys created using this method can only be used for communication with APM Server. - -[[create-api-key-subcommands]] -[float] -===== `apikey` subcommands - -include::{docdir}/command-reference.asciidoc[tag=apikey-subcommands] - -[[create-api-key-privileges]] -[float] -===== Privileges - -If privileges are not specified at creation time, the created key will have all privileges. - -* `--agent-config` grants the `config_agent:read` privilege -* `--ingest` grants the `event:write` privilege -* `--sourcemap` grants the `sourcemap:write` privilege - -[[create-api-key-workflow]] -[float] -===== Create an API key - -Create an API key with the `create` subcommand. - -The following example creates an API key with a `name` of `java-001`, -and gives the "agent configuration" and "ingest" privileges. - -["source","sh",subs="attributes"] ------ -{beatname_lc} apikey create --ingest --agent-config --name java-001 ------ - -The response will look similar to this: - -[source,console-result] --------------------------------------------------- -Name ........... java-001 -Expiration ..... never -Id ............. qT4tz28B1g59zC3uAXfW -API Key ........ rH55zKd5QT6wvs3UbbkxOA (won't be shown again) -Credentials .... cVQ0dHoyOEIxZzU5ekMzdUFYZlc6ckg1NXpLZDVRVDZ3dnMzVWJia3hPQQ== (won't be shown again) --------------------------------------------------- - -You should always verify the privileges of an API key after creating it. -Verification can be done using the `verify` subcommand. - -The following example verifies that the `java-001` API key has the "agent configuration" and "ingest" privileges. - -["source","sh",subs="attributes"] ------ -{beatname_lc} apikey verify --agent-config --ingest --credentials cVQ0dHoyOEIxZzU5ekMzdUFYZlc6ckg1NXpLZDVRVDZ3dnMzVWJia3hPQQ== ------ - -If the API key has the requested privileges, the response will look similar to this: - -[source,console-result] --------------------------------------------------- -Authorized for privilege "event:write"...: Yes -Authorized for privilege "config_agent:read"...: Yes --------------------------------------------------- - -To invalidate an API key, use the `invalidate` subcommand. -Due to {es} caching, there may be a delay between when this subcommand is executed and when it takes effect. - -The following example invalidates the `java-001` API key. - -["source","sh",subs="attributes"] ------ -{beatname_lc} apikey invalidate --name java-001 ------ - -The response will look similar to this: - -[source,console-result] --------------------------------------------------- -Invalidated keys ... qT4tz28B1g59zC3uAXfW -Error count ........ 0 --------------------------------------------------- - -A full list of `apikey` subcommands and flags is available in the <>. - -[[create-api-key-workflow-es]] -[float] -==== {es} API key workflow - -It is also possible to create API keys using the {es} -{ref}/security-api-create-api-key.html[create API key API]. - -This example creates an API key named `java-002`: - -[source,kibana] ----- -POST /_security/api_key -{ - "name": "java-002", <1> - "expiration": "1d", <2> - "role_descriptors": { - "apm": { - "applications": [ - { - "application": "apm", - "privileges": ["sourcemap:write", "event:write", "config_agent:read"], <3> - "resources": ["*"] - } - ] - } - } -} ----- -<1> The name of the API key -<2> The expiration time of the API key -<3> Any assigned privileges - -The response will look similar to this: - -[source,console-result] ----- -{ - "id" : "GnrUT3QB7yZbSNxKET6d", - "name" : "java-002", - "expiration" : 1599153532262, - "api_key" : "RhHKisTmQ1aPCHC_TPwOvw" -} ----- - -The `credential` string, which is what agents use to communicate with APM Server, -is a base64 encoded representation of the API key's `id:api_key`. -It can be created like this: - -[source,console-result] --------------------------------------------------- -echo -n GnrUT3QB7yZbSNxKET6d:RhHKisTmQ1aPCHC_TPwOvw | base64 --------------------------------------------------- - -You can verify your API key has been base64-encoded correctly with the -{ref}/security-api-authenticate.html[Authenticate API]: - -["source","sh",subs="attributes"] ------ -curl -H "Authorization: ApiKey R0gzRWIzUUI3eVpiU054S3pYSy06bXQyQWl4TlZUeEcyUjd4cUZDS0NlUQ==" localhost:9200/_security/_authenticate ------ - -If the API key has been encoded correctly, you'll see a response similar to the following: - -[source,console-result] ----- -{ - "username":"1325298603", - "roles":[], - "full_name":null, - "email":null, - "metadata":{ - "saml_nameid_format":"urn:oasis:names:tc:SAML:2.0:nameid-format:transient", - "saml(http://saml.elastic-cloud.com/attributes/principal)":[ - "1325298603" - ], - "saml_roles":[ - "superuser" - ], - "saml_principal":[ - "1325298603" - ], - "saml_nameid":"_7b0ab93bbdbc21d825edf7dca9879bd8d44c0be2", - "saml(http://saml.elastic-cloud.com/attributes/roles)":[ - "superuser" - ] - }, - "enabled":true, - "authentication_realm":{ - "name":"_es_api_key", - "type":"_es_api_key" - }, - "lookup_realm":{ - "name":"_es_api_key", - "type":"_es_api_key" - } -} ----- - -You can then use the APM Server CLI to verify that the API key has the requested privileges: - -["source","sh",subs="attributes"] ------ -{beatname_lc} apikey verify --credentials R25yVVQzUUI3eVpiU054S0VUNmQ6UmhIS2lzVG1RMWFQQ0hDX1RQd092dw== ------ - -If the API key has the requested privileges, the response will look similar to this: - -[source,console-result] ----- -Authorized for privilege "config_agent:read"...: Yes -Authorized for privilege "event:write"...: Yes -Authorized for privilege "sourcemap:write"...: Yes ----- diff --git a/docs/api-metadata.asciidoc b/docs/api-metadata.asciidoc deleted file mode 100644 index 04addb0c512..00000000000 --- a/docs/api-metadata.asciidoc +++ /dev/null @@ -1,66 +0,0 @@ -[[api-metadata]] -==== Metadata - -Every new connection to the APM Server starts with a `metadata` stanza. -This provides general metadata concerning the other objects in the stream. - -Rather than send this metadata information from the agent multiple times, -the APM Server hangs on to this information and applies it to other objects in the stream as necessary. - -TIP: Metadata is stored under `context` when viewing documents in {es}. - -* <> -* <> - -[[api-kubernetes-data]] -[float] -==== Kubernetes data - -APM agents automatically read Kubernetes data and send it to the APM Server. -In most instances, agents are able to read this data from inside the container. -If this is not the case, or if you wish to override this data, you can set environment variables for the agents to read. -These environment variable are set via the Kubernetes https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-pod-fields-as-values-for-environment-variables[Downward API]. -Here's how you would add the environment variables to your Kubernetes pod spec: - -[source,yaml] ----- - - name: KUBERNETES_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: KUBERNETES_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: KUBERNETES_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: KUBERNETES_POD_UID - valueFrom: - fieldRef: - fieldPath: metadata.uid ----- - -The table below maps these environment variables to the APM metadata event field: - -[options="header"] -|===== -|Environment variable |Metadata field name -| `KUBERNETES_NODE_NAME` |system.kubernetes.node.name -| `KUBERNETES_POD_NAME` |system.kubernetes.pod.name -| `KUBERNETES_NAMESPACE` |system.kubernetes.namespace -| `KUBERNETES_POD_UID` |system.kubernetes.pod.uid -|===== - -[[api-metadata-schema]] -[float] -==== Metadata Schema - -APM Server uses JSON Schema to validate requests. The specification for metadata is defined on -{github_repo_link}/docs/spec/v2/metadata.json[GitHub] and included below: - -[source,json] ----- -include::./spec/v2/metadata.json[] ----- \ No newline at end of file diff --git a/docs/api-metricset.asciidoc b/docs/api-metricset.asciidoc deleted file mode 100644 index d59ea85d460..00000000000 --- a/docs/api-metricset.asciidoc +++ /dev/null @@ -1,16 +0,0 @@ -[[api-metricset]] -==== Metrics - -Metrics contain application metric data captured by an {apm-agent}. - -[[api-metricset-schema]] -[float] -==== Metric Schema - -APM Server uses JSON Schema to validate requests. The specification for metrics is defined on -{github_repo_link}/docs/spec/v2/metricset.json[GitHub] and included below: - -[source,json] ----- -include::./spec/v2/metricset.json[] ----- diff --git a/docs/api-otlp.asciidoc b/docs/api-otlp.asciidoc deleted file mode 100644 index 99f583c4669..00000000000 --- a/docs/api-otlp.asciidoc +++ /dev/null @@ -1,37 +0,0 @@ -[[api-otlp]] -=== OpenTelemetry intake API - -APM Server supports receiving traces, metrics, and logs over the -https://opentelemetry.io/docs/specs/otlp/[OpenTelemetry Protocol (OTLP)]. -OTLP is the default transfer protocol for OpenTelemetry and is supported natively by APM Server. - -APM Server supports two OTLP communication protocols on the same port: - -* OTLP/HTTP (protobuf) -* OTLP/gRPC - -[discrete] -=== OTLP/gRPC paths - -[options="header"] -|==== -|Name |Endpoint -|OTLP metrics intake |`/opentelemetry.proto.collector.metrics.v1.MetricsService/Export` -|OTLP trace intake |`/opentelemetry.proto.collector.trace.v1.TraceService/Export` -|OTLP logs intake |`/opentelemetry.proto.collector.logs.v1.LogsService/Export` -|==== - -[discrete] -==== OTLP/HTTP paths - -[options="header"] -|==== -|Name |Endpoint -|OTLP metrics intake |`/v1/metrics` -|OTLP trace intake |`/v1/traces` -|OTLP logs intake |`/v1/logs` -|==== - -TIP: See our OpenTelemetry documentation to learn how to send data to the APM Server from an -<> or -<>. diff --git a/docs/api-span.asciidoc b/docs/api-span.asciidoc deleted file mode 100644 index 96d75d31d75..00000000000 --- a/docs/api-span.asciidoc +++ /dev/null @@ -1,16 +0,0 @@ -[[api-span]] -==== Spans - -Spans are events captured by an agent occurring in a monitored service. - -[[api-span-schema]] -[float] -==== Span Schema - -APM Server uses JSON Schema to validate requests. The specification for spans is defined on -{github_repo_link}/docs/spec/v2/span.json[GitHub] and included below: - -[source,json] ----- -include::./spec/v2/span.json[] ----- diff --git a/docs/api-transaction.asciidoc b/docs/api-transaction.asciidoc deleted file mode 100644 index 758496ebcb2..00000000000 --- a/docs/api-transaction.asciidoc +++ /dev/null @@ -1,16 +0,0 @@ -[[api-transaction]] -==== Transactions - -Transactions are events corresponding to an incoming request or similar task occurring in a monitored service. - -[[api-transaction-schema]] -[float] -==== Transaction Schema - -APM Server uses JSON Schema to validate requests. The specification for transactions is defined on -{github_repo_link}/docs/spec/v2/transaction.json[GitHub] and included below: - -[source,json] ----- -include::./spec/v2/transaction.json[] ----- diff --git a/docs/api.asciidoc b/docs/api.asciidoc deleted file mode 100644 index 61e36d21a7a..00000000000 --- a/docs/api.asciidoc +++ /dev/null @@ -1,16 +0,0 @@ -[[api]] -== API - -The APM Server exposes endpoints for: - -* <> -* <> -* <> -* <> -* <> - -include::./api-info.asciidoc[] -include::./api-events.asciidoc[] -include::./api-config.asciidoc[] -include::./api-otlp.asciidoc[] -include::./api-jaeger.asciidoc[] diff --git a/docs/apm-breaking.asciidoc b/docs/apm-breaking.asciidoc deleted file mode 100644 index 58335f86b1b..00000000000 --- a/docs/apm-breaking.asciidoc +++ /dev/null @@ -1,289 +0,0 @@ -:issue: https://github.com/elastic/apm-server/issues/ -:pull: https://github.com/elastic/apm-server/pull/ - -[[apm-breaking]] -=== Breaking Changes - -This section describes the breaking changes and deprecations introduced in this release -and previous minor versions. - -// tag::811-bc[] -[float] -[[breaking-changes-8.11]] -=== 8.11 - -The following breaking changes are introduced in APM version 8.11.0: - -- The `ecs.version` field has been removed from APM data streams. -This change should not impact most users as this field is not used by the APM UI. -For more details, see https://github.com/elastic/apm-server/pull/11632[PR #11632] -// end::811-bc[] - -// tag::810-bc[] -[float] -[[breaking-changes-8.10]] -=== 8.10 - -The following breaking changes are introduced in APM version 8.10.0: - -- Aggregated metrics now consider global labels to be part of a service's identity, and high cardinality global labels may cause services to be obscured. -For more details, see https://github.com/elastic/apm-server/pull/11386[PR #11386]. - -- Event protobuf encoding for tail-based sampling changed to a more efficient encoding for event timestamp and duration -For more details, see https://github.com/elastic/apm-server/pull/11386[PR #11386]. -// end::810-bc[] - -// tag::87-bc[] -[float] -[[breaking-changes-8.7]] -=== 8.7 - -The following breaking changes and deprecations are introduced in APM version 8.7.0: - -- `transaction.failure_count` has been removed. `transaction.success_count` type has changed to `aggregated_metric_double`. -For more details, see https://github.com/elastic/apm-server/pull/9791[PR #9791]. - -- `transaction.success_count` has been moved to `event.success_count`. -For more details, see https://github.com/elastic/apm-server/pull/9819[PR #9819]. - -- Stopped indexing transaction metrics to `metrics-apm.internal`. -For more details, see https://github.com/elastic/apm-server/pull/9846[PR #9846]. - -- Stopped indexing span destination metrics to `metrics-apm.internal`. -For more details, see https://github.com/elastic/apm-server/pull/9926[PR #9926]. - -- `apmserver.aggregation.txmetrics.overflowed` metric has been renamed to `apmserver.aggregation.txmetrics.overflowed.total`. -For more details, see https://github.com/elastic/apm-server/pull/10330[PR #10330]. - -- Elasticsearch source mapping credentials now require access to the `.apm-source-map` index. -For more details, see https://github.com/elastic/apm-server/pull/9722[PR #9722]. - -- Changed APM Server default host to `127.0.0.1`. -For more details, see https://github.com/elastic/apm-server/pull/9877[PR #9877]. -// end::87-bc[] - -// tag::86-bc[] -[float] -[[breaking-changes-8.6]] -=== 8.6 - -The following breaking changes and deprecations are introduced in APM version 8.6.0: - -[float] -==== `apm-server.decoder.*` no longer recorded -The stack monitoring metrics, `apm-server.decoder.*`, are no longer recorded. -These metrics were not used by stack monitoring, so there should be no noticeable change. - -For more details, see https://github.com/elastic/apm-server/pull/9210[PR #9210]. - -[float] -==== `context.http.response.*_size` fields now enforce integer values -New field mappings enforce integer values for `context.http.response.*_size`. -The fields are mapped with `index: false` to minimize storage overhead. - -For more details, see https://github.com/elastic/apm-server/pull/9429[PR #9429]. - -[float] -==== `observer.id` and `observer.ephemeral_id` removed - -`observer.id` and `observer.ephemeral_id` are no longer added to APM documents. -The APM UI does not currently rely on these field, so there should be no noticeable change. - -For more details, see https://github.com/elastic/apm-server/pull/9412[PR #9412]. - -[float] -==== `timeseries.instance` removed -`timeseries.instance` has been removed from transaction metrics docs. -The APM UI did not use this field, so there should be no noticeable change. - -For more details, see https://github.com/elastic/apm-server/pull/9565[PR #9565]. - -// end::86-bc[] - -[float] -[[breaking-changes-8.2]] -=== 8.2 - -// tag::82-bc[] -The following breaking changes are introduced in APM version 8.2.0: - -[float] -==== APM Server now emits events with `event.duration` - -APM Server no longer emits events with a `transaction.duration.us` or `span.duration.us`. -Instead, events are emitted with an `event.duration`. -An ingest pipeline sets the legacy `.duration.us` field and removes the `event.duration`. - -This change will impact users who are not using APM Server's {es} output or the packaged ingest pipeline. -For details, see https://github.com/elastic/apm-server/pull/7261[PR #7261]. - -[float] -==== Removed `observer.version_major` - -The field `observer.version_major` is non-standard and existed only for the APM UI to filter out legacy docs (versions <7.0). -This check is no longer performed, so the field has been removed. - -For details, see https://github.com/elastic/apm-server/pull/7399[PR #7399]. - -[float] -==== APM Server no longer ships with System V init scripts or the go-daemon wrapper - -As of version 8.1.0, all Linux distributions supported by APM Server support systemd. -As a result, APM Server no longer ships with System V init scripts or the go-daemon wrapper; use systemd instead. - -For details, see https://github.com/elastic/apm-server/pull/7576[PR #7576]. - -[float] -==== Deprecated 32-bit architectures - -APM Server support for 32-bit architectures has been deprecated and will be removed in a future release. -// end::82-bc[] - -[float] -[[breaking-changes-8.1]] -=== 8.1 - -// tag::81-bc[] -There are no breaking changes in APM. -// end::81-bc[] - -[float] -[[breaking-changes-8.0]] -=== 8.0 - -// tag::80-bc[] -The following breaking changes are introduced in APM version 8.0. - -[float] -==== Indices are now manged by {fleet} - -All index management has been removed from APM Server; -{fleet} is now entirely responsible for setting up index templates, index lifecycle polices, -and index pipelines. - -As a part of this change, the following settings have been removed: - -* `apm-server.ilm.*` -* `apm-server.register.ingest.pipeline.*` -* `setup.*` - -[float] -==== Data streams by default - -APM Server now only writes to well-defined data streams; -writing to classic indices is no longer supported. - -As a part of this change, the following settings have been removed: - -* `apm-server.data_streams.enabled` -* `output.elasticsearch.index` -* `output.elasticsearch.indices` -* `output.elasticsearch.pipeline` -* `output.elasticsearch.pipelines` - -[float] -==== New {es} output - -APM Server has a new {es} output implementation; it is no longer necessary to manually -tune the output of APM Server. - -As a part of this change, the following settings have been removed: - -* `output.elasticsearch.bulk_max_size` -* `output.elasticsearch.worker` -* `queue.*` - -[float] -==== New source map upload endpoint - -The source map upload endpoint has been removed from APM Server. -Source maps should now be uploaded directly to {kib} instead. - -[float] -==== Legacy Jaeger endpoints have been removed - -The legacy Jaeger gRPC and HTTP endpoints have been removed from APM Server. - -As a part of this change, the following settings have been removed: - -* `apm-server.jaeger` - -[float] -==== Homebrew no longer supported - -APM Server no longer supports installation via Homebrew. - -[float] -==== All removed and changed settings - -Below is a list of all **removed settings** (in alphabetical order) for -users upgrading a standalone APM Server to {stack} version 8.0. - -[source,yml] ----- -apm-server.data_streams.enabled -apm-server.ilm.* -apm-server.jaeger -apm-server.register.ingest.pipeline.* -apm-server.sampling.keep_unsampled -output.elasticsearch.bulk_max_size -output.elasticsearch.index -output.elasticsearch.indices -output.elasticsearch.pipeline -output.elasticsearch.pipelines -output.elasticsearch.worker -queue.* -setup.* ----- - -Below is a list of **renamed settings** (in alphabetical order) for -users upgrading a standalone APM Server to {stack} version 8.0. - -[source,yml] ----- -previous setting --> new setting - -apm-server.api_key --> apm-server.auth.api_key -apm-server.instrumentation --> instrumentation -apm-server.rum.allowed_service --> apm-server.auth.anonymous.allow_service -apm-server.rum.event_rate --> apm-server.auth.anonymous.rate_limit -apm-server.secret_token --> apm-server.auth.secret_token ----- - -[float] -==== Supported {ecloud} settings - -Below is a list of all **supported settings** (in alphabetical order) for -users upgrading an {ecloud} standalone cluster to {stack} version 8.0. -Any previously supported settings not listed below will be removed when upgrading. - -[source,yml] ----- -apm-server.agent.config.cache.expiration -apm-server.aggregation.transactions.* -apm-server.auth.anonymous.allow_agent -apm-server.auth.anonymous.allow_service -apm-server.auth.anonymous.rate_limit.event_limit -apm-server.auth.anonymous.rate_limit.ip_limit -apm-server.auth.api_key.enabled -apm-server.auth.api_key.limit -apm-server.capture_personal_data -apm-server.default_service_environment -apm-server.max_event_size -apm-server.rum.allow_headers -apm-server.rum.allow_origins -apm-server.rum.enabled -apm-server.rum.exclude_from_grouping -apm-server.rum.library_pattern -apm-server.rum.source_mapping.enabled -apm-server.rum.source_mapping.cache.expiration -logging.level -logging.selectors -logging.metrics.enabled -logging.metrics.period -max_procs -output.elasticsearch.flush_bytes -output.elasticsearch.flush_interval ----- - -// end::80-bc[] diff --git a/docs/apm-distributed-tracing.asciidoc b/docs/apm-distributed-tracing.asciidoc deleted file mode 100644 index 4cbec26ed6b..00000000000 --- a/docs/apm-distributed-tracing.asciidoc +++ /dev/null @@ -1,131 +0,0 @@ -[[apm-distributed-tracing]] -=== Distributed tracing - -A `trace` is a group of <> and <> with a common root. -Each `trace` tracks the entirety of a single request. -When a `trace` travels through multiple services, as is common in a microservice architecture, -it is known as a distributed trace. - -[float] -[[why-distributed-tracing]] -=== Why is distributed tracing important? - -Distributed tracing enables you to analyze performance throughout your microservice architecture -by tracing the entirety of a request -- from the initial web request on your front-end service -all the way to database queries made on your back-end services. - -Tracking requests as they propagate through your services provides an end-to-end picture of -where your application is spending time, where errors are occurring, and where bottlenecks are forming. -Distributed tracing eliminates individual service's data silos and reveals what's happening outside of -service borders. - -For supported technologies, distributed tracing works out-of-the-box, with no additional configuration required. - -[float] -[[how-distributed-tracing]] -=== How distributed tracing works - -Distributed tracing works by injecting a custom `traceparent` HTTP header into outgoing requests. -This header includes information, like `trace-id`, which is used to identify the current trace, -and `parent-id`, which is used to identify the parent of the current span on incoming requests -or the current span on an outgoing request. - -When a service is working on a request, it checks for the existence of this HTTP header. -If it's missing, the service starts a new trace. -If it exists, the service ensures the current action is added as a child of the existing trace, -and continues to propagate the trace. - -[float] -[[trace-propagation]] -==== Trace propagation examples - -In this example, Elastic's Ruby agent communicates with Elastic's Java agent. -Both support the `traceparent` header, and trace data is successfully propagated. - -// lint ignore traceparent -image::./images/dt-trace-ex1.png[How traceparent propagation works] - -In this example, Elastic's Ruby agent communicates with OpenTelemetry's Java agent. -Both support the `traceparent` header, and trace data is successfully propagated. - -// lint ignore traceparent -image::./images/dt-trace-ex2.png[How traceparent propagation works] - -In this example, the trace meets a piece of middleware that doesn't propagate the `traceparent` header. -The distributed trace ends and any further communication will result in a new trace. - -// lint ignore traceparent -image::./images/dt-trace-ex3.png[How traceparent propagation works] - - -[float] -[[w3c-tracecontext-spec]] -==== W3C Trace Context specification - -All Elastic agents now support the official W3C Trace Context specification and `traceparent` header. -See the table below for the minimum required agent version: - -[options="header"] -|==== -|Agent name |Agent Version -|**Go Agent**| ≥`1.6` -|**Java Agent**| ≥`1.14` -|**.NET Agent**| ≥`1.3` -|**Node.js Agent**| ≥`3.4` -|**PHP Agent**| ≥`1.0` -|**Python Agent**| ≥`5.4` -|**Ruby Agent**| ≥`3.5` -|**RUM Agent**| ≥`5.0` -|==== - -NOTE: Older Elastic agents use a unique `elastic-apm-traceparent` header. -For backward-compatibility purposes, new versions of Elastic agents still support this header. - -[float] -[[visualize-distributed-tracing]] -=== Visualize distributed tracing - -The {apm-app}'s timeline visualization provides a visual deep-dive into each of your application's traces: - -[role="screenshot"] -image::./images/apm-distributed-tracing.png[Distributed tracing in the APM UI] - -[float] -[[manual-distributed-tracing]] -=== Manual distributed tracing - -Elastic agents automatically propagate distributed tracing context for supported technologies. -If your service communicates over a different, unsupported protocol, -you can manually propagate distributed tracing context from a sending service to a receiving service -with each agent's API. - -[float] -[[distributed-tracing-outgoing]] -==== Add the `traceparent` header to outgoing requests - -Sending services must add the `traceparent` header to outgoing requests. - --- -include::{tab-widget-dir}/distributed-trace-send-widget.asciidoc[] --- - -[float] -[[distributed-tracing-incoming]] -==== Parse the `traceparent` header on incoming requests - -Receiving services must parse the incoming `traceparent` header, -and start a new transaction or span as a child of the received context. - --- -include::{tab-widget-dir}/distributed-trace-receive-widget.asciidoc[] --- - -[float] -[[distributed-tracing-rum]] -=== Distributed tracing with RUM - -Some additional setup may be required to correlate requests correctly with the Real User Monitoring (RUM) agent. - -See the {apm-rum-ref}/distributed-tracing-guide.html[RUM distributed tracing guide] -for information on enabling cross-origin requests, setting up server configuration, -and working with dynamically-generated HTML. diff --git a/docs/apm-mutating-webhook.asciidoc b/docs/apm-mutating-webhook.asciidoc deleted file mode 100644 index 53759ba1012..00000000000 --- a/docs/apm-mutating-webhook.asciidoc +++ /dev/null @@ -1,9 +0,0 @@ -[[apm-mutating-admission-webhook]] -= APM Attacher - -preview::[] - -The {apm-attacher-ref}/apm-attacher.html[APM attacher] for Kubernetes simplifies the instrumentation and configuration of your application pods. -The attacher includes a webhook receiver that modifies pods so they are automatically instrumented by an Elastic APM agent. - -Ready to get started? See {apm-attacher-ref}/apm-get-started-webhook.html[Instrument and configure pods] to get started. diff --git a/docs/apm-overview.asciidoc b/docs/apm-overview.asciidoc deleted file mode 100644 index 3ffa3ebb380..00000000000 --- a/docs/apm-overview.asciidoc +++ /dev/null @@ -1,26 +0,0 @@ -[[apm-overview]] -== Free and open application performance monitoring - -++++ -What is APM? -++++ - -Elastic APM is an application performance monitoring system built on the {stack}. -It allows you to monitor software services and applications in real-time, by -collecting detailed performance information on response time for incoming requests, -database queries, calls to caches, external HTTP requests, and more. -This makes it easy to pinpoint and fix performance problems quickly. - -Elastic APM also automatically collects unhandled errors and exceptions. -Errors are grouped based primarily on the stack trace, -so you can identify new errors as they appear and keep an eye on how many times specific errors happen. - -Metrics are another vital source of information when debugging production systems. -Elastic APM agents automatically pick up basic host-level metrics and agent-specific metrics, -like JVM metrics in the Java Agent, and Go runtime metrics in the Go Agent. - -[float] -=== Give Elastic APM a try - -Use the <> to quickly spin up an APM deployment. -Want to host everything yourself instead? See <>. \ No newline at end of file diff --git a/docs/apm-response-codes.asciidoc b/docs/apm-response-codes.asciidoc deleted file mode 100644 index fdbbfc31e0c..00000000000 --- a/docs/apm-response-codes.asciidoc +++ /dev/null @@ -1,43 +0,0 @@ -[[common-response-codes]] -=== APM Server response codes - -[[bad-request]] -[float] -==== HTTP 400: Data decoding error / Data validation error - -The most likely cause for this error is using incompatible versions of {apm-agent} and APM Server. -See the <> to verify compatibility. - -[[event-too-large]] -[float] -==== HTTP 400: Event too large - -APM agents communicate with the APM server by sending events in an HTTP request. Each event is sent as its own line in the HTTP request body. If events are too large, you should consider increasing the <> -setting in the APM integration, and adjusting relevant settings in the agent. - -[[unauthorized]] -[float] -==== HTTP 401: Invalid token - -Either the <> in the request header doesn't match the secret token configured in the APM integration, -or the <> is invalid. - -[[forbidden]] -[float] -==== HTTP 403: Forbidden request - -Either you are sending requests to a <> endpoint without RUM enabled, or a request -is coming from an origin not specified in the APM integration settings. -See the <> setting for more information. - -[[request-timed-out]] -[float] -==== HTTP 503: Request timed out waiting to be processed - -This happens when APM Server exceeds the maximum number of requests that it can process concurrently. -To alleviate this problem, you can try to: reduce the sample rate and/or reduce the collected stack trace information. -See <> for more information. - -Another option is to increase processing power. -This can be done by either migrating your {agent} to a more powerful machine -or adding more APM Server instances. \ No newline at end of file diff --git a/docs/apm-rum.asciidoc b/docs/apm-rum.asciidoc deleted file mode 100644 index 7ca2368f49c..00000000000 --- a/docs/apm-rum.asciidoc +++ /dev/null @@ -1,12 +0,0 @@ -[[apm-rum]] -=== Real User Monitoring (RUM) -Real User Monitoring captures user interaction with clients such as web browsers. -The {apm-rum-ref-v}[JavaScript Agent] is Elastic’s RUM Agent. -// To use it you need to {apm-server-ref-v}/configuration-rum.html[enable RUM support] in the APM Server. - -Unlike Elastic APM backend agents which monitor requests and responses, -the RUM JavaScript agent monitors the real user experience and interaction within your client-side application. -The RUM JavaScript agent is also framework-agnostic, which means it can be used with any front-end JavaScript application. - -You will be able to measure metrics such as "Time to First Byte", `domInteractive`, -and `domComplete` which helps you discover performance issues within your client-side application as well as issues that relate to the latency of your server-side application. diff --git a/docs/apm-server-down.asciidoc b/docs/apm-server-down.asciidoc deleted file mode 100644 index 89c89999a7d..00000000000 --- a/docs/apm-server-down.asciidoc +++ /dev/null @@ -1,29 +0,0 @@ -[[server-es-down]] -=== What happens when APM Server or {es} is down? - -*If {es} is down* - -APM Server does not have an internal queue to buffer requests, -but instead leverages an HTTP request timeout to act as back-pressure. -If {es} goes down, the APM Server will eventually deny incoming requests. -Both the APM Server and {apm-agent}(s) will issue logs accordingly. - -*If APM Server is down* - -Some agents have internal queues or buffers that will temporarily store data if the APM Server goes down. -As a general rule of thumb, queues fill up quickly. Assume data will be lost if APM Server goes down. -Adjusting these queues/buffers can increase the agent's overhead, so use caution when updating default values. - -* **Go agent** - Circular buffer with configurable size: -{apm-go-ref}/configuration.html#config-api-buffer-size[`ELASTIC_APM_BUFFER_SIZE`]. -// * **iOS agent** - ?? -* **Java agent** - Internal buffer with configurable size: -{apm-java-ref}/config-reporter.html#config-max-queue-size[`max_queue_size`]. -* **Node.js agent** - No internal queue. Data is lost. -* **PHP agent** - No internal queue. Data is lost. -* **Python agent** - Internal {apm-py-ref}/tuning-and-overhead.html#tuning-queue[Transaction queue] -with configurable size and time between flushes. -* **Ruby agent** - Internal queue with configurable size: -{apm-ruby-ref}/configuration.html#config-api-buffer-size[`api_buffer_size`]. -* **RUM agent** - No internal queue. Data is lost. -* **.NET agent** - No internal queue. Data is lost. \ No newline at end of file diff --git a/docs/aws-lambda-extension.asciidoc b/docs/aws-lambda-extension.asciidoc deleted file mode 100644 index 53457f38e63..00000000000 --- a/docs/aws-lambda-extension.asciidoc +++ /dev/null @@ -1,14 +0,0 @@ -[[monitoring-aws-lambda]] -= Monitoring AWS Lambda Functions - -Elastic APM lets you monitor your AWS Lambda functions. -The natural integration of <> into your AWS Lambda functions provides insights into the functions' execution and runtime behavior as well as their relationships and dependencies to other services. - -To get started with the setup of Elastic APM for your Lambda functions, checkout the language-specific guides: - -* {apm-node-ref}/lambda.html[Quick Start with APM on AWS Lambda - Node.js] -* {apm-py-ref}/lambda-support.html[Quick Start with APM on AWS Lambda - Python] -* {apm-java-ref}/aws-lambda.html[Quick Start with APM on AWS Lambda - Java] - -Or, see the {apm-lambda-ref}/aws-lambda-arch.html[architecture guide] to learn more about how the extension works, -performance impacts, and more. diff --git a/docs/config-ownership.asciidoc b/docs/config-ownership.asciidoc deleted file mode 100644 index ebd3ccfcb96..00000000000 --- a/docs/config-ownership.asciidoc +++ /dev/null @@ -1,44 +0,0 @@ -[float] -[[config-file-ownership]] -==== Configuration file ownership - -On systems with POSIX file permissions, -the {beatname_uc} configuration file is subject to ownership and file permission checks. -These checks prevent unauthorized users from providing or modifying configurations that are run by {beatname_uc}. - -When installed via an RPM or DEB package, -the configuration file at +/etc/{beatname_lc}/{beatname_lc}.yml+ will be owned by +{beatname_lc}+, -and have file permissions of `0600` (`-rw-------`). - -{beatname_uc} will only start if the configuration file is owned by the user running the process, -or by running as root with configuration ownership set to `root:root` - -You may encounter the following errors if your configuration file fails these checks: - -["source", "systemd", subs="attributes"] ------ -Exiting: error loading config file: config file ("/etc/{beatname_lc}/{beatname_lc}.yml") -must be owned by the user identifier (uid=1000) or root ------ - -To correct this problem you can change the ownership of the configuration file with: -+chown {beatname_lc}:{beatname_lc} /etc/{beatname_lc}/{beatname_lc}.yml+. - -You can also make root the config owner, although this is not recommended: -+sudo chown root:root /etc/{beatname_lc}/{beatname_lc}.yml+. - -["source", "systemd", subs="attributes"] ------ -Exiting: error loading config file: config file ("/etc/{beatname_lc}/{beatname_lc}.yml") -can only be writable by the owner but the permissions are "-rw-rw-r--" -(to fix the permissions use: 'chmod go-w /etc/{beatname_lc}/{beatname_lc}.yml') ------ - -To correct this problem, use +chmod go-w /etc/{beatname_lc}/{beatname_lc}.yml+ to -remove write privileges from anyone other than the owner. - -[float] -===== Disabling strict permission checks - -You can disable strict permission checks from the command line by using -`--strict.perms=false`, but we strongly encourage you to leave the checks enabled. diff --git a/docs/configure/agent-config.asciidoc b/docs/configure/agent-config.asciidoc deleted file mode 100644 index 6261a389827..00000000000 --- a/docs/configure/agent-config.asciidoc +++ /dev/null @@ -1,74 +0,0 @@ -[[configure-agent-config]] -= Configure APM agent configuration - -++++ -APM agent configuration -++++ - -**** -image:./binary-yes-fm-yes.svg[supported deployment methods] - -APM agent configuration is supported by all APM Server deployment methods. -**** - -APM agent configuration allows you to fine-tune your APM agents from within the APM app. -Changes are automatically propagated to your APM agents, so there's no need to redeploy your applications. - -To learn more about this feature, see {kibana-ref}/agent-configuration.html[APM agent configuration]. - -Here's a sample configuration: - -[source,yaml] ----- -apm-server.agent.config.cache.expiration: 45s -apm-server.agent.config.elasticsearch.api_key: TiNAGG4BaaMdaH1tRfuU:KnR6yE41RrSowb0kQ0HWoA ----- - -[float] -= APM agent configuration options - -The following options are only supported for APM Server binary users. -You can specify these options in the `apm-server.agent.config` section of the -+{beatname_lc}.yml+ config file: - -[float] -[[agent-config-cache]] -== `apm-server.agent.config.cache.expiration` - -When using APM agent configuration, information fetched from {es} will be cached in memory for some time. -Specify the cache expiration time via this setting. Defaults to `30s` (30 seconds). - -[float] -[[agent-config-elasticsearch]] -== `apm-server.agent.config.elasticsearch` - -Takes the same options as <>. - -For APM Server binary users and Elastic Agent standalone-managed APM Server, -APM agent configuration is automatically fetched from {es} using the `output.elasticsearch` -configuration. If `output.elasticsearch` isn't set or doesn't have sufficient privileges, -use these {es} options to provide {es} access. - -[float] -== Common problems - -You may see either of the following HTTP 403 errors from APM Server when it attempts to fetch APM agent configuration: - -APM agent log: - -[source,log] ----- -"Your Elasticsearch configuration does not support agent config queries. Check your configurations at `output.elasticsearch` or `apm-server.agent.config.elasticsearch`." ----- - -APM Server log: - -[source,log] ----- -rejecting fetch request: no valid elasticsearch config ----- - -This occurs because the user or API key set in either `apm-server.agent.config.elasticsearch` or `output.elasticsearch` -(if `apm-server.agent.config.elasticsearch` is not set) does not have adequate permissions to read source maps from {es}. - -To fix this error, ensure that {beatname_uc} has all the required privileges. See <> for more details. diff --git a/docs/configure/anonymous-auth.asciidoc b/docs/configure/anonymous-auth.asciidoc deleted file mode 100644 index ec67a8571f3..00000000000 --- a/docs/configure/anonymous-auth.asciidoc +++ /dev/null @@ -1,147 +0,0 @@ -[[configuration-anonymous]] -= Configure anonymous authentication - -++++ -Anonymous authentication -++++ - -**** -image:./binary-yes-fm-yes.svg[supported deployment methods] - -Most options on this page are supported by all APM Server deployment methods. -**** - -Elastic APM agents can send unauthenticated (anonymous) events to the APM Server. -An event is considered to be anonymous if no authentication token can be extracted from the incoming request. -This is useful for agents that run on clients, like the Real User Monitoring (RUM) -agent running in a browser, or the iOS/Swift agent running in a user application. - -Enable anonymous authentication in the APM Server to allow the -ingestion of unauthenticated client-side APM data while still requiring authentication for server-side services. - -include::./tab-widgets/anon-auth-widget.asciidoc[] - - - -IMPORTANT: All anonymous access configuration is ignored if -<> is disabled. - -[float] -[[config-auth-anon-rum]] -= Real User Monitoring (RUM) - -If an <> or <> is configured, -then anonymous authentication must be enabled to collect RUM data. -For this reason, anonymous auth will be enabled automatically if <> -is set to `true`, and <> is not explicitly defined. - -See <> for additional RUM configuration options. - -[float] -[[config-auth-anon-mitigating]] -== Mitigating malicious requests - -There are a few configuration variables that can mitigate the impact of malicious requests to an -unauthenticated APM Server endpoint. - -Use the <> and <> configs to ensure that the -`agent.name` and `service.name` of each incoming request match a specified list. - -Additionally, the APM Server can rate-limit unauthenticated requests based on the client IP address -(`client.ip`) of the request with <>. -This allows you to specify the maximum number of requests allowed per unique IP address, per second. - -[float] -[[config-auth-anon-client-ip]] -== Deriving an incoming request's `client.ip` address - -The remote IP address of an incoming request might be different -from the end-user's actual IP address, for example, because of a proxy. For this reason, -the APM Server attempts to derive the IP address of an incoming request from HTTP headers. -The supported headers are parsed in the following order: - -1. `Forwarded` -2. `X-Real-Ip` -3. `X-Forwarded-For` - -If none of these headers are present, the remote address for the incoming request is used. - -[float] -[[config-auth-anon-client-ip-concerns]] -== Using a reverse proxy or load balancer - -HTTP headers are easily modified; -it's possible for anyone to spoof the derived `client.ip` value by changing or setting, -for example, the value of the `X-Forwarded-For` header. -For this reason, if any of your clients are not trusted, -we recommend setting up a reverse proxy or load balancer in front of the APM Server. - -Using a proxy allows you to clear any existing IP-forwarding HTTP headers, -and replace them with one set by the proxy. -This prevents malicious users from cycling spoofed IP addresses to bypass the -APM Server's rate limiting feature. - -[float] -[[config-auth-anon]] -= Configuration reference - -[float] -[[config-auth-anon-enabled]] -== Anonymous Agent access - -Enable or disable anonymous authentication. -Default: `false` (disabled). (bool) - -|==== -| APM Server binary | `apm-server.auth.anonymous.enabled` -| Fleet-managed | `Anonymous Agent access` -|==== - -[float] -[[config-auth-anon-allow-agent]] -== Allowed anonymous agents -A list of permitted {apm-agent} names for anonymous authentication. -Names in this list must match the agent's `agent.name`. -Default: `[rum-js, js-base]` (only RUM agent events are accepted). (array) - -|==== -| APM Server binary | `apm-server.auth.anonymous.allow_agent` -| Fleet-managed | `Allowed Anonymous agents` -|==== - -[float] -[[config-auth-anon-allow-service]] -== Allowed services -A list of permitted service names for anonymous authentication. -Names in this list must match the agent's `service.name`. -This can be used to limit the number of service-specific indices or data streams created. -Default: Not set (any service name is accepted). (array) - -|==== -| APM Server binary | `apm-server.auth.anonymous.allow_service` -| Fleet-managed | `Allowed Anonymous services` -|==== - -[float] -[[config-auth-anon-ip-limit]] -== IP limit -The number of unique IP addresses to track in an LRU cache. -IP addresses in the cache will be rate limited according to the <> setting. -Consider increasing this default if your application has many concurrent clients. -Default: `1000`. (int) - -|==== -| APM Server binary | `apm-server.auth.anonymous.rate_limit.ip_limit` -| Fleet-managed | `Anonymous Rate limit (IP limit)` -|==== - -[float] -[[config-auth-anon-event-limit]] -== Event limit -The maximum number of events allowed per second, per agent IP address. -Default: `300`. (int) - -|==== -| APM Server binary | `apm-server.auth.anonymous.rate_limit.event_limit` -| Fleet-managed | `Anonymous Event rate limit (event limit)` -|==== diff --git a/docs/configure/auth.asciidoc b/docs/configure/auth.asciidoc deleted file mode 100644 index 490c0e73108..00000000000 --- a/docs/configure/auth.asciidoc +++ /dev/null @@ -1,172 +0,0 @@ -[[apm-agent-auth]] -= APM agent authorization - -**** -image:./binary-yes-fm-yes.svg[supported deployment methods] - -Most options in this section are supported by all APM Server deployment methods. -**** - -Agent authorization APM Server configuration options. - -include::./tab-widgets/auth-config-widget.asciidoc[] - -[float] -[[api-key-auth-settings]] -= API key authentication options - -These settings apply to API key communication between the APM Server and APM Agents. - -NOTE: These settings are different from the API key settings used for {es} output and monitoring. - -[float] -== API key for agent authentication - -Enable API key authorization by setting `enabled` to `true`. -By default, `enabled` is set to `false`, and API key support is disabled. (bool) - -|==== -| APM Server binary | `auth.api_key.enabled` -| Fleet-managed | `API key for agent authentication` -|==== - -TIP: Not using Elastic APM agents? -When enabled, third-party APM agents must include a valid API key in the following format: -`Authorization: ApiKey `. The key must be the base64 encoded representation of the API key's `id:name`. - -[float] -== API key limit - -Each unique API key triggers one request to {es}. -This setting restricts the number of unique API keys are allowed per minute. -The minimum value for this setting should be the number of API keys configured in your monitored services. -The default `limit` is `100`. (int) - -|==== -| APM Server binary | `auth.api_key.limit` -| Fleet-managed | `Number of keys` -|==== - -[float] -== Secret token - -Authorization token for sending APM data. -The same token must also be set in each {apm-agent}. -This token is not used for RUM endpoints. (text) - -|==== -| APM Server binary | `auth.api_key.token` -| Fleet-managed | `Secret token` -|==== - -[float] -= `auth.api_key.elasticsearch.*` configuration options - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -The below options are only supported by the APM Server binary. - -All of the `auth.api_key.elasticsearch.*` configurations are optional. -If none are set, configuration settings from the `apm-server.output` section will be reused. -**** - -[float] -== `elasticsearch.hosts` - -API keys are fetched from {es}. -This configuration needs to point to a secured {es} cluster that is able to serve API key requests. - - -[float] -== `elasticsearch.protocol` - -The name of the protocol {es} is reachable on. -The options are: `http` or `https`. The default is `http`. -If nothing is configured, configuration settings from the `output` section will be reused. - -[float] -== `elasticsearch.path` - -An optional HTTP path prefix that is prepended to the HTTP API calls. -If nothing is configured, configuration settings from the `output` section will be reused. - -[float] -== `elasticsearch.proxy_url` - -The URL of the proxy to use when connecting to the {es} servers. -The value may be either a complete URL or a "host[:port]", in which case the "http"scheme is assumed. -If nothing is configured, configuration settings from the `output` section will be reused. - -[float] -== `elasticsearch.timeout` - -The HTTP request timeout in seconds for the {es} request. -If nothing is configured, configuration settings from the `output` section will be reused. - -[float] -= `auth.api_key.elasticsearch.ssl.*` configuration options - -SSL is off by default. Set `elasticsearch.protocol` to `https` if you want to enable `https`. - -[float] -== `elasticsearch.ssl.enabled` - -Enable custom SSL settings. -Set to false to ignore custom SSL settings for secure communication. - -[float] -== `elasticsearch.ssl.verification_mode` - -Configure SSL verification mode. -If `none` is configured, all server hosts and certificates will be accepted. -In this mode, SSL based connections are susceptible to man-in-the-middle attacks. -**Use only for testing**. Default is `full`. - -[float] -== `elasticsearch.ssl.supported_protocols` - -List of supported/valid TLS versions. -By default, all TLS versions from 1.0 to 1.2 are enabled. - -[float] -== `elasticsearch.ssl.certificate_authorities` - -List of root certificates for HTTPS server verifications. - -[float] -== `elasticsearch.ssl.certificate` - -The path to the certificate for SSL client authentication. - -[float] -== `elasticsearch.ssl.key` - -The client certificate key used for client authentication. -This option is required if certificate is specified. - -[float] -== `elasticsearch.ssl.key_passphrase` - -An optional passphrase used to decrypt an encrypted key stored in the configured key file. - -[float] -== `elasticsearch.ssl.cipher_suites` - -The list of cipher suites to use. The first entry has the highest priority. -If this option is omitted, the Go crypto library’s default suites are used (recommended). - -[float] -== `elasticsearch.ssl.curve_types` - -The list of curve types for ECDHE (Elliptic Curve Diffie-Hellman ephemeral key exchange). - -[float] -== `elasticsearch.ssl.renegotiation` - -Configure what types of renegotiation are supported. -Valid options are `never`, `once`, and `freely`. Default is `never`. - -* `never` - Disables renegotiation. -* `once` - Allows a remote server to request renegotiation once per connection. -* `freely` - Allows a remote server to repeatedly request renegotiation. diff --git a/docs/configure/binary-no-fm-yes.svg b/docs/configure/binary-no-fm-yes.svg deleted file mode 100644 index b8b3120f2fc..00000000000 --- a/docs/configure/binary-no-fm-yes.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/configure/binary-yes-fm-no.svg b/docs/configure/binary-yes-fm-no.svg deleted file mode 100644 index db26e2fc39b..00000000000 --- a/docs/configure/binary-yes-fm-no.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/docs/configure/binary-yes-fm-yes.svg b/docs/configure/binary-yes-fm-yes.svg deleted file mode 100644 index 07c0a2705f8..00000000000 --- a/docs/configure/binary-yes-fm-yes.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - diff --git a/docs/configure/env.asciidoc b/docs/configure/env.asciidoc deleted file mode 100644 index 86742ca7577..00000000000 --- a/docs/configure/env.asciidoc +++ /dev/null @@ -1,98 +0,0 @@ -[[config-env]] -= Use environment variables in the configuration - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -This documentation is only relevant for APM Server binary users. -**** - -You can use environment variable references in the config file to -set values that need to be configurable during deployment. To do this, use: - -`${VAR}` - -Where `VAR` is the name of the environment variable. - -Each variable reference is replaced at startup by the value of the environment -variable. The replacement is case-sensitive and occurs before the YAML file is -parsed. References to undefined variables are replaced by empty strings unless -you specify a default value or custom error text. - -To specify a default value, use: - -`${VAR:default_value}` - -Where `default_value` is the value to use if the environment variable is -undefined. - -To specify custom error text, use: - -`${VAR:?error_text}` - -Where `error_text` is custom text that will be prepended to the error -message if the environment variable cannot be expanded. - -If you need to use a literal `${` in your configuration file then you can write -`$${` to escape the expansion. - -After changing the value of an environment variable, you need to restart -{beatname_uc} to pick up the new value. - -[NOTE] -================================== -You can also specify environment variables when you override a config -setting from the command line by using the `-E` option. For example: - -`-E name=${NAME}` - -================================== - -[float] -== Examples - -Here are some examples of configurations that use environment variables -and what each configuration looks like after replacement: - -[options="header"] -|================================== -|Config source |Environment setting |Config after replacement -|`name: ${NAME}` |`export NAME=elastic` |`name: elastic` -|`name: ${NAME}` |no setting |`name:` -|`name: ${NAME:beats}` |no setting |`name: beats` -|`name: ${NAME:beats}` |`export NAME=elastic` |`name: elastic` -|`name: ${NAME:?You need to set the NAME environment variable}` |no setting | None. Returns an error message that's prepended with the custom text. -|`name: ${NAME:?You need to set the NAME environment variable}` |`export NAME=elastic` | `name: elastic` -|================================== - -[float] -== Specify complex objects in environment variables - -You can specify complex objects, such as lists or dictionaries, in environment -variables by using a JSON-like syntax. - -As with JSON, dictionaries and lists are constructed using `{}` and `[]`. But -unlike JSON, the syntax allows for trailing commas and slightly different string -quotation rules. Strings can be unquoted, single-quoted, or double-quoted, as a -convenience for simple settings and to make it easier for you to mix quotation -usage in the shell. Arrays at the top-level do not require brackets (`[]`). - -For example, the following environment variable is set to a list: - -[source,yaml] -------------------------------------------------------------------------------- -ES_HOSTS="10.45.3.2:9220,10.45.3.1:9230" -------------------------------------------------------------------------------- - -You can reference this variable in the config file: - -[source,yaml] -------------------------------------------------------------------------------- -output.elasticsearch: - hosts: '${ES_HOSTS}' -------------------------------------------------------------------------------- - -When {beatname_uc} loads the config file, it resolves the environment variable and -replaces it with the specified list before reading the `hosts` setting. - -NOTE: Do not use double-quotes (`"`) to wrap regular expressions, or the backslash (`\`) will be interpreted as an escape character. diff --git a/docs/configure/index.asciidoc b/docs/configure/index.asciidoc deleted file mode 100644 index 3b2b62d32b8..00000000000 --- a/docs/configure/index.asciidoc +++ /dev/null @@ -1,52 +0,0 @@ -[[configuring-howto-apm-server]] -= Configure - -How you configure the APM Server depends on your deployment method. - -* **APM Server binary** users need to edit the `apm-server.yml` configuration file. -The location of the file varies by platform. To locate the file, see <>. -* **Fleet-managed** users configure the APM Server directly in {kib}. -Each configuration page describes the specific location. -* **Elastic cloud** users should see {cloud}/ec-manage-apm-settings.html[Add APM user settings] for information on how to configure Elastic APM. - -The following topics describe how to configure APM Server: - -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> - -include::general.asciidoc[leveloffset=+1] - -include::anonymous-auth.asciidoc[leveloffset=+1] - -include::auth.asciidoc[leveloffset=+1] - -include::agent-config.asciidoc[leveloffset=+1] - -include::instrumentation.asciidoc[leveloffset=+1] - -include::kibana.asciidoc[leveloffset=+1] - -include::logging.asciidoc[leveloffset=+1] - -include::output.asciidoc[leveloffset=+1] - -include::path.asciidoc[leveloffset=+1] - -include::rum.asciidoc[leveloffset=+1] - -include::tls.asciidoc[leveloffset=+1] - -include::sampling.asciidoc[leveloffset=+1] - -include::env.asciidoc[leveloffset=+1] \ No newline at end of file diff --git a/docs/configure/instrumentation.asciidoc b/docs/configure/instrumentation.asciidoc deleted file mode 100644 index 2f381001e1d..00000000000 --- a/docs/configure/instrumentation.asciidoc +++ /dev/null @@ -1,62 +0,0 @@ -[[configuration-instrumentation]] -= Configure APM instrumentation - -++++ -Instrumentation -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -Instrumentation of APM Server is not yet supported for Fleet-managed APM. -**** - -APM Server uses the Elastic APM Go Agent to instrument its publishing pipeline. -To gain insight into the performance of {beatname_uc}, you can enable this instrumentation and send trace data to APM Server. -Currently, only the {es} output is instrumented. - -Example configuration with instrumentation enabled: - -["source","yaml"] ----- -instrumentation: - enabled: true - environment: production - hosts: - - "http://localhost:8200" - api_key: L5ER6FEvjkmlfalBealQ3f3fLqf03fazfOV ----- - -[float] -== Configuration options - -You can specify the following options in the `instrumentation` section of the +{beatname_lc}.yml+ config file: - -[float] -=== `enabled` - -Set to `true` to enable instrumentation of {beatname_uc}. -Defaults to `false`. - -[float] -=== `environment` - -Set the environment in which {beatname_uc} is running, for example, `staging`, `production`, `dev`, etc. -Environments can be filtered in the {kibana-ref}/xpack-apm.html[{apm-app}]. - -[float] -=== `hosts` - -The {apm-guide-ref}/getting-started-apm-server.html[APM Server] hosts to report instrumentation data to. -Defaults to `http://localhost:8200`. - -[float] -=== `api_key` - -{apm-guide-ref}/api-key.html[API key] used to secure communication with the APM Server(s). -If `api_key` is set then `secret_token` will be ignored. - -[float] -=== `secret_token` - -{apm-guide-ref}/secret-token.html[Secret token] used to secure communication with the APM Server(s). diff --git a/docs/configure/kibana.asciidoc b/docs/configure/kibana.asciidoc deleted file mode 100644 index fb070965ad3..00000000000 --- a/docs/configure/kibana.asciidoc +++ /dev/null @@ -1,116 +0,0 @@ -[[setup-kibana-endpoint]] -= Configure the {kib} endpoint - -++++ -{kib} endpoint -++++ - -**** - -image:./binary-yes-fm-no.svg[supported deployment methods] - -You must configure the {kib} endpoint when running the APM Server binary with a non-{es} output. -Configuring the {kib} endpoint allows the APM Server to communicate with {kib} and ensure that the APM integration was properly set up. It is also required for APM agent configuration when using -an output other than {es}. - -For all other use-cases, starting in version 8.7.0, APM agent configurations is fetched directly from {es}. -Configuring and enabling the {kib} endpoint is only used as a fallback. -Please see <> instead. -**** - -Here's a sample configuration: - -[source,yaml] ----- -apm-server.kibana.enabled: true -apm-server.kibana.host: "http://localhost:5601" ----- - -[float] -== {kib} endpoint configuration options - -You can specify the following options in the `apm-server.kibana` section of the -+{beatname_lc}.yml+ config file. These options are not required for a Fleet-managed APM Server. - -[float] -[[kibana-enabled]] -=== `apm-server.kibana.enabled` - -Defaults to `false`. Must be `true` to use APM Agent configuration. - -[float] -[[kibana-host]] -=== `apm-server.kibana.host` - -The {kib} host that APM Server will communicate with. The default is -`127.0.0.1:5601`. The value of `host` can be a `URL` or `IP:PORT`. For example: `http://192.15.3.2`, `192:15.3.2:5601` or `http://192.15.3.2:6701/path`. If no -port is specified, `5601` is used. - -NOTE: When a node is defined as an `IP:PORT`, the _scheme_ and _path_ are taken -from the <> and -<> config options. - -IPv6 addresses must be defined using the following format: -`https://[2001:db8::1]:5601`. - -[float] -[[kibana-protocol-option]] -=== `apm-server.kibana.protocol` - -The name of the protocol {kib} is reachable on. The options are: `http` or -`https`. The default is `http`. However, if you specify a URL for host, the -value of `protocol` is overridden by whatever scheme you specify in the URL. - -Example config: - -[source,yaml] ----- -apm-server.kibana.host: "192.0.2.255:5601" -apm-server.kibana.protocol: "http" -apm-server.kibana.path: /kibana ----- - - -[float] -=== `apm-server.kibana.username` - -The basic authentication username for connecting to {kib}. - -[float] -=== `apm-server.kibana.password` - -The basic authentication password for connecting to {kib}. - -[float] -=== `apm-server.kibana.api_key` - -Authentication with an API key. Formatted as `id:api_key` - -[float] -[[kibana-path-option]] -=== `apm-server.kibana.path` - -An HTTP path prefix that is prepended to the HTTP API calls. This is useful for -the cases where {kib} listens behind an HTTP reverse proxy that exports the API -under a custom prefix. - -[float] -=== `apm-server.kibana.ssl.enabled` - -Enables {beatname_uc} to use SSL settings when connecting to {kib} via HTTPS. -If you configure {beatname_uc} to connect over HTTPS, this setting defaults to -`true` and {beatname_uc} uses the default SSL settings. - -Example configuration: - -[source,yaml] ----- -apm-server.kibana.host: "https://192.0.2.255:5601" -apm-server.kibana.ssl.enabled: true -apm-server.kibana.ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] -apm-server.kibana.ssl.certificate: "/etc/pki/client/cert.pem" -apm-server.kibana.ssl.key: "/etc/pki/client/cert.key" ----- - -For information on the additional SSL configuration options, -see <>. diff --git a/docs/configure/logging.asciidoc b/docs/configure/logging.asciidoc deleted file mode 100644 index 9e11b5fbf40..00000000000 --- a/docs/configure/logging.asciidoc +++ /dev/null @@ -1,247 +0,0 @@ -[[configuration-logging]] -= Configure logging - -++++ -Logging -++++ - -**** - -image:./binary-yes-fm-no.svg[supported deployment methods] - -These configuration options are only relevant to APM Server binary users. -Fleet-managed users should see {fleet-guide}/monitor-elastic-agent.html[View {agent} logs] -to learn how to view logs and change the logging level of {agent}. -**** - -The `logging` section of the +{beatname_lc}.yml+ config file contains options -for configuring the logging output. - -The logging system can write logs to the syslog or rotate log files. If logging -is not explicitly configured the file output is used. - -["source","yaml",subs="attributes"] ----- -logging.level: info -logging.to_files: true -logging.files: - path: /var/log/{beatname_lc} - name: {beatname_lc} - keepfiles: 7 - permissions: 0640 ----- - - - -TIP: In addition to setting logging options in the config file, you can modify -the logging output configuration from the command line. See -<>. - -WARNING: When {beatname_uc} is running on a Linux system with systemd, it uses -by default the `-e` command line option, that makes it write all the logging output -to stderr so it can be captured by journald. Other outputs are disabled. See -<> to know more and learn how to change this. - -[float] -== Configuration options - -You can specify the following options in the `logging` section of the -+{beatname_lc}.yml+ config file: - -ifndef::serverless[] -[float] -=== `logging.to_stderr` - -When true, writes all logging output to standard error output. This is -equivalent to using the `-e` command line option. - -[float] -=== `logging.to_syslog` - -When true, writes all logging output to the syslog. - -NOTE: This option is not supported on Windows. - -[float] -=== `logging.to_eventlog` - -When true, writes all logging output to the Windows Event Log. - -[float] -=== `logging.to_files` - -When true, writes all logging output to files. The log files are automatically -rotated when the log file size limit is reached. - -NOTE: {beatname_uc} only creates a log file if there is logging output. For -example, if you set the log <> to `error` and there are no -errors, there will be no log file in the directory specified for logs. -endif::serverless[] - -[float] -[[level]] -=== `logging.level` - -Minimum log level. One of `debug`, `info`, `warning`, or `error`. The default -log level is `info`. - -`debug`:: Logs debug messages, including a detailed printout of all events -flushed. Also logs informational messages, warnings, errors, and -critical errors. When the log level is `debug`, you can specify a list of -<> to display debug messages for specific components. If -no selectors are specified, the `*` selector is used to display debug messages -for all components. - -`info`:: Logs informational messages, including the number of events that are -published. Also logs any warnings, errors, or critical errors. - -`warning`:: Logs warnings, errors, and critical errors. - -`error`:: Logs errors and critical errors. - -[float] -[[selectors]] -=== `logging.selectors` - -The list of debugging-only selector tags used by different {beatname_uc} components. -Use `*` to enable debug output for all components. Use `publisher` to display -debug messages related to event publishing. - -[TIP] -===== -The list of available selectors may change between releases, so avoid creating -tests that depend on specific selectors. - -To see which selectors are available, run {beatname_uc} in debug mode -(set `logging.level: debug` in the configuration). The selector name appears -after the log level and is enclosed in brackets. -===== - -To configure multiple selectors, use the following {beats-ref}/config-file-format.html[YAML list syntax]: -["source","yaml",subs="attributes"] ----- -logging.selectors: [ harvester, input ] ----- - -ifndef::serverless[] -To override selectors at the command line, use the `-d` global flag (`-d` also -sets the debug log level). For more information, see <>. -endif::serverless[] - -[float] -=== `logging.metrics.enabled` - -By default, {beatname_uc} periodically logs its internal metrics that have -changed in the last period. For each metric that changed, the delta from the -value at the beginning of the period is logged. Also, the total values for all -non-zero internal metrics are logged on shutdown. Set this to false to disable -this behavior. The default is true. - -Here is an example log line: - -[source,shell] ----------------------------------------------------------------------------------------------------------------------------------------------------- -2017-12-17T19:17:42.667-0500 INFO [metrics] log/log.go:110 Non-zero metrics in the last 30s: beat.info.uptime.ms=30004 beat.memstats.gc_next=5046416 ----------------------------------------------------------------------------------------------------------------------------------------------------- - -Note that we currently offer no backwards compatible guarantees for the internal -metrics and for this reason they are also not documented. - -[float] -=== `logging.metrics.period` - -The period after which to log the internal metrics. The default is `30s`. - -ifndef::serverless[] -[float] -=== `logging.files.path` - -The directory that log files are written to. The default is the logs path. See -the <> section for details. - -[float] -=== `logging.files.name` - -The name of the file that logs are written to. The default is '{beatname_lc}'. - -[float] -=== `logging.files.rotateeverybytes` - -The maximum size of a log file. If the limit is reached, a new log file is -generated. The default size limit is 10485760 (10 MB). - -[float] -=== `logging.files.keepfiles` - -The number of most recent rotated log files to keep on disk. Older files are -deleted during log rotation. The default value is 7. The `keepfiles` options has -to be in the range of 2 to 1024 files. - -[float] -=== `logging.files.permissions` - -The permissions mask to apply when rotating log files. The default value is -0600. The `permissions` option must be a valid Unix-style file permissions mask -expressed in octal notation. In Go, numbers in octal notation must start with -'0'. - -The most permissive mask allowed is 0640. If a higher permissions mask is -specified via this setting, it will be subject to an umask of 0027. - -Examples: - -* 0640: give read and write access to the file owner, and read access to members of the group associated with the file. -* 0600: give read and write access to the file owner, and no access to all others. - -[float] -=== `logging.files.interval` - -Enable log file rotation on time intervals in addition to size-based rotation. -Intervals must be at least `1s`. Values of `1m`, `1h`, `24h`, `7*24h`, `30*24h`, and `365*24h` -are boundary-aligned with minutes, hours, days, weeks, months, and years as -reported by the local system clock. All other intervals are calculated from the -Unix epoch. Defaults to disabled. -endif::serverless[] - -[float] -=== `logging.files.rotateonstartup` - -If the log file already exists on startup, immediately rotate it and start -writing to a new file instead of appending to the existing one. Defaults to -true. - -ifndef::serverless[] -[float] -=== `logging.files.redirect_stderr` experimental[] - -When true, diagnostic messages printed to {beatname_uc}'s standard error output -will also be logged to the log file. This can be helpful in situations were -{beatname_uc} terminates unexpectedly because an error has been detected by -Go's runtime but diagnostic information is not present in the log file. -This feature is only available when logging to files (`logging.to_files` is true). -Disabled by default. -endif::serverless[] - -[float] -== Logging format - -The logging format is generally the same for each logging output. The one -exception is with the syslog output where the timestamp is not included in the -message because syslog adds its own timestamp. - -Each log message consists of the following parts: - -* Timestamp in ISO8601 format -* Level -* Logger name contained in brackets (Optional) -* File name and line number of the caller -* Message -* Structured data encoded in JSON (Optional) - -Below are some samples: - -`2017-12-17T18:54:16.241-0500 INFO logp/core_test.go:13 unnamed global logger` - -`2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:16 some message` - -`2017-12-17T18:54:16.242-0500 INFO [example] logp/core_test.go:19 some message {"x": 1}` diff --git a/docs/configure/output.asciidoc b/docs/configure/output.asciidoc deleted file mode 100644 index a6ea0c8d213..00000000000 --- a/docs/configure/output.asciidoc +++ /dev/null @@ -1,30 +0,0 @@ -[[configuring-output]] -= Configure the output - -++++ -Output -++++ - -Output configuration options. - -// You configure {beatname_uc} to write to a specific output by setting options -// in the Outputs section of the +{beatname_lc}.yml+ config file. Only a single -// output may be defined. - -// The following topics describe how to configure each supported output. If you've -// secured the {stack}, also read <> for more about -// security-related configuration options. - -include::outputs/outputs-list.asciidoc[tag=outputs-list] - -[[sourcemap-output]] - -[float] -== Source maps - -Source maps can be uploaded through all outputs but must eventually be stored in {es}. -When using outputs other than {es}, `source_mapping.elasticsearch` must be set for source maps to be applied. -Be sure to update `source_mapping.index_pattern` if source maps are stored in the non-default location. -See <> for more details. - -include::outputs/outputs-list.asciidoc[tag=outputs-include] diff --git a/docs/configure/outputs/codec.asciidoc b/docs/configure/outputs/codec.asciidoc deleted file mode 100644 index b6045b798b0..00000000000 --- a/docs/configure/outputs/codec.asciidoc +++ /dev/null @@ -1,31 +0,0 @@ -[[configuration-output-codec]] -== Change the output codec - -For outputs that do not require a specific encoding, you can change the encoding -by using the codec configuration. You can specify either the `json` or `format` -codec. By default the `json` codec is used. - -*`json.pretty`*: If `pretty` is set to true, events will be nicely formatted. The default is false. - -*`json.escape_html`*: If `escape_html` is set to true, HTML symbols will be escaped in strings. The default is false. - -Example configuration that uses the `json` codec with pretty printing enabled to write events to the console: - -[source,yaml] ------------------------------------------------------------------------------- -output.console: - codec.json: - pretty: true - escape_html: false ------------------------------------------------------------------------------- - -*`format.string`*: Configurable format string used to create a custom formatted message. - -Example configurable that uses the `format` codec to print the events timestamp and message field to console: - -[source,yaml] ------------------------------------------------------------------------------- -output.console: - codec.format: - string: '%{[@timestamp]} %{[message]}' ------------------------------------------------------------------------------- diff --git a/docs/configure/outputs/console.asciidoc b/docs/configure/outputs/console.asciidoc deleted file mode 100644 index c50c4825d58..00000000000 --- a/docs/configure/outputs/console.asciidoc +++ /dev/null @@ -1,68 +0,0 @@ -[[console-output]] -== Configure the Console output - -++++ -Console -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -The Console output is not yet supported by {fleet}-managed APM Server. -**** - -The Console output writes events in JSON format to stdout. - -WARNING: The Console output should be used only for debugging issues as it can produce a large amount of logging data. - -To use this output, edit the {beatname_uc} configuration file to disable the {es} -output by commenting it out, and enable the console output by adding `output.console`. - -Example configuration: - -[source,yaml] ------------------------------------------------------------------------------- -output.console: - pretty: true ------------------------------------------------------------------------------- - -ifdef::apm-server[] -[float] -=== {kib} configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] -endif::[] - -=== Configuration options - -You can specify the following `output.console` options in the +{beatname_lc}.yml+ config file: - -==== `enabled` - -The enabled config is a boolean setting to enable or disable the output. If set -to false, the output is disabled. - -The default value is `true`. - -==== `pretty` - -If `pretty` is set to true, events written to stdout will be nicely formatted. The default is false. - -==== `codec` - -Output codec configuration. If the `codec` section is missing, events will be JSON encoded using the `pretty` option. - -See <> for more information. - -==== `bulk_max_size` - -The maximum number of events to buffer internally during publishing. The default is 2048. - -Specifying a larger batch size may add some latency and buffering during publishing. However, for Console output, this -setting does not affect how events are published. - -Setting `bulk_max_size` to values less than or equal to 0 disables the -splitting of batches. When splitting is disabled, the queue decides on the -number of events to be contained in a batch. - -include::codec.asciidoc[leveloffset=+1] \ No newline at end of file diff --git a/docs/configure/outputs/elasticsearch.asciidoc b/docs/configure/outputs/elasticsearch.asciidoc deleted file mode 100644 index d0dba86f424..00000000000 --- a/docs/configure/outputs/elasticsearch.asciidoc +++ /dev/null @@ -1,474 +0,0 @@ -[[elasticsearch-output]] -== Configure the {es} output - -++++ -{es} -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -This documentation only applies to APM Server binary users. -Fleet-managed users should see {fleet-guide}/elasticsearch-output.html[Configure the {es} output]. -**** - -The {es} output sends events directly to {es} using the {es} HTTP API. - -Example configuration: - -["source","yaml",subs="attributes"] ----- -output.elasticsearch: - hosts: ["https://myEShost:9200"] <1> ----- -<1> To enable SSL, add `https` to all URLs defined under __hosts__. - -When sending data to a secured cluster through the `elasticsearch` -output, {beatname_uc} can use any of the following authentication methods: - -* Basic authentication credentials (username and password). -* Token-based (API key) authentication. -* Public Key Infrastructure (PKI) certificates. - -*Basic authentication:* - -["source","yaml",subs="attributes,callouts"] ----- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - username: "{beat_default_index_prefix}_writer" - password: "{pwd}" ----- - -*API key authentication:* - -["source","yaml",subs="attributes,callouts"] ----- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - api_key: "ZCV7VnwBgnX0T19fN8Qe:KnR6yE41RrSowb0kQ0HWoA" ----- - -*PKI certificate authentication:* - -["source","yaml",subs="attributes,callouts"] ----- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - ssl.certificate: "/etc/pki/client/cert.pem" - ssl.key: "/etc/pki/client/cert.key" ----- - -See <> for details on each authentication method. - -=== Compatibility - -This output works with all compatible versions of {es}. See the -https://www.elastic.co/support/matrix#matrix_compatibility[Elastic Support -Matrix]. - -=== Configuration options - -You can specify the following options in the `elasticsearch` section of the +{beatname_lc}.yml+ config file: - -==== `enabled` - -The enabled config is a boolean setting to enable or disable the output. If set -to `false`, the output is disabled. - -The default value is `true`. - - -[[hosts-option]] -==== `hosts` - -The list of {es} nodes to connect to. The events are distributed to -these nodes in round robin order. If one node becomes unreachable, the event is -automatically sent to another node. Each {es} node can be defined as a `URL` or `IP:PORT`. -For example: `http://192.15.3.2`, `https://es.found.io:9230` or `192.24.3.2:9300`. -If no port is specified, `9200` is used. - -NOTE: When a node is defined as an `IP:PORT`, the _scheme_ and _path_ are taken from the -<> and <> config options. - -[source,yaml] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["10.45.3.2:9220", "10.45.3.1:9230"] <1> - protocol: https - path: /elasticsearch ------------------------------------------------------------------------------- - -In the previous example, the {es} nodes are available at `https://10.45.3.2:9220/elasticsearch` and -`https://10.45.3.1:9230/elasticsearch`. - -==== `compression_level` - -The gzip compression level. Setting this value to `0` disables compression. -The compression level must be in the range of `1` (best speed) to `9` (best compression). - -Increasing the compression level will reduce the network usage but will increase the CPU usage. - -The default value is `0`. - -==== `escape_html` - -Configure escaping of HTML in strings. Set to `true` to enable escaping. - -The default value is `false`. - -==== `api_key` - -Instead of using a username and password, you can use API keys to secure communication -with {es}. The value must be the ID of the API key and the API key joined by a colon: `id:api_key`. - -See <> for more information. - -==== `username` - -The basic authentication username for connecting to {es}. - -This user needs the privileges required to publish events to {es}. -To create a user like this, see <>. - -==== `password` - -The basic authentication password for connecting to {es}. - -==== `parameters` - -Dictionary of HTTP parameters to pass within the URL with index operations. - -[[protocol-option]] -==== `protocol` - -The name of the protocol {es} is reachable on. The options are: -`http` or `https`. The default is `http`. However, if you specify a URL for -<>, the value of `protocol` is overridden by whatever scheme you -specify in the URL. - -[[path-option]] -==== `path` - -An HTTP path prefix that is prepended to the HTTP API calls. This is useful for -the cases where {es} listens behind an HTTP reverse proxy that exports -the API under a custom prefix. - -==== `headers` - -Custom HTTP headers to add to each request created by the {es} output. -Example: - -[source,yaml] ------------------------------------------------------------------------------- -output.elasticsearch.headers: - X-My-Header: Header contents ------------------------------------------------------------------------------- - -It is possible to specify multiple header values for the same header -name by separating them with a comma. - -==== `proxy_url` - -The URL of the proxy to use when connecting to the {es} servers. The -value may be either a complete URL or a "host[:port]", in which case the "http" -scheme is assumed. If a value is not specified through the configuration file -then proxy environment variables are used. See the -https://golang.org/pkg/net/http/#ProxyFromEnvironment[Go documentation] -for more information about the environment variables. - -// output.elasticsearch.index has been removed from APM Server -ifndef::apm-server[] - -[[index-option-es]] -==== `index` - -The index name to write events to when you're using daily indices. The default is -+"{beatname_lc}-%{[{beat_version_key}]}-%{+yyyy.MM.dd}"+, for example, -+"{beatname_lc}-{version}-{localdate}"+. If you change this setting, you also -need to configure the `setup.template.name` and `setup.template.pattern` options -(see <>). - -ifndef::no_dashboards[] -If you are using the pre-built {kib} -dashboards, you also need to set the `setup.dashboards.index` option (see -<>). -endif::no_dashboards[] - -ifndef::no_ilm[] -When <> is enabled, the default `index` is -+"{beatname_lc}-%{[{beat_version_key}]}-%{+yyyy.MM.dd}-%{index_num}"+, for example, -+"{beatname_lc}-{version}-{localdate}-000001"+. Custom `index` settings are ignored -when {ilm-init} is enabled. If you’re sending events to a cluster that supports index -lifecycle management, see <> to learn how to change the index name. -endif::no_ilm[] - -You can set the index dynamically by using a format string to access any event -field. For example, this configuration uses a custom field, `fields.log_type`, -to set the index: - -["source","yaml",subs="attributes"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - index: "%{[fields.log_type]}-%{[{beat_version_key}]}-%{+yyyy.MM.dd}" <1> ------------------------------------------------------------------------------- - -<1> We recommend including +{beat_version_key}+ in the name to avoid mapping issues -when you upgrade. - -With this configuration, all events with `log_type: normal` are sent to an -index named +normal-{version}-{localdate}+, and all events with -`log_type: critical` are sent to an index named -+critical-{version}-{localdate}+. - -See the <> setting for other ways to set the index -dynamically. -endif::apm-server[] - -// output.elasticsearch.indices has been removed from APM Server -ifndef::apm-server[] - -[[indices-option-es]] -==== `indices` - -An array of index selector rules. Each rule specifies the index to use for -events that match the rule. During publishing, {beatname_uc} uses the first -matching rule in the array. Rules can contain conditionals, format string-based -fields, and name mappings. If the `indices` setting is missing or no rule -matches, the <> setting is used. - -ifndef::no_ilm[] -Similar to `index`, defining custom `indices` will disable <>. -endif::no_ilm[] - -Rule settings: - -*`index`*:: The index format string to use. If this string contains field -references, such as `%{[fields.name]}`, the fields must exist, or the rule fails. - -*`mappings`*:: A dictionary that takes the value returned by `index` and maps it -to a new name. - -*`default`*:: The default string value to use if `mappings` does not find a -match. - -*`when`*:: A condition that must succeed in order to execute the current rule. -ifndef::no-processors[] -All the <> supported by processors are also supported -here. -endif::no-processors[] - -The following example sets the index based on whether the `message` field -contains the specified string: - -["source","yaml",subs="attributes"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - indices: - - index: "warning-%{[{beat_version_key}]}-%{+yyyy.MM.dd}" - when.contains: - message: "WARN" - - index: "error-%{[{beat_version_key}]}-%{+yyyy.MM.dd}" - when.contains: - message: "ERR" ------------------------------------------------------------------------------- - - -This configuration results in indices named +warning-{version}-{localdate}+ -and +error-{version}-{localdate}+ (plus the default index if no matches are -found). - -The following example sets the index by taking the name returned by the `index` -format string and mapping it to a new name that's used for the index: - -["source","yaml"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - indices: - - index: "%{[fields.log_type]}" - mappings: - critical: "sev1" - normal: "sev2" - default: "sev3" ------------------------------------------------------------------------------- - - -This configuration results in indices named `sev1`, `sev2`, and `sev3`. - -The `mappings` setting simplifies the configuration, but is limited to string -values. You cannot specify format strings within the mapping pairs. -endif::apm-server[] - -ifndef::no_ilm[] -[[ilm-es]] -==== `ilm` - -Configuration options for {ilm}. - -See <> for more information. -endif::no_ilm[] - -ifndef::no-pipeline[] -[[pipeline-option-es]] -==== `pipeline` - -A format string value that specifies the ingest node pipeline to write events to. - -["source","yaml"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - pipeline: my_pipeline_id ------------------------------------------------------------------------------- - -For more information, see <>. - -You can set the ingest node pipeline dynamically by using a format string to -access any event field. For example, this configuration uses a custom field, -`fields.log_type`, to set the pipeline for each event: - -["source","yaml",subs="attributes"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - pipeline: "%{[fields.log_type]}_pipeline" ------------------------------------------------------------------------------- - -With this configuration, all events with `log_type: normal` are sent to a pipeline -named `normal_pipeline`, and all events with `log_type: critical` are sent to a -pipeline named `critical_pipeline`. - -TIP: To learn how to add custom fields to events, see the -<> option. - -See the <> setting for other ways to set the -ingest node pipeline dynamically. - -[[pipelines-option-es]] -==== `pipelines` - -An array of pipeline selector rules. Each rule specifies the ingest node -pipeline to use for events that match the rule. During publishing, {beatname_uc} -uses the first matching rule in the array. Rules can contain conditionals, -format string-based fields, and name mappings. If the `pipelines` setting is -missing or no rule matches, the <> setting is -used. - -Rule settings: - -*`pipeline`*:: The pipeline format string to use. If this string contains field -references, such as `%{[fields.name]}`, the fields must exist, or the rule -fails. - -*`mappings`*:: A dictionary that takes the value returned by `pipeline` and maps -it to a new name. - -*`default`*:: The default string value to use if `mappings` does not find a -match. - -*`when`*:: A condition that must succeed in order to execute the current rule. -ifndef::no-processors[] -All the <> supported by processors are also supported -here. -endif::no-processors[] - -The following example sends events to a specific pipeline based on whether the -`message` field contains the specified string: - -["source","yaml"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - pipelines: - - pipeline: "warning_pipeline" - when.contains: - message: "WARN" - - pipeline: "error_pipeline" - when.contains: - message: "ERR" ------------------------------------------------------------------------------- - - -The following example sets the pipeline by taking the name returned by the -`pipeline` format string and mapping it to a new name that's used for the -pipeline: - -["source","yaml"] ------------------------------------------------------------------------------- -output.elasticsearch: - hosts: ["http://localhost:9200"] - pipelines: - - pipeline: "%{[fields.log_type]}" - mappings: - critical: "sev1_pipeline" - normal: "sev2_pipeline" - default: "sev3_pipeline" ------------------------------------------------------------------------------- - - -With this configuration, all events with `log_type: critical` are sent to -`sev1_pipeline`, all events with `log_type: normal` are sent to a -`sev2_pipeline`, and all other events are sent to `sev3_pipeline`. - -For more information about ingest node pipelines, see -<>. - -endif::[] - -==== `max_retries` - -ifdef::ignores_max_retries[] -{beatname_uc} ignores the `max_retries` setting and retries indefinitely. -endif::[] - -ifndef::ignores_max_retries[] -The number of times to retry publishing an event after a publishing failure. -After the specified number of retries, the events are typically dropped. - -Set `max_retries` to a value less than 0 to retry until all events are published. - -The default is 3. -endif::[] - -==== `flush_bytes` - -The bulk request size threshold, in bytes, before flushing to {es}. -The value must have a suffix, e.g. `"2MB"`. The default is `1MB`. - -==== `flush_interval` - -The maximum duration to accumulate events for a bulk request before being flushed to {es}. -The value must have a duration suffix, e.g. `"5s"`. The default is `1s`. - -==== `backoff.init` - -The number of seconds to wait before trying to reconnect to {es} after -a network error. After waiting `backoff.init` seconds, {beatname_uc} tries to -reconnect. If the attempt fails, the backoff timer is increased exponentially up -to `backoff.max`. After a successful connection, the backoff timer is reset. The -default is `1s`. - - -==== `backoff.max` - -The maximum number of seconds to wait before attempting to connect to -{es} after a network error. The default is `60s`. - -==== `timeout` - -The HTTP request timeout in seconds for the {es} request. The default is 90. - -==== `ssl` - -Configuration options for SSL parameters like the certificate authority to use -for HTTPS-based connections. If the `ssl` section is missing, the host CAs are used for HTTPS connections to -{es}. - -See the <> guide -or <> for more information. - -// Elasticsearch security -include::{docdir}/https.asciidoc[] diff --git a/docs/configure/outputs/kafka.asciidoc b/docs/configure/outputs/kafka.asciidoc deleted file mode 100644 index 72c32eeedaf..00000000000 --- a/docs/configure/outputs/kafka.asciidoc +++ /dev/null @@ -1,331 +0,0 @@ -[[kafka-output]] -== Configure the Kafka output - -++++ -Kafka -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -The Kafka output is not yet supported by {fleet}-managed APM Server. -**** - -The Kafka output sends events to Apache Kafka. - -To use this output, edit the {beatname_uc} configuration file to disable the {es} -output by commenting it out, and enable the Kafka output by uncommenting the -Kafka section. - -Example configuration: - -[source,yaml] ------------------------------------------------------------------------------- -output.kafka: - # initial brokers for reading cluster metadata - hosts: ["kafka1:9092", "kafka2:9092", "kafka3:9092"] - - # message topic selection + partitioning - topic: '%{[fields.log_topic]}' - partition.round_robin: - reachable_only: false - - required_acks: 1 - compression: gzip - max_message_bytes: 1000000 ------------------------------------------------------------------------------- - -NOTE: Events bigger than <> will be dropped. To avoid this problem, make sure {beatname_uc} does not generate events bigger than <>. - -ifdef::apm-server[] -[float] -=== {kib} configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] -endif::[] - -[[kafka-compatibility]] -=== Compatibility - -This output works with all Kafka versions in between 0.11 and 2.2.2. Older versions -might work as well, but are not supported. - -=== Configuration options - -You can specify the following options in the `kafka` section of the +{beatname_lc}.yml+ config file: - -==== `enabled` - -The `enabled` config is a boolean setting to enable or disable the output. If set -to false, the output is disabled. - -ifndef::apm-server[] -The default value is `true`. -endif::[] -ifdef::apm-server[] -The default value is `false`. -endif::[] - -==== `hosts` - -The list of Kafka broker addresses from where to fetch the cluster metadata. -The cluster metadata contain the actual Kafka brokers events are published to. - -==== `version` - -Kafka version {beatname_lc} is assumed to run against. Defaults to 1.0.0. - -Event timestamps will be added, if version 0.10.0.0+ is enabled. - -Valid values are all Kafka releases in between `0.8.2.0` and `2.0.0`. - -See <> for information on supported versions. - -==== `username` - -The username for connecting to Kafka. If username is configured, the password -must be configured as well. - -==== `password` - -The password for connecting to Kafka. - -==== `sasl.mechanism` - -beta[] - -The SASL mechanism to use when connecting to Kafka. It can be one of: - -* `PLAIN` for SASL/PLAIN. -* `SCRAM-SHA-256` for SCRAM-SHA-256. -* `SCRAM-SHA-512` for SCRAM-SHA-512. - -If `sasl.mechanism` is not set, `PLAIN` is used if `username` and `password` -are provided. Otherwise, SASL authentication is disabled. - - -[[topic-option-kafka]] -==== `topic` - -The Kafka topic used for produced events. - -You can set the topic dynamically by using a format string to access any -event field. For example, this configuration uses a custom field, -`fields.log_topic`, to set the topic for each event: - -[source,yaml] ------ -topic: '%{[fields.log_topic]}' ------ - -See the <> setting for other ways to set the -topic dynamically. - -[[topics-option-kafka]] -==== `topics` - -An array of topic selector rules. Each rule specifies the `topic` to use for -events that match the rule. During publishing, {beatname_uc} sets the `topic` -for each event based on the first matching rule in the array. Rules -can contain conditionals, format string-based fields, and name mappings. If the -`topics` setting is missing or no rule matches, the -<> field is used. - -Rule settings: - -*`topic`*:: The topic format string to use. If this string contains field -references, such as `%{[fields.name]}`, the fields must exist, or the rule -fails. - -*`mappings`*:: A dictionary that takes the value returned by `topic` and maps it -to a new name. - -*`default`*:: The default string value to use if `mappings` does not find a -match. - -*`when`*:: A condition that must succeed in order to execute the current rule. -ifndef::no-processors[] -All the <> supported by processors are also supported -here. -endif::no-processors[] - -The following example sets the topic based on whether the message field contains -the specified string: - -["source","yaml",subs="attributes"] ------------------------------------------------------------------------------- -output.kafka: - hosts: ["localhost:9092"] - topic: "logs-%{[agent.version]}" - topics: - - topic: "critical-%{[agent.version]}" - when.contains: - message: "CRITICAL" - - topic: "error-%{[agent.version]}" - when.contains: - message: "ERR" ------------------------------------------------------------------------------- - - -This configuration results in topics named +critical-{version}+, -+error-{version}+, and +logs-{version}+. - -==== `key` - -Optional formatted string specifying the Kafka event key. If configured, the -event key can be extracted from the event using a format string. - -See the Kafka documentation for the implications of a particular choice of key; -by default, the key is chosen by the Kafka cluster. - -==== `partition` - -Kafka output broker event partitioning strategy. Must be one of `random`, -`round_robin`, or `hash`. By default the `hash` partitioner is used. - -*`random.group_events`*: Sets the number of events to be published to the same - partition, before the partitioner selects a new partition by random. The - default value is 1 meaning after each event a new partition is picked randomly. - -*`round_robin.group_events`*: Sets the number of events to be published to the - same partition, before the partitioner selects the next partition. The default - value is 1 meaning after each event the next partition will be selected. - -*`hash.hash`*: List of fields used to compute the partitioning hash value from. - If no field is configured, the events `key` value will be used. - -*`hash.random`*: Randomly distribute events if no hash or key value can be computed. - -All partitioners will try to publish events to all partitions by default. If a -partition's leader becomes unreachable for the beat, the output might block. All -partitioners support setting `reachable_only` to overwrite this -behavior. If `reachable_only` is set to `true`, events will be published to -available partitions only. - -NOTE: Publishing to a subset of available partitions potentially increases resource usage because events may become unevenly distributed. - -==== `client_id` - -The configurable client ID used for logging, debugging, and auditing purposes. The default is "beats". - -==== `worker` - -The number of concurrent load-balanced Kafka output workers. - -==== `codec` - -Output codec configuration. If the `codec` section is missing, events will be JSON encoded. - -See <> for more information. - -==== `metadata` - -Kafka metadata update settings. The metadata do contain information about -brokers, topics, partition, and active leaders to use for publishing. - -*`refresh_frequency`*:: Metadata refresh interval. Defaults to 10 minutes. - -*`full`*:: Strategy to use when fetching metadata, when this option is `true`, the client will maintain -a full set of metadata for all the available topics, if the this option is set to `false` it will only refresh the -metadata for the configured topics. The default is false. - -*`retry.max`*:: Total number of metadata update retries when cluster is in middle of leader election. The default is 3. - -*`retry.backoff`*:: Waiting time between retries during leader elections. Default is `250ms`. - -==== `max_retries` - -ifdef::ignores_max_retries[] -{beatname_uc} ignores the `max_retries` setting and retries indefinitely. -endif::[] - -ifndef::ignores_max_retries[] -The number of times to retry publishing an event after a publishing failure. -After the specified number of retries, the events are typically dropped. - -Set `max_retries` to a value less than 0 to retry until all events are published. - -The default is 3. -endif::[] - -==== `backoff.init` - -The number of seconds to wait before trying to republish to Kafka -after a network error. After waiting `backoff.init` seconds, {beatname_uc} -tries to republish. If the attempt fails, the backoff timer is increased -exponentially up to `backoff.max`. After a successful publish, the backoff -timer is reset. The default is `1s`. - -==== `backoff.max` - -The maximum number of seconds to wait before attempting to republish to -Kafka after a network error. The default is `60s`. - -==== `bulk_max_size` - -The maximum number of events to bulk in a single Kafka request. The default is 2048. - -==== `bulk_flush_frequency` - -Duration to wait before sending bulk Kafka request. 0 is no delay. The default is 0. - -==== `timeout` - -The number of seconds to wait for responses from the Kafka brokers before timing -out. The default is 30 (seconds). - -==== `broker_timeout` - -The maximum duration a broker will wait for number of required ACKs. The default is `10s`. - -==== `channel_buffer_size` - -Per Kafka broker number of messages buffered in output pipeline. The default is 256. - -==== `keep_alive` - -The keep-alive period for an active network connection. If `0s`, keep-alives are disabled. The default is `0s`. - -==== `compression` - -Sets the output compression codec. Must be one of `none`, `snappy`, `lz4` and `gzip`. The default is `gzip`. - -[IMPORTANT] -.Known issue with Azure Event Hub for Kafka -==== -When targeting Azure Event Hub for Kafka, set `compression` to `none` as the provided codecs are not supported. -==== - -==== `compression_level` - -Sets the compression level used by gzip. Setting this value to 0 disables compression. -The compression level must be in the range of 1 (best speed) to 9 (best compression). - -Increasing the compression level will reduce the network usage but will increase the CPU usage. - -The default value is 4. - -[[kafka-max_message_bytes]] -==== `max_message_bytes` - -The maximum permitted size of JSON-encoded messages. Bigger messages will be dropped. The default value is 1000000 (bytes). This value should be equal to or less than the broker's `message.max.bytes`. - -==== `required_acks` - -The ACK reliability level required from broker. 0=no response, 1=wait for local commit, -1=wait for all replicas to commit. The default is 1. - -Note: If set to 0, no ACKs are returned by Kafka. Messages might be lost silently on error. - -==== `enable_krb5_fast` - -beta[] - -Enable Kerberos FAST authentication. This may conflict with some Active Directory installations. It is separate from the standard Kerberos settings because this flag only applies to the Kafka output. The default is `false`. - -==== `ssl` - -Configuration options for SSL parameters like the root CA for Kafka connections. - The Kafka host keystore should be created with the -`-keyalg RSA` argument to ensure it uses a cipher supported by -https://github.com/Shopify/sarama/wiki/Frequently-Asked-Questions#why-cant-sarama-connect-to-my-kafka-cluster-using-ssl[{filebeat}'s Kafka library]. -See <> for more information. diff --git a/docs/configure/outputs/output-cloud.asciidoc b/docs/configure/outputs/output-cloud.asciidoc deleted file mode 100644 index 5b5e0ff12ea..00000000000 --- a/docs/configure/outputs/output-cloud.asciidoc +++ /dev/null @@ -1,55 +0,0 @@ -[[configure-cloud-id]] -== Configure the output for {ess} on {ecloud} - -[subs="attributes"] -++++ -{ess} -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -This documentation only applies to APM Server binary users. -**** - -ifdef::apm-server[] -NOTE: This page refers to using a separate instance of APM Server with an existing -{ess-product}[{ess} deployment]. -If you want to use APM on {ess}, see: -{cloud}/ec-create-deployment.html[Create your deployment] and -{cloud}/ec-manage-apm-settings.html[Add APM user settings]. -endif::apm-server[] - -{beatname_uc} comes with two settings that simplify the output configuration -when used together with {ess-product}[{ess}]. When defined, -these setting overwrite settings from other parts in the configuration. - -Example: - -["source","yaml",subs="attributes"] ------------------------------------------------------------------------------- -cloud.id: "staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==" -cloud.auth: "elastic:{pwd}" ------------------------------------------------------------------------------- - -These settings can be also specified at the command line, like this: - - -["source","sh",subs="attributes"] ------------------------------------------------------------------------------- -{beatname_lc} -e -E cloud.id="" -E cloud.auth="" ------------------------------------------------------------------------------- - - -=== `cloud.id` - -The Cloud ID, which can be found in the {ess} web console, is used by -{beatname_uc} to resolve the {es} and {kib} URLs. This setting -overwrites the `output.elasticsearch.hosts` and `setup.kibana.host` settings. - -=== `cloud.auth` - -When specified, the `cloud.auth` overwrites the `output.elasticsearch.username` and -`output.elasticsearch.password` settings. Because the {kib} settings inherit -the username and password from the {es} output, this can also be used -to set the `setup.kibana.username` and `setup.kibana.password` options. diff --git a/docs/configure/outputs/outputs-list.asciidoc b/docs/configure/outputs/outputs-list.asciidoc deleted file mode 100644 index b0b925c0de5..00000000000 --- a/docs/configure/outputs/outputs-list.asciidoc +++ /dev/null @@ -1,23 +0,0 @@ -//# tag::outputs-list[] -* <> -* <> -* <> -* <> -* <> -* <> -//# end::outputs-list[] - -//# tag::outputs-include[] -include::output-cloud.asciidoc[] - -include::elasticsearch.asciidoc[] - -include::logstash.asciidoc[] - -include::kafka.asciidoc[] - -include::redis.asciidoc[] - -include::console.asciidoc[] - -//# end::outputs-include[] diff --git a/docs/configure/outputs/redis.asciidoc b/docs/configure/outputs/redis.asciidoc deleted file mode 100644 index 595de2445d0..00000000000 --- a/docs/configure/outputs/redis.asciidoc +++ /dev/null @@ -1,247 +0,0 @@ -[[redis-output]] -== Configure the Redis output - -++++ -Redis -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -The Redis output is not yet supported by {fleet}-managed APM Server. -**** - -The Redis output inserts the events into a Redis list or a Redis channel. -This output plugin is compatible with -the https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html[Redis input plugin] for {ls}. - -To use this output, edit the {beatname_uc} configuration file to disable the {es} -output by commenting it out, and enable the Redis output by adding `output.redis`. - -Example configuration: - -["source","yaml",subs="attributes"] ------------------------------------------------------------------------------- -output.redis: - hosts: ["localhost"] - password: "my_password" - key: "{beatname_lc}" - db: 0 - timeout: 5 ------------------------------------------------------------------------------- - -ifdef::apm-server[] -[float] -=== {kib} configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] -endif::[] - -=== Compatibility - -This output is expected to work with all Redis versions between 3.2.4 and 5.0.8. Other versions might work as well, -but are not supported. - -=== Configuration options - -You can specify the following `output.redis` options in the +{beatname_lc}.yml+ config file: - -==== `enabled` - -The enabled config is a boolean setting to enable or disable the output. If set -to false, the output is disabled. - -The default value is `true`. - -==== `hosts` - -The list of Redis servers to connect to. If load balancing is enabled, the events are -distributed to the servers in the list. If one server becomes unreachable, the events are -distributed to the reachable servers only. You can define each Redis server by specifying -`HOST` or `HOST:PORT`. For example: `"192.15.3.2"` or `"test.redis.io:12345"`. If you -don't specify a port number, the value configured by `port` is used. -Configure each Redis server with an `IP:PORT` pair or with a `URL`. For -example: `redis://localhost:6379` or `rediss://localhost:6379`. -URLs can include a server-specific password. For example: `redis://:password@localhost:6379`. -The `redis` scheme will disable the `ssl` settings for the host, while `rediss` -will enforce TLS. If `rediss` is specified and no `ssl` settings are -configured, the output uses the system certificate store. - -==== `index` - -The index name added to the events metadata for use by {ls}. The default is "{beatname_lc}". - -[[key-option-redis]] -==== `key` - -The name of the Redis list or channel the events are published to. If not -configured, the value of the `index` setting is used. - -You can set the key dynamically by using a format string to access any event -field. For example, this configuration uses a custom field, `fields.list`, to -set the Redis list key. If `fields.list` is missing, `fallback` is used: - -["source","yaml"] ------------------------------------------------------------------------------- -output.redis: - hosts: ["localhost"] - key: "%{[fields.list]:fallback}" ------------------------------------------------------------------------------- - -See the <> setting for other ways to set the key -dynamically. - -[[keys-option-redis]] -==== `keys` - -An array of key selector rules. Each rule specifies the `key` to use for events -that match the rule. During publishing, {beatname_uc} uses the first matching -rule in the array. Rules can contain conditionals, format string-based fields, -and name mappings. If the `keys` setting is missing or no rule matches, the -<> setting is used. - -Rule settings: - -*`index`*:: The key format string to use. If this string contains field -references, such as `%{[fields.name]}`, the fields must exist, or the rule -fails. - -*`mappings`*:: A dictionary that takes the value returned by `key` and maps it to -a new name. - -*`default`*:: The default string value to use if `mappings` does not find a match. - -*`when`*:: A condition that must succeed in order to execute the current rule. -ifndef::no-processors[] -All the <> supported by processors are also supported -here. -endif::no-processors[] - -Example `keys` settings: - -["source","yaml"] ------------------------------------------------------------------------------- -output.redis: - hosts: ["localhost"] - key: "default_list" - keys: - - key: "info_list" # send to info_list if `message` field contains INFO - when.contains: - message: "INFO" - - key: "debug_list" # send to debug_list if `message` field contains DEBUG - when.contains: - message: "DEBUG" - - key: "%{[fields.list]}" - mappings: - http: "frontend_list" - nginx: "frontend_list" - mysql: "backend_list" ------------------------------------------------------------------------------- - -==== `password` - -The password to authenticate with. The default is no authentication. - -==== `db` - -The Redis database number where the events are published. The default is 0. - -==== `datatype` - -The Redis data type to use for publishing events.If the data type is `list`, the -Redis RPUSH command is used and all events are added to the list with the key defined under `key`. -If the data type `channel` is used, the Redis `PUBLISH` command is used and means that all events -are pushed to the pub/sub mechanism of Redis. The name of the channel is the one defined under `key`. -The default value is `list`. - -==== `codec` - -Output codec configuration. If the `codec` section is missing, events will be JSON encoded. - -See <> for more information. - -==== `worker` - -The number of workers to use for each host configured to publish events to Redis. Use this setting along with the -`loadbalance` option. For example, if you have 2 hosts and 3 workers, in total 6 workers are started (3 for each host). - -==== `loadbalance` - -If set to true and multiple hosts or workers are configured, the output plugin load balances published events onto all -Redis hosts. If set to false, the output plugin sends all events to only one host (determined at random) and will switch -to another host if the currently selected one becomes unreachable. The default value is true. - -==== `timeout` - -The Redis connection timeout in seconds. The default is 5 seconds. - -==== `backoff.init` - -The number of seconds to wait before trying to reconnect to Redis after -a network error. After waiting `backoff.init` seconds, {beatname_uc} tries to -reconnect. If the attempt fails, the backoff timer is increased exponentially up -to `backoff.max`. After a successful connection, the backoff timer is reset. The -default is `1s`. - -==== `backoff.max` - -The maximum number of seconds to wait before attempting to connect to -Redis after a network error. The default is `60s`. - -==== `max_retries` - -ifdef::ignores_max_retries[] -{beatname_uc} ignores the `max_retries` setting and retries indefinitely. -endif::[] - -ifndef::ignores_max_retries[] -The number of times to retry publishing an event after a publishing failure. -After the specified number of retries, the events are typically dropped. - -Set `max_retries` to a value less than 0 to retry until all events are published. - -The default is 3. -endif::[] - - -==== `bulk_max_size` - -The maximum number of events to bulk in a single Redis request or pipeline. The default is 2048. - -If the Beat sends single events, the events are collected into batches. If the -Beat publishes a large batch of events (larger than the value specified by -`bulk_max_size`), the batch is split. - -Specifying a larger batch size can improve performance by lowering the overhead -of sending events. However big batch sizes can also increase processing times, -which might result in API errors, killed connections, timed-out publishing -requests, and, ultimately, lower throughput. - -Setting `bulk_max_size` to values less than or equal to 0 disables the -splitting of batches. When splitting is disabled, the queue decides on the -number of events to be contained in a batch. - -==== `ssl` - -Configuration options for SSL parameters like the root CA for Redis connections -guarded by SSL proxies (for example https://www.stunnel.org[stunnel]). See -<> for more information. - -==== `proxy_url` - -The URL of the SOCKS5 proxy to use when connecting to the Redis servers. The -value must be a URL with a scheme of `socks5://`. You cannot use a web proxy -because the protocol used to communicate with Redis is not based on HTTP. - -If the SOCKS5 proxy server requires client authentication, you can embed -a username and password in the URL. - -When using a proxy, hostnames are resolved on the proxy server instead of on the -client. You can change this behavior by setting the -<> option. - -[[redis-proxy-use-local-resolver]] -==== `proxy_use_local_resolver` - -This option determines whether Redis hostnames are resolved locally when using a proxy. -The default value is false, which means that name resolution occurs on the proxy server. diff --git a/docs/configure/path.asciidoc b/docs/configure/path.asciidoc deleted file mode 100644 index 27c720ab6ee..00000000000 --- a/docs/configure/path.asciidoc +++ /dev/null @@ -1,120 +0,0 @@ -[[configuration-path]] -= Configure project paths - -++++ -Project paths -++++ - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -This documentation is only relevant for APM Server binary users. -Fleet-managed paths are defined in <>. -**** - -The `path` section of the +{beatname_lc}.yml+ config file contains configuration -options that define where {beatname_uc} looks for its files. For example, {beatname_uc} -looks for the {es} template file in the configuration path and writes -log files in the logs path. -ifdef::has_registry[] -{beatname_uc} looks for its registry files in the data path. -endif::[] - -Please see the <> section for more details. - -Here is an example configuration: - -[source,yaml] ------------------------------------------------------------------------------- -path.home: /usr/share/beat -path.config: /etc/beat -path.data: /var/lib/beat -path.logs: /var/log/ ------------------------------------------------------------------------------- - -Note that it is possible to override these options by using command line flags. - -[float] -== Configuration options - -You can specify the following options in the `path` section of the +{beatname_lc}.yml+ config file: - -[float] -=== `home` - -The home path for the {beatname_uc} installation. This is the default base path for all -other path settings and for miscellaneous files that come with the distribution (for example, the -sample dashboards). If not set by a CLI flag or in the configuration file, the default -for the home path is the location of the {beatname_uc} binary. - -Example: - -[source,yaml] ------------------------------------------------------------------------------- -path.home: /usr/share/beats ------------------------------------------------------------------------------- - -[float] -=== `config` - -The configuration path for the {beatname_uc} installation. This is the default base path -for configuration files, including the main YAML configuration file and the -{es} template file. If not set by a CLI flag or in the configuration file, the default for the -configuration path is the home path. - -Example: - -[source,yaml] ------------------------------------------------------------------------------- -path.config: /usr/share/beats/config ------------------------------------------------------------------------------- - -[float] -=== `data` - -The data path for the {beatname_uc} installation. This is the default base path for all -the files in which {beatname_uc} needs to store its data. If not set by a CLI -flag or in the configuration file, the default for the data path is a `data` -subdirectory inside the home path. - - -Example: - -[source,yaml] ------------------------------------------------------------------------------- -path.data: /var/lib/beats ------------------------------------------------------------------------------- - -TIP: When running multiple {beatname_uc} instances on the same host, make sure they -each have a distinct `path.data` value. - -[float] -=== `logs` - -The logs path for a {beatname_uc} installation. This is the default location for {beatname_uc}'s -log files. If not set by a CLI flag or in the configuration file, the default -for the logs path is a `logs` subdirectory inside the home path. - -Example: - -[source,yaml] ------------------------------------------------------------------------------- -path.logs: /var/log/beats ------------------------------------------------------------------------------- - -[float] -=== `system.hostfs` - -Specifies the mount point of the host's file system for use in monitoring a host. -This can either be set in the config, or with the `--system.hostfs` CLI flag. This is used for cgroup self-monitoring. -ifeval::["{beatname_lc}"=="metricbeat"] -This is also used by the system module to read files from `/proc` and `/sys`. -endif::[] - - -Example: - -[source,yaml] ------------------------------------------------------------------------------- -system.hostfs: /mount/rootfs ------------------------------------------------------------------------------- diff --git a/docs/configure/sampling.asciidoc b/docs/configure/sampling.asciidoc deleted file mode 100644 index 9a4e78fe83b..00000000000 --- a/docs/configure/sampling.asciidoc +++ /dev/null @@ -1,138 +0,0 @@ -[[tail-based-samling-config]] -= Tail-based sampling - -**** -image:./binary-yes-fm-yes.svg[supported deployment methods] - -Most options on this page are supported by all APM Server deployment methods. -**** - -Tail-based sampling configuration options. - -include::./tab-widgets/sampling-config-widget.asciidoc[] - -[float] -[[configuration-tbs]] -= Top-level tail-based sampling settings - -See <> to learn more. - -:input-type: ref -// tag::tbs-top[] - -[float] -[id="sampling-tail-enabled-{input-type}"] -== Enable tail-based sampling -Set to `true` to enable tail based sampling. -Disabled by default. (bool) - -|==== -| APM Server binary | `sampling.tail.enabled` -| Fleet-managed | `Enable tail-based sampling` -|==== - -[float] -[id="sampling-tail-interval-{input-type}"] -== Interval -Synchronization interval for multiple APM Servers. -Should be in the order of tens of seconds or low minutes. -Default: `1m` (1 minute). (duration) - -|==== -| APM Server binary | `sampling.tail.interval` -| Fleet-managed | `Interval` -|==== - -[float] -[id="sampling-tail-policies-{input-type}"] -== Policies -Criteria used to match a root transaction to a sample rate. - -Policies map trace events to a sample rate. -Each policy must specify a sample rate. -Trace events are matched to policies in the order specified. -All policy conditions must be true for a trace event to match. -Each policy list should conclude with a policy that only specifies a sample rate. -This final policy is used to catch remaining trace events that don't match a stricter policy. -(`[]policy`) - -|==== -| APM Server binary | `sampling.tail.policies` -| Fleet-managed | `Policies` -|==== - -[float] -[id="sampling-tail-storage_limit-{input-type}"] -== Storage limit -The amount of storage space allocated for trace events matching tail sampling policies. Caution: Setting this limit higher than the allowed space may cause APM Server to become unhealthy. - -If the configured storage limit is insufficient, it logs "configured storage limit reached". The event will bypass sampling and will always be indexed when storage limit is reached. - -Default: `3GB`. (text) - -|==== -| APM Server binary | `sampling.tail.storage_limit` -| Fleet-managed | `Storage limit` -|==== - -// end::tbs-top[] - -[float] -[[configuration-tbs-policy]] -= Policy-level tail-based sampling settings - -See <> to learn more. - -// tag::tbs-policy[] - -[float] -[id="sampling-tail-sample-rate-{input-type}"] -== Sample rate - -**`sample_rate`** - -The sample rate to apply to trace events matching this policy. -Required in each policy. - -The sample rate must be greater than or equal to `0` and less than or equal to `1`. -For example, a `sample_rate` of `0.01` means that 1% of trace events matching the policy will be sampled. -A `sample_rate` of `1` means that 100% of trace events matching the policy will be sampled. (int) - -[float] -[id="sampling-tail-trace-name-{input-type}"] -== Trace name - -**`trace.name`** - -The trace name for events to match a policy. -A match occurs when the configured `trace.name` matches the `transaction.name` of the root transaction of a trace. -A root transaction is any transaction without a `parent.id`. (string) - -[float] -[id="sampling-tail-trace-outcome-{input-type}"] -== Trace outcome - -**`trace.outcome`** - -The trace outcome for events to match a policy. -A match occurs when the configured `trace.outcome` matches a trace's `event.outcome` field. -Trace outcome can be `success`, `failure`, or `unknown`. (string) - -[float] -[id="sampling-tail-service-name-{input-type}"] -== Service name - -**`service.name`** - -The service name for events to match a policy. (string) - -[float] -[id="sampling-tail-service-environment-{input-type}"] -== Service Environment - -**`service.environment`** - -The service environment for events to match a policy. (string) - -// end::tbs-policy[] -:!input-type: diff --git a/docs/configure/shared/input-apm.asciidoc b/docs/configure/shared/input-apm.asciidoc deleted file mode 100644 index 2f3b13904ba..00000000000 --- a/docs/configure/shared/input-apm.asciidoc +++ /dev/null @@ -1,8 +0,0 @@ - -// tag::fleet-managed-settings[] -Configure and customize Fleet-managed APM settings directly in {kib}: - -. Open {kib} and navigate to **{fleet}**. -. Under the **Agent policies** tab, select the policy you would like to configure. -. Find the Elastic APM integration and select **Actions** > **Edit integration**. -// end::fleet-managed-settings[] diff --git a/docs/configure/tab-widgets/anon-auth-widget.asciidoc b/docs/configure/tab-widgets/anon-auth-widget.asciidoc deleted file mode 100644 index 16746820e42..00000000000 --- a/docs/configure/tab-widgets/anon-auth-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::anon-auth.asciidoc[tag=binary] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/configure/tab-widgets/anon-auth.asciidoc b/docs/configure/tab-widgets/anon-auth.asciidoc deleted file mode 100644 index f8f1a29c117..00000000000 --- a/docs/configure/tab-widgets/anon-auth.asciidoc +++ /dev/null @@ -1,18 +0,0 @@ -// tag::binary[] -Example configuration: - -["source","yaml"] ----- -apm-server.auth.anonymous.enabled: true -apm-server.auth.anonymous.allow_agent: [rum-js] -apm-server.auth.anonymous.allow_service: [my_service_name] -apm-server.auth.anonymous.rate_limit.event_limit: 300 -apm-server.auth.anonymous.rate_limit.ip_limit: 1000 ----- -// end::binary[] - -// tag::fleet-managed[] -include::../shared/input-apm.asciidoc[tag=fleet-managed-settings] -+ -. Look for these settings under **Agent authorization**. -// end::fleet-managed[] diff --git a/docs/configure/tab-widgets/auth-config-widget.asciidoc b/docs/configure/tab-widgets/auth-config-widget.asciidoc deleted file mode 100644 index d81425414e7..00000000000 --- a/docs/configure/tab-widgets/auth-config-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::auth-config.asciidoc[tag=binary] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/configure/tab-widgets/auth-config.asciidoc b/docs/configure/tab-widgets/auth-config.asciidoc deleted file mode 100644 index fd256c3124b..00000000000 --- a/docs/configure/tab-widgets/auth-config.asciidoc +++ /dev/null @@ -1,23 +0,0 @@ -// tag::binary[] -**Example config file:** - -[source,yaml] ----- -apm-server: - host: "localhost:8200" - rum: - enabled: true - -output: - elasticsearch: - hosts: ElasticsearchAddress:9200 - -max_procs: 4 ----- -// end::binary[] - -// tag::fleet-managed[] -include::../shared/input-apm.asciidoc[tag=fleet-managed-settings] -+ -. Look for these settings under **Agent authorization**. -// end::fleet-managed[] diff --git a/docs/configure/tab-widgets/general-config-widget.asciidoc b/docs/configure/tab-widgets/general-config-widget.asciidoc deleted file mode 100644 index c543b4e77e4..00000000000 --- a/docs/configure/tab-widgets/general-config-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::general-config.asciidoc[tag=binary] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/configure/tab-widgets/general-config.asciidoc b/docs/configure/tab-widgets/general-config.asciidoc deleted file mode 100644 index 8c34c7eca81..00000000000 --- a/docs/configure/tab-widgets/general-config.asciidoc +++ /dev/null @@ -1,19 +0,0 @@ -// tag::binary[] -**Example config file:** - -[source,yaml] ----- -apm-server: - host: "localhost:8200" - rum: - enabled: true - -max_procs: 4 ----- -// end::binary[] - -// tag::fleet-managed[] -include::../shared/input-apm.asciidoc[tag=fleet-managed-settings] -+ -. Look for these settings under **General**. -// end::fleet-managed[] diff --git a/docs/configure/tab-widgets/rum-config-widget.asciidoc b/docs/configure/tab-widgets/rum-config-widget.asciidoc deleted file mode 100644 index 192121fc5b7..00000000000 --- a/docs/configure/tab-widgets/rum-config-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::rum-config.asciidoc[tag=binary] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/configure/tab-widgets/rum-config.asciidoc b/docs/configure/tab-widgets/rum-config.asciidoc deleted file mode 100644 index 9e194624aca..00000000000 --- a/docs/configure/tab-widgets/rum-config.asciidoc +++ /dev/null @@ -1,28 +0,0 @@ -// tag::binary[] -To enable RUM support, set `apm-server.rum.enabled` to `true` in your APM Server configuration file. - -Example config: - -["source","yaml"] ----- -apm-server.rum.enabled: true -apm-server.auth.anonymous.rate_limit.event_limit: 300 -apm-server.auth.anonymous.rate_limit.ip_limit: 1000 -apm-server.auth.anonymous.allow_service: [your_service_name] -apm-server.rum.allow_origins: ['*'] -apm-server.rum.allow_headers: ["header1", "header2"] -apm-server.rum.library_pattern: "node_modules|bower_components|~" -apm-server.rum.exclude_from_grouping: "^/webpack" -apm-server.rum.source_mapping.enabled: true -apm-server.rum.source_mapping.cache.expiration: 5m -apm-server.rum.source_mapping.elasticsearch.api_key: TiNAGG4BaaMdaH1tRfuU:KnR6yE41RrSowb0kQ0HWoA ----- -// end::binary[] - -// tag::fleet-managed[] -To enable RUM, set <> to `true`. - -include::../shared/input-apm.asciidoc[tag=fleet-managed-settings] -+ -. Look for these options under **Real User Monitoring**. -// end::fleet-managed[] diff --git a/docs/configure/tab-widgets/sampling-config-widget.asciidoc b/docs/configure/tab-widgets/sampling-config-widget.asciidoc deleted file mode 100644 index 902636efb3d..00000000000 --- a/docs/configure/tab-widgets/sampling-config-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::sampling-config.asciidoc[tag=binary] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/configure/tab-widgets/sampling-config.asciidoc b/docs/configure/tab-widgets/sampling-config.asciidoc deleted file mode 100644 index 2b1a70d0fd4..00000000000 --- a/docs/configure/tab-widgets/sampling-config.asciidoc +++ /dev/null @@ -1,23 +0,0 @@ -// tag::binary[] -**Example config file:** - -[source,yaml] ----- -apm-server: - host: "localhost:8200" - rum: - enabled: true - -output: - elasticsearch: - hosts: ElasticsearchAddress:9200 - -max_procs: 4 ----- -// end::binary[] - -// tag::fleet-managed[] -include::../shared/input-apm.asciidoc[tag=fleet-managed-settings] -+ -. Look for these options under **Tail-based sampling**. -// end::fleet-managed[] diff --git a/docs/configure/tls.asciidoc b/docs/configure/tls.asciidoc deleted file mode 100644 index 217ef7f7f02..00000000000 --- a/docs/configure/tls.asciidoc +++ /dev/null @@ -1,15 +0,0 @@ -[[configuration-ssl-landing]] -= SSL/TLS settings - -SSL/TLS is available for: - -* <> (APM Agents) -* <> that support SSL, like {es}, {ls}, or Kafka. - -Additional information on getting started with SSL/TLS is available in <>. - -// :leveloffset: +2 -include::{docdir}/shared-ssl-config.asciidoc[] -// :leveloffset: -2 - -include::{docdir}/ssl-input-settings.asciidoc[leveloffset=-1] \ No newline at end of file diff --git a/docs/cross-cluster-search.asciidoc b/docs/cross-cluster-search.asciidoc deleted file mode 100644 index 8ae95da9b53..00000000000 --- a/docs/cross-cluster-search.asciidoc +++ /dev/null @@ -1,46 +0,0 @@ -[[cross-cluster-search]] -=== Cross-cluster search - -Elastic APM utilizes {es}'s cross-cluster search functionality. -Cross-cluster search lets you run a single search request against one or more -{ref}/modules-remote-clusters.html[remote clusters] -- -making it easy to search APM data across multiple sources. -This means you can also have deployments per data type, making sizing and scaling more predictable, -and allowing for better performance while managing multiple observability use cases. - -[float] -[[set-up-cross-cluster-search]] -==== Set up cross-cluster search - -*Step 1. Set up remote clusters.* - -If you're using the Hosted {ess}, see {cloud}/ec-enable-ccs.html[Enable cross-cluster search]. - -// lint ignore elasticsearch -You can add remote clusters directly in {kib}, under *Management* > *Elasticsearch* > *Remote clusters*. -All you need is a name for the remote cluster and the seed node(s). -Remember the names of your remote clusters, you'll need them in step two. -See {ref}/ccr-getting-started.html[managing remote clusters] for detailed information on the setup process. - -Alternatively, you can {ref}/modules-remote-clusters.html#configuring-remote-clusters[configure remote clusters] -in {es}'s `elasticsearch.yml` file. - -*Step 2. Edit the default {apm-app} {data-sources}.* - -{apm-app} {data-sources} determine which clusters and indices to display data from. -{data-sources-cap} follow this convention: `:`. - -To display data from all remote clusters and the local cluster, -duplicate and prepend the defaults with `*:`. -For example, the default {data-source} for Error indices is `logs-apm*,apm*`. -To add all remote clusters, change this to `*:logs-apm*,*:apm*,logs-apm*,apm*` - -You can also specify certain clusters to display data from, for example, -`cluster-one:logs-apm*,cluster-one:apm*,logs-apm*,apm*`. - -There are two ways to edit the default {data-source}: - -* In the {apm-app} -- Navigate to *APM* > *Settings* > *Indices*, and change all `xpack.apm.indices.*` values to -include remote clusters. -* In `kibana.yml` -- Update the {kibana-ref}/apm-settings-kb.html[`xpack.apm.indices.*`] configuration values to -include remote clusters. diff --git a/docs/data-ingestion.asciidoc b/docs/data-ingestion.asciidoc deleted file mode 100644 index cbe7c07cf56..00000000000 --- a/docs/data-ingestion.asciidoc +++ /dev/null @@ -1,72 +0,0 @@ -[[tune-data-ingestion]] -=== Tune data ingestion - -This section explains how to adapt data ingestion according to your needs. - -[float] -[[tune-apm-server]] -=== Tune APM Server - -* <> -* <> -* <> - -[[add-apm-server-instances]] -[float] -==== Add APM Server or {agent} instances - -If the APM Server cannot process data quickly enough, -you will see request timeouts. -One way to solve this problem is to increase processing power. - -Increase processing power by either migrating to a more powerful machine -or adding more APM Server/Elastic Agent instances. -Having several instances will also increase <>. - -[[reduce-payload-size]] -[float] -==== Reduce the payload size - -Large payloads may result in request timeouts. -You can reduce the payload size by decreasing the flush interval in the agents. -This will cause agents to send smaller and more frequent requests. - -Optionally you can also <> or <>. - -Read more in the {apm-agents-ref}/index.html[agents documentation]. - -[[adjust-event-rate]] -[float] -==== Adjust anonymous auth rate limit - -Agents make use of long running requests and flush as many events over a single request as possible. -Thus, the rate limiter for anonymous authentication is bound to the number of _events_ sent per second, per IP. - -If the event rate limit is hit while events on an established request are sent, the request is not immediately terminated. The intake of events is only throttled to anonymous event rate limit, which means that events are queued and processed slower. Only when the allowed buffer queue is also full, does the request get terminated with a `429 - rate limit exceeded` HTTP response. If an agent tries to establish a new request, but the rate limit is already hit, a `429` will be sent immediately. - -Increasing the default value for the following configuration variable will help avoid `rate limit exceeded` errors: - -|==== -| APM Server binary | <> -| Fleet-managed | `Anonymous Event rate limit (event limit)` -|==== - -[float] -[[apm-tune-elasticsearch]] -=== Tune {es} - -The {es} Reference provides insight on tuning {es}. - -{ref}/tune-for-indexing-speed.html[Tune for indexing speed] provides information on: - -* Refresh interval -* Disabling swapping -* Optimizing file system cache -* Considerations regarding faster hardware -* Setting the indexing buffer size - -{ref}/tune-for-disk-usage.html[Tune for disk usage] provides information on: - -* Disabling unneeded features -* Shard size -* Shrink index diff --git a/docs/data-streams.asciidoc b/docs/data-streams.asciidoc deleted file mode 100644 index acacae9f4de..00000000000 --- a/docs/data-streams.asciidoc +++ /dev/null @@ -1,96 +0,0 @@ -[[apm-data-streams]] -=== Data streams - -**** -{agent} uses data streams to store append-only time series data across multiple indices. -Data streams are well-suited for logs, metrics, traces, and other continuously generated data, -and offer a host of benefits over other indexing strategies: - -* Reduced number of fields per index -* More granular data control -* Flexible naming scheme -* Fewer ingest permissions required - -See the {fleet-guide}/data-streams.html[{fleet} and {agent} Guide] to learn more. -**** - -[discrete] -[[apm-data-streams-naming-scheme]] -=== Data stream naming scheme - -// tag::data-streams[] -APM data follows the `--` naming scheme. -The `type` and `dataset` are predefined by the APM integration, -but the `namespace` is your opportunity to customize how different types of data are stored in {es}. -There is no recommendation for what to use as your namespace--it is intentionally flexible. -For example, you might create namespaces for each of your environments, -like `dev`, `prod`, `production`, etc. -Or, you might create namespaces that correspond to strategic business units within your organization. -// end::data-streams[] - -[discrete] -[[apm-data-streams-list]] -=== APM data streams - -By type, the APM data streams are: - -Traces:: -Traces are comprised of {apm-guide-ref}/data-model.html[spans and transactions]. -Traces are stored in the following data streams: -+ -// tag::traces-data-streams[] -- Application traces: `traces-apm-` -- RUM and iOS agent application traces: `traces-apm.rum-` -// end::traces-data-streams[] - - -Metrics:: -Metrics include application-based metrics, aggregation metrics, and basic system metrics. -Metrics are stored in the following data streams: -+ -// tag::metrics-data-streams[] -- APM internal metrics: `metrics-apm.internal-` -- APM transaction metrics: `metrics-apm.transaction.-` -- APM service destination metrics: `metrics-apm.service_destination.-` -- APM service transaction metrics: `metrics-apm.service_transaction.-` -- APM service summary metrics: `metrics-apm.service_summary.-` -- Application metrics: `metrics-apm.app.-` -// end::metrics-data-streams[] -+ -Application metrics include the instrumented service's name--defined in each {apm-agent}'s -configuration--in the data stream name. -Service names therefore must follow certain index naming rules. -+ -[%collapsible] -.Service name rules -==== -* Service names are case-insensitive and must be unique. -For example, you cannot have a service named `Foo` and another named `foo`. -* Special characters will be removed from service names and replaced with underscores (`_`). -Special characters include: -+ -[source,text] ----- -'\\', '/', '*', '?', '"', '<', '>', '|', ' ', ',', '#', ':', '-' ----- -==== - - -Logs:: -Logs include application error events and application logs. -Logs are stored in the following data streams: -+ -// tag::logs-data-streams[] -- APM error/exception logging: `logs-apm.error-` -- APM app logging: `logs-apm.app.-` -// end::logs-data-streams[] - -[discrete] -[[apm-data-streams-next]] -=== What's next? - -* Data streams define not only how data is stored in {es}, but also how data is retained over time. -See <> to learn how to create your own data retention policies. - -* See <> for information on APM storage and processing costs, -processing and performance, and other index management features. diff --git a/docs/debugging.asciidoc b/docs/debugging.asciidoc deleted file mode 100644 index 65d18bcec77..00000000000 --- a/docs/debugging.asciidoc +++ /dev/null @@ -1,54 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/debugging.asciidoc[] -////////////////////////////////////////////////////////////////////////// - -[[enable-apm-server-debugging]] -=== Enable APM Server binary debugging - -++++ -APM Server binary debugging -++++ - -NOTE: Fleet-managed users should see {fleet-guide}/monitor-elastic-agent.html[View {agent} logs] -to learn how to view logs and change the logging level of {agent}. - -By default, {beatname_uc} sends all its output to syslog. When you run {beatname_uc} in -the foreground, you can use the `-e` command line flag to redirect the output to -standard error instead. For example: - -["source","sh",subs="attributes"] ------------------------------------------------ -{beatname_lc} -e ------------------------------------------------ - -The default configuration file is {beatname_lc}.yml (the location of the file varies by -platform). You can use a different configuration file by specifying the `-c` flag. For example: - -["source","sh",subs="attributes"] ------------------------------------------------------------- -{beatname_lc} -e -c my{beatname_lc}config.yml ------------------------------------------------------------- - -You can increase the verbosity of debug messages by enabling one or more debug -selectors. For example, to view publisher-related messages, start {beatname_uc} -with the `publisher` selector: - -["source","sh",subs="attributes"] ------------------------------------------------------------- -{beatname_lc} -e -d "publisher" ------------------------------------------------------------- - -If you want all the debugging output (fair warning, it's quite a lot), you can -use `*`, like this: - -["source","sh",subs="attributes"] ------------------------------------------------------------- -{beatname_lc} -e -d "*" ------------------------------------------------------------- \ No newline at end of file diff --git a/docs/diagrams/apm-architecture-central.asciidoc b/docs/diagrams/apm-architecture-central.asciidoc deleted file mode 100644 index 9af897823b4..00000000000 --- a/docs/diagrams/apm-architecture-central.asciidoc +++ /dev/null @@ -1,189 +0,0 @@ -++++ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-++++ \ No newline at end of file diff --git a/docs/diagrams/apm-architecture-edge.asciidoc b/docs/diagrams/apm-architecture-edge.asciidoc deleted file mode 100644 index 2713fd10a90..00000000000 --- a/docs/diagrams/apm-architecture-edge.asciidoc +++ /dev/null @@ -1,172 +0,0 @@ -++++ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-++++ \ No newline at end of file diff --git a/docs/diagrams/apm-decision-tree.asciidoc b/docs/diagrams/apm-decision-tree.asciidoc deleted file mode 100644 index f169b8d9340..00000000000 --- a/docs/diagrams/apm-decision-tree.asciidoc +++ /dev/null @@ -1,51 +0,0 @@ -++++ -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-++++ \ No newline at end of file diff --git a/docs/diagrams/apm-otel-architecture.asciidoc b/docs/diagrams/apm-otel-architecture.asciidoc deleted file mode 100644 index 42924b17d8c..00000000000 --- a/docs/diagrams/apm-otel-architecture.asciidoc +++ /dev/null @@ -1,259 +0,0 @@ -++++ -
- - - -Elastic Observability - -Kibana Observability apps - -Elasticsearch - -Elastic Agent - -APM Integration - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Edge machines -Protocol - - - - - - -Hosted on Elastic Cloud - - - - - - - - - - - - - - - - - - - - - - - - - - - -API/SDK - -Elastic APM agent -OpenTelemetry API/SDK with Elastic APM agents - - - - - - - - - - - - - -API/SDK -OpenTelemetry Agents - - - - -OTLP Collector -OpenTelemetry Collectors - -Click to see all supported languages -here -Available in Java, .NET, Node.js, and Python - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-++++ \ No newline at end of file diff --git a/docs/exploring-es-data.asciidoc b/docs/exploring-es-data.asciidoc deleted file mode 100644 index 47e80df1225..00000000000 --- a/docs/exploring-es-data.asciidoc +++ /dev/null @@ -1,47 +0,0 @@ -[[exploring-es-data]] -= Explore data in {es} - -* <> - -[float] -[[elasticsearch-query-examples]] -== {es} query examples - -Elastic APM data is stored in <>. - -The following examples enable you to interact with {es}'s REST API. -One possible way to do this is using {kib}'s -{kibana-ref}/console-kibana.html[{dev-tools-app} console]. - -Data streams, templates, and index-level operations can also be manged via {kib}'s -{kibana-ref}/managing-indices.html[Index management] panel. - -To see an overview of existing data streams, run: -["source","sh"] ----- -GET /_data_stream/*apm* ----- -// CONSOLE - -To query a specific event type, for example, application traces: -["source","sh",subs="attributes"] ----- -GET traces-apm*/_search ----- -// CONSOLE - -If you are interested in the _settings_ and _mappings_ of the Elastic APM indices, -first, run a query to find template names: - -["source","sh"] ----- -GET _cat/templates/*apm* ----- -// CONSOLE - -Then, retrieve the specific template you are interested in: -["source","sh"] ----- -GET /_template/your-template-name ----- -// CONSOLE diff --git a/docs/features.asciidoc b/docs/features.asciidoc deleted file mode 100644 index 4c58f4c7d3c..00000000000 --- a/docs/features.asciidoc +++ /dev/null @@ -1,34 +0,0 @@ -[[features]] -== Elastic APM features - -++++ -Features -++++ - -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> -* <> - -include::./apm-data-security.asciidoc[] - -include::./apm-distributed-tracing.asciidoc[] - -include::./apm-rum.asciidoc[] - -include::./sampling.asciidoc[] - -include::./log-correlation.asciidoc[] - -include::./cross-cluster-search.asciidoc[] - -include::./span-compression.asciidoc[] - -include::./aws-lambda-extension.asciidoc[leveloffset=+2] - -include::./apm-mutating-webhook.asciidoc[leveloffset=+2] diff --git a/docs/getting-started-apm-server.asciidoc b/docs/getting-started-apm-server.asciidoc deleted file mode 100644 index ce025d7e32d..00000000000 --- a/docs/getting-started-apm-server.asciidoc +++ /dev/null @@ -1,540 +0,0 @@ -[[getting-started-apm-server]] -== Self manage APM Server - -++++ -Self manage APM Server -++++ - -TIP: The easiest way to get started with Elastic APM is by using our -{ess-product}[hosted {es} Service] on {ecloud}. -The {es} Service is available on AWS, GCP, and Azure. -See <> to get started in minutes. - -// TODO: MOVE THIS -IMPORTANT: Starting in version 8.0.0, {fleet} uses the APM integration to set up and manage APM index templates, -{ilm-init} policies, and ingest pipelines. APM Server will only send data to {es} _after_ the APM integration has been installed. - -The APM Server receives performance data from your APM agents, -validates and processes it, and then transforms the data into {es} documents. -If you're on this page, then you've chosen to self-manage the Elastic Stack, -and you now must decide how to run and configure the APM Server. -There are two options, and the components required are different for each: - -* **<>** -* **<>** -// * **<>** - -[float] -[[setup-apm-server-binary]] -=== APM Server binary - -Install, configure, and run the APM Server binary wherever you need it. - -image::./images/bin-ov.png[APM Server binary overview] - -**Pros**: - -- Simplest self-managed option -- No addition component knowledge required -- YAML configuration simplifies automation - -**Supported outputs**: - -- {es} -- {ess} -- {ls} -- Kafka -- Redis -- File -- Console - -**Required components**: - -- APM agents -- APM Server -- {stack} - -**Configuration method**: YAML - -[float] -[[setup-fleet-managed-apm]] -=== Fleet-managed APM Server - -Fleet is a web-based UI in {kib} that is used to centrally manage {agent}s. -In this deployment model, use {agent} to spin up APM Server instances that can be centrally-managed in a custom-curated user interface. - -NOTE: Fleet-managed APM Server does not have full feature parity with the APM Server binary method of running Elastic APM. - -image::./images/fm-ov.png[APM Server fleet overview] - -// (outputs, stable APIs) -// not the best option for a simple test setup or if only interested in centrally running APM Server - -**Pros**: - -- Conveniently manage one, some, or many different integrations from one central {fleet} UI. - -**Supported outputs**: - -- {es} -- {ess} - -**Required components**: - -- APM agents -- APM Server -- {agent} -- Fleet Server -- {stack} - -**Configuration method**: {kib} UI - -// [float] -// [[setup-apm-server-ea]] -// === Standalone Elastic Agent-managed APM Server -// // I really don't know how to sell this option -// Instead of installing and configuring the APM Server binary, let {agent} orchestrate it for you. -// Install {agent} and manually configure the agent locally on the system where it's installed. -// You are responsible for managing and upgrading {agent}. This approach is recommended for advanced users only. - -// **Pros**: - -// - Easily add integrations for other data sources -// useful if EA already in place for other integrations, and customers want to customize setup rather than using Fleet for configuration -// // TODO: -// // maybe get some more hints on this one from the EA team to align with highlighting the same pros & cons. - -// **Available on Elastic Cloud**: ❌ - -// This supports all of the same outputs as binary -// see https://github.com/elastic/apm-server/issues/10467 -// **Supported outputs**: - -// **Configuration method**: YAML - -// image::./images/ea-ov.png[APM Server ea overview] - -// @simitt's notes for how to include EA-managed in the decision tree: -// **** -// If we generally describe Standalone Elastic Agent managed APM Server then we should also add it to this diagram: -// Do you want to use other integrations? -// -> yes: Would you like to use the comfort of Fleet UI based management? -> yes: Fleet managed APM Server; -> no: Standalone Elastic Agent managed APM Server -// -> no: What is your prefered way of configuration? -> yaml: APM Server binary; -> Kibana UI: Fleet managed APM Server -// **** - -// Components required: - -// [options="header"] -// |==== -// | Installation method | APM Server | Elastic Agent | Fleet Server -// | APM Server binary | ✔️ | | -// // | Standalone Elastic Agent-managed APM Server | ✔️ | ✔️ | -// | Fleet-managed APM Server | ✔️ | ✔️ | ✔️ -// |==== - -[float] -=== Help me decide - -Use the decision tree below to help determine which method of configuring and running the APM Server is best for your use case. - -[subs=attributes+] -include::{docdir}/diagrams/apm-decision-tree.asciidoc[APM Server decision tree] - - -=== APM Server binary - -This guide will explain how to set up and configure the APM Server binary. - -[float] -==== Prerequisites - -// tag::prereq[] -First, see the https://www.elastic.co/support/matrix[Elastic Support Matrix] for information about supported operating systems and product compatibility. - -You'll need: - -* *{es}* for storing and indexing data. -* *{kib}* for visualizing with the APM UI. - -We recommend you use the same version of {es}, {kib}, and APM Server. -See {stack-ref}/installing-elastic-stack.html[Installing the {stack}] -for more information about installing these products. -// end::prereq[] - -image::images/apm-architecture-diy.png[Install Elastic APM yourself] - -// ******************************************************* -// STEP 1 -// ******************************************************* - -[[installing]] -==== Step 1: Install - -NOTE: *Before you begin*: If you haven't installed the {stack}, do that now. -See {stack-ref}/installing-elastic-stack.html[Learn how to install the -{stack} on your own hardware]. - -To download and install {beatname_uc}, use the commands below that work with your system. -If you use `apt` or `yum`, you can <> -to update to the newest version more easily. - -ifeval::["{release-state}"!="unreleased"] -See our https://www.elastic.co/downloads/apm[download page] -for other installation options, such as 32-bit images. -endif::[] - -[[deb]] -*deb:* - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of APM Server has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -["source","sh",subs="attributes"] ----------------------------------------------------------------------- -curl -L -O {downloads}/apm-server-{version}-amd64.deb -sudo dpkg -i apm-server-{version}-amd64.deb ----------------------------------------------------------------------- - -endif::[] - -[[rpm]] -*RPM:* - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of APM Server has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -["source","sh",subs="attributes"] ----------------------------------------------------------------------- -curl -L -O {downloads}/apm-server-{version}-x86_64.rpm -sudo rpm -vi apm-server-{version}-x86_64.rpm ----------------------------------------------------------------------- - -endif::[] - -[[linux]] -*Other Linux:* - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of APM Server has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -["source","sh",subs="attributes"] ------------------------------------------------- -curl -L -O {downloads}/apm-server-{version}-linux-x86_64.tar.gz -tar xzvf apm-server-{version}-linux-x86_64.tar.gz ------------------------------------------------- -endif::[] - -[[mac]] -*Mac:* - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of APM Server has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -["source","sh",subs="attributes"] ------------------------------------------------- -curl -L -O {downloads}/apm-server-{version}-darwin-x86_64.tar.gz -tar xzvf apm-server-{version}-darwin-x86_64.tar.gz ------------------------------------------------- - -endif::[] - -[[installing-on-windows]] -*Windows:* - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of APM Server has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -. Download the APM Server Windows zip file from the -https://www.elastic.co/downloads/apm/apm-server[downloads page]. - -. Extract the contents of the zip file into `C:\Program Files`. - -. Rename the `apm-server--windows` directory to `APM-Server`. - -. Open a PowerShell prompt as an Administrator (right-click the PowerShell icon and select *Run As Administrator*). -If you are running Windows XP, you may need to download and install PowerShell. - -. From the PowerShell prompt, run the following commands to install APM Server as a Windows service: -+ -[source,shell] ----------------------------------------------------------------------- -PS > cd 'C:\Program Files\APM-Server' -PS C:\Program Files\APM-Server> .\install-service-apm-server.ps1 ----------------------------------------------------------------------- - -NOTE: If script execution is disabled on your system, -you need to set the execution policy for the current session to allow the script to run. -For example: `PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-apm-server.ps1`. - -endif::[] - -[[docker]] -*Docker:* - -See <> for deploying Docker containers. - -// ******************************************************* -// STEP 2 -// ******************************************************* - -[[apm-server-configuration]] -==== Step 2: Set up and configure - -// This content is reused in the upgrading guide -// tag::why-apm-integration[] -Starting in version 8.0.0, {fleet} uses the APM integration to set up and manage APM index templates, -{ilm-init} policies, and ingest pipelines. APM Server will only send data to {es} _after_ the APM integration has been installed. -// end::why-apm-integration[] - -[float] -===== Install the APM integration - -// This content is reused in the upgrading guide -// tag::install-apm-integration[] -[%collapsible%open] -.**If you have an internet connection** -==== -An internet connection is required to install the APM integration via the {fleet} UI in {kib}. - -// lint ignore elastic-agent -. Open {kib} and select **Add integrations** > **Elastic APM**. -. Click **APM integration**. -. Click **Add Elastic APM**. -. Click **Save and continue**. -. Click **Add Elastic Agent later**. You do not need to run an {agent} to complete the setup. -==== - -// tag::install-apm-integration-no-internet[] -[%collapsible] -.**If you don't have an internet connection** -==== -If your environment has network traffic restrictions, there are other ways to install the APM integration. -See {fleet-guide}/air-gapped.html[Air-gapped environments] for more information. - -Option 1: Update `kibana.yml`:: -+ -Update `kibana.yml` to include the following, then restart {kib}. -+ -[source,yaml] ----- -xpack.fleet.packages: -- name: apm - version: latest ----- -+ -See {kibana-ref}/settings.html[Configure Kibana] to learn more about how to edit the Kibana configuration file. - -Option 2: Use the {fleet} API:: -+ -Use the {fleet} API to install the APM integration. To be successful, this needs to be run against the {kib} -API, not the {es} API. -+ -["source","yaml",subs="attributes"] ----- -POST kbn:/api/fleet/epm/packages/apm/{version} -{ "force": true } ----- -+ -See {kibana-ref}/api.html[Kibana API] to learn more about how to use the Kibana APIs. -==== -// end::install-apm-integration-no-internet[] -// end::install-apm-integration[] - -[float] -===== Configure APM - -Configure APM by editing the `apm-server.yml` configuration file. -The location of this file varies by platform--see the <> for help locating it. - -A minimal configuration file might look like this: - -[source,yaml] ----- -apm-server: - host: "localhost:8200" <1> -output.elasticsearch: - hosts: ["localhost:9200"] <2> - username: "elastic" <3> - password: "changeme" ----- -<1> The `host:port` APM Server listens on. -<2> The {es} `host:port` to connect to. -<3> This example uses basic authentication. -The user provided here needs the privileges required to publish events to {es}. -To create a dedicated user for this role, see <>. - -All available configuration options are outlined in -{apm-guide-ref}/configuring-howto-apm-server.html[configuring APM Server]. - -// ******************************************************* -// STEP 3 -// ******************************************************* - -[[apm-server-starting]] -==== Step 3: Start - -In a production environment, you would put APM Server on its own machines, -similar to how you run {es}. -You _can_ run it on the same machines as {es}, but this is not recommended, -as the processes will be competing for resources. - -To start APM Server, run: - -[source,bash] ----------------------------------- -./apm-server -e ----------------------------------- - -NOTE: The `-e` <> enables logging to stderr and disables syslog/file output. -Remove this flag if you've enabled logging in the configuration file. -For Linux systems, see <>. - -You should see APM Server start up. -It will try to connect to {es} on localhost port `9200` and expose an API to agents on port `8200`. -You can change the defaults in `apm-server.yml` or by supplying a different address on the command line: - -[source,bash] ----------------------------------- -./apm-server -e -E output.elasticsearch.hosts=ElasticsearchAddress:9200 -E apm-server.host=localhost:8200 ----------------------------------- - -[float] -[[running-deb-rpm]] -===== Debian Package / RPM - -For Debian package and RPM installations, we recommend the `apm-server` process runs as a non-root user. -Therefore, these installation methods create an `apm-server` user which you can use to start the process. -In addition, {beatname_uc} will only start if the configuration file is -<>. - -To start the APM Server in this case, run: - -[source,bash] ----------------------------------- -sudo -u apm-server apm-server [] ----------------------------------- - -By default, APM Server loads its configuration file from `/etc/apm-server/apm-server.yml`. -See the <> for a full directory layout. - -// ******************************************************* -// STEP 4 -// ******************************************************* - -[[next-steps]] -==== Step 4: Next steps - -// Use a tagged region to pull APM Agent information from the APM Overview -If you haven't already, you can now install APM Agents in your services! - -* {apm-go-ref-v}/introduction.html[Go agent] -* {apm-ios-ref-v}/intro.html[iOS agent] -* {apm-java-ref-v}/intro.html[Java agent] -* {apm-dotnet-ref-v}/intro.html[.NET agent] -* {apm-node-ref-v}/intro.html[Node.js agent] -* {apm-php-ref-v}/intro.html[PHP agent] -* {apm-py-ref-v}/getting-started.html[Python agent] -* {apm-ruby-ref-v}/introduction.html[Ruby agent] -* {apm-rum-ref-v}/intro.html[JavaScript Real User Monitoring (RUM) agent] - -Once you have at least one {apm-agent} sending data to APM Server, -you can start visualizing your data in the {kibana-ref}/xpack-apm.html[{apm-app}]. - -If you're migrating from Jaeger, see <>. - -// Shared APM & YUM -include::{docdir}/repositories.asciidoc[] - -// Shared docker -include::{docdir}/shared-docker.asciidoc[] - - -=== Fleet-managed APM Server - -This guide will explain how to set up and configure a Fleet-managed APM Server. - -[float] -==== Prerequisites - -You need {es} for storing and searching your data, and {kib} for visualizing and managing it. -When setting these components up, you need: - -include::{ingest-docs-root}/docs/en/ingest-management/tab-widgets/prereq.asciidoc[tag=self-managed] - -==== Step 1: Set up Fleet - -Use {fleet} in {kib} to get APM data into the {stack}. -The first time you use {fleet}, you'll need to set it up and add a -{fleet-server}: - -include::{ingest-docs-root}/docs/en/ingest-management/tab-widgets/add-fleet-server/content.asciidoc[tag=self-managed] - -For more information, refer to {fleet-guide}/fleet-server.html[{fleet-server}]. - -==== Step 2: Add and configure the APM integration - -include::{obs-repo-dir}/observability/tab-widgets/add-apm-integration/content.asciidoc[tag=self-managed] - -**** -An internet connection is required to install the APM integration via the Fleet UI in Kibana. - --- -include::{docdir}/getting-started-apm-server.asciidoc[tag=install-apm-integration-no-internet] --- -**** - -==== Step 3: Install APM agents - -APM agents are written in the same language as your service. -To monitor a new service, you must install the agent and configure it with a service name, -APM Server host, and Secret token. - -* **Service name**: The APM integration maps an instrumented service's name–defined in each {apm-agent}'s configuration– -to the index that its data is stored in {es}. -Service names are case-insensitive and must be unique. -For example, you cannot have a service named `Foo` and another named `foo`. -Special characters will be removed from service names and replaced with underscores (`_`). - -* **APM Server URL**: The host and port that APM Server listens for events on. -This should match the host and port defined when setting up the APM integration. - -* **Secret token**: Authentication method for {apm-agent} and APM Server communication. -This should match the secret token defined when setting up the APM integration. - -TIP: You can edit your APM integration settings if you need to change the APM Server URL -or secret token to match your APM agents. - -include::{tab-widget-dir}/install-agents-widget.asciidoc[] - -==== Step 4: View your data - -Back in {kib}, under {observability}, select APM. -You should see application performance monitoring data flowing into the {stack}! - -[role="screenshot"] -image::./images/kibana-apm-sample-data.png[{apm-app} with data] diff --git a/docs/high-availability.asciidoc b/docs/high-availability.asciidoc deleted file mode 100644 index 07f14db747f..00000000000 --- a/docs/high-availability.asciidoc +++ /dev/null @@ -1,20 +0,0 @@ -[[high-availability]] -=== High Availability - -To achieve high availability -you can place multiple instances of APM Server behind a regular HTTP load balancer, -for example HAProxy or Nginx. - -The endpoint `/` always returns an `HTTP 200`. -You can configure your load balancer to send HTTP requests to this endpoint -to determine if an APM Server is running. -See <> for more information on that endpoint. - -In case of temporal issues, like unavailable {es} or a sudden high workload, -APM Server does not have an internal queue to buffer requests, -but instead leverages an HTTP request timeout to act as back-pressure. - -If {es} goes down, the APM Server will eventually deny incoming requests. -Both the APM Server and {apm-agent}(s) will issue logs accordingly. - -TIP: Fleet-managed APM Server users might also be interested in {fleet-guide}/fleet-agent-proxy-support.html[Fleet/Agent proxy support]. \ No newline at end of file diff --git a/docs/how-to.asciidoc b/docs/how-to.asciidoc deleted file mode 100644 index f9e553802ec..00000000000 --- a/docs/how-to.asciidoc +++ /dev/null @@ -1,17 +0,0 @@ -[[how-to-guides]] -== How-to guides - -Learn how to perform common APM configuration and management tasks. - -* <> -* <> -* <> -* <> - -include::./source-map-how-to.asciidoc[] - -include::./jaeger-integration.asciidoc[] - -include::./ingest-pipelines.asciidoc[] - -include::./custom-index-template.asciidoc[] diff --git a/docs/https.asciidoc b/docs/https.asciidoc deleted file mode 100644 index e335e57b957..00000000000 --- a/docs/https.asciidoc +++ /dev/null @@ -1,148 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/https.asciidoc[] -//// This content is structured to be included as a whole file. -////////////////////////////////////////////////////////////////////////// - -[float] -[[securing-communication-elasticsearch]] -== Secure communication with {es} - -When sending data to a secured cluster through the `elasticsearch` -output, {beatname_uc} can use any of the following authentication methods: - -* Basic authentication credentials (username and password). -* Token-based API authentication. -* A client certificate. - -Authentication is specified in the {beatname_uc} configuration file: - -* To use *basic authentication*, specify the `username` and `password` settings under `output.elasticsearch`. -For example: -+ --- -["source","yaml",subs="attributes,callouts"] ----------------------------------------------------------------------- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - username: "{beat_default_index_prefix}_writer" <1> - password: "{pwd}" ----------------------------------------------------------------------- -<1> This user needs the privileges required to publish events to {es}. -To create a user like this, see <>. --- - -* To use token-based *API key authentication*, specify the `api_key` under `output.elasticsearch`. -For example: -+ --- -["source","yaml",subs="attributes,callouts"] ----------------------------------------------------------------------- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - api_key: "KnR6yE41RrSowb0kQ0HWoA" <1> ----------------------------------------------------------------------- -<1> This API key must have the privileges required to publish events to {es}. -To create an API key like this, see <>. --- - -[[beats-tls]] -* To use *Public Key Infrastructure (PKI) certificates* to authenticate users, -specify the `certificate` and `key` settings under `output.elasticsearch`. -For example: -+ --- -["source","yaml",subs="attributes,callouts"] ----------------------------------------------------------------------- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - ssl.certificate: "/etc/pki/client/cert.pem" <1> - ssl.key: "/etc/pki/client/cert.key" <2> ----------------------------------------------------------------------- -<1> The path to the certificate for SSL client authentication -<2> The client certificate key --- -+ -These settings assume that the -distinguished name (DN) in the certificate is mapped to the appropriate roles in -the `role_mapping.yml` file on each node in the {es} cluster. For more -information, see {ref}/mapping-roles.html#mapping-roles-file[Using role -mapping files]. -+ -By default, {beatname_uc} uses the list of trusted certificate authorities (CA) from the -operating system where {beatname_uc} is running. If the certificate authority that signed your node certificates -is not in the host system's trusted certificate authorities list, you need -to add the path to the `.pem` file that contains your CA's certificate to the -{beatname_uc} configuration. This will configure {beatname_uc} to use a specific list of -CA certificates instead of the default list from the OS. -+ -Here is an example configuration: -+ --- -["source","yaml",subs="attributes,callouts"] ----------------------------------------------------------------------- -output.elasticsearch: - hosts: ["https://myEShost:9200"] - ssl.certificate_authorities: <1> - - /etc/pki/my_root_ca.pem - - /etc/pki/my_other_ca.pem - ssl.certificate: "/etc/pki/client.pem" <2> - ssl.key: "/etc/pki/key.pem" <3> ----------------------------------------------------------------------- -<1> Specify the path to the local `.pem` file that contains your Certificate -Authority's certificate. This is needed if you use your own CA to sign your node certificates. -<2> The path to the certificate for SSL client authentication -<3> The client certificate key --- -+ -NOTE: For any given connection, the SSL/TLS certificates must have a subject -that matches the value specified for `hosts`, or the SSL handshake fails. -For example, if you specify `hosts: ["foobar:9200"]`, the certificate MUST -include `foobar` in the subject (`CN=foobar`) or as a subject alternative name -(SAN). Make sure the hostname resolves to the correct IP address. If no DNS is available, then -you can associate the IP address with your hostname in `/etc/hosts` -(on Unix) or `C:\Windows\System32\drivers\etc\hosts` (on Windows). - -ifndef::no_dashboards[] -[role="xpack"] -[float] -[[securing-communication-kibana]] -=== Secure communication with the {kib} endpoint - -If you've configured the <>, -you can also specify credentials for authenticating with {kib} under `kibana.setup`. -If no credentials are specified, {kib} will use the configured authentication method -in the {es} output. - -For example, specify a unique username and password to connect to {kib} like this: - --- -["source","yaml",subs="attributes,callouts"] ----- -setup.kibana: - host: "mykibanahost:5601" - username: "{beat_default_index_prefix}_kib_setup" <1> - password: "{pwd}" ----- -<1> This user needs privileges required to set up dashboards -endif::no_dashboards[] --- - -[role="xpack"] -[float] -[[securing-communication-learn-more]] -=== Learn more about secure communication - -More information on sending data to a secured cluster is available in the configuration reference: - -* <> -* <> -ifndef::no_dashboards[] -* <> -endif::no_dashboards[] diff --git a/docs/ilm-how-to.asciidoc b/docs/ilm-how-to.asciidoc deleted file mode 100644 index e960c40c88a..00000000000 --- a/docs/ilm-how-to.asciidoc +++ /dev/null @@ -1,240 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -// This content is reused in the Legacy ILM documentation -////////////////////////////////////////////////////////////////////////// - -[[ilm-how-to]] -=== {ilm-cap} - -:append-legacy: -// tag::ilm-integration[] - -Index lifecycle policies allow you to automate the -lifecycle of your APM indices as they grow and age. -A default policy is applied to each APM data stream, -but can be customized depending on your business needs. - -See {ref}/index-lifecycle-management.html[{ilm-init}: Manage the index lifecycle] to learn more. - -[discrete] -[id="index-lifecycle-policies-default{append-legacy}"] -=== Default policies - -The table below describes the default index lifecycle policy applied to each APM data stream. -Each policy includes a rollover and delete definition: - -* **Rollover**: Using rollover indices prevents a single index from growing too large and optimizes indexing and search performance. Rollover, i.e. writing to a new index, occurs after either an age or size metric is met. -* **Delete**: The delete phase permanently removes the index after a time threshold is met. - -[cols="1,1,1,1",options="header"] -|=== -|Data stream -|Rollover after -|Delete after -|Notes - -| `traces-apm` -| 30 days / 50 GB -| 10 days -| Raw trace event data - -| `traces-apm.rum` -| 30 days / 50 GB -| 90 days -| Raw RUM trace event data, used in the UI - -| `logs-apm.error` -| 30 days / 50 GB -| 10 days -| Error event data - -| `logs-apm.app` -| 30 days / 50 GB -| 10 days -| Logs event data - -| `metrics-apm.app` -| 30 days / 50 GB -| 90 days -| Custom application specific metrics - -| `metrics-apm.internal` -| 30 days / 50 GB -| 90 days -| Common system metrics and language specific metrics (for example, CPU and memory usage) - -| `metrics-apm.service_destination_1m` -| 7 days / 50GB -| 90 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_destination_10m` -| 14 days / 50GB -| 180 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_destination_60m` -| 30 days / 50GB -| 390 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_summary_1m` -| 7 days / 50GB -| 90 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_summary_10m` -| 14 days / 50GB -| 180 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_summary_60m` -| 30 days / 50GB -| 390 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_transaction_1m` -| 7 days / 50GB -| 90 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_transaction_10m` -| 14 days / 50GB -| 180 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.service_transaction_60m` -| 30 days / 50GB -| 390 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.transaction_1m` -| 7 days / 50GB -| 90 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.transaction_10m` -| 14 days / 50GB -| 180 days -| Aggregated transaction metrics powering the APM UI - -| `metrics-apm.transaction_60m` -| 30 days / 50GB -| 390 days -| Aggregated transaction metrics powering the APM UI - -|=== - -The APM index lifecycle policies can be viewed in {kib}. -Navigate to *{stack-manage-app}* / *Index Lifecycle Management*, and search for `apm`. - -TIP: Default {ilm-init} policies can change between minor versions. -This is not considered a breaking change as index management should continually improve and adapt to new features. - -[discrete] -[id="data-streams-custom-policy{append-legacy}"] -=== Configure a custom index lifecycle policy - -When the APM integration is installed, {fleet} creates a default `*@custom` component template for each data stream. -The easiest way to configure a custom index lifecycle policy per data stream is to edit this template. - -This tutorial explains how to apply a custom index lifecycle policy to the `traces-apm` data stream. - -[discrete] -[id="data-streams-custom-one{append-legacy}"] -=== Step 1: View data streams - -The **Data Streams** view in {kib} shows you the data streams, -index templates, and index lifecycle policies associated with a given integration. - -. Navigate to **{stack-manage-app}** > **Index Management** > **Data Streams**. -. Search for `traces-apm` to see all data streams associated with APM trace data. -. In this example, I only have one data stream because I'm only using the `default` namespace. -You may have more if your setup includes multiple namespaces. -+ -[role="screenshot"] -image::images/data-stream-overview.png[Data streams info] - -[discrete] -[id="data-streams-custom-two{append-legacy}"] -=== Step 2: Create an index lifecycle policy - -. Navigate to **{stack-manage-app}** > **Index Lifecycle Policies**. -. Click **Create policy**. - -Name your new policy; For this tutorial, I've chosen `custom-traces-apm-policy`. -Customize the policy to your liking, and when you're done, click **Save policy**. - -[discrete] -[id="data-streams-custom-three{append-legacy}"] -=== Step 3: Apply the index lifecycle policy - -To apply your new index lifecycle policy to the `traces-apm-*` data stream, -edit the `@custom` component template. - -. Click on the **Component Template** tab and search for `traces-apm`. -. Select the `traces-apm@custom` template and click **Manage** > **Edit**. -. Under **Index settings**, set the {ilm-init} policy name created in the previous step: -+ -[source,json] ----- -{ - "lifecycle": { - "name": "custom-traces-apm-policy" - } -} ----- -. Continue to **Review** and ensure your request looks similar to the image below. -If it does, click **Create component template**. -+ -[role="screenshot"] -image::images/create-component-template.png[Create component template] - -[discrete] -[id="data-streams-custom-four{append-legacy}"] -=== Step 4: Roll over the data stream (optional) - -To confirm that the data stream is now using the new index template and {ilm-init} policy, -you can either repeat <>, or navigate to **{dev-tools-app}** and run the following: - -[source,bash] ----- -GET /_data_stream/traces-apm-default <1> ----- -<1> The name of the data stream we've been hacking on appended with your - -The result should include the following: - -[source,json] ----- -{ - "data_streams" : [ - { - ... - "template" : "traces-apm-default", <1> - "ilm_policy" : "custom-traces-apm-policy", <2> - ... - } - ] -} ----- -<1> The name of the custom index template created in step three -<2> The name of the {ilm-init} policy applied to the new component template in step two - -New {ilm-init} policies only take effect when new indices are created, -so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), -or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: - -[source,bash] ----- -POST /traces-apm-default/_rollover/ ----- - -[discrete] -[id="data-streams-custom-policy-namespace{append-legacy}"] -=== Namespace-level index lifecycle policies - -It is also possible to create more granular index lifecycle policies that apply to individual namespaces. -This process is similar to the above tutorial, but includes cloning and modify the existing index template to use -a new `*@custom` component template. - -// end::ilm-integration[] diff --git a/docs/images/agent-settings-migration.png b/docs/images/agent-settings-migration.png deleted file mode 100644 index a1f1c12c124..00000000000 Binary files a/docs/images/agent-settings-migration.png and /dev/null differ diff --git a/docs/images/api-key-copy.png b/docs/images/api-key-copy.png deleted file mode 100644 index d47fc7cd2de..00000000000 Binary files a/docs/images/api-key-copy.png and /dev/null differ diff --git a/docs/images/apm-architecture-cloud.png b/docs/images/apm-architecture-cloud.png deleted file mode 100644 index 6bc7001fb9f..00000000000 Binary files a/docs/images/apm-architecture-cloud.png and /dev/null differ diff --git a/docs/images/apm-architecture-diy.png b/docs/images/apm-architecture-diy.png deleted file mode 100644 index d4e96466081..00000000000 Binary files a/docs/images/apm-architecture-diy.png and /dev/null differ diff --git a/docs/images/apm-distributed-tracing.png b/docs/images/apm-distributed-tracing.png deleted file mode 100644 index 7d51e273f9d..00000000000 Binary files a/docs/images/apm-distributed-tracing.png and /dev/null differ diff --git a/docs/images/apm-ui-api-key.png b/docs/images/apm-ui-api-key.png deleted file mode 100644 index eae7ab18296..00000000000 Binary files a/docs/images/apm-ui-api-key.png and /dev/null differ diff --git a/docs/images/assets.png b/docs/images/assets.png deleted file mode 100644 index d3a8e6ea61a..00000000000 Binary files a/docs/images/assets.png and /dev/null differ diff --git a/docs/images/bin-ov.png b/docs/images/bin-ov.png deleted file mode 100644 index 7702dd7d765..00000000000 Binary files a/docs/images/bin-ov.png and /dev/null differ diff --git a/docs/images/config-layer.png b/docs/images/config-layer.png deleted file mode 100644 index ec6c045d347..00000000000 Binary files a/docs/images/config-layer.png and /dev/null differ diff --git a/docs/images/create-component-template.png b/docs/images/create-component-template.png deleted file mode 100644 index cd9c18a19a4..00000000000 Binary files a/docs/images/create-component-template.png and /dev/null differ diff --git a/docs/images/data-flow.png b/docs/images/data-flow.png deleted file mode 100644 index 294ff7597d4..00000000000 Binary files a/docs/images/data-flow.png and /dev/null differ diff --git a/docs/images/data-stream-overview.png b/docs/images/data-stream-overview.png deleted file mode 100644 index 503661862de..00000000000 Binary files a/docs/images/data-stream-overview.png and /dev/null differ diff --git a/docs/images/dt-sampling-example-1.png b/docs/images/dt-sampling-example-1.png deleted file mode 100644 index a3def0c7bfa..00000000000 Binary files a/docs/images/dt-sampling-example-1.png and /dev/null differ diff --git a/docs/images/dt-sampling-example-2.png b/docs/images/dt-sampling-example-2.png deleted file mode 100644 index d7f87bcd891..00000000000 Binary files a/docs/images/dt-sampling-example-2.png and /dev/null differ diff --git a/docs/images/dt-sampling-example-3.png b/docs/images/dt-sampling-example-3.png deleted file mode 100644 index a0045705a0c..00000000000 Binary files a/docs/images/dt-sampling-example-3.png and /dev/null differ diff --git a/docs/images/dt-trace-ex1.png b/docs/images/dt-trace-ex1.png deleted file mode 100644 index ca97955ee8b..00000000000 Binary files a/docs/images/dt-trace-ex1.png and /dev/null differ diff --git a/docs/images/dt-trace-ex2.png b/docs/images/dt-trace-ex2.png deleted file mode 100644 index 3df0827f586..00000000000 Binary files a/docs/images/dt-trace-ex2.png and /dev/null differ diff --git a/docs/images/dt-trace-ex3.png b/docs/images/dt-trace-ex3.png deleted file mode 100644 index 1bb666b030a..00000000000 Binary files a/docs/images/dt-trace-ex3.png and /dev/null differ diff --git a/docs/images/ecommerce-dashboard.png b/docs/images/ecommerce-dashboard.png deleted file mode 100644 index f68dc3cc568..00000000000 Binary files a/docs/images/ecommerce-dashboard.png and /dev/null differ diff --git a/docs/images/fm-ov.png b/docs/images/fm-ov.png deleted file mode 100644 index 7aace8b2873..00000000000 Binary files a/docs/images/fm-ov.png and /dev/null differ diff --git a/docs/images/kibana-apm-sample-data.png b/docs/images/kibana-apm-sample-data.png deleted file mode 100644 index 7aeb5f1ac37..00000000000 Binary files a/docs/images/kibana-apm-sample-data.png and /dev/null differ diff --git a/docs/images/layers.png b/docs/images/layers.png deleted file mode 100644 index a8c508a1c74..00000000000 Binary files a/docs/images/layers.png and /dev/null differ diff --git a/docs/images/scale-apm.png b/docs/images/scale-apm.png deleted file mode 100644 index 5792ba4680a..00000000000 Binary files a/docs/images/scale-apm.png and /dev/null differ diff --git a/docs/images/schema-agent.png b/docs/images/schema-agent.png deleted file mode 100644 index 8e65de97cfb..00000000000 Binary files a/docs/images/schema-agent.png and /dev/null differ diff --git a/docs/images/server-api-key-create.png b/docs/images/server-api-key-create.png deleted file mode 100644 index d21c440b19a..00000000000 Binary files a/docs/images/server-api-key-create.png and /dev/null differ diff --git a/docs/images/source-map-after.png b/docs/images/source-map-after.png deleted file mode 100644 index feec9e7c231..00000000000 Binary files a/docs/images/source-map-after.png and /dev/null differ diff --git a/docs/images/source-map-before.png b/docs/images/source-map-before.png deleted file mode 100644 index a92baef141e..00000000000 Binary files a/docs/images/source-map-before.png and /dev/null differ diff --git a/docs/index.asciidoc b/docs/index.asciidoc deleted file mode 100644 index 0513156cb20..00000000000 --- a/docs/index.asciidoc +++ /dev/null @@ -1,4 +0,0 @@ -// This file exists to keep the current build working. -// Delete this file when the APM Server Reference is no longer built in main and 7.16 - -include::legacy/index.asciidoc[] diff --git a/docs/jaeger-integration.asciidoc b/docs/jaeger-integration.asciidoc deleted file mode 100644 index 1af29f18cf8..00000000000 --- a/docs/jaeger-integration.asciidoc +++ /dev/null @@ -1,112 +0,0 @@ -[[jaeger-integration]] -=== Jaeger integration - -++++ -Integrate with Jaeger -++++ - -Elastic APM integrates with https://www.jaegertracing.io/[Jaeger], an open-source, distributed tracing system. -This integration allows users with an existing Jaeger setup to switch from the default Jaeger backend, -to the {stack}. -Best of all, no instrumentation changes are needed in your application code. - -[float] -[[jaeger-architecture]] -=== Supported architecture - -Jaeger architecture supports different data formats and transport protocols -that define how data can be sent to a collector. Elastic APM, as a Jaeger collector, -supports communication with *Jaeger agents* via gRPC. - -* The APM integration serves Jaeger gRPC over the same host and port as the Elastic {apm-agent} protocol. - -* The APM integration gRPC endpoint supports TLS. If SSL is configured, -SSL settings will automatically be applied to the APM integration's Jaeger gRPC endpoint. - -* The gRPC endpoint supports probabilistic sampling. -Sampling decisions can be configured <> with {apm-agent} central configuration, or <> in each Jaeger client. - -See the https://www.jaegertracing.io/docs/1.27/architecture[Jaeger docs] -for more information on Jaeger architecture. - -[float] -[[get-started-jaeger]] -=== Get started - -Connect your preexisting Jaeger setup to Elastic APM in three steps: - -* <> -* <> -* <> - -IMPORTANT: There are <> to this integration. - -[float] -[[configure-agent-client-jaeger]] -==== Configure Jaeger agents - -The APM integration serves Jaeger gRPC over the same host and port as the Elastic {apm-agent} protocol. - -include::{tab-widget-dir}/jaeger-widget.asciidoc[] - -[float] -[[configure-sampling-jaeger]] -==== Configure Sampling - -The APM integration supports probabilistic sampling, which can be used to reduce the amount of data that your agents collect and send. -Probabilistic sampling makes a random sampling decision based on the configured sampling value. -For example, a value of `.2` means that 20% of traces will be sampled. - -There are two different ways to configure the sampling rate of your Jaeger agents: - -* <> -* <> - -[float] -[[configure-sampling-central-jaeger]] -===== {apm-agent} central configuration (default) - -Central sampling, with {apm-agent} central configuration, -allows Jaeger clients to poll APM Server for the sampling rate. -This means sample rates can be configured on the fly, on a per-service and per-environment basis. -See {kibana-ref}/agent-configuration.html[Central configuration] to learn more. - -[float] -[[configure-sampling-local-jaeger]] -===== Local sampling in each Jaeger client - -If you don't have access to the {apm-app}, -you'll need to change the Jaeger client's `sampler.type` and `sampler.param`. -This enables you to set the sampling configuration locally in each Jaeger client. -See the official https://www.jaegertracing.io/docs/1.27/sampling/[Jaeger sampling documentation] -for more information. - -[float] -[[configure-start-jaeger]] -==== Start sending data - -That's it! Data sent from Jaeger clients to the APM Server can now be viewed in the {apm-app}. - -[float] -[[caveats-jaeger]] -=== Caveats - -There are some limitations and differences between Elastic APM and Jaeger that you should be aware of. - -*Jaeger integration limitations:* - -* Because Jaeger has its own trace context header, and does not currently support W3C trace context headers, -it is not possible to mix and match the use of Elastic's APM agents and Jaeger's clients. -* Elastic APM only supports probabilistic sampling. - -*Differences between APM Agents and Jaeger Clients:* - -* Jaeger clients only sends trace data. -APM agents support a larger number of features, like -multiple types of metrics, and application breakdown charts. -When using Jaeger, features like this will not be available in the {apm-app}. -* Elastic APM's <> is different than Jaegers. -For Jaeger trace data to work with Elastic's data model, we rely on spans being tagged with the appropriate -https://github.com/opentracing/specification/blob/master/semantic_conventions.md[`span.kind`]. -** Server Jaeger spans are mapped to Elastic APM <>. -** Client Jaeger spans are mapped to Elastic APM <> -- unless the span is the root, in which case it is mapped to an Elastic APM <>. diff --git a/docs/legacy/tab-widgets/install-agents-widget.asciidoc b/docs/legacy/tab-widgets/install-agents-widget.asciidoc deleted file mode 100644 index 5042f469611..00000000000 --- a/docs/legacy/tab-widgets/install-agents-widget.asciidoc +++ /dev/null @@ -1 +0,0 @@ -include::../../tab-widgets/install-agents-widget.asciidoc[] \ No newline at end of file diff --git a/docs/log-correlation.asciidoc b/docs/log-correlation.asciidoc deleted file mode 100644 index c091e7e833b..00000000000 --- a/docs/log-correlation.asciidoc +++ /dev/null @@ -1,183 +0,0 @@ -[[log-correlation]] -=== Logging integration - -Many applications use logging frameworks to help record, format, and append an application's logs. -Elastic APM now offers a way to make your application logs even more useful, -by integrating with the most popular logging frameworks in their respective languages. -This means you can easily inject trace information into your logs, -allowing you to explore logs in the {observability-guide}/monitor-logs.html[{logs-app}], -then jump straight into the corresponding APM traces -- all while preserving the trace context. - -To get started: - -. <> -. <> -. <> - -[float] -[[enable-log-correlation]] -==== Enable Log correlation - -Some Agents require you to first enable log correlation in the Agent. -This is done with a configuration variable, and is different for each Agent. -See the relevant https://www.elastic.co/guide/en/apm/agent/index.html[Agent documentation] for further information. - -// Not enough of the Agent docs are ready yet. -// Commenting these out and will replace when ready. -// * *Java*: {apm-java-ref-v}/config-logging.html#config-enable-log-correlation[`enable_log_correlation`] -// * *.NET*: {apm-dotnet-ref-v}/[] -// * *Node.js*: {apm-node-ref-v}/[] -// * *Python*: {apm-py-ref-v}/[] -// * *Ruby*: {apm-ruby-ref-v}/[] -// * *Rum*: {apm-rum-ref-v}/[] - -[float] -[[add-apm-identifiers-to-logs]] -==== Add APM identifiers to your logs - -Once log correlation is enabled, -you must ensure your logs contain APM identifiers. - -In some supported frameworks, this is already done for you. -In other scenarios, like for unstructured logs, -you'll need to add APM identifiers to your logs in any easy to parse manner. - -Log correlation relies on these fields: - -- Service level: {ecs-ref}/ecs-service.html[`service.name`], {ecs-ref}/ecs-service.html[`service.version`], and {ecs-ref}/ecs-service.html[`service.environment`] -- Trace level: {ecs-ref}/ecs-tracing.html[`trace.id`] and {ecs-ref}/ecs-tracing.html[`transaction.id`] -- Container level: {ecs-ref}/ecs-container.html[`container.id`] when {ecs-ref}/ecs-service.html[`service.name`] is not available - -The process for adding these fields will differ based the Agent you're using, the logging framework, -and the type and structure of your logs. - -See the relevant https://www.elastic.co/guide/en/apm/agent/index.html[Agent documentation] to learn more. - -// Not enough of the Agent docs have been backported yet. -// Commenting these out and will replace when ready. -// * *Go*: {apm-go-ref-v}/supported-tech.html#supported-tech-logging[Logging frameworks] -// * *Java*: {apm-java-ref-v}/[] NOT merged yet https://github.com/elastic/apm-agent-java/pull/854 -// * *.NET*: {apm-dotnet-ref-v}/[] -// * *Node.js*: {apm-node-ref-v}/[] -// * *Python*: {apm-py-ref-v}/[] -// * *Ruby*: {apm-ruby-ref-v}/[] Not backported yet https://www.elastic.co/guide/en/apm/agent/ruby/master/log-correlation.html -// * *Rum*: {apm-rum-ref-v}/[] - -[float] -[[ingest-logs-in-es]] -==== Ingest your logs into {es} - -Once your logs contain the appropriate identifiers (fields), you need to ingest them into {es}. -Luckily, we've got a tool for that -- {filebeat} is Elastic's log shipper. -The {filebeat-ref}/filebeat-installation-configuration.html[{filebeat} quick start] -guide will walk you through the setup process. - -Because logging frameworks and formats vary greatly between different programming languages, -there is no one-size-fits-all approach for ingesting your logs into {es}. -The following tips should hopefully get you going in the right direction: - -**Download {filebeat}** - -There are many ways to download and get started with {filebeat}. -Read the {filebeat-ref}/filebeat-installation-configuration.html[{filebeat} quick start] guide to determine which is best for you. - -**Configure {filebeat}** - -Modify the {filebeat-ref}/configuring-howto-filebeat.html[`filebeat.yml`] configuration file to your needs. -Here are some recommendations: - -* Set `filebeat.inputs` to point to the source of your logs -* Point {filebeat} to the same {stack} that is receiving your APM data - * If you're using Elastic cloud, set `cloud.id` and `cloud.auth`. - * If your using a manual setup, use `output.elasticsearch.hosts`. - -[source,yml] ----- -filebeat.inputs: -- type: log <1> - paths: <2> - - /var/log/*.log -cloud.id: "staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWMNjN2Q3YTllOTYyNTc0Mw==" <3> -cloud.auth: "elastic:YOUR_PASSWORD" <4> ----- -<1> Configures the `log` input -<2> Path(s) that must be crawled to fetch the log lines -<3> Used to resolve the {es} and {kib} URLs for {ecloud} -<4> Authorization token for {ecloud} - -**JSON logs** - -For JSON logs you can use the {filebeat-ref}/filebeat-input-log.html[`log` input] to read lines from log files. -Here's what a sample configuration might look like: - -[source,yml] ----- -filebeat.inputs: - json.keys_under_root: true <1> - json.add_error_key: true <2> - json.message_key: message <3> ----- -<1> `true` copies JSON keys to the top level in the output document -<2> Tells {filebeat} to add an `error.message` and `error.type: json` key in case of JSON unmarshalling errors -<3> Specifies the JSON key on which to apply line filtering and multiline settings - -**Parsing unstructured logs** - -Consider the following log that is decorated with the `transaction.id` and `trace.id` fields: - -[source,log] ----- -2019-09-18 21:29:49,525 - django.server - ERROR - "GET / HTTP/1.1" 500 27 | elasticapm transaction.id=fcfbbe447b9b6b5a trace.id=f965f4cc5b59bdc62ae349004eece70c span.id=None ----- - -All that's needed now is an {filebeat-ref}/configuring-ingest-node.html[ingest node processor] to preprocess your logs and -extract these structured fields before they are indexed in {es}. -To do this, you'd need to create a pipeline that uses {es}'s {ref}/grok-processor.html[Grok Processor]. -Here's an example: - -[source, json] ----- -PUT _ingest/pipeline/log-correlation -{ - "description": "Parses the log correlation IDs out of the raw plain-text log", - "processors": [ - { - "grok": { - "field": "message", <1> - "patterns": ["%{GREEDYDATA:message} | elasticapm transaction.id=%{DATA:transaction.id} trace.id=%{DATA:trace.id} span.id=%{DATA:span.id}"] <2> - } - } - ] -} ----- -<1> The field to use for grok expression parsing -<2> An ordered list of grok expression to match and extract named captures with: -`%{DATA:transaction.id}` captures the value of `transaction.id`, -`%{DATA:trace.id}` captures the value or `trace.id`, and -`%{DATA:span.id}` captures the value of `span.id`. - -NOTE: Depending on how you've added APM data to your logs, -you may need to tweak this grok pattern in order to work for your setup. -In addition, it's possible to extract more structure out of your logs. -Make sure to follow the {ecs-ref}/ecs-field-reference.html[Elastic Common Schema] -when defining which fields you are storing in {es}. - -Then, configure {filebeat} to use the processor in `filebeat.yml`: - -[source, json] ----- -output.elasticsearch: - pipeline: "log-correlation" ----- - -If your logs contain messages that span multiple lines of text (common in Java stack traces), -you'll also need to configure {filebeat-ref}/multiline-examples.html[multiline settings]. - -The following example shows how to configure {filebeat} to handle a multiline message where the first line of the message begins with a bracket ([). - -[source,yml] ----- -multiline.pattern: '^\[' -multiline.negate: true -multiline.match: after ----- diff --git a/docs/manage-storage.asciidoc b/docs/manage-storage.asciidoc deleted file mode 100644 index 8ceada70096..00000000000 --- a/docs/manage-storage.asciidoc +++ /dev/null @@ -1,210 +0,0 @@ -[[manage-storage]] -== Manage storage - -{agent} uses <> to store time series data across multiple indices. -Each data stream ships with a customizable <> that automates data retention as your indices grow and age. - -The <> attempts to define a "typical" storage reference for Elastic APM, -and there are additional settings you can tweak to <>, -or to <>. - -In addition, the APM UI makes it easy to visualize your APM data usage with -{kibana-ref}/storage-explorer.html[storage explorer]. -Storage explorer allows you to analyze the storage footprint of each of your services to see -which are producing large amounts of data--so you can better reduce the data you're collecting -or forecast and prepare for future storage needs. - -include::./data-streams.asciidoc[] - -include::./ilm-how-to.asciidoc[] - -[[storage-guide]] -=== Storage and sizing guide - -APM processing and storage costs are largely dominated by transactions, spans, and stack frames. - -* <> describe an event captured by an Elastic {apm-agent} instrumenting a service. -They are the highest level of work being measuring within a service. -* <> belong to transactions. They measure from the start to end of an activity, -and contain information about a specific code path that has been executed. -* *Stack frames* belong to spans. Stack frames represent a function call on the call stack, -and include attributes like function name, file name and path, line number, etc. -Stack frames can heavily influence the size of a span. - -[float] -==== Typical transactions - -Due to the high variability of APM data, it's difficult to classify a transaction as typical. -Regardless, this guide will attempt to classify Transactions as _Small_, _Medium_, or _Large_, -and make recommendations based on those classifications. - -The size of a transaction depends on the language, agent settings, and what services the agent instruments. -For instance, an agent auto-instrumenting a service with a popular tech stack -(web framework, database, caching library, etc.) is more likely to generate bigger transactions. - -In addition, all agents support manual instrumentation. -How little or much you use these APIs will also impact what a typical transaction looks like. - -If your sampling rate is very small, transactions will be the dominate storage cost. - -Here's a speculative reference: - -[options="header"] -|======================================================================= -|Transaction size |Number of Spans |Number of stack frames -|_Small_ |5-10 |5-10 -|_Medium_ |15-20 |15-20 -|_Large_ |30-40 |30-40 -|======================================================================= - -There will always be transaction outliers with hundreds of spans or stack frames, but those are very rare. -Small transactions are the most common. - -[float] -==== Typical storage - -Consider the following typical storage reference. -These numbers do not account for {es} compression. - -* 1 unsampled transaction is **~1 KB** -* 1 span with 10 stack frames is **~4 KB** -* 1 span with 50 stack frames is **~20 KB** -* 1 transaction with 10 spans, each with 10 stack frames is **~50 KB** -* 1 transaction with 25 spans, each with 25 spans is **250-300 KB** -* 100 transactions with 10 spans, each with 10 stack frames, sampled at 90% is **600 KB** - -APM data compresses quite well, so the storage cost in {es} will be considerably less: - -* Indexing 100 unsampled transactions per second for 1 hour results in 360,000 documents. These documents use around **50 MB** of disk space. -* Indexing 10 transactions per second for 1 hour, each transaction with 10 spans, each span with 10 stack frames, results in 396,000 documents. These documents use around **200 MB** of disk space. -* Indexing 25 transactions per second for 1 hour, each transaction with 25 spans, each span with 25 stack frames, results in 2,340,000 documents. These documents use around **1.2 GB** of disk space. - -NOTE: These examples were indexing the same data over and over with minimal variation. Because of that, the compression ratios observed of 80-90% are somewhat optimistic. - -[[reduce-apm-storage]] -=== Reduce storage - -The amount of storage for APM data depends on several factors: -the number of services you are instrumenting, how much traffic the services see, agent and server settings, -and the length of time you store your data. - -Here are some ways you can reduce either the amount of APM data you're ingesting -or the amount of data you're retaining. - -[float] -[[reduce-sample-rate]] -==== Reduce the sample rate - -Distributed tracing can generate a substantial amount of data. -More data can mean higher costs and more noise. -Sampling aims to lower the amount of data ingested and the effort required to analyze that data. - -See <> to learn more. - -[float] -==== Enable span compression - -In some cases, APM agents may collect large amounts of very similar or identical spans in a transaction. -These repeated, similar spans often don't provide added benefit, especially if they are of very short duration. -Span compression takes these similar spans and compresses them into a single span-- -retaining important information but reducing processing and storage overhead. - -See <> to learn more. - -[float] -[[reduce-stacktrace]] -==== Reduce collected stack trace information - -Elastic APM agents collect `stacktrace` information under certain circumstances. -This can be very helpful in identifying issues in your code, -but it also comes with an overhead at collection time and increases the storage usage. - -Stack trace collection settings are managed in each agent. - -[float] -==== Delete data - -You might want to only keep data for a defined time period. -This might mean deleting old documents periodically, -deleting data collected for specific services or customers, -or deleting specific indices. - -Depending on your use case, you can delete data: - -* periodically with <> -* <> -* with the <> - -If you want to delete data for security or privacy reasons, see <>. - -[float] -[[delete-data-with-ilm]] -===== Delete data with {ilm} ({ilm-init}) - -Index lifecycle management enables you to automate how you want to manage your indices over time. -You can base actions on factors such as shard size and performance requirements. -See <> to learn more. - -[float] -[[delete-data-query]] -===== Delete data matching a query - -You can delete all APM documents matching a specific query with the {ref}/docs-delete-by-query.html[Delete By Query API]. -For example, to delete all documents with a given `service.name`, use the following request: - -["source","console"] ----- -POST /.ds-*-apm*/_delete_by_query -{ - "query": { - "term": { - "service.name": { - "value": "old-service-name" - } - } - } -} ----- - -[float] -[[delete-data-in-kibana]] -===== Delete data with {kib} Index Management - -{kib}'s {ref}/index-mgmt.html[Index Management] allows you to manage your cluster's -indices, data streams, index templates, and much more. - -In {kib}, navigate to **Stack Management** > **Index Management** > **Data Streams**. -Select the data streams you want to delete, and click **Delete data streams**. - -[float] -[[update-data]] -==== Update existing data - -You might want to update documents that are already indexed. -For example, if you your service name was set incorrectly. - -To do this, you can use the {ref}/docs-update-by-query.html[Update By Query API]. -To rename a service, send the following request: - -["source","sh"] ------------------------------------------------------------- -POST /.ds-*-apm*/_update_by_query?expand_wildcards=all -{ - "query": { - "term": { - "service.name": { - "value": "current-service-name" - } - } - }, - "script": { - "source": "ctx._source.service.name = 'new-service-name'", - "lang": "painless" - } -} ------------------------------------------------------------- -// CONSOLE - -TIP: Remember to also change the service name in the {apm-agents-ref}/index.html[{apm-agent} configuration]. - -include::{docdir}/exploring-es-data.asciidoc[leveloffset=+2] diff --git a/docs/metadata-api.asciidoc b/docs/metadata-api.asciidoc deleted file mode 100644 index 45c69529ed8..00000000000 --- a/docs/metadata-api.asciidoc +++ /dev/null @@ -1,66 +0,0 @@ -[[metadata-api]] -=== Metadata - -Every new connection to the APM Server starts with a `metadata` stanza. -This provides general metadata concerning the other objects in the stream. - -Rather than send this metadata information from the agent multiple times, -the APM Server hangs on to this information and applies it to other objects in the stream as necessary. - -TIP: Metadata is stored under `context` when viewing documents in {es}. - -* <> -* <> - -[[kubernetes-data]] -[float] -==== Kubernetes data - -APM agents automatically read Kubernetes data and send it to the APM Server. -In most instances, agents are able to read this data from inside the container. -If this is not the case, or if you wish to override this data, you can set environment variables for the agents to read. -These environment variable are set via the Kubernetes https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#use-pod-fields-as-values-for-environment-variables[Downward API]. -Here's how you would add the environment variables to your Kubernetes pod spec: - -[source,yaml] ----- - - name: KUBERNETES_NODE_NAME - valueFrom: - fieldRef: - fieldPath: spec.nodeName - - name: KUBERNETES_POD_NAME - valueFrom: - fieldRef: - fieldPath: metadata.name - - name: KUBERNETES_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - - name: KUBERNETES_POD_UID - valueFrom: - fieldRef: - fieldPath: metadata.uid ----- - -The table below maps these environment variables to the APM metadata event field: - -[options="header"] -|===== -|Environment variable |Metadata field name -| `KUBERNETES_NODE_NAME` |system.kubernetes.node.name -| `KUBERNETES_POD_NAME` |system.kubernetes.pod.name -| `KUBERNETES_NAMESPACE` |system.kubernetes.namespace -| `KUBERNETES_POD_UID` |system.kubernetes.pod.uid -|===== - -[[metadata-schema]] -[float] -==== Metadata Schema - -APM Server uses JSON Schema to validate requests. The specification for metadata is defined on -{github_repo_link}/docs/spec/v2/metadata.json[GitHub] and included below: - -[source,json] ----- -include::../spec/v2/metadata.json[] ----- \ No newline at end of file diff --git a/docs/metricset-api.asciidoc b/docs/metricset-api.asciidoc deleted file mode 100644 index 4a42e2e4b3a..00000000000 --- a/docs/metricset-api.asciidoc +++ /dev/null @@ -1,16 +0,0 @@ -[[metricset-api]] -=== Metrics - -Metrics contain application metric data captured by an {apm-agent}. - -[[metricset-schema]] -[float] -==== Metric Schema - -APM Server uses JSON Schema to validate requests. The specification for metrics is defined on -{github_repo_link}/docs/spec/v2/metricset.json[GitHub] and included below: - -[source,json] ----- -include::../spec/v2/metricset.json[] ----- diff --git a/docs/monitor-apm-server.asciidoc b/docs/monitor-apm-server.asciidoc deleted file mode 100644 index 34b75242ad5..00000000000 --- a/docs/monitor-apm-server.asciidoc +++ /dev/null @@ -1,31 +0,0 @@ -[[monitor-apm]] -== Monitor APM Server - -++++ -Monitor -++++ - -Use the {stack} {monitor-features} to gain insight into the real-time health and performance of APM Server. -Stack monitoring exposes key metrics, like intake response count, intake error rate, output event rate, -output failed event rate, and more. - -Select your deployment method to get started: - -* <> -* <> -* <> - -[float] -[[monitor-apm-cloud]] -=== {ecloud} - -{ecloud} manages the installation and configuration of a monitoring agent for you -- so -all you have to do is flip a switch and watch the data pour in. - -* **{ess}** user? See {cloud}/ec-enable-logging-and-monitoring.html[ESS: Enable logging and monitoring]. -* **{ece}** user? See {ece-ref}/ece-enable-logging-and-monitoring.html[ECE: Enable logging and monitoring]. - - -include::./monitor.asciidoc[] - -include::{docdir}/monitoring/monitoring-beats.asciidoc[leveloffset=+2] diff --git a/docs/monitor.asciidoc b/docs/monitor.asciidoc deleted file mode 100644 index fa74864e8b9..00000000000 --- a/docs/monitor.asciidoc +++ /dev/null @@ -1,193 +0,0 @@ -[[monitor-apm-self-install]] -=== Monitor a Fleet-managed APM Server - -++++ -Fleet-managed -++++ - -NOTE: This guide assumes you are already ingesting APM data into the {stack}. - -In 8.0 and later, you can use {metricbeat} to collect data about APM Server and ship it to a monitoring cluster. -To collect and ship monitoring data: - -. <> -. <> - -[float] -[[configure-ea-monitoring-data]] -==== Configure {agent} to send monitoring data - -**** -Before you can monitor APM, -you must have monitoring data for the {es} production cluster. -To learn how, see {ref}/configuring-metricbeat.html[Collect {es} monitoring data with {metricbeat}]. -Alternatively, open the **{stack-monitor-app}** app in {kib} and follow the in-product guide. -**** - -. Enable monitoring of {agent} by adding the following settings to your `elastic-agent.yml` configuration file: -+ --- -[source,yaml] ----- -agent.monitoring: - http: - enabled: true <1> - host: localhost <2> - port: 6791 <3> ----- -<1> Enable monitoring -<2> The host to expose logs/metrics on -<3> The port to expose logs/metrics on --- - -. Enroll {agent} -+ -After editing `elastic-agent.yml`, you must re-enroll {agent} for the changes to take effect. -+ --- -include::{ingest-docs-root}/docs/en/ingest-management/commands.asciidoc[tag=enroll] --- - -See the {fleet-guide}/elastic-agent-cmd-options.html[{agent} command reference] for more information on the enroll command. - -[float] -[[install-config-metricbeat]] -==== Install and configure {metricbeat} to collect monitoring data - -. Install {metricbeat} on the same server as {agent}. To learn how, see -{metricbeat-ref}/metricbeat-installation-configuration.html[Get started with {metricbeat}]. -If you already have {metricbeat} installed, skip this step. - -. Enable the `beat-xpack` module in {metricbeat}. -+ --- -For example, to enable the default configuration in the `modules.d` directory, -run the following command, using the correct command syntax for your OS: - -["source","sh",subs="attributes,callouts"] ----- -metricbeat modules enable beat-xpack ----- - -For more information, see -{metricbeat-ref}/configuration-metricbeat.html[Configure modules] and -{metricbeat-ref}/metricbeat-module-beat.html[beat module]. --- - -. Configure the `beat-xpack` module in {metricbeat}. -+ --- -When complete, your `modules.d/beat-xpack.yml` file should look similar to this: - -[source,yaml] ----- -- module: beat - xpack.enabled: true - period: 10s - hosts: ["http://localhost:6791"] - basepath: "/processes/apm-server-default" - username: remote_monitoring_user - password: your_password ----- - -.. Do not change the `module` name or `xpack.enabled` boolean; -these are required for stack monitoring. We recommend accepting the default `period` for now. - -.. Set the `hosts` to match the host:port configured in your `elastic-agent.yml` file. -In this example, that's `http://localhost:6791`. -+ -To monitor multiple APM Server instances running in multiple {agent}s, specify a list of hosts, for example: -+ -[source,yaml] ----- -hosts: ["http://localhost:5066","http://localhost:5067","http://localhost:5068"] ----- -+ -If you configured {agent} to use encrypted communications, you must access -it via HTTPS. For example, use a `hosts` setting like `https://localhost:5066`. - -.. APM Server metrics are exposed at `/processes/apm-server-default`. Add this location as the `basepath`. - -.. Set the `username` and `password` settings as required by your -environment. If Elastic {security-features} are enabled, you must provide a username -and password so that {metricbeat} can collect metrics successfully: - -... Create a user on the {es} cluster that has the -`remote_monitoring_collector` {ref}/built-in-roles.html[built-in role]. -Alternatively, if it's available in your environment, use the -`remote_monitoring_user` {ref}/built-in-users.html[built-in user]. - -... Add the `username` and `password` settings to the beat module configuration -file. --- - -. Optional: Disable the system module in the {metricbeat}. -+ --- -By default, the {metricbeat-ref}/metricbeat-module-system.html[system module] is -enabled. The information it collects, however, is not shown on the -*{stack-monitor-app}* page in {kib}. Unless you want to use that information for -other purposes, run the following command: - -["source","sh",subs="attributes,callouts"] ----- -metricbeat modules disable system ----- --- - -. Identify where to send the monitoring data. + -+ --- -TIP: In production environments, you should send your deployment logs and metrics to a dedicated -monitoring deployment (referred to as the _monitoring cluster_). -Monitoring indexes logs and metrics into {es} and these indexes consume storage, memory, -and CPU cycles like any other index. -By using a separate monitoring deployment, you avoid affecting your other production deployments and can -view the logs and metrics even when a production deployment is unavailable. - -For example, specify the {es} output information in the {metricbeat} -configuration file (`metricbeat.yml`): - -[source,yaml] ----- -output.elasticsearch: - # Array of hosts to connect to. - hosts: ["http://es-mon-1:9200", "http://es-mon2:9200"] <1> - - # Optional protocol and basic auth credentials. - #protocol: "https" - #api_key: "id:api_key" <2> - #username: "elastic" - #password: "changeme" ----- -<1> In this example, the data is stored on a monitoring cluster with nodes -`es-mon-1` and `es-mon-2`. -<2> Specify one of `api_key` or `username`/`password`. - -If you configured the monitoring cluster to use encrypted communications, you -must access it via HTTPS. For example, use a `hosts` setting like -`https://es-mon-1:9200`. - -IMPORTANT: The {es} {monitor-features} use ingest pipelines, therefore the -cluster that stores the monitoring data must have at least one ingest node. - -If the {es} {security-features} are enabled on the monitoring cluster, you -must provide a valid user ID and password so that {metricbeat} can send metrics -successfully: - -.. Create a user on the monitoring cluster that has the -`remote_monitoring_agent` {ref}/built-in-roles.html[built-in role]. -Alternatively, if it's available in your environment, use the -`remote_monitoring_user` {ref}/built-in-users.html[built-in user]. - -.. Add the `username` and `password` settings to the {es} output information in -the {metricbeat} configuration file. - -For more information about these configuration options, see -{metricbeat-ref}/elasticsearch-output.html[Configure the {es} output]. --- - -. {metricbeat-ref}/metricbeat-starting.html[Start {metricbeat}] to begin -collecting APM monitoring data. - -. {kibana-ref}/monitoring-data.html[View the monitoring data in {kib}]. diff --git a/docs/monitoring/monitoring-beats.asciidoc b/docs/monitoring/monitoring-beats.asciidoc deleted file mode 100644 index 690e3bd8e5b..00000000000 --- a/docs/monitoring/monitoring-beats.asciidoc +++ /dev/null @@ -1,28 +0,0 @@ -[[monitoring]] -= Monitor the APM Server binary - -++++ -APM Server binary -++++ - -There are two methods to monitor the APM Server binary. -Make sure monitoring is enabled on your {es} cluster, -then configure one of these methods to collect {beatname_uc} metrics: - -* <> - Internal -collectors send monitoring data directly to your monitoring cluster. -ifndef::serverless[] -* <> - -{metricbeat} collects monitoring data from your {beatname_uc} instance -and sends it directly to your monitoring cluster. -* <> - Local collection sends -select monitoring data directly to the standard indices of your monitoring -cluster. -endif::[] - -include::monitoring-internal-collection.asciidoc[] -include::monitoring-local-collection.asciidoc[] - -ifndef::serverless[] -include::monitoring-metricbeat.asciidoc[] -endif::[] diff --git a/docs/monitoring/monitoring-internal-collection.asciidoc b/docs/monitoring/monitoring-internal-collection.asciidoc deleted file mode 100644 index 430fe49c31e..00000000000 --- a/docs/monitoring/monitoring-internal-collection.asciidoc +++ /dev/null @@ -1,125 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/monitoring/monitoring-internal-collection.asciidoc[] -////////////////////////////////////////////////////////////////////////// - -[role="xpack"] -[[monitoring-internal-collection]] -== Use internal collection to send monitoring data -++++ -Use internal collection -++++ - -Use internal collectors to send {beats} monitoring data directly to your -monitoring cluster. -ifndef::serverless[] -Or as an alternative to internal collection, use -<>. The benefit of using internal collection -instead of {metricbeat} is that you have fewer pieces of software to install -and maintain. -endif::[] - -//Commenting out this link temporarily until the general monitoring docs can be -//updated. -//To learn about monitoring in general, see -//{ref}/monitor-elasticsearch-cluster.html[Monitor a cluster]. - -. Create an API key or user that has appropriate authority to send system-level monitoring -data to {es}. For example, you can use the built-in +{beat_monitoring_user}+ user or -assign the built-in +{beat_monitoring_user}+ role to another user. For more -information on the required privileges, see <>. -For more information on how to use API keys, see <>. - -. Add the `monitoring` settings in the {beatname_uc} configuration file. If you -configured the {es} output and want to send {beatname_uc} monitoring events to -the same {es} cluster, specify the following minimal configuration: -+ -["source","yml",subs="attributes"] --------------------- -monitoring: - enabled: true - elasticsearch: - api_key: id:api_key <1> - username: {beat_monitoring_user} - password: somepassword --------------------- -<1> Specify one of `api_key` or `username`/`password`. -+ -If you want to send monitoring events to an https://cloud.elastic.co/[{ecloud}] -monitoring cluster, you can use two simpler settings. When defined, these settings -overwrite settings from other parts in the configuration. For example: -+ -[source,yaml] --------------------- -monitoring: - enabled: true - cloud.id: 'staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRjZWM2ZjI2MWE3NGJmMjRjZTMzYmI4ODExYjg0Mjk0ZiRjNmMyY2E2ZDA0MjI0OWFmMGNjN2Q3YTllOTYyNTc0Mw==' - cloud.auth: 'elastic:{pwd}' --------------------- -+ -If you -ifndef::no-output-logstash[] -configured a different output, such as {ls} or you -endif::[] -want to send {beatname_uc} monitoring events to a separate {es} cluster -(referred to as the _monitoring cluster_), you must specify additional -configuration options. For example: -+ -["source","yml",subs="attributes"] --------------------- -monitoring: - enabled: true - cluster_uuid: PRODUCTION_ES_CLUSTER_UUID <1> - elasticsearch: - hosts: ["https://example.com:9200", "https://example2.com:9200"] <2> - api_key: id:api_key <3> - username: {beat_monitoring_user} - password: somepassword --------------------- -<1> This setting identifies the {es} cluster under which the -monitoring data for this {beatname_uc} instance will appear in the -{stack-monitor-app} UI. To get a cluster's `cluster_uuid`, -call the `GET /` API against that cluster. -<2> This setting identifies the hosts and port numbers of {es} nodes -that are part of the monitoring cluster. -<3> Specify one of `api_key` or `username`/`password`. -+ -If you want to use PKI authentication to send monitoring events to -{es}, you must specify a different set of configuration options. For -example: -+ -[source,yaml] --------------------- -monitoring: - enabled: true - cluster_uuid: PRODUCTION_ES_CLUSTER_UUID - elasticsearch: - hosts: ["https://example.com:9200", "https://example2.com:9200"] - username: "" - ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] - ssl.certificate: "/etc/pki/client/cert.pem" - ssl.key: "/etc/pki/client/cert.key" --------------------- -+ -You must specify the `username` as `""` explicitly so that -the username from the client certificate (`CN`) is used. See -<> for more information about SSL settings. - -ifndef::serverless[] -. Start {beatname_uc}. -endif::[] - -ifdef::serverless[] -. Deploy {beatname_uc}. -endif::[] - -. {kibana-ref}/monitoring-data.html[View the monitoring data in {kib}]. - - -include::shared-monitor-config.asciidoc[] diff --git a/docs/monitoring/monitoring-local-collection.asciidoc b/docs/monitoring/monitoring-local-collection.asciidoc deleted file mode 100644 index e4b41b2e9a6..00000000000 --- a/docs/monitoring/monitoring-local-collection.asciidoc +++ /dev/null @@ -1,34 +0,0 @@ -[[monitoring-local-collection]] -= Use the select metrics emitted directly to your monitoring cluster -++++ -Use local collection -++++ - -In 8.11 and later, we emit a selected set of metrics directly to the monitoring -cluster. -The benefit of using local collection instead of internal collection is that -the metrics are sent directly to your main monitoring index, making it easier -to view shared data. - -[[select-metrics]] -== The select metrics - -We only ship a select list of metrics, to avoid overwhelming your monitoring cluster. -If you need the entire set of metrics and traces we can expose, you should use -<> instead of local -collection. - -Here is the list of every metrics we currently expose: - -* http.server.request.count -* http.server.request.duration -* http.server.response.valid.count -* http.server.response.errors.count -* http.server.errors.timeout -* http.server.errors.ratelimit -* grpc.server.request.count -* grpc.server.request.duration -* grpc.server.response.valid.count -* grpc.server.response.errors.count -* grpc.server.errors.timeout -* grpc.server.errors.ratelimit diff --git a/docs/monitoring/monitoring-metricbeat.asciidoc b/docs/monitoring/monitoring-metricbeat.asciidoc deleted file mode 100644 index 1f6b15a9403..00000000000 --- a/docs/monitoring/monitoring-metricbeat.asciidoc +++ /dev/null @@ -1,288 +0,0 @@ -[role="xpack"] -[[monitoring-metricbeat-collection]] -== Use {metricbeat} to send monitoring data -[subs="attributes"] -++++ -Use {metricbeat} collection -++++ - -In 7.3 and later, you can use {metricbeat} to collect data about {beatname_uc} -and ship it to the monitoring cluster. The benefit of using {metricbeat} instead -of internal collection is that the monitoring agent remains active even if the -{beatname_uc} instance dies. - -ifeval::["{beatname_lc}"=="metricbeat"] -Because you'll be using {metricbeat} to _monitor_ {beatname_uc}, you'll need to -run two instances of {beatname_uc}: a main instance that collects metrics from -the system and services running on the server, and a second instance that -collects metrics from {beatname_uc} only. Using a separate instance as a -monitoring agent allows you to send monitoring data to a dedicated monitoring -cluster. If the main agent goes down, the monitoring agent remains active. - -If you're running {beatname_uc} as a service, this approach requires extra work -because you need to run two instances of the same installed service -concurrently. If you don't want to run two instances concurrently, use -<> instead of using -{metricbeat}. -endif::[] - -//Commenting out this link temporarily until the general monitoring docs can be -//updated. -//To learn about monitoring in general, see -//{ref}/monitor-elasticsearch-cluster.html[Monitor a cluster]. - -//NOTE: The tagged regions are re-used in the Stack Overview. - -To collect and ship monitoring data: - -. <> - -. <> - -[float] -[[configure-shipper]] -=== Configure the shipper you want to monitor - -. Enable the HTTP endpoint to allow external collection of monitoring data: -+ --- -// tag::enable-http-endpoint[] -Add the following setting in the {beatname_uc} configuration file -(+{beatname_lc}.yml+): - -[source,yaml] ----------------------------------- -http.enabled: true ----------------------------------- - -By default, metrics are exposed on port 5066. If you need to monitor multiple -{beats} shippers running on the same server, set `http.port` to expose metrics -for each shipper on a different port number: - -[source,yaml] ----------------------------------- -http.port: 5067 ----------------------------------- -// end::enable-http-endpoint[] --- - -. Disable the default collection of {beatname_uc} monitoring metrics. + -+ --- -// tag::disable-beat-collection[] -Add the following setting in the {beatname_uc} configuration file -(+{beatname_lc}.yml+): - -[source,yaml] ----------------------------------- -monitoring.enabled: false ----------------------------------- -// end::disable-beat-collection[] - -For more information, see -<>. --- - -. Configure host (optional). + -+ --- -// tag::set-http-host[] -If you intend to get metrics using {metricbeat} installed on another server, you need to bind the {beatname_uc} to host's IP: - -[source,yaml] ----------------------------------- -http.host: xxx.xxx.xxx.xxx ----------------------------------- -// end::set-http-host[] --- - -. Configure cluster UUID (optional). + -+ --- -// tag::set-cluster-uuid[] -To see the {beats} monitoring section in {kib} if you have a cluster, you need to associate the {beatname_uc} with cluster UUID: - -[source,yaml] ----------------------------------- -monitoring.cluster_uuid: "cluster-uuid" ----------------------------------- -// end::set-cluster-uuid[] --- - -ifndef::serverless[] -. Start {beatname_uc}. -endif::[] - -[float] -[[configure-metricbeat]] -=== Install and configure {metricbeat} to collect monitoring data - -ifeval::["{beatname_lc}"!="metricbeat"] -. Install {metricbeat} on the same server as {beatname_uc}. To learn how, see -{metricbeat-ref}/metricbeat-installation-configuration.html[Get started with {metricbeat}]. -If you already have {metricbeat} installed on the server, skip this step. -endif::[] -ifeval::["{beatname_lc}"=="metricbeat"] -. The next step depends on how you want to run {metricbeat}: -* If you're running as a service and want to run a separate monitoring instance, -take the steps required for your environment to run two instances of -{metricbeat} as a service. The steps for doing this vary by platform and are -beyond the scope of this documentation. -* If you're running the binary directly in the foreground and want to run a -separate monitoring instance, install {metricbeat} to a different path. If -necessary, set `path.config`, `path.data`, and `path.log` to point to the -correct directories. See <> for the default locations. -endif::[] - -. Enable the `beat-xpack` module in {metricbeat}. + -+ --- -// tag::enable-beat-module[] -For example, to enable the default configuration in the `modules.d` directory, -run the following command, using the correct command syntax for your OS: - -["source","sh",subs="attributes,callouts"] ----------------------------------------------------------------------- -metricbeat modules enable beat-xpack ----------------------------------------------------------------------- - -For more information, see -{metricbeat-ref}/configuration-metricbeat.html[Configure modules] and -{metricbeat-ref}/metricbeat-module-beat.html[beat module]. -// end::enable-beat-module[] --- - -. Configure the `beat-xpack` module in {metricbeat}. + -+ --- -// tag::configure-beat-module[] -The `modules.d/beat-xpack.yml` file contains the following settings: - -[source,yaml] ----------------------------------- -- module: beat - metricsets: - - stats - - state - period: 10s - hosts: ["http://localhost:5066"] - #username: "user" - #password: "secret" - xpack.enabled: true ----------------------------------- - -Set the `hosts`, `username`, and `password` settings as required by your -environment. For other module settings, it's recommended that you accept the -defaults. - -By default, the module collects {beatname_uc} monitoring data from -`localhost:5066`. If you exposed the metrics on a different host or port when -you enabled the HTTP endpoint, update the `hosts` setting. - -To monitor multiple -ifndef::apm-server[] -{beats} agents, -endif::[] -ifdef::apm-server[] -APM Server instances, -endif::[] -specify a list of hosts, for example: - -[source,yaml] ----------------------------------- -hosts: ["http://localhost:5066","http://localhost:5067","http://localhost:5068"] ----------------------------------- - -If you configured {beatname_uc} to use encrypted communications, you must access -it via HTTPS. For example, use a `hosts` setting like `https://localhost:5066`. -// end::configure-beat-module[] - -// tag::remote-monitoring-user[] -If the Elastic {security-features} are enabled, you must also provide a user -ID and password so that {metricbeat} can collect metrics successfully: - -.. Create a user on the {es} cluster that has the -`remote_monitoring_collector` {ref}/built-in-roles.html[built-in role]. -Alternatively, if it's available in your environment, use the -`remote_monitoring_user` {ref}/built-in-users.html[built-in user]. - -.. Add the `username` and `password` settings to the beat module configuration -file. -// end::remote-monitoring-user[] --- - -. Optional: Disable the system module in the {metricbeat}. -+ --- -// tag::disable-system-module[] -By default, the {metricbeat-ref}/metricbeat-module-system.html[system module] is -enabled. The information it collects, however, is not shown on the -*{stack-monitor-app}* page in {kib}. Unless you want to use that information for -other purposes, run the following command: - -["source","sh",subs="attributes,callouts"] ----------------------------------------------------------------------- -metricbeat modules disable system ----------------------------------------------------------------------- -// end::disable-system-module[] --- - -. Identify where to send the monitoring data. + -+ --- -TIP: In production environments, we strongly recommend using a separate cluster -(referred to as the _monitoring cluster_) to store the data. Using a separate -monitoring cluster prevents production cluster outages from impacting your -ability to access your monitoring data. It also prevents monitoring activities -from impacting the performance of your production cluster. - -For example, specify the {es} output information in the {metricbeat} -configuration file (`metricbeat.yml`): - -[source,yaml] ----------------------------------- -output.elasticsearch: - # Array of hosts to connect to. - hosts: ["http://es-mon-1:9200", "http://es-mon2:9200"] <1> - - # Optional protocol and basic auth credentials. - #protocol: "https" - #api_key: "id:api_key" <2> - #username: "elastic" - #password: "changeme" ----------------------------------- -<1> In this example, the data is stored on a monitoring cluster with nodes -`es-mon-1` and `es-mon-2`. -<2> Specify one of `api_key` or `username`/`password`. - -If you configured the monitoring cluster to use encrypted communications, you -must access it via HTTPS. For example, use a `hosts` setting like -`https://es-mon-1:9200`. - -IMPORTANT: The {es} {monitor-features} use ingest pipelines, therefore the -cluster that stores the monitoring data must have at least one ingest node. - -If the {es} {security-features} are enabled on the monitoring cluster, you -must provide a valid user ID and password so that {metricbeat} can send metrics -successfully: - -.. Create a user on the monitoring cluster that has the -`remote_monitoring_agent` {ref}/built-in-roles.html[built-in role]. -Alternatively, if it's available in your environment, use the -`remote_monitoring_user` {ref}/built-in-users.html[built-in user]. -+ -TIP: If you're using {ilm}, the remote monitoring user -requires additional privileges to create and read indices. For more -information, see <>. - -.. Add the `username` and `password` settings to the {es} output information in -the {metricbeat} configuration file. - -For more information about these configuration options, see -{metricbeat-ref}/elasticsearch-output.html[Configure the {es} output]. --- - -. {metricbeat-ref}/metricbeat-starting.html[Start {metricbeat}] to begin -collecting monitoring data. - -. {kibana-ref}/monitoring-data.html[View the monitoring data in {kib}]. diff --git a/docs/monitoring/shared-monitor-config.asciidoc b/docs/monitoring/shared-monitor-config.asciidoc deleted file mode 100644 index 71825450dc3..00000000000 --- a/docs/monitoring/shared-monitor-config.asciidoc +++ /dev/null @@ -1,147 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/monitoring/shared-monitor-config.asciidoc[] -//// Make sure this content appears below a level 2 heading. -////////////////////////////////////////////////////////////////////////// - -[float] -[[configuration-monitor]] -=== Settings for internal collection - -Use the following settings to configure internal collection when you are not -using {metricbeat} to collect monitoring data. - -You specify these settings in the X-Pack monitoring section of the -+{beatname_lc}.yml+ config file: - -[float] -==== `monitoring.enabled` - -The `monitoring.enabled` config is a boolean setting to enable or disable {monitoring}. -If set to `true`, monitoring is enabled. - -The default value is `false`. - -[float] -==== `monitoring.elasticsearch` - -The {es} instances that you want to ship your {beatname_uc} metrics to. This -configuration option contains the following fields: - -[float] -===== `api_key` - -The detail of the API key to be used to send monitoring information to {es}. -See <> for more information. - -[float] -===== `bulk_max_size` - -The maximum number of metrics to bulk in a single {es} bulk API index request. -The default is `50`. For more information, see <>. - -[float] -===== `backoff.init` - -The number of seconds to wait before trying to reconnect to {es} after -a network error. After waiting `backoff.init` seconds, {beatname_uc} tries to -reconnect. If the attempt fails, the backoff timer is increased exponentially up -to `backoff.max`. After a successful connection, the backoff timer is reset. The -default is `1s`. - -[float] -===== `backoff.max` - -The maximum number of seconds to wait before attempting to connect to -{es} after a network error. The default is `60s`. - -[float] -===== `compression_level` - -The gzip compression level. Setting this value to `0` disables compression. The -compression level must be in the range of `1` (best speed) to `9` (best -compression). The default value is `0`. Increasing the compression level -reduces the network usage but increases the CPU usage. - -[float] -===== `headers` - -Custom HTTP headers to add to each request. For more information, see -<>. - -[float] -===== `hosts` - -The list of {es} nodes to connect to. Monitoring metrics are distributed to -these nodes in round robin order. For more information, see -<>. - -[float] -===== `max_retries` - -The number of times to retry sending the monitoring metrics after a failure. -After the specified number of retries, the metrics are typically dropped. The -default value is `3`. For more information, see <>. - -[float] -===== `parameters` - -Dictionary of HTTP parameters to pass within the URL with index operations. - -[float] -===== `password` - -The password that {beatname_uc} uses to authenticate with the {es} instances for -shipping monitoring data. - -[float] -===== `metrics.period` - -The time interval (in seconds) when metrics are sent to the {es} cluster. A new -snapshot of {beatname_uc} metrics is generated and scheduled for publishing each -period. The default value is 10 * time.Second. - -[float] -===== `state.period` - -The time interval (in seconds) when state information are sent to the {es} cluster. A new -snapshot of {beatname_uc} state is generated and scheduled for publishing each -period. The default value is 60 * time.Second. - -[float] -===== `protocol` - -The name of the protocol to use when connecting to the {es} cluster. The options -are: `http` or `https`. The default is `http`. If you specify a URL for `hosts`, -however, the value of protocol is overridden by the scheme you specify in the URL. - -[float] -===== `proxy_url` - -The URL of the proxy to use when connecting to the {es} cluster. For more -information, see <>. - -[float] -===== `timeout` - -The HTTP request timeout in seconds for the {es} request. The default is `90`. - -[float] -===== `ssl` - -Configuration options for Transport Layer Security (TLS) or Secure Sockets Layer -(SSL) parameters like the certificate authority (CA) to use for HTTPS-based -connections. If the `ssl` section is missing, the host CAs are used for -HTTPS connections to {es}. For more information, see <>. - -[float] -===== `username` - -The user ID that {beatname_uc} uses to authenticate with the {es} instances for -shipping monitoring data. diff --git a/docs/open-telemetry.asciidoc b/docs/open-telemetry.asciidoc deleted file mode 100644 index e8a613d9c10..00000000000 --- a/docs/open-telemetry.asciidoc +++ /dev/null @@ -1,86 +0,0 @@ -[[open-telemetry]] -== OpenTelemetry integration - -:ot-what: https://opentelemetry.io/docs/concepts/what-is-opentelemetry/ -:ot-spec: https://github.com/open-telemetry/opentelemetry-specification/blob/master/README.md -:ot-grpc: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md#otlpgrpc -:ot-http: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/protocol/otlp.md#otlphttp -:ot-contrib: https://github.com/open-telemetry/opentelemetry-collector-contrib -:ot-resource: {ot-contrib}/tree/main/processor/resourceprocessor -:ot-attr: {ot-contrib}/blob/main/processor/attributesprocessor -:ot-repo: https://github.com/open-telemetry/opentelemetry-collector -:ot-pipelines: https://opentelemetry.io/docs/collector/configuration/#service -:ot-extension: {ot-repo}/blob/master/extension/README.md -:ot-scaling: {ot-repo}/blob/master/docs/performance.md - -:ot-collector: https://opentelemetry.io/docs/collector/getting-started/ -:ot-dockerhub: https://hub.docker.com/r/otel/opentelemetry-collector-contrib - -{ot-what}[OpenTelemetry] is a set of APIs, SDKs, tooling, and integrations that enable the capture and management of -telemetry data from your services and applications. For more information about the -OpenTelemetry project, see the {ot-spec}[spec]. - -[float] -== OpenTelemetry and the {stack} - -[subs=attributes+] -include::./diagrams/apm-otel-architecture.asciidoc[Architecture of Elastic APM with OpenTelemetry] - -Elastic integrates with OpenTelemetry, allowing you to reuse your existing instrumentation -to easily send observability data to the {stack}. -There are four ways to integrate OpenTelemetry with the {stack}: - -**OpenTelemetry API/SDK with Elastic APM agents** - -To unlock the full power of the {stack}, use the OpenTelemetry API/SDKs with Elastic APM agents, -currently supported by the Java, Python, .NET, and Node.js agents. -These Elastic APM agents translate OpenTelemetry API calls to Elastic APM API calls. -This allows you to reuse your existing instrumentation to create Elastic APM transactions and spans-- -avoiding vendor lock-in and having to redo manual instrumentation. - -<>. - -**OpenTelemetry agent** - -The {stack} natively supports the OpenTelemetry protocol (OTLP). -This means trace data and metrics collected from your applications and infrastructure by an -OpenTelemetry agent can be sent directly to the {stack}. - -<>. - -**OpenTelemetry collector** - -The {stack} natively supports the OpenTelemetry protocol (OTLP). -This means trace data and metrics collected from your applications and infrastructure by an -OpenTelemetry collector can be sent directly to the {stack}. - -<>. - -**Lambda collector exporter** - -AWS Lambda functions can be instrumented with OpenTelemetry and monitored with Elastic {observability}. - -<>. - -include::./otel-with-elastic.asciidoc[] - -include::./otel-direct.asciidoc[] - -include::./otel-other.asciidoc[] - -include::./otel-metrics.asciidoc[] - -include::./otel-limitations.asciidoc[] - -include::./otel-attrs.asciidoc[] - -// **** -// The text below is used in the Quick start guide -// tag::otel-get-started[] -Elastic integrates with OpenTelemetry, allowing you to reuse your existing instrumentation -to easily send observability data to the {stack}. - -For more information on how to combine Elastic and OpenTelemetry, -see {apm-guide-ref}/open-telemetry.html[OpenTelemetry integration]. -// end::otel-get-started[] -// **** \ No newline at end of file diff --git a/docs/otel-attrs.asciidoc b/docs/otel-attrs.asciidoc deleted file mode 100644 index 60e4803d6d1..00000000000 --- a/docs/otel-attrs.asciidoc +++ /dev/null @@ -1,42 +0,0 @@ -[[open-telemetry-resource-attributes]] -=== Resource attributes - -A resource attribute is a key/value pair containing information about the entity producing telemetry. -Resource attributes are mapped to Elastic Common Schema (ECS) fields like `service.*`, `cloud.*`, `process.*`, etc. -These fields describe the service and the environment that the service runs in. - -The examples below set the Elastic (ECS) `service.environment` field for the resource, i.e. service, that is producing trace events. -Note that Elastic maps the OpenTelemetry `deployment.environment` field to -the ECS `service.environment` field on ingestion. - -**OpenTelemetry agent** - -Use the `OTEL_RESOURCE_ATTRIBUTES` environment variable to pass resource attributes at process invocation. - -[source,bash] ----- -export OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production ----- - -**OpenTelemetry collector** - -Use the {ot-resource}[resource processor] to set or apply changes to resource attributes. - -[source,yaml] ----- -... -processors: - resource: - attributes: - - key: deployment.environment - action: insert - value: production -... ----- - -[TIP] --- -Need to add event attributes instead? -Use attributes--not to be confused with resource attributes--to add data to span, log, or metric events. -Attributes can be added as a part of the OpenTelemetry instrumentation process or with the {ot-attr}[attributes processor]. --- \ No newline at end of file diff --git a/docs/otel-with-elastic.asciidoc b/docs/otel-with-elastic.asciidoc deleted file mode 100644 index 81c599bd4e4..00000000000 --- a/docs/otel-with-elastic.asciidoc +++ /dev/null @@ -1,25 +0,0 @@ -[[open-telemetry-with-elastic]] -=== OpenTelemetry API/SDK with Elastic APM agents - -Use the OpenTelemetry API/SDKs with Elastic APM agents. -Supported Elastic APM agents translate OpenTelemetry API calls to Elastic APM API calls. -This allows you to reuse your existing instrumentation to create Elastic APM transactions and spans. - -TIP: If you'd like to use OpenTelemetry to send data directly to the APM server instead, -see <>. - -See the relevant Elastic APM agent documentation to get started: - -* {apm-java-ref}/opentelemetry-bridge.html[Java] -* {apm-dotnet-ref}/opentelemetry-bridge.html[.NET] -* {apm-node-ref}/opentelemetry-bridge.html[Node.js] -* {apm-py-ref}/opentelemetry-bridge.html[Python] - - -[float] -[[open-telemetry-elastic-next]] -==== Next steps - -* <> -* Add <> -* Learn about the <> \ No newline at end of file diff --git a/docs/redirects.asciidoc b/docs/redirects.asciidoc deleted file mode 100644 index 6a3e847716e..00000000000 --- a/docs/redirects.asciidoc +++ /dev/null @@ -1,422 +0,0 @@ -["appendix",role="exclude",id="redirects"] -= Deleted pages - -The following pages have moved or been deleted. - -// Event Types - -[role="exclude",id="event-types"] -=== Event types - -This page has moved. Please see {apm-guide-ref}/data-model.html[APM data model]. - -// [role="exclude",id="errors"] -// === Errors - -// This page has moved. Please see {apm-overview-ref-v}/errors.html[Errors]. - -// [role="exclude",id="transactions"] -// === Transactions - -// This page has moved. Please see {apm-overview-ref-v}/transactions.html[Transactions]. - -// [role="exclude",id="transactions-spans"] -// === Spans - -// This page has moved. Please see {apm-overview-ref-v}/transaction-spans.html[Spans]. - -// Error API - -[role="exclude",id="error-endpoint"] -=== Error endpoint - -The error endpoint has been deprecated. Instead, see <>. - -[role="exclude",id="error-schema-definition"] -=== Error schema definition - -The error schema has moved. Please see <>. - -[role="exclude",id="error-api-examples"] -=== Error API examples - -The error API examples have moved. Please see <>. - -[role="exclude",id="error-payload-schema"] -=== Error payload schema - -This schema has changed. Please see <>. - -[role="exclude",id="error-service-schema"] -=== Error service schema - -This schema has changed. Please see <>. - -[role="exclude",id="error-system-schema"] -=== Error system schema - -This schema has changed. Please see <>. - -[role="exclude",id="error-context-schema"] -=== Error context schema - -This schema has changed. Please see <>. - -[role="exclude",id="error-stacktraceframe-schema"] -=== Error stack trace frame schema - -This schema has changed. Please see <>. - -[role="exclude",id="payload-with-error"] -=== Payload with error - -This is no longer helpful. Please see <>. - -[role="exclude",id="payload-with-minimal-exception"] -=== Payload with minimal exception - -This is no longer helpful. Please see <>. - -[role="exclude",id="payload-with-minimal-log"] -=== Payload with minimal log - -This is no longer helpful. Please see <>. - -// Transaction API - -[role="exclude",id="transaction-endpoint"] -=== Transaction endpoint - -The transaction endpoint has been deprecated. Instead, see <>. - -[role="exclude",id="transaction-schema-definition"] -=== Transaction schema definition - -The transaction schema has moved. Please see <>. - -[role="exclude",id="transaction-api-examples"] -=== Transaction API examples - -The transaction API examples have moved. Please see <>. - -[role="exclude",id="transaction-span-schema"] -=== Transaction span schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-payload-schema"] -=== Transaction payload schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-service-schema"] -=== Transaction service schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-system-schema"] -=== Transaction system schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-context-schema"] -=== Transaction context schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-stacktraceframe-schema"] -=== Transaction stack trace frame schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-request-schema"] -=== Transaction request schema - -This schema has changed. Please see <>. - -[role="exclude",id="transaction-user-schema"] -=== Transaction user schema - -This schema has changed. Please see <>. - -[role="exclude",id="payload-with-transactions"] -=== Payload with transactions - -This is no longer helpful. Please see <>. - -[role="exclude",id="payload-with-minimal-transaction"] -=== Payload with minimal transaction - -This is no longer helpful. Please see <>. - -[role="exclude",id="payload-with-minimal-span"] -=== Payload with minimal span - -This is no longer helpful. Please see <>. - -[role="exclude",id="example-intakev2-events"] -=== Example Request Body - -This page has moved. Please see <>. - -// V1 intake API - -[role="exclude",id="request-too-large"] -=== HTTP 413: Request body too large - -This error can no longer occur. Please see <> for an updated overview of potential issues. - -[role="exclude",id="configuration-v1-api"] -=== Configuration options: v1 Intake API - -Intake API v1 is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="max_unzipped_size"] -=== `max_unzipped_size` - -This configuration option is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="concurrent_requests"] -=== `concurrent_requests` - -This configuration option is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="metrics.enabled"] -=== `metrics.enabled` - -This configuration option is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="max_request_queue_time"] -=== `max_request_queue_time` - -This configuration option is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="configuration-v2-api"] -=== Configuration options: v2 Intake API - -This section has moved. Please see <> for current configuration options. - -[role="exclude",id="configuration-rum-v1"] -=== `configuration-rum-v1` - -This configuration option is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="rate_limit_v1"] -=== `rate_limit_v1` - -This configuration option is no longer supported. Please see <> for current configuration options. - -[role="exclude",id="configuration-rum-v2"] -=== `configuration-rum-v2` - -This section has moved. Please see <> for current configuration options. - -[role="exclude",id="configuration-rum-general"] -=== Configuration options: general - -This section has moved. Please see <> for current configuration options. - -[role="exclude",id="use-v1-and-v2"] -=== Tuning APM Server using both v1 and v2 intake API - -This section has moved. Please see <> for how to tune APM Server. - -// Dashboards - -[role="exclude",id="load-dashboards-logstash"] -=== Tuning APM Server using both v1 and v2 intake API - -Loading dashboards from APM Server is no longer supported. Please see the {kibana-ref}/xpack-apm.html[{kib} APM UI] documentation. - -[role="exclude",id="url-option"] -=== setup.dashboards.url - -Loading dashboards from APM Server is no longer supported. Please see the {kibana-ref}/xpack-apm.html[{kib} APM UI] documentation. - -[role="exclude",id="file-option"] -=== setup.dashboards.file - -Loading dashboards from APM Server is no longer supported. Please see the {kibana-ref}/xpack-apm.html[{kib} APM UI] documentation. - -[role="exclude",id="load-kibana-dashboards"] -=== Dashboards - -Loading {kib} dashboards from APM Server is no longer supported. -Please use the {kibana-ref}/xpack-apm.html[{kib} APM UI] instead. -As an alternative, a small number of dashboards and visualizations are available in the -https://github.com/elastic/apm-contrib/tree/main/kibana[apm-contrib] repository. - -// [role="exclude",id="rum"] -// === Rum - -// This section has moved. Please see <>. - -[role="exclude",id="aws-lambda-arch"] -=== APM Architecture for AWS Lambda - -This section has moved. See {apm-lambda-ref}/aws-lambda-arch.html[APM Architecture for AWS Lambda]. - -[role="exclude",id="aws-lambda-config-options"] -=== Configuration options - -This section has moved. See {apm-lambda-ref}/aws-lambda-config-options.html[Configuration options]. - -[role="exclude",id="aws-lambda-secrets-manager"] -=== Using AWS Secrets Manager to manage APM authentication keys - -This section has moved. See {apm-lambda-ref}/aws-lambda-secrets-manager.html[Using AWS Secrets Manager to manage APM authentication keys]. - -[role="exclude",id="go-compatibility"] -=== Go Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="java-compatibility"] -=== Java Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="dotnet-compatibility"] -=== .NET Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="nodejs-compatibility"] -=== Node.js Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="python-compatibility"] -=== Python Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="ruby-compatibility"] -=== Ruby Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="rum-compatibility"] -=== RUM Agent Compatibility - -This page has moved. Please see <>. - -[role="exclude",id="apm-release-notes"] -=== APM release highlights - -This page has moved. -Please see {observability-guide}/whats-new.html[What's new in {observability} {minor-version}]. - -Please see <>. - -[role="exclude",id="whats-new"] -=== What's new in APM {minor-version} - -This page has moved. -Please see {observability-guide}/whats-new.html[What's new in {observability} {minor-version}]. - -[role="exclude",id="troubleshooting"] -=== Troubleshooting - -This page has moved. -Please see <>. - -[role="exclude",id="input-apm"] -=== Configuring - -This page has moved. -Please see <>. - -[role="exclude",id="events-api"] -=== Events Intake API - -[discrete] -[[events-api-errors]] -==== Errors - -This page has been deleted. -Please see <>. - -[role="exclude",id="intake-api"] -=== API - -This page has been deleted. -Please see <>. - -[role="exclude",id="metadata-api"] -=== Metadata - -[discrete] -[[metadata-schema]] -==== Errors - -This page has been deleted. -Please see <>. - -[role="exclude",id="errors"] -=== Errors - -This page has been deleted. -Please see <>. - -[role="exclude",id="transaction-spans"] -=== Spans - -This page has been deleted. -Please see <>. - -[role="exclude",id="transactions"] -=== Transactions - -This page has been deleted. -Please see <>. - -[role="exclude",id="legacy-apm-overview"] -=== Legacy APM Overview - -This page has been deleted. -Please see <>. - -[role="exclude",id="apm-components"] -=== Components and documentation - -This page has been deleted. -Please see <>. - -[role="exclude",id="configuring-ingest-node"] -=== Parse data using ingest node pipelines - -This page has been deleted. -Please see <>. - -[role="exclude",id="overview"] -=== Legacy APM Server Reference - -This page has been deleted. -Please see <>. - -[role="exclude",id="metadata"] -=== Metadata - -This page has been deleted. -Please see <>. - -[role="exclude",id="distributed-tracing"] -=== Distributed tracing - -This page has been deleted. -Please see <>. - -[role="exclude",id="sourcemaps"] -=== How to apply source maps to error stack traces when using minified bundles - -[discrete] -[[sourcemap-rum-generate]] -==== Sourcemap RUM Generate - -[discrete] -[[sourcemap-rum-upload]] -==== Sourcemap RUM upload - -This page has been deleted. -Please see <>. diff --git a/docs/repositories.asciidoc b/docs/repositories.asciidoc deleted file mode 100644 index 5bf4676f9ab..00000000000 --- a/docs/repositories.asciidoc +++ /dev/null @@ -1,170 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/setup-repositories.asciidoc[] -////////////////////////////////////////////////////////////////////////// - -[[setup-repositories]] -==== Repositories for APT and YUM - -We have repositories available for APT and YUM-based distributions. Note that we -provide binary packages, but no source packages. - -We use the PGP key https://pgp.mit.edu/pks/lookup?op=vindex&search=0xD27D666CD88E42B4[D88E42B4], -{es} Signing Key, with fingerprint - - 4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4 - -to sign all our packages. It is available from https://pgp.mit.edu. - -[float] -===== APT - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of {repo} has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -To add the {repo} repository for APT: - -. Download and install the Public Signing Key: -+ -[source,sh] --------------------------------------------------- -wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add - --------------------------------------------------- - -. You may need to install the `apt-transport-https` package on Debian before proceeding: -+ -[source,sh] --------------------------------------------------- -sudo apt-get install apt-transport-https --------------------------------------------------- - -ifeval::["{release-state}"=="prerelease"] -. Save the repository definition to +/etc/apt/sources.list.d/elastic-{major-version}-prerelease.list+: -+ -["source","sh",subs="attributes"] --------------------------------------------------- -echo "deb https://artifacts.elastic.co/packages/{major-version}-prerelease/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-{major-version}-prerelease.list --------------------------------------------------- -+ -endif::[] - -ifeval::["{release-state}"=="released"] -. Save the repository definition to +/etc/apt/sources.list.d/elastic-{major-version}.list+: -+ -["source","sh",subs="attributes"] --------------------------------------------------- -echo "deb https://artifacts.elastic.co/packages/{major-version}/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-{major-version}.list --------------------------------------------------- -+ -endif::[] -[WARNING] -================================================== -To add the Elastic repository, make sure that you use the `echo` method shown -in the example. Do not use `add-apt-repository` because it will add a `deb-src` -entry, but we do not provide a source package. - -If you have added the `deb-src` entry by mistake, you will see an error like -the following: - -["source","txt",subs="attributes"] ----- -Unable to find expected entry 'main/source/Sources' in Release file (Wrong sources.list entry or malformed file) ----- - -Simply delete the `deb-src` entry from the `/etc/apt/sources.list` file, and the installation should work as expected. -================================================== - -. Run `apt-get update`, and the repository is ready for use. For example, you can -install {beatname_uc} by running: -+ -["source","sh",subs="attributes"] --------------------------------------------------- -sudo apt-get update && sudo apt-get install {beatname_pkg} --------------------------------------------------- - -. To configure {beatname_uc} to start automatically during boot, run: -+ -["source","sh",subs="attributes"] --------------------------------------------------- -sudo systemctl enable {beatname_pkg} --------------------------------------------------- - -endif::[] - -[float] -===== YUM - -ifeval::["{release-state}"=="unreleased"] - -Version {version} of {repo} has not yet been released. - -endif::[] - -ifeval::["{release-state}"!="unreleased"] - -To add the {repo} repository for YUM: - -. Download and install the public signing key: -+ -[source,sh] --------------------------------------------------- -sudo rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch --------------------------------------------------- - -. Create a file with a `.repo` extension (for example, `elastic.repo`) in -your `/etc/yum.repos.d/` directory and add the following lines: -+ -ifeval::["{release-state}"=="prerelease"] -["source","sh",subs="attributes"] --------------------------------------------------- -[elastic-{major-version}-prerelease] -name=Elastic repository for {major-version} prerelease packages -baseurl=https://artifacts.elastic.co/packages/{major-version}-prerelease/yum -gpgcheck=1 -gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch -enabled=1 -autorefresh=1 -type=rpm-md --------------------------------------------------- -endif::[] -ifeval::["{release-state}"=="released"] -["source","sh",subs="attributes"] --------------------------------------------------- -[elastic-{major-version}] -name=Elastic repository for {major-version} packages -baseurl=https://artifacts.elastic.co/packages/{major-version}/yum -gpgcheck=1 -gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch -enabled=1 -autorefresh=1 -type=rpm-md --------------------------------------------------- -endif::[] -+ -Your repository is ready to use. For example, you can install {beatname_uc} by -running: -+ -["source","sh",subs="attributes"] --------------------------------------------------- -sudo yum install {beatname_pkg} --------------------------------------------------- - -. To configure {beatname_uc} to start automatically during boot, run: -+ -["source","sh",subs="attributes"] --------------------------------------------------- -sudo systemctl enable {beatname_pkg} --------------------------------------------------- - -endif::[] diff --git a/docs/secret-token.asciidoc b/docs/secret-token.asciidoc deleted file mode 100644 index 0e67cded06b..00000000000 --- a/docs/secret-token.asciidoc +++ /dev/null @@ -1,52 +0,0 @@ -[[secret-token]] -=== Secret token - -IMPORTANT: Secret tokens are sent as plain-text, -so they only provide security when used in combination with <>. - -When defined, secret tokens are used to authorize requests to the APM Server. -Both the {apm-agent} and APM Server must be configured with the same secret token for the request to be accepted. - -To secure the communication between APM agents and the APM Server with a secret token: - -. Make sure <> is enabled -. <> -. <> - -NOTE: Secret tokens are not applicable for the RUM Agent, -as there is no way to prevent them from being publicly exposed. - -[float] -[[create-secret-token]] -=== Create a secret token - -// lint ignore fleet -NOTE: {ess} and {ece} deployments provision a secret token when the deployment is created. -The secret token can be found and reset in the {ecloud} console under **Deployments** -- **APM & Fleet**. - -include::{tab-widget-dir}/secret-token-widget.asciidoc[] - -[[configure-secret-token]] -[float] -=== Configure the secret token in your APM agents - -Each Elastic {apm-agent} has a configuration option to set the value of the secret token: - -* *Go agent*: {apm-go-ref}/configuration.html#config-secret-token[`ELASTIC_APM_SECRET_TOKEN`] -* *iOS agent*: {apm-ios-ref-v}/configuration.html#secretToken[`secretToken`] -* *Java agent*: {apm-java-ref}/config-reporter.html#config-secret-token[`secret_token`] -* *.NET agent*: {apm-dotnet-ref}/config-reporter.html#config-secret-token[`ELASTIC_APM_SECRET_TOKEN`] -* *Node.js agent*: {apm-node-ref}/configuration.html#secret-token[`Secret Token`] -* *PHP agent*: {apm-php-ref-v}/configuration-reference.html#config-secret-token[`secret_token`] -* *Python agent*: {apm-py-ref}/configuration.html#config-secret-token[`secret_token`] -* *Ruby agent*: {apm-ruby-ref}/configuration.html#config-secret-token[`secret_token`] - -In addition to setting the secret token, ensure the configured server URL uses `HTTPS` instead of `HTTP`: - -* *Go agent*: {apm-go-ref}/configuration.html#config-server-url[`ELASTIC_APM_SERVER_URL`] -* *Java agent*: {apm-java-ref}/config-reporter.html#config-server-urls[`server_urls`] -* *.NET agent*: {apm-dotnet-ref}/config-reporter.html#config-server-url[`ServerUrl`] -* *Node.js agent*: {apm-node-ref}/configuration.html#server-url[`serverUrl`] -* *PHP agent*: {apm-php-ref-v}/configuration-reference.html#config-server-url[`server_url`] -* *Python agent*: {apm-py-ref}/[`server_url`] -* *Ruby agent*: {apm-ruby-ref}/configuration.html#config-server-url[`server_url`] \ No newline at end of file diff --git a/docs/secure-agent-communication.asciidoc b/docs/secure-agent-communication.asciidoc deleted file mode 100644 index e2fca3bee18..00000000000 --- a/docs/secure-agent-communication.asciidoc +++ /dev/null @@ -1,28 +0,0 @@ -[[secure-agent-communication]] -== Secure communication with APM agents - -++++ -With APM agents -++++ - -Communication between APM agents and {agent} can be both encrypted and authenticated. -It is strongly recommended to use both TLS encryption and authentication as secrets are sent as plain text. - -* <> -* <> -* <> - -As soon as an authenticated communication is enabled, -requests without a valid token or API key will be denied. -If both API keys and a secret token are enabled, APM agents can choose whichever mechanism they support. - -In some use-cases, like when an {apm-agent} is running on the client side, -authentication is not possible. See <> for more information. - -include::./tls-comms.asciidoc[] - -include::./api-keys.asciidoc[] - -include::./secret-token.asciidoc[] - -include::./anonymous-auth.asciidoc[] diff --git a/docs/secure-comms.asciidoc b/docs/secure-comms.asciidoc deleted file mode 100644 index 968d25835f3..00000000000 --- a/docs/secure-comms.asciidoc +++ /dev/null @@ -1,22 +0,0 @@ -[[securing-apm-server]] -== Secure communication with the {stack} - -++++ -Secure communication -++++ - -The following topics provide information about securing the APM Server -process and connecting securely to APM agents and the {stack}. - -* <> -* <> - -:leveloffset: +1 -include::secure-agent-communication.asciidoc[] - -// APM privileges -include::{docdir}/feature-roles.asciidoc[] - -// APM API keys -include::{docdir}/access-api-keys.asciidoc[] -:leveloffset: -1 \ No newline at end of file diff --git a/docs/shared-directory-layout.asciidoc b/docs/shared-directory-layout.asciidoc deleted file mode 100644 index 36159068571..00000000000 --- a/docs/shared-directory-layout.asciidoc +++ /dev/null @@ -1,34 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/shared-directory-layout.asciidoc[] -////////////////////////////////////////////////////////////////////////// - -[[directory-layout]] -=== Installation layout - -View the installation layout and default paths for both Fleet-managed APM Server and the APM Server binary. - -[float] -=== Fleet-managed - -{agent} files are installed in the following locations. You cannot override -these installation paths because they are required for upgrades. - --- -include::{ingest-docs-root}/docs/en/ingest-management/tab-widgets/install-layout-widget.asciidoc[] --- - -[float] -=== APM Server binary - -APM Server uses the following default paths unless you explicitly change them. - --- -include::{tab-widget-dir}/directory-layout-widget.asciidoc[] --- \ No newline at end of file diff --git a/docs/shared-kibana-endpoint.asciidoc b/docs/shared-kibana-endpoint.asciidoc deleted file mode 100644 index e72315901fa..00000000000 --- a/docs/shared-kibana-endpoint.asciidoc +++ /dev/null @@ -1,18 +0,0 @@ -// tag::shared-kibana-config[] -APM Server uses the APM integration to set up and manage APM templates, policies, and pipelines. -To confirm the integration is installed, APM Server polls either {es} or {kib} on startup. -When using a non-{es} output, APM Server requires access to {kib} via the -<>. - -Example configuration: - -[source,yaml] ----- -apm-server: - kibana: - enabled: true - host: "https://..." - username: "elastic" - password: "xxx" ----- -// end::shared-kibana-config[] \ No newline at end of file diff --git a/docs/shared-ssl-config.asciidoc b/docs/shared-ssl-config.asciidoc deleted file mode 100644 index de79a1103da..00000000000 --- a/docs/shared-ssl-config.asciidoc +++ /dev/null @@ -1,483 +0,0 @@ -[[configuration-ssl]] -== SSL/TLS output settings - -**** -image:./binary-yes-fm-no.svg[supported deployment methods] - -These configuration options are only relevant to APM Server binary users. Fleet-managed users should see the {fleet-guide}/fleet-settings.html[Fleet output settings]. -**** - -You can specify SSL/TLS options with any output that supports SSL, like {es}, {ls}, or Kafka. -Example output config with SSL/TLS enabled: - -[source,yaml] ----- -output.elasticsearch.hosts: ["https://192.168.1.42:9200"] -output.elasticsearch.ssl.certificate_authorities: ["/etc/pki/root/ca.pem"] -output.elasticsearch.ssl.certificate: "/etc/pki/client/cert.pem" -output.elasticsearch.ssl.key: "/etc/pki/client/cert.key" ----- - -There are a number of SSL/TLS configuration options available to you: - -* <> -* <> -* <> - -[discrete] -[[ssl-common-config]] -=== Common configuration options - -Common SSL configuration options can be used in both client and server configurations. -You can specify the following options in the `ssl` section of each subsystem that -supports SSL. - -[float] -[[enabled]] -==== `enabled` - -To disable SSL configuration, set the value to `false`. The default value is `true`. - -[NOTE] -===== -SSL settings are disabled if either `enabled` is set to `false` or the -`ssl` section is missing. -===== - -[float] -[[supported-protocols]] -==== `supported_protocols` - -List of allowed SSL/TLS versions. If SSL/TLS server decides for protocol versions -not configured, the connection will be dropped during or after the handshake. The -setting is a list of allowed protocol versions: -`SSLv3`, `TLSv1` for TLS version 1.0, `TLSv1.0`, `TLSv1.1`, `TLSv1.2`, and -`TLSv1.3`. - -The default value is `[TLSv1.1, TLSv1.2, TLSv1.3]`. - -[float] -[[cipher-suites]] -==== `cipher_suites` - -The list of cipher suites to use. The first entry has the highest priority. -If this option is omitted, the Go crypto library's https://golang.org/pkg/crypto/tls/[default suites] -are used (recommended). Note that TLS 1.3 cipher suites are not -individually configurable in Go, so they are not included in this list. - -// tag::cipher_suites[] -The following cipher suites are available: - -// lint disable -[options="header"] -|=== -| Cypher | Notes -| ECDHE-ECDSA-AES-128-CBC-SHA | -| ECDHE-ECDSA-AES-128-CBC-SHA256 | TLS 1.2 only. Disabled by default. -| ECDHE-ECDSA-AES-128-GCM-SHA256 | TLS 1.2 only. -| ECDHE-ECDSA-AES-256-CBC-SHA | -| ECDHE-ECDSA-AES-256-GCM-SHA384 | TLS 1.2 only. -| ECDHE-ECDSA-CHACHA20-POLY1305 | TLS 1.2 only. -| ECDHE-ECDSA-RC4-128-SHA | Disabled by default. RC4 not recommended. -| ECDHE-RSA-3DES-CBC3-SHA | -| ECDHE-RSA-AES-128-CBC-SHA | -| ECDHE-RSA-AES-128-CBC-SHA256 | TLS 1.2 only. Disabled by default. -| ECDHE-RSA-AES-128-GCM-SHA256 | TLS 1.2 only. -| ECDHE-RSA-AES-256-CBC-SHA | -| ECDHE-RSA-AES-256-GCM-SHA384 | TLS 1.2 only. -| ECDHE-RSA-CHACHA20-POLY1205 | TLS 1.2 only. -| ECDHE-RSA-RC4-128-SHA | Disabled by default. RC4 not recommended. -| RSA-3DES-CBC3-SHA | -| RSA-AES-128-CBC-SHA | -| RSA-AES-128-CBC-SHA256 | TLS 1.2 only. Disabled by default. -| RSA-AES-128-GCM-SHA256 | TLS 1.2 only. -| RSA-AES-256-CBC-SHA | -| RSA-AES-256-GCM-SHA384 | TLS 1.2 only. -| RSA-RC4-128-SHA | Disabled by default. RC4 not recommended. -|=== -// lint enable - -Here is a list of acronyms used in defining the cipher suites: - -* 3DES: - Cipher suites using triple DES - -* AES-128/256: - Cipher suites using AES with 128/256-bit keys. - -* CBC: - Cipher using Cipher Block Chaining as block cipher mode. - -* ECDHE: - Cipher suites using Elliptic Curve Diffie-Hellman (DH) ephemeral key exchange. - -* ECDSA: - Cipher suites using Elliptic Curve Digital Signature Algorithm for authentication. - -* GCM: - Galois/Counter mode is used for symmetric key cryptography. - -* RC4: - Cipher suites using RC4. - -* RSA: - Cipher suites using RSA. - -* SHA, SHA256, SHA384: - Cipher suites using SHA-1, SHA-256 or SHA-384. -// end::cipher_suites[] - -[float] -[[curve-types]] -==== `curve_types` - -The list of curve types for ECDHE (Elliptic Curve Diffie-Hellman ephemeral key exchange). - -The following elliptic curve types are available: - -* P-256 -* P-384 -* P-521 -* X25519 - -[float] -[[ca-sha256]] -==== `ca_sha256` - -This configures a certificate pin that you can use to ensure that a specific certificate is part of the verified chain. - -The pin is a base64 encoded string of the SHA-256 of the certificate. - -NOTE: This check is not a replacement for the normal SSL validation, but it adds additional validation. -If this option is used with `verification_mode` set to `none`, the check will always fail because -it will not receive any verified chains. - -[discrete] -[[ssl-client-config]] -=== Client configuration options - -You can specify the following options in the `ssl` section of each subsystem that -supports SSL. - -[float] -[[client-certificate-authorities]] -==== `certificate_authorities` - -The list of root certificates for verifications is required. -If `certificate_authorities` is self-signed, the host system -needs to trust that CA cert as well. - -By default you can specify a list of files that +{beatname_lc}+ will read, but you -can also embed a certificate directly in the `YAML` configuration: - -[source,yaml] ----- -certificate_authorities: - - | - -----BEGIN CERTIFICATE----- - MIIDCjCCAfKgAwIBAgITJ706Mu2wJlKckpIvkWxEHvEyijANBgkqhkiG9w0BAQsF - ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwIBcNMTkwNzIyMTkyOTA0WhgPMjExOTA2 - MjgxOTI5MDRaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB - BQADggEPADCCAQoCggEBANce58Y/JykI58iyOXpxGfw0/gMvF0hUQAcUrSMxEO6n - fZRA49b4OV4SwWmA3395uL2eB2NB8y8qdQ9muXUdPBWE4l9rMZ6gmfu90N5B5uEl - 94NcfBfYOKi1fJQ9i7WKhTjlRkMCgBkWPkUokvBZFRt8RtF7zI77BSEorHGQCk9t - /D7BS0GJyfVEhftbWcFEAG3VRcoMhF7kUzYwp+qESoriFRYLeDWv68ZOvG7eoWnP - PsvZStEVEimjvK5NSESEQa9xWyJOmlOKXhkdymtcUd/nXnx6UTCFgnkgzSdTWV41 - CI6B6aJ9svCTI2QuoIq2HxX/ix7OvW1huVmcyHVxyUECAwEAAaNTMFEwHQYDVR0O - BBYEFPwN1OceFGm9v6ux8G+DZ3TUDYxqMB8GA1UdIwQYMBaAFPwN1OceFGm9v6ux - 8G+DZ3TUDYxqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5D - 874A4YI7YUwOVsVAdbWtgp1d0zKcPRR+r2OdSbTAV5/gcS3jgBJ3i1BN34JuDVFw - 3DeJSYT3nxy2Y56lLnxDeF8CUTUtVQx3CuGkRg1ouGAHpO/6OqOhwLLorEmxi7tA - H2O8mtT0poX5AnOAhzVy7QW0D/k4WaoLyckM5hUa6RtvgvLxOwA0U+VGurCDoctu - 8F4QOgTAWyh8EZIwaKCliFRSynDpv3JTUwtfZkxo6K6nce1RhCWFAsMvDZL8Dgc0 - yvgJ38BRsFOtkRuAGSf6ZUwTO8JJRRIFnpUzXflAnGivK9M13D5GEQMmIl6U9Pvk - sxSmbIUfc2SGJGCJD4I= - -----END CERTIFICATE----- ----- - -[float] -[[client-certificate]] -==== `certificate: "/etc/pki/client/cert.pem"` - -The path to the certificate for SSL client authentication is only required if -`client_authentication` is specified. If the certificate -is not specified, client authentication is not available. The connection -might fail if the server requests client authentication. If the SSL server does not -require client authentication, the certificate will be loaded, but not requested or used -by the server. - -When this option is configured, the <> option is also required. -The certificate option support embedding of the certificate: - -[source,yaml] ----- -certificate: | - -----BEGIN CERTIFICATE----- - MIIDCjCCAfKgAwIBAgITJ706Mu2wJlKckpIvkWxEHvEyijANBgkqhkiG9w0BAQsF - ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwIBcNMTkwNzIyMTkyOTA0WhgPMjExOTA2 - MjgxOTI5MDRaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB - BQADggEPADCCAQoCggEBANce58Y/JykI58iyOXpxGfw0/gMvF0hUQAcUrSMxEO6n - fZRA49b4OV4SwWmA3395uL2eB2NB8y8qdQ9muXUdPBWE4l9rMZ6gmfu90N5B5uEl - 94NcfBfYOKi1fJQ9i7WKhTjlRkMCgBkWPkUokvBZFRt8RtF7zI77BSEorHGQCk9t - /D7BS0GJyfVEhftbWcFEAG3VRcoMhF7kUzYwp+qESoriFRYLeDWv68ZOvG7eoWnP - PsvZStEVEimjvK5NSESEQa9xWyJOmlOKXhkdymtcUd/nXnx6UTCFgnkgzSdTWV41 - CI6B6aJ9svCTI2QuoIq2HxX/ix7OvW1huVmcyHVxyUECAwEAAaNTMFEwHQYDVR0O - BBYEFPwN1OceFGm9v6ux8G+DZ3TUDYxqMB8GA1UdIwQYMBaAFPwN1OceFGm9v6ux - 8G+DZ3TUDYxqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5D - 874A4YI7YUwOVsVAdbWtgp1d0zKcPRR+r2OdSbTAV5/gcS3jgBJ3i1BN34JuDVFw - 3DeJSYT3nxy2Y56lLnxDeF8CUTUtVQx3CuGkRg1ouGAHpO/6OqOhwLLorEmxi7tA - H2O8mtT0poX5AnOAhzVy7QW0D/k4WaoLyckM5hUa6RtvgvLxOwA0U+VGurCDoctu - 8F4QOgTAWyh8EZIwaKCliFRSynDpv3JTUwtfZkxo6K6nce1RhCWFAsMvDZL8Dgc0 - yvgJ38BRsFOtkRuAGSf6ZUwTO8JJRRIFnpUzXflAnGivK9M13D5GEQMmIl6U9Pvk - sxSmbIUfc2SGJGCJD4I= - -----END CERTIFICATE----- ----- - -[float] -[[client-key]] -==== `key: "/etc/pki/client/cert.key"` - -The client certificate key used for client authentication and is only required -if `client_authentication` is configured. The key option support embedding of the private key: - -[source,yaml] ----- -key: | - -----BEGIN PRIVATE KEY----- - MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDXHufGPycpCOfI - sjl6cRn8NP4DLxdIVEAHFK0jMRDup32UQOPW+DleEsFpgN9/ebi9ngdjQfMvKnUP - Zrl1HTwVhOJfazGeoJn7vdDeQebhJfeDXHwX2DiotXyUPYu1ioU45UZDAoAZFj5F - KJLwWRUbfEbRe8yO+wUhKKxxkApPbfw+wUtBicn1RIX7W1nBRABt1UXKDIRe5FM2 - MKfqhEqK4hUWC3g1r+vGTrxu3qFpzz7L2UrRFRIpo7yuTUhEhEGvcVsiTppTil4Z - HcprXFHf5158elEwhYJ5IM0nU1leNQiOgemifbLwkyNkLqCKth8V/4sezr1tYblZ - nMh1cclBAgMBAAECggEBAKdP5jyOicqknoG9/G564RcDsDyRt64NuO7I6hBg7SZx - Jn7UKWDdFuFP/RYtoabn6QOxkVVlydp5Typ3Xu7zmfOyss479Q/HIXxmmbkD0Kp0 - eRm2KN3y0b6FySsS40KDRjKGQCuGGlNotW3crMw6vOvvsLTlcKgUHF054UVCHoK/ - Piz7igkDU7NjvJeha53vXL4hIjb10UtJNaGPxIyFLYRZdRPyyBJX7Yt3w8dgz8WM - epOPu0dq3bUrY3WQXcxKZo6sQjE1h7kdl4TNji5jaFlvD01Y8LnyG0oThOzf0tve - Gaw+kuy17gTGZGMIfGVcdeb+SlioXMAAfOps+mNIwTECgYEA/gTO8W0hgYpOQJzn - BpWkic3LAoBXWNpvsQkkC3uba8Fcps7iiEzotXGfwYcb5Ewf5O3Lrz1EwLj7GTW8 - VNhB3gb7bGOvuwI/6vYk2/dwo84bwW9qRWP5hqPhNZ2AWl8kxmZgHns6WTTxpkRU - zrfZ5eUrBDWjRU2R8uppgRImsxMCgYEA2MxuL/C/Ko0d7XsSX1kM4JHJiGpQDvb5 - GUrlKjP/qVyUysNF92B9xAZZHxxfPWpdfGGBynhw7X6s+YeIoxTzFPZVV9hlkpAA - 5igma0n8ZpZEqzttjVdpOQZK8o/Oni/Q2S10WGftQOOGw5Is8+LY30XnLvHBJhO7 - TKMurJ4KCNsCgYAe5TDSVmaj3dGEtFC5EUxQ4nHVnQyCpxa8npL+vor5wSvmsfUF - hO0s3GQE4sz2qHecnXuPldEd66HGwC1m2GKygYDk/v7prO1fQ47aHi9aDQB9N3Li - e7Vmtdn3bm+lDjtn0h3Qt0YygWj+wwLZnazn9EaWHXv9OuEMfYxVgYKpdwKBgEze - Zy8+WDm5IWRjn8cI5wT1DBT/RPWZYgcyxABrwXmGZwdhp3wnzU/kxFLAl5BKF22T - kRZ+D+RVZvVutebE9c937BiilJkb0AXLNJwT9pdVLnHcN2LHHHronUhV7vetkop+ - kGMMLlY0lkLfoGq1AxpfSbIea9KZam6o6VKxEnPDAoGAFDCJm+ZtsJK9nE5GEMav - NHy+PwkYsHhbrPl4dgStTNXLenJLIJ+Ke0Pcld4ZPfYdSyu/Tv4rNswZBNpNsW9K - 0NwJlyMBfayoPNcJKXrH/csJY7hbKviAHr1eYy9/8OL0dHf85FV+9uY5YndLcsDc - nygO9KTJuUiBrLr0AHEnqko= - -----END PRIVATE KEY----- ----- - -[float] -[[client-key-passphrase]] -==== `key_passphrase` - -The passphrase used to decrypt an encrypted key stored in the configured `key` file. - - -[float] -[[client-verification-mode]] -==== `verification_mode` - -Controls the verification of server certificates. Valid values are: - -`full`:: -Verifies that the provided certificate is signed by a trusted -authority (CA) and also verifies that the server's hostname (or IP address) -matches the names identified within the certificate. - -`strict`:: -Verifies that the provided certificate is signed by a trusted -authority (CA) and also verifies that the server's hostname (or IP address) -matches the names identified within the certificate. If the Subject Alternative -Name is empty, it returns an error. - -`certificate`:: -Verifies that the provided certificate is signed by a -trusted authority (CA), but does not perform any hostname verification. - -`none`:: -Performs _no verification_ of the server's certificate. This -mode disables many of the security benefits of SSL/TLS and should only be used -after cautious consideration. It is primarily intended as a temporary -diagnostic mechanism when attempting to resolve TLS errors; its use in -production environments is strongly discouraged. -+ -The default value is `full`. - -[discrete] -[[ssl-server-config]] -=== Server configuration options - -You can specify the following options in the `ssl` section of each subsystem that -supports SSL. - -[float] -[[server-certificate-authorities]] -==== `certificate_authorities` - -The list of root certificates for client verifications is only required if -`client_authentication` is configured. If `certificate_authorities` is empty or not set, and -`client_authentication` is configured, the system keystore is used. - -If `certificate_authorities` is self-signed, the host system needs to trust that CA cert as well. -By default you can specify a list of files that +{beatname_lc}+ will read, but you can also embed a certificate -directly in the `YAML` configuration: - -[source,yaml] ----- -certificate_authorities: - - | - -----BEGIN CERTIFICATE----- - MIIDCjCCAfKgAwIBAgITJ706Mu2wJlKckpIvkWxEHvEyijANBgkqhkiG9w0BAQsF - ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwIBcNMTkwNzIyMTkyOTA0WhgPMjExOTA2 - MjgxOTI5MDRaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB - BQADggEPADCCAQoCggEBANce58Y/JykI58iyOXpxGfw0/gMvF0hUQAcUrSMxEO6n - fZRA49b4OV4SwWmA3395uL2eB2NB8y8qdQ9muXUdPBWE4l9rMZ6gmfu90N5B5uEl - 94NcfBfYOKi1fJQ9i7WKhTjlRkMCgBkWPkUokvBZFRt8RtF7zI77BSEorHGQCk9t - /D7BS0GJyfVEhftbWcFEAG3VRcoMhF7kUzYwp+qESoriFRYLeDWv68ZOvG7eoWnP - PsvZStEVEimjvK5NSESEQa9xWyJOmlOKXhkdymtcUd/nXnx6UTCFgnkgzSdTWV41 - CI6B6aJ9svCTI2QuoIq2HxX/ix7OvW1huVmcyHVxyUECAwEAAaNTMFEwHQYDVR0O - BBYEFPwN1OceFGm9v6ux8G+DZ3TUDYxqMB8GA1UdIwQYMBaAFPwN1OceFGm9v6ux - 8G+DZ3TUDYxqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5D - 874A4YI7YUwOVsVAdbWtgp1d0zKcPRR+r2OdSbTAV5/gcS3jgBJ3i1BN34JuDVFw - 3DeJSYT3nxy2Y56lLnxDeF8CUTUtVQx3CuGkRg1ouGAHpO/6OqOhwLLorEmxi7tA - H2O8mtT0poX5AnOAhzVy7QW0D/k4WaoLyckM5hUa6RtvgvLxOwA0U+VGurCDoctu - 8F4QOgTAWyh8EZIwaKCliFRSynDpv3JTUwtfZkxo6K6nce1RhCWFAsMvDZL8Dgc0 - yvgJ38BRsFOtkRuAGSf6ZUwTO8JJRRIFnpUzXflAnGivK9M13D5GEQMmIl6U9Pvk - sxSmbIUfc2SGJGCJD4I= - -----END CERTIFICATE----- ----- - -[float] -[[server-certificate]] -==== `certificate: "/etc/pki/server/cert.pem"` - -For server authentication, the path to the SSL authentication certificate must -be specified for TLS. If the certificate is not specified, startup will fail. - -When this option is configured, the <> option is also required. -The certificate option support embedding of the certificate: - -[source,yaml] ----- -certificate: | - -----BEGIN CERTIFICATE----- - MIIDCjCCAfKgAwIBAgITJ706Mu2wJlKckpIvkWxEHvEyijANBgkqhkiG9w0BAQsF - ADAUMRIwEAYDVQQDDAlsb2NhbGhvc3QwIBcNMTkwNzIyMTkyOTA0WhgPMjExOTA2 - MjgxOTI5MDRaMBQxEjAQBgNVBAMMCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEB - BQADggEPADCCAQoCggEBANce58Y/JykI58iyOXpxGfw0/gMvF0hUQAcUrSMxEO6n - fZRA49b4OV4SwWmA3395uL2eB2NB8y8qdQ9muXUdPBWE4l9rMZ6gmfu90N5B5uEl - 94NcfBfYOKi1fJQ9i7WKhTjlRkMCgBkWPkUokvBZFRt8RtF7zI77BSEorHGQCk9t - /D7BS0GJyfVEhftbWcFEAG3VRcoMhF7kUzYwp+qESoriFRYLeDWv68ZOvG7eoWnP - PsvZStEVEimjvK5NSESEQa9xWyJOmlOKXhkdymtcUd/nXnx6UTCFgnkgzSdTWV41 - CI6B6aJ9svCTI2QuoIq2HxX/ix7OvW1huVmcyHVxyUECAwEAAaNTMFEwHQYDVR0O - BBYEFPwN1OceFGm9v6ux8G+DZ3TUDYxqMB8GA1UdIwQYMBaAFPwN1OceFGm9v6ux - 8G+DZ3TUDYxqMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAG5D - 874A4YI7YUwOVsVAdbWtgp1d0zKcPRR+r2OdSbTAV5/gcS3jgBJ3i1BN34JuDVFw - 3DeJSYT3nxy2Y56lLnxDeF8CUTUtVQx3CuGkRg1ouGAHpO/6OqOhwLLorEmxi7tA - H2O8mtT0poX5AnOAhzVy7QW0D/k4WaoLyckM5hUa6RtvgvLxOwA0U+VGurCDoctu - 8F4QOgTAWyh8EZIwaKCliFRSynDpv3JTUwtfZkxo6K6nce1RhCWFAsMvDZL8Dgc0 - yvgJ38BRsFOtkRuAGSf6ZUwTO8JJRRIFnpUzXflAnGivK9M13D5GEQMmIl6U9Pvk - sxSmbIUfc2SGJGCJD4I= - -----END CERTIFICATE----- ----- - -[float] -[[server-key]] -==== `key: "/etc/pki/server/cert.key"` - -The server certificate key used for authentication is required. -The key option support embedding of the private key: - -[source,yaml] ----- -key: | - -----BEGIN PRIVATE KEY----- - MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDXHufGPycpCOfI - sjl6cRn8NP4DLxdIVEAHFK0jMRDup32UQOPW+DleEsFpgN9/ebi9ngdjQfMvKnUP - Zrl1HTwVhOJfazGeoJn7vdDeQebhJfeDXHwX2DiotXyUPYu1ioU45UZDAoAZFj5F - KJLwWRUbfEbRe8yO+wUhKKxxkApPbfw+wUtBicn1RIX7W1nBRABt1UXKDIRe5FM2 - MKfqhEqK4hUWC3g1r+vGTrxu3qFpzz7L2UrRFRIpo7yuTUhEhEGvcVsiTppTil4Z - HcprXFHf5158elEwhYJ5IM0nU1leNQiOgemifbLwkyNkLqCKth8V/4sezr1tYblZ - nMh1cclBAgMBAAECggEBAKdP5jyOicqknoG9/G564RcDsDyRt64NuO7I6hBg7SZx - Jn7UKWDdFuFP/RYtoabn6QOxkVVlydp5Typ3Xu7zmfOyss479Q/HIXxmmbkD0Kp0 - eRm2KN3y0b6FySsS40KDRjKGQCuGGlNotW3crMw6vOvvsLTlcKgUHF054UVCHoK/ - Piz7igkDU7NjvJeha53vXL4hIjb10UtJNaGPxIyFLYRZdRPyyBJX7Yt3w8dgz8WM - epOPu0dq3bUrY3WQXcxKZo6sQjE1h7kdl4TNji5jaFlvD01Y8LnyG0oThOzf0tve - Gaw+kuy17gTGZGMIfGVcdeb+SlioXMAAfOps+mNIwTECgYEA/gTO8W0hgYpOQJzn - BpWkic3LAoBXWNpvsQkkC3uba8Fcps7iiEzotXGfwYcb5Ewf5O3Lrz1EwLj7GTW8 - VNhB3gb7bGOvuwI/6vYk2/dwo84bwW9qRWP5hqPhNZ2AWl8kxmZgHns6WTTxpkRU - zrfZ5eUrBDWjRU2R8uppgRImsxMCgYEA2MxuL/C/Ko0d7XsSX1kM4JHJiGpQDvb5 - GUrlKjP/qVyUysNF92B9xAZZHxxfPWpdfGGBynhw7X6s+YeIoxTzFPZVV9hlkpAA - 5igma0n8ZpZEqzttjVdpOQZK8o/Oni/Q2S10WGftQOOGw5Is8+LY30XnLvHBJhO7 - TKMurJ4KCNsCgYAe5TDSVmaj3dGEtFC5EUxQ4nHVnQyCpxa8npL+vor5wSvmsfUF - hO0s3GQE4sz2qHecnXuPldEd66HGwC1m2GKygYDk/v7prO1fQ47aHi9aDQB9N3Li - e7Vmtdn3bm+lDjtn0h3Qt0YygWj+wwLZnazn9EaWHXv9OuEMfYxVgYKpdwKBgEze - Zy8+WDm5IWRjn8cI5wT1DBT/RPWZYgcyxABrwXmGZwdhp3wnzU/kxFLAl5BKF22T - kRZ+D+RVZvVutebE9c937BiilJkb0AXLNJwT9pdVLnHcN2LHHHronUhV7vetkop+ - kGMMLlY0lkLfoGq1AxpfSbIea9KZam6o6VKxEnPDAoGAFDCJm+ZtsJK9nE5GEMav - NHy+PwkYsHhbrPl4dgStTNXLenJLIJ+Ke0Pcld4ZPfYdSyu/Tv4rNswZBNpNsW9K - 0NwJlyMBfayoPNcJKXrH/csJY7hbKviAHr1eYy9/8OL0dHf85FV+9uY5YndLcsDc - nygO9KTJuUiBrLr0AHEnqko= - -----END PRIVATE KEY----- ----- - -[float] -[[server-key-passphrase]] -==== `key_passphrase` - -The passphrase is used to decrypt an encrypted key stored in the configured `key` file. - -[float] -[[server-verification-mode]] -==== `verification_mode` - -Controls the verification of client certificates. Valid values are: - -`full`:: -Verifies that the provided certificate is signed by a trusted -authority (CA) and also verifies that the server's hostname (or IP address) -matches the names identified within the certificate. - -`strict`:: -Verifies that the provided certificate is signed by a trusted -authority (CA) and also verifies that the server's hostname (or IP address) -matches the names identified within the certificate. If the Subject Alternative -Name is empty, it returns an error. - -`certificate`:: -Verifies that the provided certificate is signed by a -trusted authority (CA), but does not perform any hostname verification. - -`none`:: -Performs _no verification_ of the server's certificate. This -mode disables many of the security benefits of SSL/TLS and should only be used -after cautious consideration. It is primarily intended as a temporary -diagnostic mechanism when attempting to resolve TLS errors; its use in -production environments is strongly discouraged. -+ -The default value is `full`. - -[float] -[[server-renegotiation]] -==== `renegotiation` - -This configures what types of TLS renegotiation are supported. The valid options -are: - -`never`:: -Disables renegotiation. - -`once`:: -Allows a remote server to request renegotiation once per connection. - -`freely`:: -Allows a remote server to request renegotiation repeatedly. -+ -The default value is `never`. diff --git a/docs/shared-ssl-logstash-config.asciidoc b/docs/shared-ssl-logstash-config.asciidoc deleted file mode 100644 index 056d04a421b..00000000000 --- a/docs/shared-ssl-logstash-config.asciidoc +++ /dev/null @@ -1,144 +0,0 @@ -////////////////////////////////////////////////////////////////////////// -//// This content is shared by all Elastic Beats. Make sure you keep the -//// descriptions here generic enough to work for all Beats that include -//// this file. When using cross references, make sure that the cross -//// references resolve correctly for any files that include this one. -//// Use the appropriate variables defined in the index.asciidoc file to -//// resolve Beat names: beatname_uc and beatname_lc. -//// Use the following include to pull this content into a doc file: -//// include::../../libbeat/docs/shared-ssl-logstash-config.asciidoc[] -////////////////////////////////////////////////////////////////////////// - -[float] -[[configuring-ssl-logstash]] -== Secure communication with {ls} - -You can use SSL mutual authentication to secure connections between {beatname_uc} and {ls}. This ensures that -{beatname_uc} sends encrypted data to trusted {ls} servers only, and that the {ls} server receives data from -trusted {beatname_uc} clients only. - -To use SSL mutual authentication: - -. Create a certificate authority (CA) and use it to sign the certificates that you plan to use for -{beatname_uc} and {ls}. Creating a correct SSL/TLS infrastructure is outside the scope of this -document. There are many online resources available that describe how to create certificates. -+ -TIP: If you are using {security-features}, you can use the -{ref}/certutil.html[`elasticsearch-certutil` tool] to generate certificates. - -. Configure {beatname_uc} to use SSL. In the +{beatname_lc}.yml+ config file, specify the following settings under -`ssl`: -+ -* `certificate_authorities`: Configures {beatname_uc} to trust any certificates signed by the specified CA. If -`certificate_authorities` is empty or not set, the trusted certificate authorities of the host system are used. - -* `certificate` and `key`: Specifies the certificate and key that {beatname_uc} uses to authenticate with -{ls}. -+ -For example: -+ -[source,yaml] ------------------------------------------------------------------------------- -output.logstash: - hosts: ["logs.mycompany.com:5044"] - ssl.certificate_authorities: ["/etc/ca.crt"] - ssl.certificate: "/etc/client.crt" - ssl.key: "/etc/client.key" ------------------------------------------------------------------------------- -+ -For more information about these configuration options, see <>. - -. Configure {ls} to use SSL. In the {ls} config file, specify the following settings for the https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html[{beats} input plugin for {ls}]: -+ -* `ssl`: When set to true, enables {ls} to use SSL/TLS. -* `ssl_certificate_authorities`: Configures {ls} to trust any certificates signed by the specified CA. -* `ssl_certificate` and `ssl_key`: Specify the certificate and key that {ls} uses to authenticate with the client. -* `ssl_verify_mode`: Specifies whether the {ls} server verifies the client certificate against the CA. You -need to specify either `peer` or `force_peer` to make the server ask for the certificate and validate it. If you -specify `force_peer`, and {beatname_uc} doesn't provide a certificate, the {ls} connection will be closed. If you choose not to use {ref}/certutil.html[`certutil`], the certificates that you obtain must allow for both `clientAuth` and `serverAuth` if the extended key usage extension is present. -+ -For example: -+ -[source,json] ------------------------------------------------------------------------------- -input { - beats { - port => 5044 - ssl => true - ssl_certificate_authorities => ["/etc/ca.crt"] - ssl_certificate => "/etc/server.crt" - ssl_key => "/etc/server.key" - ssl_verify_mode => "force_peer" - } -} ------------------------------------------------------------------------------- -+ -For more information about these options, see the -https://www.elastic.co/guide/en/logstash/current/plugins-inputs-beats.html[documentation for the {beats} input plugin]. - -[float] -[[testing-ssl-logstash]] -=== Validate the {ls} server's certificate - -Before running {beatname_uc}, you should validate the {ls} server's certificate. You can use `curl` to validate the certificate even though the protocol used to communicate with {ls} is not based on HTTP. For example: - -[source,shell] ------------------------------------------------------------------------------- -curl -v --cacert ca.crt https://logs.mycompany.com:5044 ------------------------------------------------------------------------------- - -If the test is successful, you'll receive an empty response error: - -[source,shell] ------------------------------------------------------------------------------- -* Rebuilt URL to: https://logs.mycompany.com:5044/ -* Trying 192.168.99.100... -* Connected to logs.mycompany.com (192.168.99.100) port 5044 (#0) -* TLS 1.2 connection using TLS_DHE_RSA_WITH_AES_256_CBC_SHA -* Server certificate: logs.mycompany.com -* Server certificate: mycompany.com -> GET / HTTP/1.1 -> Host: logs.mycompany.com:5044 -> User-Agent: curl/7.43.0 -> Accept: */* -> -* Empty reply from server -* Connection #0 to host logs.mycompany.com left intact -curl: (52) Empty reply from server ------------------------------------------------------------------------------- - -The following example uses the IP address rather than the hostname to validate the certificate: - -[source,shell] ------------------------------------------------------------------------------- -curl -v --cacert ca.crt https://192.168.99.100:5044 ------------------------------------------------------------------------------- - -Validation for this test fails because the certificate is not valid for the specified IP address. It's only valid for the `logs.mycompany.com`, the hostname that appears in the Subject field of the certificate. - -[source,shell] ------------------------------------------------------------------------------- -* Rebuilt URL to: https://192.168.99.100:5044/ -* Trying 192.168.99.100... -* Connected to 192.168.99.100 (192.168.99.100) port 5044 (#0) -* WARNING: using IP address, SNI is being disabled by the OS. -* SSL: certificate verification failed (result: 5) -* Closing connection 0 -curl: (51) SSL: certificate verification failed (result: 5) ------------------------------------------------------------------------------- - -See the <> for info about resolving this issue. - -[float] -=== Test the {beatname_uc} to {ls} connection - -If you have {beatname_uc} running as a service, first stop the service. Then test your setup by running {beatname_uc} in -the foreground so you can quickly see any errors that occur: - -["source","sh",subs="attributes,callouts"] ------------------------------------------------------------------------------- -{beatname_lc} -c {beatname_lc}.yml -e -v ------------------------------------------------------------------------------- - -Any errors will be printed to the console. See the <> for info about -resolving common errors. diff --git a/docs/shared-systemd.asciidoc b/docs/shared-systemd.asciidoc deleted file mode 100644 index 6dea935123c..00000000000 --- a/docs/shared-systemd.asciidoc +++ /dev/null @@ -1,108 +0,0 @@ -[[running-with-systemd]] -=== {beatname_uc} and systemd - -IMPORTANT: These commands only apply to the APM Server binary installation method. -Fleet-managed users should see {fleet-guide}/start-stop-elastic-agent.html[Start and stop {agent}s on edge hosts]. - -The DEB and RPM packages include a service unit for Linux systems with -systemd. On these systems, you can manage {beatname_uc} by using the usual -systemd commands. - -ifdef::apm-server[] -We recommend that the {beatname_pkg} process is run as a non-root user. -Therefore, that is the default setup for {beatname_uc}'s DEB package and RPM installation. -endif::apm-server[] - -[float] -==== Start and stop {beatname_uc} - -Use `systemctl` to start or stop {beatname_uc}: - -["source", "sh", subs="attributes"] ------------------------------------------------- -sudo systemctl start {beatname_pkg} ------------------------------------------------- - -["source", "sh", subs="attributes"] ------------------------------------------------- -sudo systemctl stop {beatname_pkg} ------------------------------------------------- - -By default, the {beatname_uc} service starts automatically when the system -boots. To enable or disable auto start use: - -["source", "sh", subs="attributes"] ------------------------------------------------- -sudo systemctl enable {beatname_pkg} ------------------------------------------------- - -["source", "sh", subs="attributes"] ------------------------------------------------- -sudo systemctl disable {beatname_pkg} ------------------------------------------------- - -[float] -==== {beatname_uc} status and logs - -To get the service status, use `systemctl`: - -["source", "sh", subs="attributes"] ------------------------------------------------- -systemctl status {beatname_pkg} ------------------------------------------------- - -Logs are stored by default in journald. To view the Logs, use `journalctl`: - -["source", "sh", subs="attributes"] ------------------------------------------------- -journalctl -u {beatname_pkg}.service ------------------------------------------------- - -[float] -=== Customize systemd unit for {beatname_uc} - -The systemd service unit file includes environment variables that you can -override to change the default options. - -// lint ignore usr -[cols=">. - -To override these variables, create a drop-in unit file in the -+/etc/systemd/system/{beatname_pkg}.service.d+ directory. - -For example a file with the following content placed in -+/etc/systemd/system/{beatname_pkg}.service.d/debug.conf+ -would override `BEAT_LOG_OPTS` to enable debug for {es} output. - -["source", "systemd", subs="attributes"] ------------------------------------------------- -[Service] -Environment="BEAT_LOG_OPTS=-d elasticsearch" ------------------------------------------------- - -To apply your changes, reload the systemd configuration and restart -the service: - -["source", "sh", subs="attributes"] ------------------------------------------------- -systemctl daemon-reload -systemctl restart {beatname_pkg} ------------------------------------------------- - -NOTE: It is recommended that you use a configuration management tool to -include drop-in unit files. If you need to add a drop-in manually, use -+systemctl edit {beatname_pkg}.service+. - -ifdef::apm-server[] -include::{docdir}/config-ownership.asciidoc[] -endif::apm-server[] diff --git a/docs/span-compression.asciidoc b/docs/span-compression.asciidoc deleted file mode 100644 index 74ffa75d0e3..00000000000 --- a/docs/span-compression.asciidoc +++ /dev/null @@ -1,88 +0,0 @@ -[[span-compression]] -=== Span compression - -In some cases, APM agents may collect large amounts of very similar or identical spans in a transaction. -For example, this can happen if spans are captured inside of a loop, or in unoptimized SQL queries that use multiple queries instead of joins to fetch related data. -In such cases, the upper limit of spans per transaction (by default, 500 spans) can be reached quickly, causing the agent to stop capturing potentially more relevant spans for a given transaction. - -Such repeated similar spans often aren't very relevant for themselves, especially if they are of very short duration. -They also can clutter the UI, and cause processing and storage overhead. - -To address this problem, the APM agents can compress such spans into a single span. -The compressed span retains most of the original span information, such as overall duration and the number of spans it represents. - -Regardless of the compression strategy, a span is eligible for compression if: - -- It has not propagated its trace context. -- Is an _exit_ span (such as database query spans). -- Its outcome is not `"failure"`. - - -[float] -[[span-compression-strategy]] -=== Compression strategies - -The {apm-agent} can select between two strategies to decide if two adjacent spans can be compressed. -Both strategies have the benefit that only one previous span needs to be kept in memory. -This is important to ensure that the agent doesn't require large amounts of memory to enable span compression. - -[float] -[[span-compression-same]] -==== Same-Kind strategy - -The agent selects this strategy if two adjacent spans have the same: - - * span type - * span subtype - * `destination.service.resource` (e.g. database name) - -[float] -[[span-compression-exact]] -==== Exact-Match strategy - -The agent selects this strategy if two adjacent spans have the same: - - * span name - * span type - * span subtype - * `destination.service.resource` (e.g. database name) - -[float] -[[span-compression-settings]] -=== Settings - -The agent has configuration settings to define upper thresholds in terms of span duration for both strategies. -For the "Same-Kind" strategy, the default limit is 0 milliseconds, which means that the "Same-Kind" strategy is disabled by default. For the "Exact-Match" strategy, the default limit is 50 milliseconds. -Spans with longer duration are not compressed. Please refer to the agent documentation for specifics. - -[float] -[[span-compression-support]] -=== Agent support - -Support for span compression is available in these agents: - -[options="header"] -|==== -| Agent | Same-kind config | Exact-match config -| **Go agent** -| {apm-go-ref-v}/configuration.html#config-span-compression-same-kind-duration[`ELASTIC_APM_SPAN_COMPRESSION_SAME_KIND_MAX_DURATION`] -| {apm-go-ref-v}/configuration.html#config-span-compression-exact-match-duration[`ELASTIC_APM_SPAN_COMPRESSION_EXACT_MATCH_MAX_DURATION`] -| **Java agent** -| {apm-java-ref-v}/config-huge-traces.html#config-span-compression-same-kind-max-duration[`span_compression_same_kind_max_duration`] -| {apm-java-ref-v}/config-huge-traces.html#config-span-compression-exact-match-max-duration[`span_compression_exact_match_max_duration`] -| **.NET agent** -| {apm-dotnet-ref-v}/config-core.html#config-span-compression-same-kind-max-duration[`SpanCompressionSameKindMaxDuration`] -| {apm-dotnet-ref-v}/config-core.html#config-span-compression-exact-match-max-duration[`SpanCompressionExactMatchMaxDuration`] -| **Node.js agent** -| {apm-node-ref-v}/configuration.html#span-compression-same-kind-max-duration[`spanCompressionSameKindMaxDuration`] -| {apm-node-ref-v}/configuration.html#span-compression-exact-match-max-duration[`spanCompressionExactMatchMaxDuration`] -// | **PHP agent** -// | {apm-php-ref-v}[``] -// | {apm-php-ref-v}[``] -| **Python agent** -| {apm-py-ref-v}/configuration.html#config-span-compression-same-kind-max-duration[`span_compression_same_kind_max_duration`] -| {apm-py-ref-v}/configuration.html#config-span-compression-exact-match-max_duration[`span_compression_exact_match_max_duration`] -// | **Ruby agent** -// | {apm-ruby-ref-v}[``] -// | {apm-ruby-ref-v}[``] -|==== diff --git a/docs/ssl-input-settings.asciidoc b/docs/ssl-input-settings.asciidoc deleted file mode 100644 index 987de726a9e..00000000000 --- a/docs/ssl-input-settings.asciidoc +++ /dev/null @@ -1,127 +0,0 @@ -[[agent-server-ssl]] -=== SSL/TLS input settings - -**** -image:./binary-yes-fm-yes.svg[supported deployment methods] - -Most options on this page are supported by all APM Server deployment methods. -**** - -These settings apply to SSL/TLS communication between the APM Server and APM Agents. -See <> to learn more. - -include::{tab-widget-dir}/tls-widget.asciidoc[] - -[float] -==== Enable TLS - -Enable or disable TLS. Disabled by default. - -|==== -| APM Server binary | `apm-server.ssl.enabled` -| Fleet-managed | `Enable TLS` -|==== - -[float] -==== File path to server certificate - -The path to the file containing the certificate for Server authentication. -Required if TLS is enabled. - -|==== -| APM Server binary | `apm-server.ssl.certificate` -| Fleet-managed | `File path to server certificate` -|==== - -[float] -==== File path to server certificate key - -The path to the file containing the Server certificate key. -Required if TLS is enabled. - -|==== -| APM Server binary | `apm-server.ssl.key` -| Fleet-managed | `File path to server certificate key` -|==== - -[float] -==== Key passphrase - -The passphrase used to decrypt an encrypted key stored in the configured `apm-server.ssl.key` file. - -|==== -| APM Server binary | `apm-server.ssl.key_passphrase` -| Fleet-managed | N/A -|==== - -[float] -==== Supported protocol versions - -This setting is a list of allowed protocol versions: -`SSLv3`, `TLSv1.0`, `TLSv1.1`, `TLSv1.2` and `TLSv1.3`. We do not recommend using `SSLv3` or `TLSv1.0`. -The default value is `[TLSv1.1, TLSv1.2, TLSv1.3]`. - -|==== -| APM Server binary | `apm-server.ssl.supported_protocols` -| Fleet-managed | `Supported protocol versions` -|==== - -[float] -==== Cipher suites for TLS connections - -The list of cipher suites to use. The first entry has the highest priority. -If this option is omitted, the Go crypto library's https://golang.org/pkg/crypto/tls/[default suites] -are used (recommended). Note that TLS 1.3 cipher suites are not -individually configurable in Go, so they are not included in this list. - -|==== -| APM Server binary | `apm-server.ssl.cipher_suites` -| Fleet-managed | `Cipher suites for TLS connections` -|==== - -include::{docdir}/shared-ssl-config.asciidoc[tag=cipher_suites] - -[float] -==== Curve types for ECDHE based cipher suites - -The list of curve types for ECDHE (Elliptic Curve Diffie-Hellman ephemeral key exchange). - -|==== -| APM Server binary | `apm-server.ssl.curve_types` -| Fleet-managed | `Curve types for ECDHE based cipher suites` -|==== - -[float] -==== List of root certificates for verifying client certificates - -The list of root certificates for verifying client certificates. -If `certificate_authorities` is empty or not set, the trusted certificate authorities of the host system are used. -If `certificate_authorities` is set, `client_authentication` will be automatically set to `required`. -Sending client certificates is currently only supported by the RUM agent through the browser, -the Java agent (see {apm-java-ref-v}/ssl-configuration.html[Agent certificate authentication]), -and the Jaeger agent. - -|==== -| APM Server binary | `apm-server.ssl.certificate_authorities` -| Fleet-managed | N/A -|==== - -[float] -==== Client authentication - -This configures what types of client authentication are supported. The valid options -are `none`, `optional`, and `required`. The default is `none`. -If `certificate_authorities` has been specified, this setting will automatically change to `required`. -This option only needs to be configured when the agent is expected to provide a client certificate. -Sending client certificates is currently only supported by the RUM agent through the browser, -the Java agent (see {apm-java-ref-v}/ssl-configuration.html[Agent certificate authentication]), -and the Jaeger agent. - -* `none` - Disables client authentication. -* `optional` - When a client certificate is given, the server will verify it. -* `required` - Requires clients to provide a valid certificate. - -|==== -| APM Server binary | `apm-server.ssl.client_authentication` -| Fleet-managed | N/A -|==== diff --git a/docs/tab-widgets/anonymous-auth-widget.asciidoc b/docs/tab-widgets/anonymous-auth-widget.asciidoc deleted file mode 100644 index 9c4b0c06d90..00000000000 --- a/docs/tab-widgets/anonymous-auth-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::anonymous-auth.asciidoc[tag=fleet-managed] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/anonymous-auth.asciidoc b/docs/tab-widgets/anonymous-auth.asciidoc deleted file mode 100644 index 73f6db156bf..00000000000 --- a/docs/tab-widgets/anonymous-auth.asciidoc +++ /dev/null @@ -1,29 +0,0 @@ -// tag::fleet-managed[] -When an <> or <> is configured, -anonymous authentication must be enabled to collect RUM data. -Set **Anonymous Agent access** to true to enable anonymous authentication. - -When configuring anonymous authentication for client-side services, -there are a few configuration variables that can mitigate the impact of malicious requests to an -unauthenticated APM Server endpoint. - -Use the **Allowed anonymous agents** and **Allowed anonymous services** configs to ensure that the -`agent.name` and `service.name` of each incoming request match a specified list. - -Additionally, the APM Server can rate-limit unauthenticated requests based on the client IP address -(`client.ip`) of the request. -This allows you to specify the maximum number of requests allowed per unique IP address, per second. -// end::fleet-managed[] - -// tag::binary[] -When an <> or <> is configured, -anonymous authentication must be enabled to collect RUM data. -To enable anonymous access, set either <> or -<> to `true`. - -Because anyone can send anonymous events to the APM Server, -additional configuration variables are available to rate limit the number anonymous events the APM Server processes; -throughput is equal to the `rate_limit.ip_limit` times the `rate_limit.event_limit`. - -See <> for a complete list of options and a sample configuration file. -// end::binary[] \ No newline at end of file diff --git a/docs/tab-widgets/api-key-widget.asciidoc b/docs/tab-widgets/api-key-widget.asciidoc deleted file mode 100644 index ab74e730025..00000000000 --- a/docs/tab-widgets/api-key-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::api-key.asciidoc[tag=fleet-managed] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/api-key.asciidoc b/docs/tab-widgets/api-key.asciidoc deleted file mode 100644 index a83ed72c201..00000000000 --- a/docs/tab-widgets/api-key.asciidoc +++ /dev/null @@ -1,25 +0,0 @@ -// tag::fleet-managed[] -Enable API key authorization in the <>. -You should also set a limit on the number of unique API keys that APM Server allows per minute; -this value should be the number of unique API keys configured in your monitored services. -// end::fleet-managed[] - -// tag::binary[] -API keys are disabled by default. Enable and configure this feature in the `apm-server.auth.api_key` -section of the +{beatname_lc}.yml+ configuration file. - -At a minimum, you must enable API keys, -and should set a limit on the number of unique API keys that APM Server allows per minute. -Here's an example `apm-server.auth.api_key` config using 50 unique API keys: - -[source,yaml] ----- -apm-server.auth.api_key.enabled: true <1> -apm-server.auth.api_key.limit: 50 <2> ----- -<1> Enables API keys -<2> Restricts the number of unique API keys that {es} allows each minute. -This value should be the number of unique API keys configured in your monitored services. - -All other configuration options are described in <>. -// end::binary[] \ No newline at end of file diff --git a/docs/tab-widgets/directory-layout-widget.asciidoc b/docs/tab-widgets/directory-layout-widget.asciidoc deleted file mode 100644 index e92c7169342..00000000000 --- a/docs/tab-widgets/directory-layout-widget.asciidoc +++ /dev/null @@ -1,59 +0,0 @@ -++++ -
-
- - - -
- -
-++++ - -include::directory-layout.asciidoc[tag=docker] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/directory-layout.asciidoc b/docs/tab-widgets/directory-layout.asciidoc deleted file mode 100644 index 9586af2f626..00000000000 --- a/docs/tab-widgets/directory-layout.asciidoc +++ /dev/null @@ -1,58 +0,0 @@ -// tag::zip[] - -[cols=" -
- - - - - - - - -
- - -
-++++ - -include::distributed-trace-receive.asciidoc[tag=java] - -++++ -
- - - - - - -++++ \ No newline at end of file diff --git a/docs/tab-widgets/distributed-trace-send-widget.asciidoc b/docs/tab-widgets/distributed-trace-send-widget.asciidoc deleted file mode 100644 index 115cf6556ca..00000000000 --- a/docs/tab-widgets/distributed-trace-send-widget.asciidoc +++ /dev/null @@ -1,150 +0,0 @@ -// The Java agent defaults to visible. -// Change with `aria-selected="false"` and `hidden=""` -++++ -
-
- - - - - - - - -
- - -
-++++ - -include::distributed-trace-send.asciidoc[tag=java] - -++++ -
- - - - - -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/install-agents-widget.asciidoc b/docs/tab-widgets/install-agents-widget.asciidoc deleted file mode 100644 index 51936e799e0..00000000000 --- a/docs/tab-widgets/install-agents-widget.asciidoc +++ /dev/null @@ -1,186 +0,0 @@ -// The Java agent defaults to visible. -// Change with `aria-selected="false"` and `hidden=""` -++++ -
-
- - - - - - - - - - -
- - -
-++++ - -include::install-agents.asciidoc[tag=java] - -++++ -
- - - - - - - -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/install-agents.asciidoc b/docs/tab-widgets/install-agents.asciidoc deleted file mode 100644 index 5c74b7124b2..00000000000 --- a/docs/tab-widgets/install-agents.asciidoc +++ /dev/null @@ -1,578 +0,0 @@ -// tag::go[] -*Install the agent* - -Install the {apm-agent} packages for Go. - -[source,go] ----- -go get go.elastic.co/apm ----- - -*Configure the agent* - -Agents are libraries that run inside of your application process. -APM services are created programmatically based on the executable file name, or the `ELASTIC_APM_SERVICE_NAME` environment variable. - -[source,go] ----- -# Initialize using environment variables: - -# Set the service name. Allowed characters: a-z, A-Z, 0-9, -, _, and space. -# If ELASTIC_APM_SERVICE_NAME is not specified, the executable name will be used. -export ELASTIC_APM_SERVICE_NAME= - -# Set custom APM Server URL. Default: http://localhost:8200. -export ELASTIC_APM_SERVER_URL= - -# Use if APM Server requires a token -export ELASTIC_APM_SECRET_TOKEN= ----- - -*Instrument your application* - -Instrument your Go application by using one of the provided instrumentation modules or by using the tracer API directly. - -[source,go] ----- -import ( - "net/http" - - "go.elastic.co/apm/module/apmhttp" -) - -func main() { - mux := http.NewServeMux() - ... - http.ListenAndServe(":8080", apmhttp.Wrap(mux)) -} ----- - -*Learn more in the agent reference* - -* {apm-go-ref-v}/supported-tech.html[Supported technologies] -* {apm-go-ref-v}/configuration.html[Advanced configuration] -* {apm-go-ref-v}/getting-started.html[Detailed guide to instrumenting Go source code] -// end::go[] - -// *************************************************** -// *************************************************** - -// tag::ios[] - -experimental::[] - -*Add the agent dependency to your project* - -Add the Elastic APM iOS Agent as a -https://developer.apple.com/documentation/swift_packages/adding_package_dependencies_to_your_app[package dependency] -to your Xcode project or your `Package.swift`: - -[source,swift,linenums,highlight=2;10] ----- -Package( - dependencies:[ - .package(name: "iOSAgent", url: "git@github.com:elastic/apm-agent-ios.git", .branch("main")), - ], - targets:[ - .target( - name: "MyApp", - dependencies: [ - .product(name: "iOSAgent", package: "iOSAgent") - ] - ), -]) ----- - -*Initialize the agent* - -If you're using `SwiftUI` to build your app, add the following to `App.swift`: - -[source,swift,linenums,swift,highlight=2;7..12] ----- -import SwiftUI -import iOSAgent - -@main -struct MyApp: App { - init() { - var config = AgentConfiguration() - config.collectorAddress = "127.0.0.1" <1> - config.collectorPort = 8200 <2> - config.collectorTLS = false <3> - config.secretToken = "" <4> - Agent.start(with: config) - } - var body: some Scene { - WindowGroup { - ContentView() - } - } -} ----- -<1> APM Server URL or IP address -<2> APM Server port number -<3> Enable TLS for Open telemetry exporters -<4> Set secret token for APM server connection - -If you're not using `SwiftUI`, you can add the same thing to your `AppDelegate` file: - -`AppDelegate.swift` -[source,swift,linenums,highlight=2;9..14] ----- -import UIKit -import iOSAgent -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { - var config = AgentConfiguration() - config.collectorAddress = "127.0.0.1" <1> - config.collectorPort = 8200 <2> - config.collectorTLS = false <3> - config.secretToken = "" <4> - Agent.start(with: config) - return true - } -} ----- -<1> APM Server URL or IP address -<2> APM Server port number -<3> Enable TLS for Open telemetry exporters -<4> Set secret token for APM server connection - -// end::ios[] - -// *************************************************** -// *************************************************** - -// tag::java[] - -*Download the {apm-agent}* - -Download the agent jar from http://search.maven.org/#search%7Cga%7C1%7Ca%3Aelastic-apm-agent[Maven Central]. -Do not add the agent as a dependency to your application. - -*Start your application with the `javaagent` flag* - -Add the `-javaagent` flag and configure the agent with system properties. - -* Set required service name -* Set custom APM Server URL (default: http://localhost:8200) -* Set the base package of your application - -[source,java] ----- -java -javaagent:/path/to/elastic-apm-agent-.jar \ - -Delastic.apm.service_name=my-application \ - -Delastic.apm.server_urls=http://localhost:8200 \ - -Delastic.apm.secret_token= \ - -Delastic.apm.application_packages=org.example \ - -jar my-application.jar ----- - -*Learn more in the agent reference* - -* {apm-java-ref-v}/supported-technologies-details.html[Supported technologies] -* {apm-java-ref-v}/configuration.html[Advanced configuration] -// end::java[] - -// *************************************************** -// *************************************************** - -// tag::net[] -*Download the {apm-agent}* - -Add the agent packages from https://www.nuget.org/packages?q=Elastic.apm[NuGet] to your .NET application. -There are multiple NuGet packages available for different use cases. - -For an ASP.NET Core application with Entity Framework Core, download the -https://www.nuget.org/packages/Elastic.Apm.NetCoreAll[Elastic.Apm.NetCoreAll] package. -This package will automatically add every agent component to your application. - -To minimize the number of dependencies, you can use the -https://www.nuget.org/packages/Elastic.Apm.AspNetCore[Elastic.Apm.AspNetCore] package for just ASP.NET Core monitoring, or the -https://www.nuget.org/packages/Elastic.Apm.EntityFrameworkCore[Elastic.Apm.EfCore] package for just Entity Framework Core monitoring. - -If you only want to use the public agent API for manual instrumentation, use the -https://www.nuget.org/packages/Elastic.Apm[Elastic.Apm] package. - -*Add the agent to the application* - -For an ASP.NET Core application with the `Elastic.Apm.NetCoreAll` package, -call the `UseAllElasticApm` method in the `Configure` method within the `Startup.cs` file: - -[source,dotnet] ----- -public class Startup -{ - public void Configure(IApplicationBuilder app, IHostingEnvironment env) - { - app.UseAllElasticApm(Configuration); - //…rest of the method - } - //…rest of the class -} ----- - -Passing an `IConfiguration` instance is optional and by doing so, -the agent will read config settings through this `IConfiguration` instance, for example, -from the `appsettings.json` file: - -[source,json] ----- -{ - "ElasticApm": { - "SecretToken": "", - "ServerUrls": "http://localhost:8200", //Set custom APM Server URL (default: http://localhost:8200) - "ServiceName" : "MyApp", //allowed characters: a-z, A-Z, 0-9, -, _, and space. Default is the entry assembly of the application - } -} ----- - -If you don’t pass an `IConfiguration` instance to the agent, for example, in a non-ASP.NET Core application, -you can configure the agent with environment variables. -See the agent reference for more information. - -*Learn more in the agent reference* - -* {apm-dotnet-ref-v}/supported-technologies.html[Supported technologies] -* {apm-dotnet-ref-v}/configuration.html[Advanced configuration] -// end::net[] - -// *************************************************** -// *************************************************** - -// tag::node[] -*Install the {apm-agent}* - -Install the {apm-agent} for Node.js as a dependency to your application. - -[source,js] ----- -npm install elastic-apm-node --save ----- - -*Configure the agent* - -Agents are libraries that run inside of your application process. APM services are created programmatically based on the `serviceName`. -This agent supports a variety of frameworks but can also be used with your custom stack. - -[source,js] ----- -// Add this to the VERY top of the first file loaded in your app -var apm = require('elastic-apm-node').start({ - // Override service name from package.json - // Allowed characters: a-z, A-Z, 0-9, -, _, and space - serviceName: '', - - // Use if APM Server requires a token - secretToken: '', - - // Set custom APM Server URL (default: http://localhost:8200) - serverUrl: '' -}) ----- - -*Learn more in the agent reference* - -* {apm-node-ref-v}/supported-technologies.html[Supported technologies] -* {apm-node-ref-v}/advanced-setup.html[Babel/ES Modules] -* {apm-node-ref-v}/configuring-the-agent.html[Advanced configuration] - -// end::node[] - -// *************************************************** -// *************************************************** - -// tag::php[] - -*Install the agent* - -Install the PHP agent using one of the https://github.com/elastic/apm-agent-php/releases[published packages]. - -To use the RPM Package (RHEL/CentOS and Fedora): - -[source,php] ----- -rpm -ivh .rpm ----- - -To use the DEB package (Debian and Ubuntu): - -[source,php] ----- -dpkg -i .deb ----- - -To use the APK package (Alpine): - -[source,php] ----- -apk add --allow-untrusted .apk ----- - -If you can’t find your distribution, -you can install the agent by {apm-php-ref-v}/setup.html[building it from the source]. - -*Configure the agent* - -Configure your agent inside of the `php.ini` file: - -[source,ini] ----- -elastic_apm.server_url=http://localhost:8200 -elastic_apm.secret_token=SECRET_TOKEN -elastic_apm.service_name="My-service" ----- - -*Learn more in the agent reference* - -* {apm-php-ref-v}/supported-technologies.html[Supported technologies] -* {apm-php-ref-v}/configuration.html[Configuration] - -// end::php[] - -// *************************************************** -// *************************************************** - -// tag::python[] -Django:: -+ -*Install the {apm-agent}* -+ -Install the {apm-agent} for Python as a dependency. -+ -[source,python] ----- -$ pip install elastic-apm ----- -+ -*Configure the agent* -+ -Agents are libraries that run inside of your application process. -APM services are created programmatically based on the `SERVICE_NAME`. -+ -[source,python] ----- -# Add the agent to the installed apps -INSTALLED_APPS = ( - 'elasticapm.contrib.django', - # ... -) - -ELASTIC_APM = { - # Set required service name. Allowed characters: - # a-z, A-Z, 0-9, -, _, and space - 'SERVICE_NAME': '', - - # Use if APM Server requires a token - 'SECRET_TOKEN': '', - - # Set custom APM Server URL (default: http://localhost:8200) - 'SERVER_URL': '', -} - -# To send performance metrics, add our tracing middleware: -MIDDLEWARE = ( - 'elasticapm.contrib.django.middleware.TracingMiddleware', - #... -) ----- - -Flask:: -+ -*Install the {apm-agent}* -+ -Install the {apm-agent} for Python as a dependency. -+ -[source,python] ----- -$ pip install elastic-apm[flask] ----- -+ -*Configure the agent* -+ -Agents are libraries that run inside of your application process. -APM services are created programmatically based on the `SERVICE_NAME`. -+ -[source,python] ----- -# initialize using environment variables -from elasticapm.contrib.flask import ElasticAPM -app = Flask(__name__) -apm = ElasticAPM(app) - -# or configure to use ELASTIC_APM in your application settings -from elasticapm.contrib.flask import ElasticAPM -app.config['ELASTIC_APM'] = { - # Set required service name. Allowed characters: - # a-z, A-Z, 0-9, -, _, and space - 'SERVICE_NAME': '', - - # Use if APM Server requires a token - 'SECRET_TOKEN': '', - - # Set custom APM Server URL (default: http://localhost:8200) - 'SERVER_URL': '', -} - -apm = ElasticAPM(app) ----- - -*Learn more in the agent reference* - -* {apm-py-ref-v}/supported-technologies.html[Supported technologies] -* {apm-py-ref-v}/configuration.html[Advanced configuration] - -// end::python[] - -// *************************************************** -// *************************************************** - -// tag::ruby[] -*Install the {apm-agent}* - -Add the agent to your Gemfile. - -[source,ruby] ----- -gem 'elastic-apm' ----- -*Configure the agent* - -Ruby on Rails:: -+ -APM is automatically started when your app boots. -Configure the agent by creating the config file `config/elastic_apm.yml`: -+ -[source,ruby] ----- -# config/elastic_apm.yml: - -# Set service name - allowed characters: a-z, A-Z, 0-9, -, _ and space -# Defaults to the name of your Rails app -service_name: 'my-service' - -# Use if APM Server requires a token -secret_token: '' - -# Set custom APM Server URL (default: http://localhost:8200) -server_url: 'http://localhost:8200' ----- - -Rack:: -+ -For Rack or a compatible framework, like Sinatra, include the middleware in your app and start the agent. -+ -[source,ruby] ----- -# config.ru - require 'sinatra/base' - - class MySinatraApp < Sinatra::Base - use ElasticAPM::Middleware - - # ... - end - - ElasticAPM.start( - app: MySinatraApp, # required - config_file: '' # optional, defaults to config/elastic_apm.yml - ) - - run MySinatraApp - - at_exit { ElasticAPM.stop } ----- -+ -*Create a config file* -+ -Create a config file config/elastic_apm.yml: -+ -[source,ruby] ----- -# config/elastic_apm.yml: - -# Set service name - allowed characters: a-z, A-Z, 0-9, -, _ and space -# Defaults to the name of your Rack app's class. -service_name: 'my-service' - -# Use if APM Server requires a token -secret_token: '' - -# Set custom APM Server URL (default: http://localhost:8200) -server_url: 'http://localhost:8200' ----- - -*Learn more in the agent reference* - -* {apm-ruby-ref-v}/supported-technologies.html[Supported technologies] -* {apm-ruby-ref-v}/configuration.html[Advanced configuration] - -// end::ruby[] - -// *************************************************** -// *************************************************** - -// tag::rum[] -*Enable Real User Monitoring support in APM Server* - -APM Server disables RUM support by default. -To enable it, set `apm-server.rum.enabled: true` in your APM Server configuration file. - -*Set up the agent* - -Once RUM support enabled, you can set up the RUM agent. -There are two ways to do this: add the agent as a dependency, -or set it up with ` - ----- - -*Learn more in the agent reference* - -* {apm-rum-ref-v}/supported-technologies.html[Supported technologies] -* {apm-rum-ref-v}/configuration.html[Advanced configuration] - -// end::rum[] diff --git a/docs/tab-widgets/jaeger-widget.asciidoc b/docs/tab-widgets/jaeger-widget.asciidoc deleted file mode 100644 index 5902738ca38..00000000000 --- a/docs/tab-widgets/jaeger-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::jaeger.asciidoc[tag=ess] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/jaeger.asciidoc b/docs/tab-widgets/jaeger.asciidoc deleted file mode 100644 index 2e1982b6e2c..00000000000 --- a/docs/tab-widgets/jaeger.asciidoc +++ /dev/null @@ -1,64 +0,0 @@ -// tag::ess[] -. Log into {ess-console}[{ecloud}] and select your deployment. -In {kib}, select **Add data**, then search for and select "Elastic APM". -If the integration is already installed, under the polices tab, select **Actions** > **Edit integration**. -If the integration has not been installed, select **Add Elastic APM**. -Copy the URL. If you're using Agent authorization, copy the Secret token as well. - -. Configure the APM Integration as a collector for your Jaeger agents. -+ -As of this writing, the Jaeger agent binary offers the following CLI flags, -which can be used to enable TLS, output to {ecloud}, and set the APM Integration secret token: -+ -[source,terminal] ----- ---reporter.grpc.tls.enabled=true ---reporter.grpc.host-port= ---agent.tags="elastic-apm-auth=Bearer " ----- - -TIP: For the equivalent environment variables, -change all letters to upper-case and replace punctuation with underscores (`_`). -See the https://www.jaegertracing.io/docs/1.27/cli/[Jaeger CLI flags documentation] for more information. - -// end::ess[] - -// tag::self-managed[] -. Configure the APM Integration as a collector for your Jaeger agents. -In {kib}, select **Add data**, then search for and select "Elastic APM". -If the integration is already installed, under the polices tab, select **Actions** > **Edit integration**. -If the integration has not been installed, select **Add Elastic APM**. -Copy the Host. If you're using Agent authorization, copy the Secret token as well. -+ -As of this writing, the Jaeger agent binary offers the `--reporter.grpc.host-port` CLI flag. -Use this to define the host and port that the APM Integration is listening on: -+ -[source,terminal] ----- ---reporter.grpc.host-port= ----- - -. (Optional) Enable encryption -+ -When TLS is enabled for the APM Integration, Jaeger agents must also enable TLS communication: -+ -[source,terminal] ----- ---reporter.grpc.tls.enabled=true ----- - -. (Optional) Enable token-based authorization -+ -A secret token or API key can be used to ensure only authorized Jaeger agents can send data to the APM Integration. -When enabled, use an agent level tag to authorize Jaeger agent communication with the APM Server: -+ -[source,terminal] ----- ---agent.tags="elastic-apm-auth=Bearer " ----- - -TIP: For the equivalent environment variables, -change all letters to upper-case and replace punctuation with underscores (`_`). -See the https://www.jaegertracing.io/docs/1.27/cli/[Jaeger CLI flags documentation] for more information. - -// end::self-managed[] diff --git a/docs/tab-widgets/no-data-indexed-widget.asciidoc b/docs/tab-widgets/no-data-indexed-widget.asciidoc deleted file mode 100644 index 19b6b228dac..00000000000 --- a/docs/tab-widgets/no-data-indexed-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::no-data-indexed.asciidoc[tag=fleet-managed] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/no-data-indexed.asciidoc b/docs/tab-widgets/no-data-indexed.asciidoc deleted file mode 100644 index 57a841a6483..00000000000 --- a/docs/tab-widgets/no-data-indexed.asciidoc +++ /dev/null @@ -1,63 +0,0 @@ -// tag::fleet-managed[] -**Is {agent} healthy?** - -In {kib} open **{fleet}** and find the host that is running the APM integration; -confirm that its status is **Healthy**. -If it isn't, check the {agent} logs to diagnose potential causes. -See {fleet-guide}/monitor-elastic-agent.html[Monitor {agent}s] to learn more. - -**Is APM Server happy?** - -In {kib}, open **{fleet}** and select the host that is running the APM integration. -Open the **Logs** tab and select the `elastic_agent.apm_server` dataset. -Look for any APM Server errors that could help diagnose the problem. - -**Can the {apm-agent} connect to APM Server** - -To determine if the {apm-agent} can connect to the APM Server, send requests to the instrumented service and look for lines -containing `[request]` in the APM Server logs. - -If no requests are logged, confirm that: - -. SSL isn't <>. -. The host is correct. For example, if you're using Docker, ensure a bind to the right interface (for example, set -`apm-server.host = 0.0.0.0:8200` to match any IP) and set the `SERVER_URL` setting in the {apm-agent} accordingly. - -If you see requests coming through the APM Server but they are not accepted (a response code other than `202`), -see <> to narrow down the possible causes. - -**Instrumentation gaps** - -APM agents provide auto-instrumentation for many popular frameworks and libraries. -If the {apm-agent} is not auto-instrumenting something that you were expecting, data won't be sent to the {stack}. -Reference the relevant {apm-agents-ref}/index.html[{apm-agent} documentation] for details on what is automatically instrumented. -// end::fleet-managed[] - -// tag::binary[] -If no data shows up in {es}, first check that the APM components are properly connected. - -To ensure that APM Server configuration is valid and it can connect to the configured output, {es} by default, -run the following commands: - -["source","sh"] ------------------------------------------------------------- -apm-server test config -apm-server test output ------------------------------------------------------------- - -To see if the agent can connect to the APM Server, send requests to the instrumented service and look for lines -containing `[request]` in the APM Server logs. - -If no requests are logged, it might be that SSL is <> or that the host is wrong. -Particularly, if you are using Docker, ensure to bind to the right interface (for example, set -`apm-server.host = 0.0.0.0:8200` to match any IP) and set the `SERVER_URL` setting in the agent accordingly. - -If you see requests coming through the APM Server but they are not accepted (response code other than `202`), consider -the response code to narrow down the possible causes (see sections below). - -Another reason for data not showing up is that the agent is not auto-instrumenting something you were expecting, check -the {apm-agents-ref}/index.html[agent documentation] for details on what is automatically instrumented. - -APM Server currently relies on {es} to create indices that do not exist. -As a result, {es} must be configured to allow {ref}/docs-index_.html#index-creation[automatic index creation] for APM indices. -// end::binary[] diff --git a/docs/tab-widgets/open-kibana-widget.asciidoc b/docs/tab-widgets/open-kibana-widget.asciidoc deleted file mode 100644 index 1947f97b537..00000000000 --- a/docs/tab-widgets/open-kibana-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::open-kibana.asciidoc[tag=cloud] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/open-kibana.asciidoc b/docs/tab-widgets/open-kibana.asciidoc deleted file mode 100644 index b1665ea5e9e..00000000000 --- a/docs/tab-widgets/open-kibana.asciidoc +++ /dev/null @@ -1,10 +0,0 @@ -// tag::cloud[] -. https://cloud.elastic.co/[Log in] to your {ecloud} account. - -. Navigate to the {kib} endpoint in your deployment. -// end::cloud[] - -// tag::self-managed[] -Point your browser to http://localhost:5601[http://localhost:5601], replacing -`localhost` with the name of the {kib} host. -// end::self-managed[] \ No newline at end of file diff --git a/docs/tab-widgets/secret-token-widget.asciidoc b/docs/tab-widgets/secret-token-widget.asciidoc deleted file mode 100644 index aea6373e194..00000000000 --- a/docs/tab-widgets/secret-token-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::secret-token.asciidoc[tag=fleet-managed] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/secret-token.asciidoc b/docs/tab-widgets/secret-token.asciidoc deleted file mode 100644 index a986a73e16f..00000000000 --- a/docs/tab-widgets/secret-token.asciidoc +++ /dev/null @@ -1,17 +0,0 @@ -// tag::fleet-managed[] -Create or update a secret token in {fleet}. - -include::../configure/shared/input-apm.asciidoc[tag=fleet-managed-settings] -+ -. Navigate to **Agent authorization** > **Secret token** and set the value of your token. -. Click **Save integration**. The APM Server will restart before the change takes effect. -// end::fleet-managed[] - -// tag::binary[] -Set the secret token in `apm-server.yaml`: - -[source,yaml] ----- -apm-server.auth.secret_token: ----- -// end::binary[] \ No newline at end of file diff --git a/docs/tab-widgets/tls-widget.asciidoc b/docs/tab-widgets/tls-widget.asciidoc deleted file mode 100644 index b20b9b81fa0..00000000000 --- a/docs/tab-widgets/tls-widget.asciidoc +++ /dev/null @@ -1,40 +0,0 @@ -++++ -
-
- - -
-
-++++ - -include::tls.asciidoc[tag=fleet-managed] - -++++ -
- -
-++++ \ No newline at end of file diff --git a/docs/tab-widgets/tls.asciidoc b/docs/tab-widgets/tls.asciidoc deleted file mode 100644 index 11ce2247bfa..00000000000 --- a/docs/tab-widgets/tls.asciidoc +++ /dev/null @@ -1,21 +0,0 @@ -// tag::fleet-managed[] -Enable TLS in the APM integration settings and use the <> to set the path to the server certificate and key. -// end::fleet-managed[] - -// tag::binary[] -The following is a basic APM Server SSL config with secure communication enabled. -This will make APM Server serve HTTPS requests instead of HTTP. - -[source,yaml] ----- -apm-server.ssl.enabled: true -apm-server.ssl.certificate: "/path/to/apm-server.crt" -apm-server.ssl.key: "/path/to/apm-server.key" ----- - -A full list of configuration options is available in <>. - -TIP: If APM agents are authenticating themselves using a certificate that cannot be authenticated through known CAs (e.g. self signed certificates), use the `ssl.certificate_authorities` to set a custom CA. -This will automatically modify the `ssl.client_authentication` configuration to require authentication. - -// end::binary[] \ No newline at end of file diff --git a/docs/tls-comms.asciidoc b/docs/tls-comms.asciidoc deleted file mode 100644 index bb33104d0a3..00000000000 --- a/docs/tls-comms.asciidoc +++ /dev/null @@ -1,67 +0,0 @@ -[[agent-tls]] -=== {apm-agent} TLS communication - -TLS is disabled by default. -When TLS is enabled for APM Server inbound communication, agents will verify the identity -of the APM Server by authenticating its certificate. - -When TLS is enabled, a certificate and corresponding private key are required. -The certificate and private key can either be issued by a trusted certificate authority (CA) -or be <>. - -[float] -[[agent-self-sign]] -=== Use a self-signed certificate - -[float] -[[agent-self-sign-1]] -==== Step 1: Create a self-signed certificate - -The {es} distribution offers the `certutil` tool for the creation of self-signed certificates: - -1. Create a CA: `./bin/elasticsearch-certutil ca --pem`. You'll be prompted to enter the desired -location of the output zip archive containing the certificate and the private key. -2. Extract the contents of the CA archive. -3. Create the self-signed certificate: `./bin/elasticsearch-certutil cert --ca-cert -/ca.crt --ca-key /ca.key --pem --name localhost` -4. Extract the certificate and key from the resulted zip archive. - -[float] -[[agent-self-sign-2]] -==== Step 2: Configure the APM Server - -Enable TLS and configure the APM Server to point to the extracted certificate and key: - -include::{tab-widget-dir}/tls-widget.asciidoc[] - -[float] -[[agent-self-sign-3]] -==== Step 3: Configure APM agents - -When the APM server uses a certificate that is not chained to a publicly-trusted certificate -(e.g. self-signed), additional configuration is required in the {apm-agent}: - -* *Go agent*: certificate pinning through {apm-go-ref}/configuration.html#config-server-cert[`ELASTIC_APM_SERVER_CERT`] -* *Python agent*: certificate pinning through {apm-py-ref}/configuration.html#config-server-cert[`server_cert`] -* *Ruby agent*: certificate pinning through {apm-ruby-ref}/configuration.html#config-ssl-ca-cert[`server_ca_cert`] -* *.NET agent*: {apm-dotnet-ref}/config-reporter.html#config-server-cert[`ServerCert`] -* *Node.js agent*: custom CA setting through {apm-node-ref}/configuration.html#server-ca-cert-file[`serverCaCertFile`] -* *Java agent*: adding the certificate to the JVM `trustStore`. -See {apm-java-ref}/ssl-configuration.html#ssl-server-authentication[APM Server authentication] for more details. - -We do not recommend disabling {apm-agent} verification of the server's certificate, but it is possible: - -* *Go agent*: {apm-go-ref}/configuration.html#config-verify-server-cert[`ELASTIC_APM_VERIFY_SERVER_CERT`] -* *.NET agent*: {apm-dotnet-ref}/config-reporter.html#config-verify-server-cert[`VerifyServerCert`] -* *Java agent*: {apm-java-ref}/config-reporter.html#config-verify-server-cert[`verify_server_cert`] -* *PHP agent*: {apm-php-ref-v}/configuration-reference.html#config-verify-server-cert[`verify_server_cert`] -* *Python agent*: {apm-py-ref}/configuration.html#config-verify-server-cert[`verify_server_cert`] -* *Ruby agent*: {apm-ruby-ref}/configuration.html#config-verify-server-cert[`verify_server_cert`] -* *Node.js agent*: {apm-node-ref}/configuration.html#validate-server-cert[`verifyServerCert`] - -[float] -[[agent-client-cert]] -=== Client certificate authentication - -APM Server does not require agents to provide a certificate for authentication, -and there is no dedicated support for SSL/TLS client certificate authentication in Elastic’s backend agents. \ No newline at end of file diff --git a/docs/troubleshoot-apm.asciidoc b/docs/troubleshoot-apm.asciidoc deleted file mode 100644 index 0d895ceb3cb..00000000000 --- a/docs/troubleshoot-apm.asciidoc +++ /dev/null @@ -1,56 +0,0 @@ -[[troubleshoot-apm]] -== Troubleshoot - -This section provides solutions to common questions and problems, -and processing and performance guidance. - -* <> -* <> -* <> -* <> -* <> - -For additional help with other APM components, see the links below. - -[float] -[[troubleshooting-docs]] -=== Troubleshooting documentation - -{agent}, the {apm-app}, and each {apm-agent} has its own troubleshooting guide: - -* {fleet-guide}/troubleshooting-intro.html[*{fleet} and {agent}* troubleshooting] -* {kibana-ref}/troubleshooting.html[*{apm-app}* troubleshooting] -* {apm-dotnet-ref-v}/troubleshooting.html[*.NET agent* troubleshooting] -* {apm-go-ref-v}/troubleshooting.html[*Go agent* troubleshooting] -* {apm-ios-ref-v}/troubleshooting.html[*iOS agent* troubleshooting] -* {apm-java-ref-v}/trouble-shooting.html[*Java agent* troubleshooting] -* {apm-node-ref-v}/troubleshooting.html[*Node.js agent* troubleshooting] -* {apm-php-ref-v}/troubleshooting.html[*PHP agent* troubleshooting] -* {apm-py-ref-v}/troubleshooting.html[*Python agent* troubleshooting] -* {apm-ruby-ref-v}/debugging.html[*Ruby agent* troubleshooting] -* {apm-rum-ref-v}/troubleshooting.html[*RUM agent* troubleshooting] - -[float] -[[elastic-support]] -=== Elastic Support - -We offer a support experience unlike any other. -Our team of professionals 'speak human and code' and love making your day. -https://www.elastic.co/subscriptions[Learn more about subscriptions]. - -[float] -[[discussion-forum]] -=== Discussion forum - -For additional questions and feature requests, -visit our https://discuss.elastic.co/c/apm[discussion forum]. - -include::common-problems.asciidoc[] - -include::apm-server-down.asciidoc[] - -include::apm-response-codes.asciidoc[] - -include::processing-performance.asciidoc[] - -include::{docdir}/debugging.asciidoc[] \ No newline at end of file diff --git a/docs/upgrading.asciidoc b/docs/upgrading.asciidoc deleted file mode 100644 index 613be6c1ae2..00000000000 --- a/docs/upgrading.asciidoc +++ /dev/null @@ -1,17 +0,0 @@ -[[upgrade]] -== Upgrade - -This guide gives general recommendations for upgrading Elastic APM. - -* <> -* <> -* <> -* <> - -include::./agent-server-compatibility.asciidoc[] - -include::./apm-breaking.asciidoc[] - -include::./upgrading-to-8.x.asciidoc[] - -include::./upgrading-to-integration.asciidoc[] diff --git a/go.mod b/go.mod index f2b3a8ae33f..2cc2b07c377 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/gofrs/flock v0.8.1 github.com/gofrs/uuid v4.4.0+incompatible github.com/gogo/protobuf v1.3.2 - github.com/google/go-cmp v0.5.9 + github.com/google/go-cmp v0.6.0 github.com/gorilla/mux v1.8.0 github.com/hashicorp/go-multierror v1.1.1 github.com/hashicorp/golang-lru v0.5.4 @@ -37,18 +37,18 @@ require ( github.com/spf13/cobra v1.7.0 github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.8.4 - go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.4 - go.elastic.co/apm/module/apmgorilla/v2 v2.4.4 - go.elastic.co/apm/module/apmgrpc/v2 v2.4.4 - go.elastic.co/apm/module/apmhttp/v2 v2.4.4 - go.elastic.co/apm/module/apmotel/v2 v2.4.4 - go.elastic.co/apm/v2 v2.4.4 + go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.7 + go.elastic.co/apm/module/apmgorilla/v2 v2.4.7 + go.elastic.co/apm/module/apmgrpc/v2 v2.4.7 + go.elastic.co/apm/module/apmhttp/v2 v2.4.7 + go.elastic.co/apm/module/apmotel/v2 v2.4.7 + go.elastic.co/apm/v2 v2.4.7 go.elastic.co/fastjson v1.3.0 - go.opentelemetry.io/collector/consumer v0.81.0 - go.opentelemetry.io/collector/pdata v1.0.0-rcv0013 - go.opentelemetry.io/otel v1.17.0 - go.opentelemetry.io/otel/metric v1.17.0 - go.opentelemetry.io/otel/sdk/metric v0.40.0 + go.opentelemetry.io/collector/consumer v0.87.0 + go.opentelemetry.io/collector/pdata v1.0.0-rcv0016 + go.opentelemetry.io/otel v1.21.0 + go.opentelemetry.io/otel/metric v1.21.0 + go.opentelemetry.io/otel/sdk/metric v1.21.0 go.uber.org/automaxprocs v1.5.2 go.uber.org/zap v1.25.0 golang.org/x/net v0.17.0 @@ -65,7 +65,7 @@ require ( github.com/Microsoft/go-winio v0.6.1 // indirect github.com/OneOfOne/xxhash v1.2.8 // indirect github.com/Shopify/sarama v1.38.1 // indirect - github.com/apache/thrift v0.18.1 // indirect + github.com/apache/thrift v0.19.0 // indirect github.com/armon/go-radix v1.0.0 // indirect github.com/axiomhq/hyperloglog v0.0.0-20230201085229-3ddf4bad03dc // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -76,12 +76,13 @@ require ( github.com/cockroachdb/redact v1.0.8 // indirect github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20230613231145-182959a1fad6 // indirect - github.com/containerd/containerd v1.7.1 // indirect + github.com/containerd/containerd v1.7.11 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/dgraph-io/ristretto v0.1.1 // indirect github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect github.com/dgryski/go-metro v0.0.0-20180109044635-280f6062b5bc // indirect github.com/dlclark/regexp2 v1.8.1 // indirect + github.com/docker/go-units v0.5.0 // indirect github.com/dop251/goja v0.0.0-20230427124612-428fc442ff5f // indirect github.com/dop251/goja_nodejs v0.0.0-20230322100729-2550c7b6c124 // indirect github.com/eapache/go-resiliency v1.3.0 // indirect @@ -95,7 +96,7 @@ require ( github.com/elastic/gosigar v0.14.2 // indirect github.com/fatih/color v1.14.1 // indirect github.com/frankban/quicktest v1.14.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/gogo/googleapis v1.4.1 // indirect @@ -118,7 +119,6 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 // indirect - github.com/magefile/mage v1.15.0 // indirect github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.17 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect @@ -134,7 +134,7 @@ require ( github.com/prometheus/client_golang v1.16.0 // indirect github.com/prometheus/client_model v0.4.0 // indirect github.com/prometheus/common v0.44.0 // indirect - github.com/prometheus/procfs v0.10.1 // indirect + github.com/prometheus/procfs v0.11.1 // indirect github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect @@ -150,11 +150,11 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/youmark/pkcs8 v0.0.0-20201027041543-1326539a0a0a // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.elastic.co/apm/module/apmzap/v2 v2.4.4 // indirect - go.elastic.co/ecszap v1.0.1 // indirect - go.opentelemetry.io/collector/semconv v0.81.0 // indirect - go.opentelemetry.io/otel/sdk v1.17.0 // indirect - go.opentelemetry.io/otel/trace v1.17.0 // indirect + go.elastic.co/apm/module/apmzap/v2 v2.4.7 // indirect + go.elastic.co/ecszap v1.0.2 // indirect + go.opentelemetry.io/collector/semconv v0.87.0 // indirect + go.opentelemetry.io/otel/sdk v1.21.0 // indirect + go.opentelemetry.io/otel/trace v1.21.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.14.0 // indirect diff --git a/go.sum b/go.sum index eb5e9d3582b..5263fce4c0a 100644 --- a/go.sum +++ b/go.sum @@ -85,8 +85,8 @@ github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk github.com/cockroachdb/tokenbucket v0.0.0-20230613231145-182959a1fad6 h1:DJK8W/iB+s/qkTtmXSrHA49lp5O3OsR7E6z4byOLy34= github.com/cockroachdb/tokenbucket v0.0.0-20230613231145-182959a1fad6/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= -github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go= -github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc= +github.com/containerd/containerd v1.7.11 h1:lfGKw3eU35sjV0aG2eYZTiwFEY1pCzxdzicHP3SZILw= +github.com/containerd/containerd v1.7.11/go.mod h1:5UluHxHTX2rdvYuZ5OJTC5m/KJNs0Zs9wVoJm9zf5ZE= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -161,8 +161,8 @@ github.com/elastic/go-lumber v0.1.2-0.20220819171948-335fde24ea0f h1:TsPpU5EAwlt github.com/elastic/go-lumber v0.1.2-0.20220819171948-335fde24ea0f/go.mod h1:HHaWnZamYKWsR9/eZNHqRHob8iQDKnchHmmskT/SKko= github.com/elastic/go-structform v0.0.10 h1:oy08o/Ih2hHTkNcRY/1HhaYvIp5z6t8si8gnCJPDo1w= github.com/elastic/go-structform v0.0.10/go.mod h1:CZWf9aIRYY5SuKSmOhtXScE5uQiLZNqAFnwKR4OrIM4= -github.com/elastic/go-sysinfo v1.11.1 h1:g9mwl05njS4r69TisC+vwHWTSKywZFYYUu3so3T/Lao= -github.com/elastic/go-sysinfo v1.11.1/go.mod h1:6KQb31j0QeWBDF88jIdWSxE8cwoOB9tO4Y4osN7Q70E= +github.com/elastic/go-sysinfo v1.11.2 h1:mcm4OSYVMyws6+n2HIVMGkln5HOpo5Ie1ZmbbNn0jg4= +github.com/elastic/go-sysinfo v1.11.2/go.mod h1:GKqR8bbMK/1ITnez9NIsIfXQr25aLhRJa7AfT8HpBFQ= github.com/elastic/go-ucfg v0.8.6 h1:stUeyh2goTgGX+/wb9gzKvTv0YB0231LTpKUgCKj4U0= github.com/elastic/go-ucfg v0.8.6/go.mod h1:4E8mPOLSUV9hQ7sgLEJ4bvt0KhMuDJa8joDT2QGAEKA= github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= @@ -196,8 +196,8 @@ github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclK github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= @@ -256,8 +256,9 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -357,9 +358,6 @@ github.com/libp2p/go-reuseport v0.0.2 h1:XSG94b1FJfGA01BUrT82imejHQyTxO4jEWqheyC github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0 h1:6E+4a0GO5zZEnZ81pIr0yLvtUWk2if982qA3F3QD6H4= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/magefile/mage v1.9.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= -github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= -github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= @@ -438,8 +436,8 @@ github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUo github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwaUuI= +github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -491,6 +489,7 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= @@ -533,22 +532,22 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.4 h1:TVcEjy/gs/DVk3aaBYNGm6B7uOkC6BTlDFRzyvBkMlw= -go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.4/go.mod h1:xWKnT5lKqFwNgT3nkWumBCXCt597cHkSuyIWWMXpv78= -go.elastic.co/apm/module/apmgorilla/v2 v2.4.4 h1:J/J5po3bdCJD6NhnJ+qjC6tvnVT3L/x2iun4RXSQjbc= -go.elastic.co/apm/module/apmgorilla/v2 v2.4.4/go.mod h1:TFgGtb72KWjXDBuTkX+SWwSZipqHJYTQ5qIVlKvZkyg= -go.elastic.co/apm/module/apmgrpc/v2 v2.4.4 h1:l4eMUb9H9Rj6CvQIbrVCDLnI0dkwEwTo6qeirBaBKus= -go.elastic.co/apm/module/apmgrpc/v2 v2.4.4/go.mod h1:SSYfue+dyE7QKnXsvYhNu49U6vH+iG+R3cOYlkX9/og= -go.elastic.co/apm/module/apmhttp/v2 v2.4.4 h1:BcJDLFztZByHiJRXXvAHY7bue9+vhzMLn2OBK5N8HDw= -go.elastic.co/apm/module/apmhttp/v2 v2.4.4/go.mod h1:694qsHWRPVkfYqQ224ZSeRx9Dt2FS/xF1igNBGkHi6o= -go.elastic.co/apm/module/apmotel/v2 v2.4.4 h1:DTIGTLiAZTjshCco2ljLnf35Q9m1MiWXBctCGKeQhzE= -go.elastic.co/apm/module/apmotel/v2 v2.4.4/go.mod h1:F14e5+BF+fmKs7jUH5i6C0tjzRUVrK4AbaNGw0z3mWk= -go.elastic.co/apm/module/apmzap/v2 v2.4.4 h1:t1Ml4R5KapIoCJzem3d/bEaG0X7Gij0QijFPuf8wba8= -go.elastic.co/apm/module/apmzap/v2 v2.4.4/go.mod h1:iYOVJKZEIWYr+VdD3IO0zjhC8j6my+v5vZNePNSgmIY= -go.elastic.co/apm/v2 v2.4.4 h1:KGbmUEtLNQ6sCFGpqTMhfRjqDOKP8IliO+efErKY5lU= -go.elastic.co/apm/v2 v2.4.4/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= -go.elastic.co/ecszap v1.0.1 h1:mBxqEJAEXBlpi5+scXdzL7LTFGogbuxipJC0KTZicyA= -go.elastic.co/ecszap v1.0.1/go.mod h1:SVjazT+QgNeHSGOCUHvRgN+ZRj5FkB7IXQQsncdF57A= +go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.7 h1:Gfp+wxPotE1s5X5ufn3W28zYaSunKEWE/x9Xo+5WzoI= +go.elastic.co/apm/module/apmelasticsearch/v2 v2.4.7/go.mod h1:taxw6rHuZtTF0p0DAv1xAg0fkvGprVIJu92JvbcgifU= +go.elastic.co/apm/module/apmgorilla/v2 v2.4.7 h1:KKVofZksT6fQ6SRd78t5B2Q0s7NXcQ2na99yFZ++QLw= +go.elastic.co/apm/module/apmgorilla/v2 v2.4.7/go.mod h1:1f5MubV9IprFxjZ4Q+j/nUtomBNncE0pO43/fBkPcGo= +go.elastic.co/apm/module/apmgrpc/v2 v2.4.7 h1:DfRlVWcp8gMMwhuZ6mb3ronGG/zr7xERLr4q3SaDqSQ= +go.elastic.co/apm/module/apmgrpc/v2 v2.4.7/go.mod h1:619rUMohJOS56ugiQ3gzQN00m2+AdSW05Y5zwc+fXoA= +go.elastic.co/apm/module/apmhttp/v2 v2.4.7 h1:IL+DRK8ODO791ai/l1g/8dk6E3VPomiV0jbRIxBWbqM= +go.elastic.co/apm/module/apmhttp/v2 v2.4.7/go.mod h1:Itj4PGNVO33Tpp/9UPf4A6pCezTmADRRi/ytLAGms24= +go.elastic.co/apm/module/apmotel/v2 v2.4.7 h1:Mg2AePM29uTutZzs+zySGUnzVuidadWX4icW/iPZQWs= +go.elastic.co/apm/module/apmotel/v2 v2.4.7/go.mod h1:nKceke8YXubeEZMIKkKKAc8xomkTopKD/p2jHL+xnAM= +go.elastic.co/apm/module/apmzap/v2 v2.4.7 h1:j96pvon+IhbFpzV4IflXwxOKD+l5rApyyN2ycarJG6Y= +go.elastic.co/apm/module/apmzap/v2 v2.4.7/go.mod h1:bi0A6hYYwModJI70LJDB8IHqw7291Ub16LRdEXNcOcU= +go.elastic.co/apm/v2 v2.4.7 h1:m5B2m59KgbiupuzFUkKqEvwHABIZxl2Ob0tCgc0XG9w= +go.elastic.co/apm/v2 v2.4.7/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= +go.elastic.co/ecszap v1.0.2 h1:iW5OGx8IiokiUzx/shD4AJCPFMC9uUtr7ycaiEIU++I= +go.elastic.co/ecszap v1.0.2/go.mod h1:dJkSlK3BTiwG/qXhCwe50Mz/jwu854vSip8sIeQhNZg= go.elastic.co/fastjson v1.3.0 h1:hJO3OsYIhiqiT4Fgu0ZxAECnKASbwgiS+LMW5oCopKs= go.elastic.co/fastjson v1.3.0/go.mod h1:K9vDh7O0ODsVKV2B5e2XYLY277QZaCbB3tS1SnARvko= go.opentelemetry.io/collector/consumer v0.81.0 h1:8R2iCrSzD7T0RtC2Wh4GXxDiqla2vNhDokGW6Bcrfas= @@ -578,9 +577,9 @@ go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= 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.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= diff --git a/internal/beatcmd/beat.go b/internal/beatcmd/beat.go index 2ce87c017ec..865adfb9521 100644 --- a/internal/beatcmd/beat.go +++ b/internal/beatcmd/beat.go @@ -102,6 +102,10 @@ func NewBeat(args BeatParams) (*Beat, error) { return nil, err } + beatName := cfg.Name + if beatName == "" { + beatName = hostname + } b := &Beat{ Beat: beat.Beat{ Info: beat.Info{ @@ -109,7 +113,7 @@ func NewBeat(args BeatParams) (*Beat, error) { ElasticLicensed: args.ElasticLicensed, IndexPrefix: "apm-server", Version: version.Version, - Name: hostname, + Name: beatName, Hostname: hostname, StartTime: time.Now(), EphemeralID: metricreport.EphemeralID(), @@ -260,12 +264,6 @@ func (b *Beat) Run(ctx context.Context) error { defer logp.Info("%s stopped.", b.Info.Beat) logger := logp.NewLogger("") - if runtime.GOARCH == "386" { - logger.Warn("" + - "deprecation notice: support for 32-bit system target " + - "architecture will be removed in an upcoming version", - ) - } if runtime.GOOS == "darwin" { if host, err := sysinfo.Host(); err != nil { diff --git a/internal/beatcmd/beat_test.go b/internal/beatcmd/beat_test.go index e676b645464..9285a018ae5 100644 --- a/internal/beatcmd/beat_test.go +++ b/internal/beatcmd/beat_test.go @@ -75,7 +75,7 @@ func TestRunMaxProcs(t *testing.T) { func TestRunnerParams(t *testing.T) { calls := make(chan RunnerParams, 1) - b := newBeat(t, "output.console.enabled: true", func(args RunnerParams) (Runner, error) { + b := newBeat(t, "output.console.enabled: true\nname: my-custom-name", func(args RunnerParams) (Runner, error) { calls <- args return newNopRunner(args), nil }) @@ -86,6 +86,7 @@ func TestRunnerParams(t *testing.T) { assert.Equal(t, "apm-server", args.Info.Beat) assert.Equal(t, version.Version, args.Info.Version) assert.True(t, args.Info.ElasticLicensed) + assert.Equal(t, "my-custom-name", b.Beat.Info.Name) assert.NotZero(t, args.Info.ID) assert.NotZero(t, args.Info.EphemeralID) assert.NotZero(t, args.Info.FirstStart) @@ -100,6 +101,7 @@ func TestRunnerParams(t *testing.T) { err := args.Config.Unpack(&m) require.NoError(t, err) assert.Equal(t, map[string]interface{}{ + "name": "my-custom-name", "output": map[string]interface{}{ "console": map[string]interface{}{ "enabled": true, diff --git a/internal/beatcmd/config.go b/internal/beatcmd/config.go index 48f76db5f9d..8b84263e6ca 100644 --- a/internal/beatcmd/config.go +++ b/internal/beatcmd/config.go @@ -35,6 +35,10 @@ type Config struct { // APMServer holds apm-server.* configuration. APMServer *config.C `config:"apm-server"` + // Allow overwriting beat.Info.Name. This is mainly for stack monitoring + // and reporting purposes. + Name string `config:"name"` + MaxProcs int `config:"max_procs"` GCPercent int `config:"gc_percent"` diff --git a/internal/beater/api/intake/handler_test.go b/internal/beater/api/intake/handler_test.go index cf15c2e7928..8cfa0c5a79d 100644 --- a/internal/beater/api/intake/handler_test.go +++ b/internal/beater/api/intake/handler_test.go @@ -64,14 +64,14 @@ func TestIntakeHandler(t *testing.T) { }(), code: http.StatusBadRequest, id: request.IDResponseErrorsValidate, }, - "BodyReader": { + "EmptyBody": { path: "errors.ndjson", r: func() *http.Request { req := httptest.NewRequest(http.MethodPost, "/", nil) req.Header.Set(headers.ContentType, "application/x-ndjson") return req }(), - code: http.StatusBadRequest, id: request.IDResponseErrorsValidate, + code: http.StatusAccepted, id: request.IDResponseValidAccepted, }, "CompressedBodyReaderDeflateInvalid": { path: "errors.ndjson", diff --git a/internal/beater/api/intake/test_approved/BodyReader.approved.json b/internal/beater/api/intake/test_approved/BodyReader.approved.json deleted file mode 100644 index fc636bfdcb3..00000000000 --- a/internal/beater/api/intake/test_approved/BodyReader.approved.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "accepted": 0, - "errors": [ - { - "message": "EOF while reading metadata" - } - ] -} diff --git a/internal/beater/api/intake/test_approved/EmptyBody.approved.json b/internal/beater/api/intake/test_approved/EmptyBody.approved.json new file mode 100644 index 00000000000..6b51efae3bf --- /dev/null +++ b/internal/beater/api/intake/test_approved/EmptyBody.approved.json @@ -0,0 +1,3 @@ +{ + "accepted": 0 +} diff --git a/internal/beater/api/intake/test_approved/FullQueue.approved.json b/internal/beater/api/intake/test_approved/FullQueue.approved.json index ce2dd7e6357..c163b675ec7 100644 --- a/internal/beater/api/intake/test_approved/FullQueue.approved.json +++ b/internal/beater/api/intake/test_approved/FullQueue.approved.json @@ -2,7 +2,7 @@ "accepted": 0, "errors": [ { - "message": "queue is full" + "message": "cannot handle stream: cannot process batch: queue is full" } ] } diff --git a/internal/beater/api/intake/test_approved/FullQueueLegacy.approved.json b/internal/beater/api/intake/test_approved/FullQueueLegacy.approved.json index ce2dd7e6357..c163b675ec7 100644 --- a/internal/beater/api/intake/test_approved/FullQueueLegacy.approved.json +++ b/internal/beater/api/intake/test_approved/FullQueueLegacy.approved.json @@ -2,7 +2,7 @@ "accepted": 0, "errors": [ { - "message": "queue is full" + "message": "cannot handle stream: cannot process batch: queue is full" } ] } diff --git a/internal/beater/api/intake/test_approved/integration/rum/TestRUMHandler_KillSwitchMiddleware/On.approved.json b/internal/beater/api/intake/test_approved/integration/rum/TestRUMHandler_KillSwitchMiddleware/On.approved.json deleted file mode 100644 index fc636bfdcb3..00000000000 --- a/internal/beater/api/intake/test_approved/integration/rum/TestRUMHandler_KillSwitchMiddleware/On.approved.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "accepted": 0, - "errors": [ - { - "message": "EOF while reading metadata" - } - ] -} diff --git a/internal/beater/api/intake/test_approved/integration/rum/TestRUMHandler_NoAuthorizationRequired.approved.json b/internal/beater/api/intake/test_approved/integration/rum/TestRUMHandler_NoAuthorizationRequired.approved.json deleted file mode 100644 index fc636bfdcb3..00000000000 --- a/internal/beater/api/intake/test_approved/integration/rum/TestRUMHandler_NoAuthorizationRequired.approved.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "accepted": 0, - "errors": [ - { - "message": "EOF while reading metadata" - } - ] -} diff --git a/internal/beater/api/mux_intake_rum_test.go b/internal/beater/api/mux_intake_rum_test.go index 946a6dfc373..f50f82d915a 100644 --- a/internal/beater/api/mux_intake_rum_test.go +++ b/internal/beater/api/mux_intake_rum_test.go @@ -75,11 +75,7 @@ func TestRUMHandler_NoAuthorizationRequired(t *testing.T) { cfg.AgentAuth.SecretToken = "1234" rec, err := requestToMuxerWithPattern(cfg, IntakeRUMPath) require.NoError(t, err) - assert.NotEqual(t, http.StatusUnauthorized, rec.Code) - - expected, err := os.ReadFile(approvalPathIntakeRUM(t.Name()) + ".approved.json") - require.NoError(t, err) - assert.JSONEq(t, string(expected), rec.Body.String()) + assert.Equal(t, http.StatusAccepted, rec.Code) } func TestRUMHandler_KillSwitchMiddleware(t *testing.T) { @@ -96,11 +92,7 @@ func TestRUMHandler_KillSwitchMiddleware(t *testing.T) { t.Run("On", func(t *testing.T) { rec, err := requestToMuxerWithPattern(cfgEnabledRUM(), IntakeRUMPath) require.NoError(t, err) - assert.NotEqual(t, http.StatusForbidden, rec.Code) - - expected, err := os.ReadFile(approvalPathIntakeRUM(t.Name()) + ".approved.json") - require.NoError(t, err) - assert.JSONEq(t, string(expected), rec.Body.String()) + assert.Equal(t, http.StatusAccepted, rec.Code) }) } diff --git a/internal/beater/beater.go b/internal/beater/beater.go index f6c7f5e4d53..aee736e3fa1 100644 --- a/internal/beater/beater.go +++ b/internal/beater/beater.go @@ -700,10 +700,15 @@ func (s *Runner) newFinalBatchProcessor( } esConfig.FlushInterval = time.Second esConfig.Config = elasticsearch.DefaultConfig() + esConfig.MaxIdleConnsPerHost = 10 if err := s.elasticsearchOutputConfig.Unpack(&esConfig); err != nil { return nil, nil, err } + if esConfig.MaxRequests != 0 { + esConfig.MaxIdleConnsPerHost = esConfig.MaxRequests + } + var flushBytes int if esConfig.FlushBytes != "" { b, err := humanize.ParseBytes(esConfig.FlushBytes) diff --git a/internal/beater/beatertest/output.go b/internal/beater/beatertest/output.go index 64fe7a6a230..a72dcf249a9 100644 --- a/internal/beater/beatertest/output.go +++ b/internal/beater/beatertest/output.go @@ -90,7 +90,7 @@ func makeNullOutput( _ *agentconfig.C, ) (outputs.Group, error) { client := nullOutput{observer: observer} - return outputs.Success(1, 0, client) + return outputs.Success(agentconfig.Namespace{}, 1, 0, client) } func (nullOutput) String() string { diff --git a/internal/beater/otlp/grpc.go b/internal/beater/otlp/grpc.go index 5c97ce7d55b..82722d1c92d 100644 --- a/internal/beater/otlp/grpc.go +++ b/internal/beater/otlp/grpc.go @@ -95,8 +95,13 @@ func (s *tracesService) Export(ctx context.Context, req ptraceotlp.ExportRequest if td.SpanCount() == 0 { return ptraceotlp.NewExportResponse(), nil } - err := s.consumer.ConsumeTraces(ctx, td) - return ptraceotlp.NewExportResponse(), err + resp := ptraceotlp.NewExportResponse() + result, err := s.consumer.ConsumeTracesWithResult(ctx, td) + if err == nil && result.RejectedSpans > 0 { + resp.PartialSuccess().SetRejectedSpans(result.RejectedSpans) + resp.PartialSuccess().SetErrorMessage(result.ErrorMessage) + } + return resp, err } type metricsService struct { @@ -109,8 +114,13 @@ func (s *metricsService) Export(ctx context.Context, req pmetricotlp.ExportReque if md.DataPointCount() == 0 { return pmetricotlp.NewExportResponse(), nil } - err := s.consumer.ConsumeMetrics(ctx, md) - return pmetricotlp.NewExportResponse(), err + resp := pmetricotlp.NewExportResponse() + result, err := s.consumer.ConsumeMetricsWithResult(ctx, md) + if err == nil && result.RejectedDataPoints > 0 { + resp.PartialSuccess().SetRejectedDataPoints(result.RejectedDataPoints) + resp.PartialSuccess().SetErrorMessage(result.ErrorMessage) + } + return resp, err } type logsService struct { @@ -123,6 +133,11 @@ func (s *logsService) Export(ctx context.Context, req plogotlp.ExportRequest) (p if ld.LogRecordCount() == 0 { return plogotlp.NewExportResponse(), nil } - err := s.consumer.ConsumeLogs(ctx, ld) - return plogotlp.NewExportResponse(), err + resp := plogotlp.NewExportResponse() + result, err := s.consumer.ConsumeLogsWithResult(ctx, ld) + if err == nil && result.RejectedLogRecords > 0 { + resp.PartialSuccess().SetRejectedLogRecords(result.RejectedLogRecords) + resp.PartialSuccess().SetErrorMessage(result.ErrorMessage) + } + return resp, err } diff --git a/internal/beater/otlp/http.go b/internal/beater/otlp/http.go index ecba68a5248..aaf9a075066 100644 --- a/internal/beater/otlp/http.go +++ b/internal/beater/otlp/http.go @@ -78,11 +78,18 @@ func (h HTTPHandlers) HandleTraces(w http.ResponseWriter, r *http.Request) { h.writeError(w, err, http.StatusBadRequest) return } - if err := h.consumer.ConsumeTraces(r.Context(), req.Traces()); err != nil { + var result otlp.ConsumeTracesResult + var err error + if result, err = h.consumer.ConsumeTracesWithResult(r.Context(), req.Traces()); err != nil { h.writeError(w, err, http.StatusInternalServerError) return } - if err := h.writeResponse(w, ptraceotlp.NewExportResponse()); err != nil { + resp := ptraceotlp.NewExportResponse() + if result.RejectedSpans > 0 { + resp.PartialSuccess().SetRejectedSpans(result.RejectedSpans) + resp.PartialSuccess().SetErrorMessage(result.ErrorMessage) + } + if err := h.writeResponse(w, resp); err != nil { h.writeError(w, err, http.StatusInternalServerError) return } @@ -96,11 +103,18 @@ func (h HTTPHandlers) HandleMetrics(w http.ResponseWriter, r *http.Request) { h.writeError(w, err, http.StatusBadRequest) return } - if err := h.consumer.ConsumeMetrics(r.Context(), req.Metrics()); err != nil { + var result otlp.ConsumeMetricsResult + var err error + if result, err = h.consumer.ConsumeMetricsWithResult(r.Context(), req.Metrics()); err != nil { h.writeError(w, err, http.StatusInternalServerError) return } - if err := h.writeResponse(w, pmetricotlp.NewExportResponse()); err != nil { + resp := pmetricotlp.NewExportResponse() + if result.RejectedDataPoints > 0 { + resp.PartialSuccess().SetRejectedDataPoints(result.RejectedDataPoints) + resp.PartialSuccess().SetErrorMessage(result.ErrorMessage) + } + if err := h.writeResponse(w, resp); err != nil { h.writeError(w, err, http.StatusInternalServerError) return } @@ -114,11 +128,18 @@ func (h HTTPHandlers) HandleLogs(w http.ResponseWriter, r *http.Request) { h.writeError(w, err, http.StatusBadRequest) return } - if err := h.consumer.ConsumeLogs(r.Context(), req.Logs()); err != nil { + var result otlp.ConsumeLogsResult + var err error + if result, err = h.consumer.ConsumeLogsWithResult(r.Context(), req.Logs()); err != nil { h.writeError(w, err, http.StatusInternalServerError) return } - if err := h.writeResponse(w, plogotlp.NewExportResponse()); err != nil { + resp := plogotlp.NewExportResponse() + if result.RejectedLogRecords > 0 { + resp.PartialSuccess().SetRejectedLogRecords(result.RejectedLogRecords) + resp.PartialSuccess().SetErrorMessage(result.ErrorMessage) + } + if err := h.writeResponse(w, resp); err != nil { h.writeError(w, err, http.StatusInternalServerError) return } diff --git a/internal/elasticsearch/config.go b/internal/elasticsearch/config.go index 3c493e75a20..8b9e6a423eb 100644 --- a/internal/elasticsearch/config.go +++ b/internal/elasticsearch/config.go @@ -44,18 +44,19 @@ var ( // Config holds all configurable fields that are used to create a Client type Config struct { - Hosts Hosts `config:"hosts" validate:"required"` - Protocol string `config:"protocol"` - Path string `config:"path"` - ProxyURL string `config:"proxy_url"` - ProxyDisable bool `config:"proxy_disable"` - Timeout time.Duration `config:"timeout"` - TLS *tlscommon.Config `config:"ssl"` - Username string `config:"username"` - Password string `config:"password"` - APIKey string `config:"api_key"` - Headers map[string]string `config:"headers"` - MaxRetries int `config:"max_retries"` + Hosts Hosts `config:"hosts" validate:"required"` + Protocol string `config:"protocol"` + Path string `config:"path"` + ProxyURL string `config:"proxy_url"` + ProxyDisable bool `config:"proxy_disable"` + Timeout time.Duration `config:"timeout"` + TLS *tlscommon.Config `config:"ssl"` + Username string `config:"username"` + Password string `config:"password"` + APIKey string `config:"api_key"` + Headers map[string]string `config:"headers"` + MaxRetries int `config:"max_retries"` + MaxIdleConnsPerHost int `config:",ignore"` // CompressionLevel holds the gzip compression level used when bulk indexing // with go-docappender; it is otherwise ignored. @@ -145,9 +146,10 @@ func NewHTTPTransport(cfg *Config) (*http.Transport, error) { dialer := transport.NetDialer(cfg.Timeout) tlsDialer := transport.TLSDialer(dialer, tlsConfig, cfg.Timeout) return &http.Transport{ - Proxy: proxy, - Dial: dialer.Dial, - DialTLS: tlsDialer.Dial, - TLSClientConfig: tlsConfig.ToConfig(), + Proxy: proxy, + Dial: dialer.Dial, + DialTLS: tlsDialer.Dial, + TLSClientConfig: tlsConfig.ToConfig(), + MaxIdleConnsPerHost: cfg.MaxIdleConnsPerHost, }, nil } diff --git a/internal/elasticsearch/config_test.go b/internal/elasticsearch/config_test.go index 21c17cdef73..3593bf02336 100644 --- a/internal/elasticsearch/config_test.go +++ b/internal/elasticsearch/config_test.go @@ -146,10 +146,11 @@ func TestBeatsConfigSynced(t *testing.T) { // TODO(simitt): take a closer look at ES ouput changes in libbeat // introduced with https://github.com/elastic/beats/pull/25219 localStructExceptions := map[string]interface{}{ - "ssl": nil, - "timeout": nil, - "proxy_disable": nil, - "proxy_url": nil, + "ssl": nil, + "timeout": nil, + "proxy_disable": nil, + "proxy_url": nil, + "maxidleconnsperhost": nil, } for name, localStructField := range localStructFields { if _, ok := localStructExceptions[name]; ok { @@ -170,6 +171,7 @@ func TestBeatsConfigSynced(t *testing.T) { knownUnhandled := []string{ "backoff", // we have our own version with its own type + "queue", "bulk_max_size", "escape_html", // TODO Kerberos auth (https://github.com/elastic/apm-server/issues/3794) diff --git a/internal/sourcemap/processor.go b/internal/sourcemap/processor.go index 6b2174da390..003ce3f30d1 100644 --- a/internal/sourcemap/processor.go +++ b/internal/sourcemap/processor.go @@ -57,10 +57,10 @@ func (p BatchProcessor) ProcessBatch(ctx context.Context, batch *modelpb.Batch) if event.GetService().GetName() == "" || event.GetService().GetVersion() == "" { continue } - switch { - case event.Span != nil: + if event.Span != nil { p.processStacktraceFrames(ctx, event.Service, event.Span.Stacktrace...) - case event.Error != nil: + } + if event.Error != nil { if event.Error.Log != nil { p.processStacktraceFrames(ctx, event.Service, event.Error.Log.Stacktrace...) } diff --git a/packaging.mk b/packaging.mk index de5f373a9d8..5a72f414f27 100644 --- a/packaging.mk +++ b/packaging.mk @@ -106,25 +106,21 @@ WINDOWS_PACKAGE_FILES := \ # so we need to create arch-specific nfpm configuration files. build/nfpm-amd64.yml: PACKAGE_GOARCH=amd64 build/nfpm-arm64.yml: PACKAGE_GOARCH=arm64 -build/nfpm-386.yml: PACKAGE_GOARCH=386 build/nfpm-%.yml: packaging/nfpm.yml sed 's/$${GOARCH}/$(PACKAGE_GOARCH)/' $< | sed 's/$${APM_SERVER_VERSION}/${APM_SERVER_VERSION}/' > $@ -DEB_ARCH := i386 amd64 arm64 +DEB_ARCH := amd64 arm64 DEBS := $(patsubst %, $(DISTDIR)/apm-server-$(APM_SERVER_VERSION)-%.deb, $(DEB_ARCH)) DEBS += $(patsubst %, $(DISTDIR)/apm-server-$(APM_SERVER_VERSION)-SNAPSHOT-%.deb, $(DEB_ARCH)) -DEBS_386 := $(filter %-i386.deb, $(DEBS)) DEBS_AMD64 := $(filter %-amd64.deb, $(DEBS)) DEBS_ARM64 := $(filter %-arm64.deb, $(DEBS)) -RPM_ARCH := i686 x86_64 aarch64 +RPM_ARCH := x86_64 aarch64 RPMS := $(patsubst %, $(DISTDIR)/apm-server-$(APM_SERVER_VERSION)-%.rpm, $(RPM_ARCH)) RPMS += $(patsubst %, $(DISTDIR)/apm-server-$(APM_SERVER_VERSION)-SNAPSHOT-%.rpm, $(RPM_ARCH)) -RPMS_386 := $(filter %-i686.rpm, $(RPMS)) RPMS_AMD64 := $(filter %-x86_64.rpm, $(RPMS)) RPMS_ARM64 := $(filter %-aarch64.rpm, $(RPMS)) -$(DEBS_386) $(RPMS_386): $(NFPM) $(COMMON_PACKAGE_FILES) build/apm-server-linux-386 build/nfpm-386.yml $(DEBS_ARM64) $(RPMS_ARM64): $(NFPM) $(COMMON_PACKAGE_FILES) build/apm-server-linux-arm64 build/nfpm-arm64.yml $(DEBS_AMD64) $(RPMS_AMD64): $(NFPM) $(COMMON_PACKAGE_FILES) build/apm-server-linux-amd64 build/nfpm-amd64.yml @@ -136,19 +132,16 @@ $(DEBS_AMD64) $(RPMS_AMD64): $(NFPM) $(COMMON_PACKAGE_FILES) build/apm-server-li # # ARCHIVES_DIR holds intermediate directories created for building tgz and zip. ARCHIVES_DIR := build/archives -ARCHIVE_PLATFORMS := darwin-x86_64 linux-x86_64 linux-x86 linux-arm64 windows-x86_64 +ARCHIVE_PLATFORMS := darwin-x86_64 linux-x86_64 linux-arm64 windows-x86_64 ARCHIVE_PREFIX := $(ARCHIVES_DIR)/apm-server-$(APM_SERVER_VERSION) ARCHIVES := $(addprefix $(ARCHIVE_PREFIX)-, $(ARCHIVE_PLATFORMS)) ARCHIVES += $(addprefix $(ARCHIVE_PREFIX)-SNAPSHOT-, $(ARCHIVE_PLATFORMS)) $(ARCHIVE_PREFIX)-darwin-x86_64 $(ARCHIVE_PREFIX)-SNAPSHOT-darwin-x86_64: build/apm-server-darwin-amd64 $(COMMON_PACKAGE_FILES) $(ARCHIVE_PREFIX)-linux-x86_64 $(ARCHIVE_PREFIX)-SNAPSHOT-linux-x86_64: build/apm-server-linux-amd64 $(COMMON_PACKAGE_FILES) -$(ARCHIVE_PREFIX)-linux-x86 $(ARCHIVE_PREFIX)-SNAPSHOT-linux-x86: build/apm-server-linux-386 $(COMMON_PACKAGE_FILES) $(ARCHIVE_PREFIX)-linux-arm64 $(ARCHIVE_PREFIX)-SNAPSHOT-linux-arm64: build/apm-server-linux-arm64 $(COMMON_PACKAGE_FILES) $(ARCHIVE_PREFIX)-windows-x86_64 $(ARCHIVE_PREFIX)-SNAPSHOT-windows-x86_64: \ build/apm-server-windows-amd64.exe $(COMMON_PACKAGE_FILES) $(WINDOWS_PACKAGE_FILES) -$(ARCHIVE_PREFIX)-windows-x86 $(ARCHIVE_PREFIX)-SNAPSHOT-windows-x86: \ - build/apm-server-windows-386.exe $(COMMON_PACKAGE_FILES) $(WINDOWS_PACKAGE_FILES) $(ARCHIVE_PREFIX)-%: @rm -fr $@ && mkdir -p $@ @@ -182,15 +175,11 @@ $(DISTDIR)/%-docker-build-context.tar.gz: $(ARCHIVES_DIR)/%-docker-build-context PACKAGE_SUFFIXES := \ darwin-x86_64.tar.gz \ linux-x86_64.tar.gz \ - linux-x86.tar.gz \ linux-arm64.tar.gz \ windows-x86_64.zip \ - windows-x86.zip \ amd64.deb \ - i386.deb \ arm64.deb \ x86_64.rpm \ - i686.rpm \ aarch64.rpm build/dependencies-$(APM_SERVER_VERSION)-SNAPSHOT.csv: build/dependencies-$(APM_SERVER_VERSION).csv diff --git a/packaging/docker/Dockerfile b/packaging/docker/Dockerfile index bc9d7111839..b0d0385a987 100644 --- a/packaging/docker/Dockerfile +++ b/packaging/docker/Dockerfile @@ -1,4 +1,4 @@ -ARG BASE_IMAGE=ubuntu:20.04 +ARG BASE_IMAGE=ubuntu:22.04 # Build the apm-server binary. The golang image version is kept # up to date with go.mod by Makefile. diff --git a/packaging/ironbank/hardening_manifest.yaml b/packaging/ironbank/hardening_manifest.yaml index d456b73c335..c30bc656bd4 100644 --- a/packaging/ironbank/hardening_manifest.yaml +++ b/packaging/ironbank/hardening_manifest.yaml @@ -53,9 +53,6 @@ resources: # List of project maintainers maintainers: - - email: "nassim.kammah@elastic.co" - name: "Nassim Kammah" - username: "nassim.kammah" - email: "ivan.fernandez@elastic.co" name: "Ivan Fernandez Calvo" username: "ivan.fernandez" diff --git a/release.mk b/release.mk index 077a246f487..c789e630a98 100644 --- a/release.mk +++ b/release.mk @@ -123,7 +123,6 @@ patch-release: $(MAKE) update-version-makefile VERSION=$(PROJECT_MAJOR_VERSION)\.$(PROJECT_MINOR_VERSION) $(MAKE) update-version-legacy VERSION=$(NEXT_RELEASE) PREVIOUS_VERSION=$(CURRENT_RELEASE) $(MAKE) create-commit COMMIT_MESSAGE="docs: update docs versions to $(CURRENT_RELEASE)" - @echo "INFO: Push changes to $(PROJECT_OWNER)/apm-server and create the relevant Pull Requests" $(MAKE) create-pull-request BRANCH=update-$(NEXT_RELEASE) TARGET_BRANCH=$(RELEASE_BRANCH) TITLE="$(RELEASE_VERSION): update docs" BODY="Merge before the final Release build." @@ -208,7 +207,7 @@ update-mergify: .PHONY: update-version update-version: VERSION=$${VERSION} update-version: - echo ">> update-version" + @echo ">> update-version" if [ -f "cmd/intake-receiver/version.go" ]; then \ $(SED) -E -e 's#(version[[:blank:]]*)=[[:blank:]]*"[0-9]+\.[0-9]+\.[0-9]+#\1= "$(VERSION)#g' cmd/intake-receiver/version.go; \ fi diff --git a/systemtest/agentconfig_test.go b/systemtest/agentconfig_test.go index 62c8758a6cd..8cd2a8683a7 100644 --- a/systemtest/agentconfig_test.go +++ b/systemtest/agentconfig_test.go @@ -139,7 +139,7 @@ func TestAgentConfig(t *testing.T) { require.Len(t, result.Hits.Hits, 2) etag := gjson.GetBytes(result.Hits.Hits[0].RawSource, "labels.etag") assert.Equal(t, etag1, strconv.Quote(etag.String())) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits, "@timestamp", "labels.etag") + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits, "@timestamp", "labels.etag") } func queryAgentConfig(t testing.TB, serverURL, serviceName, serviceEnvironment, etag string) (map[string]string, *http.Response, map[string]interface{}) { diff --git a/systemtest/aggregation_test.go b/systemtest/aggregation_test.go index 53e50f88f8c..58658ab22ef 100644 --- a/systemtest/aggregation_test.go +++ b/systemtest/aggregation_test.go @@ -78,7 +78,7 @@ func TestTransactionAggregation(t *testing.T) { result := estest.ExpectMinDocs(t, systemtest.Elasticsearch, 9, "metrics-apm.transaction*", espoll.ExistsQuery{Field: "transaction.duration.histogram"}, ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) // Make sure the _doc_count field is added such that aggregations return // the appropriate per-bucket doc_count values. @@ -140,7 +140,7 @@ func TestTransactionAggregationShutdown(t *testing.T) { result := estest.ExpectMinDocs(t, systemtest.Elasticsearch, 3, "metrics-apm.transaction*", espoll.ExistsQuery{Field: "transaction.duration.histogram"}, ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) } func TestServiceDestinationAggregation(t *testing.T) { @@ -176,7 +176,16 @@ func TestServiceDestinationAggregation(t *testing.T) { result := estest.ExpectDocs(t, systemtest.Elasticsearch, "metrics-apm.service_destination*", espoll.ExistsQuery{Field: "span.destination.service.response_time.count"}, ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) + + // _doc_count is not returned in fields, it is only visible in _source and + // in the results of aggregations. + // + // TODO(axw) we should use an aggregation, and check the resturned doc_counts. + for _, hit := range result.Hits.Hits { + docCount := hit.Source["_doc_count"].(float64) + assert.Equal(t, 5.0, docCount) + } } func TestTransactionAggregationLabels(t *testing.T) { @@ -252,7 +261,16 @@ func TestServiceTransactionMetricsAggregation(t *testing.T) { result := estest.ExpectMinDocs(t, systemtest.Elasticsearch, 2, "metrics-apm.service_transaction*", espoll.TermQuery{Field: "metricset.name", Value: "service_transaction"}, ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) + + // _doc_count is not returned in fields, it is only visible in _source and + // in the results of aggregations. + // + // TODO(axw) we should use an aggregation, and check the resturned doc_counts. + for _, hit := range result.Hits.Hits { + docCount := hit.Source["_doc_count"].(float64) + assert.Equal(t, 2.0, docCount) + } } func TestServiceTransactionMetricsAggregationLabels(t *testing.T) { @@ -371,7 +389,7 @@ func TestServiceSummaryMetricsAggregation(t *testing.T) { result := estest.ExpectDocs(t, systemtest.Elasticsearch, "metrics-apm.service_summary*", espoll.TermQuery{Field: "metricset.name", Value: "service_summary"}, ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) } func TestServiceSummaryMetricsAggregationOverflow(t *testing.T) { @@ -416,7 +434,7 @@ func TestServiceSummaryMetricsAggregationOverflow(t *testing.T) { espoll.TermQuery{Field: "metricset.name", Value: "service_summary"}, ) // Ignore timestamp because overflow bucket uses time.Now() - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits, "@timestamp") + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits, "@timestamp") } func TestNonDefaultRollupIntervalHiddenDataStream(t *testing.T) { diff --git a/systemtest/approvals/TestAgentConfig.approved.json b/systemtest/approvals/TestAgentConfig.approved.json index 8fd3a40e23b..561791606c4 100644 --- a/systemtest/approvals/TestAgentConfig.approved.json +++ b/systemtest/approvals/TestAgentConfig.approved.json @@ -1,50 +1,72 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent_config_applied": 1, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "labels": { - "etag": "dynamic" - }, - "metricset": { - "name": "agent_config" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - } - }, - { - "@timestamp": "dynamic", - "agent_config_applied": 1, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "labels": { - "etag": "dynamic" - }, - "metricset": { - "name": "agent_config" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent_config_applied": [ + 1 + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "labels.etag": [ + "dynamic" + ], + "metricset.name": [ + "agent_config" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent_config_applied": [ + 1 + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "labels.etag": [ + "dynamic" + ], + "metricset.name": [ + "agent_config" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ] + } +] diff --git a/systemtest/approvals/TestApprovedMetrics.approved.json b/systemtest/approvals/TestApprovedMetrics.approved.json index 2ff6e6c5087..3ee806a691b 100644 --- a/systemtest/approvals/TestApprovedMetrics.approved.json +++ b/systemtest/approvals/TestApprovedMetrics.approved.json @@ -1,229 +1,280 @@ -{ - "events": [ - { - "@timestamp": "2017-05-30T18:53:41.364Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "go": { - "memstats": { - "heap": { - "sys": { - "bytes": 6520832 - } - } - } - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.366Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system": { - "process": { - "cgroup": { - "memory": { - "mem": { - "limit": { - "bytes": 2048 - }, - "usage": { - "bytes": 1024 - } - } - } - } - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.367Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system": { - "process": { - "cgroup": { - "cpu": { - "cfs": { - "period": { - "us": 1024 - }, - "quota": { - "us": 2048 - } - }, - "id": 2048, - "stats": { - "periods": 2048, - "throttled": { - "ns": 2048, - "periods": 2048 - } - } - }, - "cpuacct": { - "id": 2048, - "total": { - "ns": 2048 - } - } - } - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.368Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "latency_distribution": { +[ + { + "@timestamp": [ + "2017-05-30T18:53:41.364Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "go.memstats.heap.sys.bytes": [ + 6520832 + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.366Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.process.cgroup.memory.mem.limit.bytes": [ + 2048 + ], + "system.process.cgroup.memory.mem.usage.bytes": [ + 1024 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.367Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.process.cgroup.cpu.cfs.period.us": [ + 1024 + ], + "system.process.cgroup.cpu.cfs.quota.us": [ + 2048 + ], + "system.process.cgroup.cpu.id": [ + 2048 + ], + "system.process.cgroup.cpu.stats.periods": [ + 2048 + ], + "system.process.cgroup.cpu.stats.throttled.ns": [ + 2048 + ], + "system.process.cgroup.cpu.stats.throttled.periods": [ + 2048 + ], + "system.process.cgroup.cpuacct.id": [ + 2048 + ], + "system.process.cgroup.cpuacct.total.ns": [ + 2048 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.368Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "latency_distribution": [ + { "counts": [ 1, 2, @@ -234,172 +285,245 @@ 2.2, 3.3 ] - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.369Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "faas": { - "billed_duration": 183, - "coldstart": true, - "coldstart_duration": 422.97, - "duration": 182.43, - "execution": "6f7f0961f83442118a7af6fe80b88d56", - "id": "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime", - "timeout": 5000 - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system": { - "memory": { - "actual": { - "free": 54525952 - }, - "total": 134217728 - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "some": "abc", - "success": "true", - "tag1": "one" - }, - "metricset": { - "name": "span_breakdown" - }, - "numeric_labels": { - "code": 200, - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "span": { - "self_time": { - "count": 1, - "sum": { - "us": 633 - } - }, - "subtype": "mysql", - "type": "db" - }, - "transaction": { - "name": "GET /", - "type": "request" - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" } - } - ] -} + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.369Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "faas.billed_duration": [ + 183 + ], + "faas.coldstart": [ + true + ], + "faas.coldstart_duration": [ + 422.97 + ], + "faas.duration": [ + 182.43 + ], + "faas.execution": [ + "6f7f0961f83442118a7af6fe80b88d56" + ], + "faas.id": [ + "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" + ], + "faas.timeout": [ + 5000 + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.memory.actual.free": [ + 54525952 + ], + "system.memory.total": [ + 134217728 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.some": [ + "abc" + ], + "labels.success": [ + "true" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "span_breakdown" + ], + "numeric_labels.code": [ + 200 + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "span.self_time.count": [ + 1 + ], + "span.self_time.sum.us": [ + 633 + ], + "span.subtype": [ + "mysql" + ], + "span.type": [ + "db" + ], + "transaction.name": [ + "GET /" + ], + "transaction.type": [ + "request" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + } +] diff --git a/systemtest/approvals/TestApprovedMetrics/data_streams_disabled.approved.json b/systemtest/approvals/TestApprovedMetrics/data_streams_disabled.approved.json index 4385674a77a..fec542b689b 100644 --- a/systemtest/approvals/TestApprovedMetrics/data_streams_disabled.approved.json +++ b/systemtest/approvals/TestApprovedMetrics/data_streams_disabled.approved.json @@ -1,287 +1,427 @@ -{ - "events": [ - { - "@timestamp": "2017-05-30T18:53:41.364Z", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic" - }, - "go.memstats.heap.sys.bytes": 6520832, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one", - "tag2": 2 - }, - "metricset.name": "app", - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.366Z", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one", - "tag2": 2 - }, - "metricset.name": "app", - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system.process.cgroup.memory.mem.limit.bytes": 2048, - "system.process.cgroup.memory.mem.usage.bytes": 1024, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.366Z", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one", - "tag2": 2 - }, - "metricset.name": "app", - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system.process.cgroup.cpu.cfs.period.us": 1024, - "system.process.cgroup.cpu.cfs.quota.us": 2048, - "system.process.cgroup.cpu.id": 2048, - "system.process.cgroup.cpu.stats.periods": 2048, - "system.process.cgroup.cpu.stats.throttled.ns": 2048, - "system.process.cgroup.cpu.stats.throttled.periods": 2048, - "system.process.cgroup.cpuacct.id": 2048, - "system.process.cgroup.cpuacct.total.ns": 2048, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.366Z", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one", - "tag2": 2 - }, - "latency_distribution": { - "counts": [ - 1, - 2, - 3 - ], - "values": [ - 1.1, - 2.2, - 3.3 - ] - }, - "metricset.name": "app", - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:42.281Z", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "code": 200, - "some": "abc", - "success": true, - "tag1": "one", - "tag2": 2 - }, - "metricset.name": "span_breakdown", - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "span": { - "self_time": { - "count": 1, - "sum.us": 633 - }, - "subtype": "mysql", - "type": "db" - }, - "transaction": { - "name": "GET /", - "type": "request" - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - } - ] -} +[ + { + "@timestamp": [ + "2017-05-30T18:53:41.364Z" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "go.memstats.heap.sys.bytes": [ + 6520832 + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "labels.tag2": [ + 2 + ], + "metricset.name": [ + "app" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "processor.name": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.366Z" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "labels.tag2": [ + 2 + ], + "metricset.name": [ + "app" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "processor.name": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.process.cgroup.memory.mem.limit.bytes": [ + 2048 + ], + "system.process.cgroup.memory.mem.usage.bytes": [ + 1024 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.366Z" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "labels.tag2": [ + 2 + ], + "metricset.name": [ + "app" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "processor.name": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.process.cgroup.cpu.cfs.period.us": [ + 1024 + ], + "system.process.cgroup.cpu.cfs.quota.us": [ + 2048 + ], + "system.process.cgroup.cpu.id": [ + 2048 + ], + "system.process.cgroup.cpu.stats.periods": [ + 2048 + ], + "system.process.cgroup.cpu.stats.throttled.ns": [ + 2048 + ], + "system.process.cgroup.cpu.stats.throttled.periods": [ + 2048 + ], + "system.process.cgroup.cpuacct.id": [ + 2048 + ], + "system.process.cgroup.cpuacct.total.ns": [ + 2048 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.366Z" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "labels.tag2": [ + 2 + ], + "latency_distribution.counts": [ + 1, + 2, + 3 + ], + "latency_distribution.values": [ + 1.1, + 2.2, + 3.3 + ], + "metricset.name": [ + "app" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "processor.name": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:42.281Z" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.code": [ + 200 + ], + "labels.some": [ + "abc" + ], + "labels.success": [ + true + ], + "labels.tag1": [ + "one" + ], + "labels.tag2": [ + 2 + ], + "metricset.name": [ + "span_breakdown" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "processor.name": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "span.self_time.count": [ + 1 + ], + "span.self_time.sum.us": [ + 633 + ], + "span.subtype": [ + "mysql" + ], + "span.type": [ + "db" + ], + "transaction.name": [ + "GET /" + ], + "transaction.type": [ + "request" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ] + } +] diff --git a/systemtest/approvals/TestCompressedSpans.approved.json b/systemtest/approvals/TestCompressedSpans.approved.json index c2da0651e1f..cec7f4a25f1 100644 --- a/systemtest/approvals/TestCompressedSpans.approved.json +++ b/systemtest/approvals/TestCompressedSpans.approved.json @@ -1,183 +1,255 @@ -{ - "events": [ - { - "@timestamp": "1970-01-01T00:00:00.000Z", - "agent": { - "name": "go", - "version": "0.0.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "i386", - "hostname": "beowulf", - "ip": [ - "127.0.0.1" - ], - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "0000000000000001" - }, - "process": { - "pid": 1, - "title": "systemtest.test" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - }, - "target": { - "type": "redis" - } - }, - "span": { - "composite": { - "compression_strategy": "same_kind", - "count": 50, - "sum": { - "us": 50000 - } - }, - "destination": { - "service": { - "resource": "redis", - "type": "db" - } - }, - "duration": { - "us": 50000 - }, - "id": "0000000000000002", - "name": "Calls to redis", - "representative_count": 1, - "subtype": "redis", - "type": "db" - }, - "trace": { - "id": "01000000000000000000000000000000" - }, - "transaction": { - "id": "0000000000000001" - } - }, - { - "@timestamp": "1970-01-01T00:00:00.050Z", - "agent": { - "name": "go", - "version": "0.0.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "i386", - "hostname": "beowulf", - "ip": [ - "127.0.0.1" - ], - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "0000000000000001" - }, - "process": { - "pid": 1, - "title": "systemtest.test" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - }, - "target": { - "type": "elasticsearch" - } - }, - "span": { - "composite": { - "compression_strategy": "exact_match", - "count": 5, - "sum": { - "us": 20000 - } - }, - "destination": { - "service": { - "resource": "elasticsearch", - "type": "db" - } - }, - "duration": { - "us": 20000 - }, - "id": "0000000000000034", - "name": "_bulk", - "representative_count": 1, - "subtype": "elasticsearch", - "type": "db" - }, - "timestamp": { - "us": 50000 - }, - "trace": { - "id": "01000000000000000000000000000000" - }, - "transaction": { - "id": "0000000000000001" - } - } - ] -} +[ + { + "@timestamp": [ + "1970-01-01T00:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "agent.version": [ + "0.0.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "i386" + ], + "host.hostname": [ + "beowulf" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "0000000000000001" + ], + "process.pid": [ + 1 + ], + "process.title": [ + "systemtest.test" + ], + "process.title.text": [ + "systemtest.test" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "service.target.type": [ + "redis" + ], + "span.composite.compression_strategy": [ + "same_kind" + ], + "span.composite.count": [ + 50 + ], + "span.composite.sum.us": [ + 50000 + ], + "span.destination.service.resource": [ + "redis" + ], + "span.destination.service.type": [ + "db" + ], + "span.duration.us": [ + 50000 + ], + "span.id": [ + "0000000000000002" + ], + "span.name": [ + "Calls to redis" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "redis" + ], + "span.type": [ + "db" + ], + "trace.id": [ + "01000000000000000000000000000000" + ], + "transaction.id": [ + "0000000000000001" + ] + }, + { + "@timestamp": [ + "1970-01-01T00:00:00.050Z" + ], + "agent.name": [ + "go" + ], + "agent.version": [ + "0.0.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "i386" + ], + "host.hostname": [ + "beowulf" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "0000000000000001" + ], + "process.pid": [ + 1 + ], + "process.title": [ + "systemtest.test" + ], + "process.title.text": [ + "systemtest.test" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "service.target.type": [ + "elasticsearch" + ], + "span.composite.compression_strategy": [ + "exact_match" + ], + "span.composite.count": [ + 5 + ], + "span.composite.sum.us": [ + 20000 + ], + "span.destination.service.resource": [ + "elasticsearch" + ], + "span.destination.service.type": [ + "db" + ], + "span.duration.us": [ + 20000 + ], + "span.id": [ + "0000000000000034" + ], + "span.name": [ + "_bulk" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "elasticsearch" + ], + "span.type": [ + "db" + ], + "timestamp.us": [ + 50000 + ], + "trace.id": [ + "01000000000000000000000000000000" + ], + "transaction.id": [ + "0000000000000001" + ] + } +] diff --git a/systemtest/approvals/TestDropUnsampled.approved.json b/systemtest/approvals/TestDropUnsampled.approved.json index c0f29ac1f20..af28a6a95dd 100644 --- a/systemtest/approvals/TestDropUnsampled.approved.json +++ b/systemtest/approvals/TestDropUnsampled.approved.json @@ -1,138 +1,201 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "go", - "version": "0.0.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "i386", - "hostname": "beowulf", - "ip": [ - "127.0.0.1" - ], - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1, - "title": "systemtest.test" - }, - "processor": { - "event": "transaction" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "span": { - "id": "dynamic" - }, - "trace": { - "id": "dynamic" - }, - "transaction": { - "duration": { - "us": 1000000 - }, - "id": "dynamic", - "name": "sampled", - "representative_count": 1, - "sampled": true, - "span_count": { - "dropped": 0, - "started": 0 - }, - "type": "TestDropUnsampled" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "0.0.0" - }, - "client": { - "ip": "127.0.0.1" - }, - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction" - }, - "service": { - "name": "allowed" - }, - "source": { - "ip": "127.0.0.1", - "port": "dynamic" - }, - "span": { - "id": "dynamic" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "dynamic" - }, - "transaction": { - "duration": { - "us": 0 - }, - "id": "dynamic", - "representative_count": 1, - "span_count": { - "started": 1 - }, - "type": "TestDropUnsampled" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "agent.version": [ + "0.0.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "i386" + ], + "host.hostname": [ + "beowulf" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1 + ], + "process.title": [ + "systemtest.test" + ], + "process.title.text": [ + "systemtest.test" + ], + "processor.event": [ + "transaction" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "span.id": [ + "dynamic" + ], + "trace.id": [ + "dynamic" + ], + "transaction.duration.us": [ + 1000000 + ], + "transaction.id": [ + "dynamic" + ], + "transaction.name": [ + "sampled" + ], + "transaction.name.text": [ + "sampled" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.dropped": [ + 0 + ], + "transaction.span_count.started": [ + 0 + ], + "transaction.type": [ + "TestDropUnsampled" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "0.0.0" + ], + "client.ip": [ + "127.0.0.1" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "service.name": [ + "allowed" + ], + "source.ip": [ + "127.0.0.1" + ], + "source.port": [ + "dynamic" + ], + "span.id": [ + "dynamic" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "dynamic" + ], + "transaction.duration.us": [ + 0 + ], + "transaction.id": [ + "dynamic" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.span_count.started": [ + 1 + ], + "transaction.type": [ + "TestDropUnsampled" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.original.text": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestErrorIngest.approved.json b/systemtest/approvals/TestErrorIngest.approved.json index 10936af8b51..3d73033b329 100644 --- a/systemtest/approvals/TestErrorIngest.approved.json +++ b/systemtest/approvals/TestErrorIngest.approved.json @@ -1,135 +1,206 @@ -{ - "events": [ - { - "@timestamp": "2018-08-09T15:04:05.999Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "abcdef123", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "grouping_key": "d6b3f958dfea98dc9ed2b57d5f0c48bb", - "grouping_name": "Cannot read property 'baz' of undefined", - "id": "abcdef0123456789", - "log": { - "level": "custom log level", - "message": "Cannot read property 'baz' of undefined" - } - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "prod.example", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "message": "Cannot read property 'baz' of undefined", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "9632587410abcdef" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-abc" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "id": "1234567890987654" - }, - "timestamp": { - "us": 1533827045999000 - }, - "trace": { - "id": "0123456789abcdeffedcba0123456789" - }, - "transaction": { - "id": "1234567890987654", - "name": "mytx", - "sampled": true, - "type": "request" - }, - "user": { - "domain": "ldap://abc", - "email": "bar@example.com", - "id": "123", - "name": "bar" - } - } - ] -} +[ + { + "@timestamp": [ + "2018-08-09T15:04:05.999Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "abcdef123" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.grouping_key": [ + "d6b3f958dfea98dc9ed2b57d5f0c48bb" + ], + "error.grouping_name": [ + "Cannot read property 'baz' of undefined" + ], + "error.id": [ + "abcdef0123456789" + ], + "error.log.level": [ + "custom log level" + ], + "error.log.message": [ + "Cannot read property 'baz' of undefined" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "prod.example" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "message": [ + "Cannot read property 'baz' of undefined" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "9632587410abcdef" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-abc" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.id": [ + "1234567890987654" + ], + "timestamp.us": [ + 1533827045999000 + ], + "trace.id": [ + "0123456789abcdeffedcba0123456789" + ], + "transaction.id": [ + "1234567890987654" + ], + "transaction.name": [ + "mytx" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "request" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "bar@example.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + } +] diff --git a/systemtest/approvals/TestIngestPipelineDataStreamMigration.approved.json b/systemtest/approvals/TestIngestPipelineDataStreamMigration.approved.json deleted file mode 100644 index 7b80f483495..00000000000 --- a/systemtest/approvals/TestIngestPipelineDataStreamMigration.approved.json +++ /dev/null @@ -1,699 +0,0 @@ -{ - "events": [ - { - "@timestamp": "2022-09-12T03:52:50.939Z", - "agent": { - "name": "go", - "version": "2.0.0" - }, - "container": { - "id": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "migrated", - "type": "logs" - }, - "error": { - "culprit": "once", - "exception": [ - { - "handled": false, - "message": "boom", - "module": "errors", - "stacktrace": [ - { - "abs_path": "/home/andrew/projects/apmload/main.go", - "exclude_from_grouping": false, - "filename": "main.go", - "function": "once", - "line": { - "number": 53 - }, - "module": "main" - }, - { - "abs_path": "/home/andrew/projects/apmload/main.go", - "exclude_from_grouping": false, - "filename": "main.go", - "function": "main", - "line": { - "number": 29 - }, - "module": "main" - }, - { - "abs_path": "/home/andrew/go/toolchain/1.18.1/src/runtime/proc.go", - "exclude_from_grouping": false, - "filename": "proc.go", - "function": "main", - "library_frame": true, - "line": { - "number": 250 - }, - "module": "runtime" - }, - { - "abs_path": "/home/andrew/go/toolchain/1.18.1/src/runtime/asm_amd64.s", - "exclude_from_grouping": false, - "filename": "asm_amd64.s", - "function": "goexit", - "library_frame": true, - "line": { - "number": 1571 - }, - "module": "runtime" - } - ], - "type": "errorString" - } - ], - "grouping_key": "d9bb6552d94deb040e83062f8fe1e449", - "grouping_name": "boom", - "id": "b2da5288b2c3d7e79c42a636ca2fd99f" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "architecture": "amd64", - "hostname": "corduroy", - "ip": "110.174.44.88", - "name": "corduroy", - "os": { - "platform": "linux" - } - }, - "message": "boom", - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7bd04bc3063f9930" - }, - "process": { - "args": [ - "/tmp/go-build1405913256/b001/exe/main" - ], - "parent": { - "pid": 4009763 - }, - "pid": 4009922, - "title": "main" - }, - "processor": { - "event": "error", - "name": "error" - }, - "service": { - "language": { - "name": "go", - "version": "go1.18.1" - }, - "name": "main", - "node": { - "name": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "runtime": { - "name": "gc", - "version": "go1.18.1" - } - }, - "timestamp": { - "us": 1662954770939878 - }, - "trace": { - "id": "5cfc595035477ea235a632fc3e2bb6b1" - }, - "transaction": { - "id": "5cfc595035477ea2", - "sampled": true, - "type": "type" - } - }, - { - "@timestamp": "2022-09-12T03:52:51.178Z", - "agent": { - "name": "go", - "version": "2.0.0" - }, - "container": { - "id": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "data_stream": { - "dataset": "apm.app.main", - "namespace": "migrated", - "type": "metrics" - }, - "event": { - "ingested": "dynamic" - }, - "golang": { - "goroutines": 11, - "heap": { - "allocations": { - "active": 6160384, - "allocated": 4579688, - "frees": 39979, - "idle": 5701632, - "mallocs": 44520, - "objects": 4541, - "total": 8834120 - }, - "gc": { - "cpu_fraction": 0.0003175952, - "next_gc_limit": 8842488, - "total_count": 3, - "total_pause": { - "ns": 178493 - } - }, - "system": { - "obtained": 11862016, - "released": 3989504, - "stack": 720896, - "total": 20268040 - } - } - }, - "host": { - "architecture": "amd64", - "hostname": "corduroy", - "ip": "110.174.44.88", - "name": "corduroy", - "os": { - "platform": "linux" - } - }, - "metricset": { - "name": "app" - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": "/tmp/go-build1405913256/b001/exe/main", - "parent": { - "pid": 4009763 - }, - "pid": 4009922, - "title": "main" - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "go1.18.1" - }, - "name": "main", - "node": { - "name": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "runtime": { - "name": "gc", - "version": "go1.18.1" - } - }, - "system": { - "cpu": { - "total": { - "norm": { - "pct": 0.02255639 - } - } - }, - "memory": { - "actual": { - "free": 33981653000 - }, - "total": 46108970000 - }, - "process": { - "cpu": { - "total": { - "norm": { - "pct": 0.0025062656 - } - } - }, - "memory": { - "rss": { - "bytes": 15187968 - }, - "size": 1485594600 - } - } - } - }, - { - "@timestamp": "2022-09-12T03:52:00.000Z", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "migrated", - "type": "metrics" - }, - "event": { - "ingested": "dynamic", - "outcome": "failure" - }, - "metricset": { - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "name": "main" - }, - "span": { - "destination": { - "service": { - "resource": "dest_resource", - "response_time": { - "count": 1, - "sum": { - "us": 10220 - } - } - } - } - } - }, - { - "@timestamp": "2022-09-12T03:52:00.000Z", - "_doc_count": 1, - "agent": { - "name": "go" - }, - "container": { - "id": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "migrated", - "type": "metrics" - }, - "event": { - "ingested": "dynamic", - "outcome": "failure" - }, - "host": { - "hostname": "corduroy", - "name": "corduroy" - }, - "metricset": { - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "name": "main", - "node": { - "name": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 1 - ], - "values": [ - 10239 - ] - } - }, - "name": "name", - "root": true, - "type": "type" - } - }, - { - "@timestamp": "2022-09-12T03:52:51.178Z", - "agent": { - "name": "go", - "version": "2.0.0" - }, - "container": { - "id": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "migrated", - "type": "metrics" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "architecture": "amd64", - "hostname": "corduroy", - "ip": "110.174.44.88", - "name": "corduroy", - "os": { - "platform": "linux" - } - }, - "metricset": { - "name": "span_breakdown" - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": "/tmp/go-build1405913256/b001/exe/main", - "parent": { - "pid": 4009763 - }, - "pid": 4009922, - "title": "main" - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "go1.18.1" - }, - "name": "main", - "node": { - "name": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "runtime": { - "name": "gc", - "version": "go1.18.1" - } - }, - "span": { - "self_time": { - "count": 1, - "sum": { - "us": 15 - } - }, - "type": "app" - }, - "transaction": { - "name": "name", - "type": "type" - } - }, - { - "@timestamp": "2022-09-12T03:52:51.178Z", - "agent": { - "name": "go", - "version": "2.0.0" - }, - "container": { - "id": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "migrated", - "type": "metrics" - }, - "event": { - "ingested": "dynamic" - }, - "host": { - "architecture": "amd64", - "hostname": "corduroy", - "ip": "110.174.44.88", - "name": "corduroy", - "os": { - "platform": "linux" - } - }, - "metricset": { - "name": "span_breakdown" - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": "/tmp/go-build1405913256/b001/exe/main", - "parent": { - "pid": 4009763 - }, - "pid": 4009922, - "title": "main" - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "go1.18.1" - }, - "name": "main", - "node": { - "name": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "runtime": { - "name": "gc", - "version": "go1.18.1" - } - }, - "span": { - "self_time": { - "count": 1, - "sum": { - "us": 10220 - } - }, - "type": "type" - }, - "transaction": { - "name": "name", - "type": "type" - } - }, - { - "@timestamp": "2022-09-12T03:52:50.929Z", - "agent": { - "name": "go", - "version": "2.0.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "migrated", - "type": "traces" - }, - "event": { - "outcome": "failure" - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "5cfc595035477ea2" - }, - "processor": { - "event": "span", - "name": "transaction" - }, - "service": { - "name": "main" - }, - "span": { - "destination": { - "service": { - "resource": "dest_resource", - "type": "type" - } - }, - "duration": { - "us": 10220 - }, - "id": "7bd04bc3063f9930", - "name": "name", - "stacktrace": [ - { - "abs_path": "/home/andrew/go/pkg/mod/go.elastic.co/apm/v2@v2.0.0/span.go", - "exclude_from_grouping": false, - "filename": "span.go", - "function": "(*Span).End", - "library_frame": true, - "line": { - "number": 368 - }, - "module": "go.elastic.co/apm/v2" - }, - { - "abs_path": "/home/andrew/projects/apmload/main.go", - "exclude_from_grouping": false, - "filename": "main.go", - "function": "once", - "line": { - "number": 56 - }, - "module": "main" - }, - { - "abs_path": "/home/andrew/projects/apmload/main.go", - "exclude_from_grouping": false, - "filename": "main.go", - "function": "main", - "line": { - "number": 29 - }, - "module": "main" - }, - { - "abs_path": "/home/andrew/go/toolchain/1.18.1/src/runtime/proc.go", - "exclude_from_grouping": false, - "filename": "proc.go", - "function": "main", - "library_frame": true, - "line": { - "number": 250 - }, - "module": "runtime" - }, - { - "abs_path": "/home/andrew/go/toolchain/1.18.1/src/runtime/asm_amd64.s", - "exclude_from_grouping": false, - "filename": "asm_amd64.s", - "function": "goexit", - "library_frame": true, - "line": { - "number": 1571 - }, - "module": "runtime" - } - ], - "type": "type" - }, - "timestamp": { - "us": 1662954770929706 - }, - "trace": { - "id": "5cfc595035477ea235a632fc3e2bb6b1" - }, - "transaction": { - "id": "5cfc595035477ea2" - } - }, - { - "@timestamp": "2022-09-12T03:52:50.929Z", - "agent": { - "name": "go", - "version": "2.0.0" - }, - "container": { - "id": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "migrated", - "type": "traces" - }, - "event": { - "ingested": "dynamic", - "outcome": "failure" - }, - "host": { - "architecture": "amd64", - "hostname": "corduroy", - "ip": "110.174.44.88", - "name": "corduroy", - "os": { - "platform": "linux" - } - }, - "observer": { - "hostname": "dynamic", - "name": "instance-0000000000", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "/tmp/go-build1405913256/b001/exe/main" - ], - "parent": { - "pid": 4009763 - }, - "pid": 4009922, - "title": "main" - }, - "processor": { - "event": "transaction", - "name": "transaction" - }, - "service": { - "language": { - "name": "go", - "version": "go1.18.1" - }, - "name": "main", - "node": { - "name": "spawn-6cd7c2e1-43d5-4c89-8480-e178b3bc70d1" - }, - "runtime": { - "name": "gc", - "version": "go1.18.1" - } - }, - "timestamp": { - "us": 1662954770929705 - }, - "trace": { - "id": "5cfc595035477ea235a632fc3e2bb6b1" - }, - "transaction": { - "duration": { - "us": 10236 - }, - "id": "5cfc595035477ea2", - "name": "name", - "sampled": true, - "span_count": { - "dropped": 0, - "started": 1 - }, - "type": "type" - } - } - ] -} diff --git a/systemtest/approvals/TestIntake/Errors.approved.json b/systemtest/approvals/TestIntake/Errors.approved.json index 3ffe4fc0074..88b3aab37f3 100644 --- a/systemtest/approvals/TestIntake/Errors.approved.json +++ b/systemtest/approvals/TestIntake/Errors.approved.json @@ -227,634 +227,1141 @@ } } ] - } - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "prod.example", - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "body": { - "original": "Hello World" - }, - "cookies": { - "c1": "v1", - "c2": "v2" - }, - "env": { - "GATEWAY_INTERFACE": "CGI/1.1", - "SERVER_SOFTWARE": "nginx" - }, - "headers": { - "Array": [ - "foo", - "bar", - "baz" - ], - "Content-Type": [ - "text/html" - ], - "Cookie": [ - "c1=v1,c2=v2" - ], - "Some-Other-Header": [ - "foo" - ], - "User-Agent": [ - "Mozilla Chrome Edge" - ] - }, - "method": "POST", - "referrer": "http://localhost:8000/test/e2e/" - }, - "response": { - "finished": true, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "headers_sent": true, - "status_code": 200 - }, - "version": "1.1" - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "organization_uuid": "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" - }, - "message": "My service could not talk to the database named foobar", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Node", - "version": "1" - }, - "language": { - "name": "ecmascript", - "version": "1.2" - }, - "name": "service1", - "node": { - "name": "node-xyz" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - } - }, - "source": { - "ip": "12.53.12.1" - }, - "timestamp": { - "us": 1494342245999999 - }, - "url": { - "domain": "www.example.com", - "fragment": "#hash", - "full": "https://www.example.com/p/a/t/h?query=string#hash", - "original": "/p/a/t/h?query=string#hash", - "path": "/p/a/t/h", - "port": 8080, - "query": "?query=string", - "scheme": "https" - }, - "user": { - "domain": "ldap://abc", - "id": "99", - "name": "foo" - }, - "user_agent": { - "device": { - "name": "Other" }, - "name": "Other", - "original": "Mozilla Chrome Edge" + "my_key": 1, + "some_other_value": "foo bar" } - }, - { - "@timestamp": "2018-08-09T14:59:05.999Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "abcdef123", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "Cannot read property 'baz' no defined" - } - ], - "grouping_key": "ae0232fed4cb40e7ebc62a585a421d60", - "grouping_name": "Cannot read property 'baz' no defined", - "id": "cdefab0123456789" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "prod.example", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "message": "Cannot read property 'baz' no defined", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-abc" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "timestamp": { - "us": 1533826745999000 - }, - "user": { - "domain": "ldap://abc", - "email": "bar@example.com", - "id": "123", - "name": "bar" + ], + "error.exception.attributes": [ + { + "foo": "bar" } - }, - { - "@timestamp": "2018-08-09T14:59:05.999Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "abcdef123", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" + ], + "error.exception.code": [ + "42" + ], + "error.exception.handled": [ + false + ], + "error.exception.message": [ + "The username root is unknown", + "something wrong writing a file", + "disk spinning way too fast", + "on top of it, internet doesn't work" + ], + "error.exception.module": [ + "__builtins__" + ], + "error.exception.stacktrace": [ + { + "classname": "BaseClass", + "exclude_from_grouping": false + }, + { + "abs_path": "/real/file/name.py", + "classname": "RName", + "context": { + "post": [ + "line4", + "line5" + ], + "pre": [ + "line1", + "line2" + ] }, - "project": { - "id": "project_id", - "name": "project_name" + "exclude_from_grouping": false, + "filename": "file/name.py", + "function": "foo", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 3 }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" + "module": "App::MyModule", + "vars": { + "key": "value" } }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "grouping_key": "dc8dd667f7036ec5f0bae87bf2188243", - "grouping_name": "no user found", - "id": "xFoaabb123FFFFFF", - "log": { - "message": "no user found", - "stacktrace": [ - { - "classname": "User::Special", - "exclude_from_grouping": false - } + { + "abs_path": "/Users/watson/code/node_modules/elastic/lib/instrumentation/index.js", + "context": { + "post": [ + " ins.currentTransaction = prev", + " return result", + "}", + "}", + "", + "Instrumentation.prototype._recoverTransaction = function (trans) {", + " if (this.currentTransaction === trans) return" + ], + "pre": [ + " var trans = this.currentTransaction", + "", + " return instrumented", + "", + " function instrumented () {", + " var prev = ins.currentTransaction", + " ins.currentTransaction = trans" ] - } - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "prod.example", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "message": "no user found", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" }, - "name": "1234_service-12a3", - "node": { - "name": "node-abc" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "timestamp": { - "us": 1533826745999000 - }, - "user": { - "domain": "ldap://abc", - "email": "bar@example.com", - "id": "123", - "name": "bar" - } - }, - { - "@timestamp": "2019-01-09T21:40:53.000Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "justanid", - "name": "elastic-ruby", - "version": "2.1.3" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" + "exclude_from_grouping": false, + "filename": "lib/instrumentation/index.js", + "function": "instrumented", + "line": { + "context": " var result = original.apply(this, arguments)", + "number": 102 }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "type": "DbError" - } - ], - "grouping_key": "c3868d6704b923014eaffea034e70a3d", - "grouping_name": null, - "id": "cdefab0123456780" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "prod.example", - "os": { - "platform": "darwin" + "vars": { + "key": "value" } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "9632587410abcdef" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "service": { - "environment": "testing", - "framework": { - "name": "Rails", - "version": "5.0" - }, - "language": { - "name": "ruby", - "version": "2.5" - }, - "name": "service1", - "node": { - "name": "node-abc" - }, - "runtime": { - "name": "cruby", - "version": "2.5" - }, - "version": "2" - }, - "timestamp": { - "us": 1547070053000000 - }, - "trace": { - "id": "0123456789abcdeffedcba0123456789" - }, - "user": { - "domain": "ldap://abc", - "email": "bar@example.com", - "id": "123", - "name": "bar" } - }, - { - "@timestamp": "2018-08-09T15:04:05.999Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "abcdef123", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" + ], + "error.exception.type": [ + "DbError", + "InternalDbError", + "VeryInternalDbError", + "ConnectionError" + ], + "error.grouping_key": [ + "d72b25a26fde3f3aaad1c86950acd070" + ], + "error.grouping_name": [ + "My service could not talk to the database named foobar" + ], + "error.id": [ + "0123456789012345" + ], + "error.log.level": [ + "warning" + ], + "error.log.logger_name": [ + "my.logger.name" + ], + "error.log.message": [ + "My service could not talk to the database named foobar" + ], + "error.log.param_message": [ + "My service could not talk to the database named %s" + ], + "error.log.stacktrace": [ + { + "classname": "User::Common", + "exclude_from_grouping": false + }, + { + "abs_path": "/real/file/name.py", + "classname": "Webpack::File::Name", + "context": { + "post": [ + "line4", + "line5" + ], + "pre": [ + "line1", + "line2" + ] }, - "project": { - "id": "project_id", - "name": "project_name" + "exclude_from_grouping": false, + "filename": "/webpack/file/name.py", + "function": "foo", + "line": { + "column": 4, + "context": "line3", + "number": 3 }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" + "module": "App::MyModule", + "vars": { + "key": "value" } }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "grouping_key": "d6b3f958dfea98dc9ed2b57d5f0c48bb", - "grouping_name": "Cannot read property 'baz' of undefined", - "id": "abcdef0123456789", - "log": { - "level": "custom log level", - "message": "Cannot read property 'baz' of undefined" - } - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "prod.example", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "message": "Cannot read property 'baz' of undefined", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "9632587410abcdef" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-abc" + { + "abs_path": "/Users/watson/code/node_modules/elastic/lib/instrumentation/index.js", + "context": { + "post": [ + " ins.currentTransaction = prev", + " return result", + "}", + "}", + "", + "Instrumentation.prototype._recoverTransaction = function (trans) {", + " if (this.currentTransaction === trans) return" + ], + "pre": [ + " var trans = this.currentTransaction", + "", + " return instrumented", + "", + " function instrumented () {", + " var prev = ins.currentTransaction", + " ins.currentTransaction = trans" + ] }, - "runtime": { - "name": "node", - "version": "8.0.0" + "exclude_from_grouping": false, + "filename": "lib/instrumentation/index.js", + "function": "instrumented", + "line": { + "context": " var result = original.apply(this, arguments)", + "number": 102 }, - "version": "5.1.3" - }, - "span": { - "id": "1234567890987654" - }, - "timestamp": { - "us": 1533827045999000 - }, - "trace": { - "id": "0123456789abcdeffedcba0123456789" - }, - "transaction": { - "id": "1234567890987654", - "name": "mytx", - "sampled": true, - "type": "request" - }, - "user": { - "domain": "ldap://abc", - "email": "bar@example.com", - "id": "123", - "name": "bar" + "vars": { + "key": "value" + } + } + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "prod.example" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.body": [ + { + "original": "Hello World" + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Array": [ + "foo", + "bar", + "baz" + ], + "http.request.headers.Content-Type": [ + "text/html" + ], + "http.request.headers.Cookie": [ + "c1=v1,c2=v2" + ], + "http.request.headers.Some-Other-Header": [ + "foo" + ], + "http.request.headers.User-Agent": [ + "Mozilla Chrome Edge" + ], + "http.request.method": [ + "POST" + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "message": [ + "My service could not talk to the database named foobar" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Node" + ], + "service.framework.version": [ + "1" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "1.2" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "node-xyz" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "source.ip": [ + "12.53.12.1" + ], + "timestamp.us": [ + 1494342245999999 + ], + "url.domain": [ + "www.example.com" + ], + "url.fragment": [ + "#hash" + ], + "url.full": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.full.text": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.original": [ + "/p/a/t/h?query=string#hash" + ], + "url.original.text": [ + "/p/a/t/h?query=string#hash" + ], + "url.path": [ + "/p/a/t/h" + ], + "url.port": [ + 8080 + ], + "url.query": [ + "?query=string" + ], + "url.scheme": [ + "https" + ], + "user.domain": [ + "ldap://abc" + ], + "user.id": [ + "99" + ], + "user.name": [ + "foo" + ], + "user.name.text": [ + "foo" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Other" + ], + "user_agent.original": [ + "Mozilla Chrome Edge" + ], + "user_agent.original.text": [ + "Mozilla Chrome Edge" + ] + }, + { + "@timestamp": [ + "2018-08-09T14:59:05.999Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "abcdef123" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "Cannot read property 'baz' no defined" + ], + "error.grouping_key": [ + "ae0232fed4cb40e7ebc62a585a421d60" + ], + "error.grouping_name": [ + "Cannot read property 'baz' no defined" + ], + "error.id": [ + "cdefab0123456789" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "prod.example" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "message": [ + "Cannot read property 'baz' no defined" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-abc" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "timestamp.us": [ + 1533826745999000 + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "bar@example.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + }, + { + "@timestamp": [ + "2018-08-09T14:59:05.999Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "abcdef123" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.grouping_key": [ + "dc8dd667f7036ec5f0bae87bf2188243" + ], + "error.grouping_name": [ + "no user found" + ], + "error.id": [ + "xFoaabb123FFFFFF" + ], + "error.log.message": [ + "no user found" + ], + "error.log.stacktrace": [ + { + "classname": "User::Special", + "exclude_from_grouping": false } - } - ] -} + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "prod.example" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "message": [ + "no user found" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-abc" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "timestamp.us": [ + 1533826745999000 + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "bar@example.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + }, + { + "@timestamp": [ + "2019-01-09T21:40:53.000Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "justanid" + ], + "agent.name": [ + "elastic-ruby" + ], + "agent.version": [ + "2.1.3" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.type": [ + "DbError" + ], + "error.grouping_key": [ + "c3868d6704b923014eaffea034e70a3d" + ], + "error.id": [ + "cdefab0123456780" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "prod.example" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "9632587410abcdef" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "testing" + ], + "service.framework.name": [ + "Rails" + ], + "service.framework.version": [ + "5.0" + ], + "service.language.name": [ + "ruby" + ], + "service.language.version": [ + "2.5" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "node-abc" + ], + "service.runtime.name": [ + "cruby" + ], + "service.runtime.version": [ + "2.5" + ], + "service.version": [ + "2" + ], + "timestamp.us": [ + 1547070053000000 + ], + "trace.id": [ + "0123456789abcdeffedcba0123456789" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "bar@example.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + }, + { + "@timestamp": [ + "2018-08-09T15:04:05.999Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "abcdef123" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.grouping_key": [ + "d6b3f958dfea98dc9ed2b57d5f0c48bb" + ], + "error.grouping_name": [ + "Cannot read property 'baz' of undefined" + ], + "error.id": [ + "abcdef0123456789" + ], + "error.log.level": [ + "custom log level" + ], + "error.log.message": [ + "Cannot read property 'baz' of undefined" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "prod.example" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "message": [ + "Cannot read property 'baz' of undefined" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "9632587410abcdef" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-abc" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.id": [ + "1234567890987654" + ], + "timestamp.us": [ + 1533827045999000 + ], + "trace.id": [ + "0123456789abcdeffedcba0123456789" + ], + "transaction.id": [ + "1234567890987654" + ], + "transaction.name": [ + "mytx" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "request" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "bar@example.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + } +] diff --git a/systemtest/approvals/TestIntake/ErrorsTxID.approved.json b/systemtest/approvals/TestIntake/ErrorsTxID.approved.json index 9a19f72807d..fbd00d97448 100644 --- a/systemtest/approvals/TestIntake/ErrorsTxID.approved.json +++ b/systemtest/approvals/TestIntake/ErrorsTxID.approved.json @@ -1,295 +1,383 @@ -{ - "events": [ - { - "@timestamp": "2019-10-21T11:30:44.929Z", - "agent": { - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "client": { - "ip": "192.168.0.1" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "culprit": "opbeans.controllers.DTInterceptor.preHandle(DTInterceptor.java:73)", - "custom": { - "and_objects": { - "foo": [ - "bar", - "baz" - ] - }, - "my_key": 1, - "some_other_value": "foobar" - }, - "exception": [ - { - "attributes": { - "foo": "bar" - }, - "code": "42", - "handled": false, - "message": "Theusernamerootisunknown", - "module": "org.springframework.http.client", - "stacktrace": [ - { - "abs_path": "/tmp/AbstractPlainSocketImpl.java", - "context": { - "post": [ - "line4", - "line5" - ], - "pre": [ - "line1", - "line2" - ] - }, - "exclude_from_grouping": false, - "filename": "AbstractPlainSocketImpl.java", - "function": "connect", - "library_frame": true, - "line": { - "column": 4, - "context": "3", - "number": 3 - }, - "module": "java.net", - "vars": { - "key": "value" - } - }, - { - "exclude_from_grouping": false, - "filename": "AbstractClientHttpRequest.java", - "function": "execute", - "line": { - "number": 102 - }, - "vars": { - "key": "value" - } - } - ], - "type": "java.net.UnknownHostException" - }, - { - "message": "something wrong writing a file", - "type": "InternalDbError" - }, - { - "message": "disk spinning way too fast", - "type": "VeryInternalDbError" - }, - { - "message": "on top of it,internet doesn't work", - "parent": 1, - "type": "ConnectionError" - } - ], - "grouping_key": "9a4054e958afe722b5877e8fac578ff3", - "grouping_name": "Request method 'POST' not supported", - "id": "9876543210abcdeffedcba0123456789", - "log": { - "level": "error", - "logger_name": "http404", - "message": "Request method 'POST' not supported", - "param_message": "Request method 'POST' /events/:event not supported", - "stacktrace": [ - { - "abs_path": "/tmp/Socket.java", - "classname": "Request::Socket", - "context": { - "post": [ - "line4", - "line5" - ], - "pre": [ - "line1", - "line2" - ] - }, - "exclude_from_grouping": false, - "filename": "Socket.java", - "function": "connect", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 3 - }, - "module": "java.net", - "vars": { - "key": "value" - } - }, - { - "abs_path": "/tmp/SimpleBufferingClientHttpRequest.java", - "exclude_from_grouping": false, - "filename": "SimpleBufferingClientHttpRequest.java", - "function": "executeInternal", - "line": { - "number": 102 - }, - "vars": { - "key": "value" - } - } +[ + { + "@timestamp": [ + "2019-10-21T11:30:44.929Z" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "client.ip": [ + "192.168.0.1" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.culprit": [ + "opbeans.controllers.DTInterceptor.preHandle(DTInterceptor.java:73)" + ], + "error.custom": [ + { + "and_objects": { + "foo": [ + "bar", + "baz" ] - } - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "http": { - "request": { - "body": { - "original": "HelloWorld" - }, - "cookies": { - "c1": "v1", - "c2": "v2" - }, - "env": { - "GATEWAY_INTERFACE": "CGI/1.1", - "SERVER_SOFTWARE": "nginx" - }, - "headers": { - "Content-Length": [ - "0" - ], - "Cookie": [ - "c1=v1", - "c2=v2" - ], - "Elastic-Apm-Traceparent": [ - "00-8c21b4b556467a0b17ae5da959b5f388-31301f1fb2998121-01" - ], - "Forwarded": [ - "for=192.168.0.1" - ], - "Host": [ - "opbeans-java:3000" - ] - }, - "method": "POST" }, - "response": { - "finished": true, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "headers_sent": true, - "status_code": 200 + "my_key": 1, + "some_other_value": "foobar" + } + ], + "error.exception.attributes": [ + { + "foo": "bar" + } + ], + "error.exception.code": [ + "42" + ], + "error.exception.handled": [ + false + ], + "error.exception.message": [ + "Theusernamerootisunknown", + "something wrong writing a file", + "disk spinning way too fast", + "on top of it,internet doesn't work" + ], + "error.exception.module": [ + "org.springframework.http.client" + ], + "error.exception.stacktrace": [ + { + "abs_path": "/tmp/AbstractPlainSocketImpl.java", + "context": { + "post": [ + "line4", + "line5" + ], + "pre": [ + "line1", + "line2" + ] }, - "version": "1.1" - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" + "exclude_from_grouping": false, + "filename": "AbstractPlainSocketImpl.java", + "function": "connect", + "library_frame": true, + "line": { + "column": 4, + "context": "3", + "number": 3 }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + "module": "java.net", + "vars": { + "key": "value" } }, - "labels": { - "ab_testing": "true", - "group": "experimental", - "organization_uuid": "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" - }, - "message": "Request method 'POST' not supported", - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "9632587410abcdef" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "production", - "framework": { - "name": "Node", - "version": "1" + { + "exclude_from_grouping": false, + "filename": "AbstractClientHttpRequest.java", + "function": "execute", + "line": { + "number": 102 }, - "language": { - "name": "Java", - "version": "1.2" + "vars": { + "key": "value" + } + } + ], + "error.exception.type": [ + "java.net.UnknownHostException", + "InternalDbError", + "VeryInternalDbError", + "ConnectionError" + ], + "error.grouping_key": [ + "9a4054e958afe722b5877e8fac578ff3" + ], + "error.grouping_name": [ + "Request method 'POST' not supported" + ], + "error.id": [ + "9876543210abcdeffedcba0123456789" + ], + "error.log.level": [ + "error" + ], + "error.log.logger_name": [ + "http404" + ], + "error.log.message": [ + "Request method 'POST' not supported" + ], + "error.log.param_message": [ + "Request method 'POST' /events/:event not supported" + ], + "error.log.stacktrace": [ + { + "abs_path": "/tmp/Socket.java", + "classname": "Request::Socket", + "context": { + "post": [ + "line4", + "line5" + ], + "pre": [ + "line1", + "line2" + ] }, - "name": "service1", - "node": { - "name": "node-xyz" + "exclude_from_grouping": false, + "filename": "Socket.java", + "function": "connect", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 3 }, - "runtime": { - "name": "Java", - "version": "10.0.2" + "module": "java.net", + "vars": { + "key": "value" } }, - "source": { - "ip": "192.168.0.1", - "nat": { - "ip": "12.53.12.1" + { + "abs_path": "/tmp/SimpleBufferingClientHttpRequest.java", + "exclude_from_grouping": false, + "filename": "SimpleBufferingClientHttpRequest.java", + "function": "executeInternal", + "line": { + "number": 102 + }, + "vars": { + "key": "value" } - }, - "span": { - "id": "1234567890987654" - }, - "timestamp": { - "us": 1571657444929001 - }, - "trace": { - "id": "0123456789abcdeffedcba0123456789" - }, - "transaction": { - "id": "1234567890987654" - }, - "url": { - "domain": "www.example.com", - "fragment": "#hash", - "full": "https://www.example.com/p/a/t/h?query=string#hash", - "original": "/p/a/t/h?query=string#hash", - "path": "/p/a/t/h", - "port": 8080, - "query": "?query=string", - "scheme": "https" - }, - "user": { - "email": "user@foo.mail", - "id": "99", - "name": "foo" } - } - ] -} + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "http.request.body": [ + { + "original": "HelloWorld" + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Content-Length": [ + "0" + ], + "http.request.headers.Cookie": [ + "c1=v1", + "c2=v2" + ], + "http.request.headers.Elastic-Apm-Traceparent": [ + "00-8c21b4b556467a0b17ae5da959b5f388-31301f1fb2998121-01" + ], + "http.request.headers.Forwarded": [ + "for=192.168.0.1" + ], + "http.request.headers.Host": [ + "opbeans-java:3000" + ], + "http.request.method": [ + "POST" + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "message": [ + "Request method 'POST' not supported" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "9632587410abcdef" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "Node" + ], + "service.framework.version": [ + "1" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "1.2" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "node-xyz" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "source.ip": [ + "192.168.0.1" + ], + "source.nat.ip": [ + "12.53.12.1" + ], + "span.id": [ + "1234567890987654" + ], + "timestamp.us": [ + 1571657444929001 + ], + "trace.id": [ + "0123456789abcdeffedcba0123456789" + ], + "transaction.id": [ + "1234567890987654" + ], + "url.domain": [ + "www.example.com" + ], + "url.fragment": [ + "#hash" + ], + "url.full": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.full.text": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.original": [ + "/p/a/t/h?query=string#hash" + ], + "url.original.text": [ + "/p/a/t/h?query=string#hash" + ], + "url.path": [ + "/p/a/t/h" + ], + "url.port": [ + 8080 + ], + "url.query": [ + "?query=string" + ], + "url.scheme": [ + "https" + ], + "user.email": [ + "user@foo.mail" + ], + "user.id": [ + "99" + ], + "user.name": [ + "foo" + ], + "user.name.text": [ + "foo" + ] + } +] diff --git a/systemtest/approvals/TestIntake/Events.approved.json b/systemtest/approvals/TestIntake/Events.approved.json index 740283244e6..fae111013b3 100644 --- a/systemtest/approvals/TestIntake/Events.approved.json +++ b/systemtest/approvals/TestIntake/Events.approved.json @@ -1,558 +1,107 @@ -{ - "events": [ - { - "@timestamp": "2019-10-21T11:30:44.929Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "client": { - "ip": "192.168.0.1" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "culprit": "opbeans.controllers.DTInterceptor.preHandle(DTInterceptor.java:73)", - "custom": { - "and_objects": { - "foo": [ - "bar", - "baz" - ] - }, - "my_key": 1, - "some_other_value": "foobar" - }, - "exception": [ - { - "attributes": { - "foo": "bar" - }, - "code": "42", - "handled": false, - "message": "Theusernamerootisunknown", - "module": "org.springframework.http.client", - "stacktrace": [ - { - "abs_path": "/tmp/AbstractPlainSocketImpl.java", - "context": { - "post": [ - "line4", - "line5" - ], - "pre": [ - "line1", - "line2" - ] - }, - "exclude_from_grouping": false, - "filename": "AbstractPlainSocketImpl.java", - "function": "connect", - "library_frame": true, - "line": { - "column": 4, - "context": "3", - "number": 3 - }, - "module": "java.net", - "vars": { - "key": "value" - } - }, - { - "exclude_from_grouping": false, - "filename": "AbstractClientHttpRequest.java", - "function": "execute", - "line": { - "number": 102 - }, - "vars": { - "key": "value" - } - } - ], - "type": "java.net.UnknownHostException" - }, - { - "message": "something wrong writing a file", - "type": "InternalDbError" - }, - { - "message": "disk spinning way too fast", - "type": "VeryInternalDbError" - }, - { - "message": "on top of it,internet doesn't work", - "parent": 1, - "type": "ConnectionError" - } - ], - "grouping_key": "9a4054e958afe722b5877e8fac578ff3", - "grouping_name": "Request method 'POST' not supported", - "id": "9876543210abcdeffedcba0123456789", - "log": { - "level": "error", - "logger_name": "http404", - "message": "Request method 'POST' not supported", - "param_message": "Request method 'POST' /events/:event not supported", - "stacktrace": [ - { - "abs_path": "/tmp/Socket.java", - "classname": "Request::Socket", - "context": { - "post": [ - "line4", - "line5" - ], - "pre": [ - "line1", - "line2" - ] - }, - "exclude_from_grouping": false, - "filename": "Socket.java", - "function": "connect", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 3 - }, - "module": "java.net", - "vars": { - "key": "value" - } - }, - { - "abs_path": "/tmp/SimpleBufferingClientHttpRequest.java", - "exclude_from_grouping": false, - "filename": "SimpleBufferingClientHttpRequest.java", - "function": "executeInternal", - "line": { - "number": 102 - }, - "vars": { - "key": "value" - } - } +[ + { + "@timestamp": [ + "2019-10-21T11:30:44.929Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "client.ip": [ + "192.168.0.1" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.culprit": [ + "opbeans.controllers.DTInterceptor.preHandle(DTInterceptor.java:73)" + ], + "error.custom": [ + { + "and_objects": { + "foo": [ + "bar", + "baz" ] - } - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "http": { - "request": { - "body": { - "original": "HelloWorld" - }, - "cookies": { - "c1": "v1", - "c2": "v2" - }, - "env": { - "GATEWAY_INTERFACE": "CGI/1.1", - "SERVER_SOFTWARE": "nginx" - }, - "headers": { - "Content-Length": [ - "0" - ], - "Cookie": [ - "c1=v1", - "c2=v2" - ], - "Elastic-Apm-Traceparent": [ - "00-8c21b4b556467a0b17ae5da959b5f388-31301f1fb2998121-01" - ], - "Forwarded": [ - "for=192.168.0.1" - ], - "Host": [ - "opbeans-java:3000" - ] - }, - "method": "POST" - }, - "response": { - "finished": true, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "headers_sent": true, - "status_code": 200 - }, - "version": "1.1" - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "group": "experimental", - "organization_uuid": "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" - }, - "message": "Request method 'POST' not supported", - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "9632587410abcdef" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "production", - "framework": { - "name": "Node", - "version": "1" - }, - "language": { - "name": "Java", - "version": "1.2" }, - "name": "service1", - "node": { - "name": "node-xyz" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - } - }, - "source": { - "ip": "192.168.0.1", - "nat": { - "ip": "12.53.12.1" - } - }, - "span": { - "id": "1234567890987654" - }, - "timestamp": { - "us": 1571657444929001 - }, - "trace": { - "id": "0123456789abcdeffedcba0123456789" - }, - "transaction": { - "id": "1234567890987654", - "sampled": true, - "type": "request" - }, - "url": { - "domain": "www.example.com", - "fragment": "#hash", - "full": "https://www.example.com/p/a/t/h?query=string#hash", - "original": "/p/a/t/h?query=string#hash", - "path": "/p/a/t/h", - "port": 8080, - "query": "?query=string", - "scheme": "https" - }, - "user": { - "email": "user@foo.mail", - "id": "99", - "name": "foo" + "my_key": 1, + "some_other_value": "foobar" } - }, - { - "@timestamp": "2019-10-21T11:30:44.929Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": "127.0.0.1", - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "group": "experimental", - "success": "true" - }, - "metricset": { - "name": "span_breakdown" - }, - "numeric_labels": { - "code": 200, - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": "-v", - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "1234_service-12a3", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "4.3.0" - }, - "span": { - "self_time": { - "count": 1, - "sum": { - "us": 633 - } - }, - "subtype": "mysql", - "type": "db" - }, - "transaction": { - "name": "GET/", - "type": "request" + ], + "error.exception.attributes": [ + { + "foo": "bar" } - }, - { - "@timestamp": "2019-10-21T11:30:44.929Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0-SNAPSHOT" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "http": { - "request": { - "method": "GET" + ], + "error.exception.code": [ + "42" + ], + "error.exception.handled": [ + false + ], + "error.exception.message": [ + "Theusernamerootisunknown", + "something wrong writing a file", + "disk spinning way too fast", + "on top of it,internet doesn't work" + ], + "error.exception.module": [ + "org.springframework.http.client" + ], + "error.exception.stacktrace": [ + { + "abs_path": "/tmp/AbstractPlainSocketImpl.java", + "context": { + "post": [ + "line4", + "line5" + ], + "pre": [ + "line1", + "line2" + ] }, - "response": { - "decoded_body_size": 401, - "encoded_body_size": 356, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "status_code": 302, - "transfer_size": 30012 - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" + "exclude_from_grouping": false, + "filename": "AbstractPlainSocketImpl.java", + "function": "connect", + "library_frame": true, + "line": { + "column": 4, + "context": "3", + "number": 3 }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + "module": "java.net", + "vars": { + "key": "value" } }, - "labels": { - "ab_testing": "true", - "group": "experimental" - }, - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "opbeans-java-1", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + { + "exclude_from_grouping": false, + "filename": "AbstractClientHttpRequest.java", + "function": "execute", + "line": { + "number": 102 }, - "runtime": { - "name": "Java", - "version": "10.0.2" + "vars": { + "key": "value" } - }, - "span": { - "action": "connect", - "db": { - "instance": "customers", - "link": "other.db.com", - "statement": "SELECT * FROM product_types WHERE user_id = ?", - "type": "sql", - "user": { - "name": "postgres" - } - }, - "duration": { - "us": 3781 - }, - "id": "1234567890aaaade", - "name": "GET users-authenticated", - "representative_count": 1, - "stacktrace": [ - { - "exclude_from_grouping": false, - "filename": "DispatcherServlet.java", - "line": { - "number": 547 - } - }, - { - "abs_path": "/tmp/AbstractView.java", - "exclude_from_grouping": false, - "filename": "AbstractView.java", - "function": "render", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 547 - }, - "module": "org.springframework.web.servlet.view", - "vars": { - "key": "value" - } - } - ], - "subtype": "http", - "sync": true, - "type": "external" - }, - "timestamp": { - "us": 1571657444929001 - }, - "trace": { - "id": "abcdef0123456789abcdef9876543210" - }, - "transaction": { - "id": "1234567890987654" - }, - "url": { - "original": "http://localhost:8000" } }, { @@ -573,202 +122,946 @@ "lon": "dynamic" } }, - "ip": "12.53.12.1" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "http": { - "request": { - "body": { - "original": { - "additional": { - "bar": 123, - "req": "additionalinformation" - }, - "string": "helloworld" - } - }, - "cookies": { - "c1": "v1", - "c2": "v2" - }, - "env": { - "GATEWAY_INTERFACE": "CGI/1.1", - "SERVER_SOFTWARE": "nginx" - }, - "headers": { - "Content-Type": [ - "text/html" - ], - "Cookie": [ - "c1=v1,c2=v2" - ], - "Elastic-Apm-Traceparent": [ - "00-33a0bd4cceff0370a7c57d807032688e-69feaabc5b88d7e8-01" - ], - "User-Agent": [ - "Mozilla/5.0(Macintosh;IntelMacOSX10_10_5)AppleWebKit/537.36(KHTML,likeGecko)Chrome/51.0.2704.103Safari/537.36", - "MozillaChromeEdge" - ] - }, - "method": "POST" - }, - "response": { - "decoded_body_size": 40190, - "encoded_body_size": 35690, - "finished": true, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "headers_sent": true, - "status_code": 200, - "transfer_size": 300 - }, - "version": "1.1" - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" + "exclude_from_grouping": false, + "filename": "Socket.java", + "function": "connect", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 3 }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + "module": "java.net", + "vars": { + "key": "value" } }, - "labels": { - "ab_testing": "true", - "group": "experimental", - "organization_uuid": "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" - }, - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdefabcdef01234567" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 + { + "abs_path": "/tmp/SimpleBufferingClientHttpRequest.java", + "exclude_from_grouping": false, + "filename": "SimpleBufferingClientHttpRequest.java", + "function": "executeInternal", + "line": { + "number": 102 }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "processor": { - "event": "transaction" + "vars": { + "key": "value" + } + } + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "http.request.body": [ + { + "original": "HelloWorld" + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Content-Length": [ + "0" + ], + "http.request.headers.Cookie": [ + "c1=v1", + "c2=v2" + ], + "http.request.headers.Elastic-Apm-Traceparent": [ + "00-8c21b4b556467a0b17ae5da959b5f388-31301f1fb2998121-01" + ], + "http.request.headers.Forwarded": [ + "for=192.168.0.1" + ], + "http.request.headers.Host": [ + "opbeans-java:3000" + ], + "http.request.method": [ + "POST" + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "message": [ + "Request method 'POST' not supported" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "9632587410abcdef" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "processor.event": [ + "error" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "Node" + ], + "service.framework.version": [ + "1" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "1.2" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "node-xyz" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "source.ip": [ + "192.168.0.1" + ], + "source.nat.ip": [ + "12.53.12.1" + ], + "span.id": [ + "1234567890987654" + ], + "timestamp.us": [ + 1571657444929001 + ], + "trace.id": [ + "0123456789abcdeffedcba0123456789" + ], + "transaction.id": [ + "1234567890987654" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "request" + ], + "url.domain": [ + "www.example.com" + ], + "url.fragment": [ + "#hash" + ], + "url.full": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.full.text": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.original": [ + "/p/a/t/h?query=string#hash" + ], + "url.original.text": [ + "/p/a/t/h?query=string#hash" + ], + "url.path": [ + "/p/a/t/h" + ], + "url.port": [ + 8080 + ], + "url.query": [ + "?query=string" + ], + "url.scheme": [ + "https" + ], + "user.email": [ + "user@foo.mail" + ], + "user.id": [ + "99" + ], + "user.name": [ + "foo" + ], + "user.name.text": [ + "foo" + ] + }, + { + "@timestamp": [ + "2019-10-21T11:30:44.929Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.success": [ + "true" + ], + "metricset.name": [ + "span_breakdown" + ], + "numeric_labels.code": [ + 200 + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "4.3.0" + ], + "span.self_time.count": [ + 1 + ], + "span.self_time.sum.us": [ + 633 + ], + "span.subtype": [ + "mysql" + ], + "span.type": [ + "db" + ], + "transaction.name": [ + "GET/" + ], + "transaction.type": [ + "request" + ] + }, + { + "@timestamp": [ + "2019-10-21T11:30:44.929Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0-SNAPSHOT" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "http.request.method": [ + "GET" + ], + "http.response.decoded_body_size": [ + 401 + ], + "http.response.encoded_body_size": [ + 356 + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.status_code": [ + 302 + ], + "http.response.transfer_size": [ + 30012 + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "opbeans-java-1" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "span.action": [ + "connect" + ], + "span.db.instance": [ + "customers" + ], + "span.db.link": [ + "other.db.com" + ], + "span.db.statement": [ + "SELECT * FROM product_types WHERE user_id = ?" + ], + "span.db.type": [ + "sql" + ], + "span.db.user.name": [ + "postgres" + ], + "span.duration.us": [ + 3781 + ], + "span.id": [ + "1234567890aaaade" + ], + "span.name": [ + "GET users-authenticated" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "exclude_from_grouping": false, + "filename": "DispatcherServlet.java", + "line": { + "number": 547 + } }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" + { + "abs_path": "/tmp/AbstractView.java", + "exclude_from_grouping": false, + "filename": "AbstractView.java", + "function": "render", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 547 }, - "name": "experimental-java", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" + "module": "org.springframework.web.servlet.view", + "vars": { + "key": "value" } - }, - "source": { - "ip": "12.53.12.1", - "port": 8080 - }, - "span": { - "id": "4340a8e0df1906ecbfa9" - }, - "timestamp": { - "us": 1571657444929001 - }, - "trace": { - "id": "0acd456789abcdef0123456789abcdef" - }, - "transaction": { - "custom": { - "(": "notavalidregexandthatisfine", - "and_objects": { - "foo": [ - "bar", - "baz" - ] + } + ], + "span.subtype": [ + "http" + ], + "span.sync": [ + true + ], + "span.type": [ + "external" + ], + "timestamp.us": [ + 1571657444929001 + ], + "trace.id": [ + "abcdef0123456789abcdef9876543210" + ], + "transaction.id": [ + "1234567890987654" + ], + "url.original": [ + "http://localhost:8000" + ], + "url.original.text": [ + "http://localhost:8000" + ] + }, + { + "@timestamp": [ + "2019-10-21T11:30:44.929Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0-SNAPSHOT" + ], + "client.geo.continent_name": [ + "North America" + ], + "client.geo.country_iso_code": [ + "US" + ], + "client.geo.country_name": [ + "United States" + ], + "client.geo.location": [ + "dynamic" + ], + "client.ip": [ + "12.53.12.1" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "http.request.body": [ + { + "original": { + "additional": { + "bar": 123, + "req": "additionalinformation" }, - "my_key": 1, - "some_other_value": "foobar" - }, - "duration": { - "us": 32592 - }, - "id": "4340a8e0df1906ecbfa9", - "name": "ResourceHttpRequestHandler", - "representative_count": 1, - "result": "HTTP2xx", - "sampled": true, - "span_count": { - "dropped": 0, - "started": 17 - }, - "type": "http" - }, - "url": { - "domain": "www.example.com", - "fragment": "#hash", - "full": "https://www.example.com/p/a/t/h?query=string#hash", - "original": "/p/a/t/h?query=string#hash", - "path": "/p/a/t/h", - "port": 8080, - "query": "?query=string", - "scheme": "https" - }, - "user": { - "email": "foo@mail.com", - "id": "99", - "name": "foo" - }, - "user_agent": { - "device": { - "name": "Other" + "string": "helloworld" + } + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Content-Type": [ + "text/html" + ], + "http.request.headers.Cookie": [ + "c1=v1,c2=v2" + ], + "http.request.headers.Elastic-Apm-Traceparent": [ + "00-33a0bd4cceff0370a7c57d807032688e-69feaabc5b88d7e8-01" + ], + "http.request.headers.User-Agent": [ + "Mozilla/5.0(Macintosh;IntelMacOSX10_10_5)AppleWebKit/537.36(KHTML,likeGecko)Chrome/51.0.2704.103Safari/537.36", + "MozillaChromeEdge" + ], + "http.request.method": [ + "POST" + ], + "http.response.decoded_body_size": [ + 40190 + ], + "http.response.encoded_body_size": [ + 35690 + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 300 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdefabcdef01234567" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "experimental-java" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "source.ip": [ + "12.53.12.1" + ], + "source.port": [ + 8080 + ], + "span.id": [ + "4340a8e0df1906ecbfa9" + ], + "timestamp.us": [ + 1571657444929001 + ], + "trace.id": [ + "0acd456789abcdef0123456789abcdef" + ], + "transaction.custom": [ + { + "(": "notavalidregexandthatisfine", + "and_objects": { + "foo": [ + "bar", + "baz" + ] }, - "name": "Chrome", - "original": "Mozilla/5.0(Macintosh;IntelMacOSX10_10_5)AppleWebKit/537.36(KHTML,likeGecko)Chrome/51.0.2704.103Safari/537.36, MozillaChromeEdge", - "version": "51.0.2704.103" + "my_key": 1, + "some_other_value": "foobar" } - } - ] -} + ], + "transaction.duration.us": [ + 32592 + ], + "transaction.id": [ + "4340a8e0df1906ecbfa9" + ], + "transaction.name": [ + "ResourceHttpRequestHandler" + ], + "transaction.name.text": [ + "ResourceHttpRequestHandler" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.result": [ + "HTTP2xx" + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.dropped": [ + 0 + ], + "transaction.span_count.started": [ + 17 + ], + "transaction.type": [ + "http" + ], + "url.domain": [ + "www.example.com" + ], + "url.fragment": [ + "#hash" + ], + "url.full": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.full.text": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.original": [ + "/p/a/t/h?query=string#hash" + ], + "url.original.text": [ + "/p/a/t/h?query=string#hash" + ], + "url.path": [ + "/p/a/t/h" + ], + "url.port": [ + 8080 + ], + "url.query": [ + "?query=string" + ], + "url.scheme": [ + "https" + ], + "user.email": [ + "foo@mail.com" + ], + "user.id": [ + "99" + ], + "user.name": [ + "foo" + ], + "user.name.text": [ + "foo" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Chrome" + ], + "user_agent.original": [ + "Mozilla/5.0(Macintosh;IntelMacOSX10_10_5)AppleWebKit/537.36(KHTML,likeGecko)Chrome/51.0.2704.103Safari/537.36, MozillaChromeEdge" + ], + "user_agent.original.text": [ + "Mozilla/5.0(Macintosh;IntelMacOSX10_10_5)AppleWebKit/537.36(KHTML,likeGecko)Chrome/51.0.2704.103Safari/537.36, MozillaChromeEdge" + ], + "user_agent.version": [ + "51.0.2704.103" + ] + } +] diff --git a/systemtest/approvals/TestIntake/Metricsets.approved.json b/systemtest/approvals/TestIntake/Metricsets.approved.json index 2ff6e6c5087..3ee806a691b 100644 --- a/systemtest/approvals/TestIntake/Metricsets.approved.json +++ b/systemtest/approvals/TestIntake/Metricsets.approved.json @@ -1,229 +1,280 @@ -{ - "events": [ - { - "@timestamp": "2017-05-30T18:53:41.364Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "go": { - "memstats": { - "heap": { - "sys": { - "bytes": 6520832 - } - } - } - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.366Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system": { - "process": { - "cgroup": { - "memory": { - "mem": { - "limit": { - "bytes": 2048 - }, - "usage": { - "bytes": 1024 - } - } - } - } - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.367Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system": { - "process": { - "cgroup": { - "cpu": { - "cfs": { - "period": { - "us": 1024 - }, - "quota": { - "us": 2048 - } - }, - "id": 2048, - "stats": { - "periods": 2048, - "throttled": { - "ns": 2048, - "periods": 2048 - } - } - }, - "cpuacct": { - "id": 2048, - "total": { - "ns": 2048 - } - } - } - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.368Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "latency_distribution": { +[ + { + "@timestamp": [ + "2017-05-30T18:53:41.364Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "go.memstats.heap.sys.bytes": [ + 6520832 + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.366Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.process.cgroup.memory.mem.limit.bytes": [ + 2048 + ], + "system.process.cgroup.memory.mem.usage.bytes": [ + 1024 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.367Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.process.cgroup.cpu.cfs.period.us": [ + 1024 + ], + "system.process.cgroup.cpu.cfs.quota.us": [ + 2048 + ], + "system.process.cgroup.cpu.id": [ + 2048 + ], + "system.process.cgroup.cpu.stats.periods": [ + 2048 + ], + "system.process.cgroup.cpu.stats.throttled.ns": [ + 2048 + ], + "system.process.cgroup.cpu.stats.throttled.periods": [ + 2048 + ], + "system.process.cgroup.cpuacct.id": [ + 2048 + ], + "system.process.cgroup.cpuacct.total.ns": [ + 2048 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.368Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "latency_distribution": [ + { "counts": [ 1, 2, @@ -234,172 +285,245 @@ 2.2, 3.3 ] - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:41.369Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "faas": { - "billed_duration": 183, - "coldstart": true, - "coldstart_duration": 422.97, - "duration": 182.43, - "execution": "6f7f0961f83442118a7af6fe80b88d56", - "id": "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime", - "timeout": 5000 - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "name": "app" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "system": { - "memory": { - "actual": { - "free": 54525952 - }, - "total": 134217728 - } - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" - } - }, - { - "@timestamp": "2017-05-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "labels": { - "some": "abc", - "success": "true", - "tag1": "one" - }, - "metricset": { - "name": "span_breakdown" - }, - "numeric_labels": { - "code": 200, - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1234 - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "ecmascript" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-1" - } - }, - "span": { - "self_time": { - "count": 1, - "sum": { - "us": 633 - } - }, - "subtype": "mysql", - "type": "db" - }, - "transaction": { - "name": "GET /", - "type": "request" - }, - "user": { - "email": "user@mail.com", - "id": "axb123hg", - "name": "logged-in-user" } - } - ] -} + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:41.369Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "faas.billed_duration": [ + 183 + ], + "faas.coldstart": [ + true + ], + "faas.coldstart_duration": [ + 422.97 + ], + "faas.duration": [ + 182.43 + ], + "faas.execution": [ + "6f7f0961f83442118a7af6fe80b88d56" + ], + "faas.id": [ + "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" + ], + "faas.timeout": [ + 5000 + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "app" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "system.memory.actual.free": [ + 54525952 + ], + "system.memory.total": [ + 134217728 + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "labels.some": [ + "abc" + ], + "labels.success": [ + "true" + ], + "labels.tag1": [ + "one" + ], + "metricset.name": [ + "span_breakdown" + ], + "numeric_labels.code": [ + 200 + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1234 + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "ecmascript" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-1" + ], + "span.self_time.count": [ + 1 + ], + "span.self_time.sum.us": [ + 633 + ], + "span.subtype": [ + "mysql" + ], + "span.type": [ + "db" + ], + "transaction.name": [ + "GET /" + ], + "transaction.type": [ + "request" + ], + "user.email": [ + "user@mail.com" + ], + "user.id": [ + "axb123hg" + ], + "user.name": [ + "logged-in-user" + ], + "user.name.text": [ + "logged-in-user" + ] + } +] diff --git a/systemtest/approvals/TestIntake/MinimalEvents.approved.json b/systemtest/approvals/TestIntake/MinimalEvents.approved.json index 477637d8caa..0fde9e28423 100644 --- a/systemtest/approvals/TestIntake/MinimalEvents.approved.json +++ b/systemtest/approvals/TestIntake/MinimalEvents.approved.json @@ -1,298 +1,406 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "grouping_key": "0b9cba09845a097a271c6beb4c6207f3", - "grouping_name": "error log message", - "id": "abcdef0123456789", - "log": { - "message": "error log message" - } - }, - "host": { - "ip": [ - "127.0.0.1" - ] - }, - "message": "error log message", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "name": "1234_service-12a3" - }, - "timestamp": { - "us": "dynamic" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "error exception message" - } - ], - "grouping_key": "3a1fb5609458fbb132b44d8fc7cde104", - "grouping_name": "error exception message", - "id": "abcdef0123456790" - }, - "host": { - "ip": [ - "127.0.0.1" - ] - }, - "message": "error exception message", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "name": "1234_service-12a3" - }, - "timestamp": { - "us": "dynamic" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "type": "error exception type" - } - ], - "grouping_key": "fa405fa2bd848dab17207e7b544d9ad4", - "grouping_name": null, - "id": "abcdef0123456791" - }, - "host": { - "ip": [ - "127.0.0.1" - ] - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "name": "1234_service-12a3" - }, - "timestamp": { - "us": "dynamic" - } - }, - { - "@timestamp": "dynamic", - "a": 3.2, - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "metrics" - }, - "host": { - "ip": "127.0.0.1" - }, - "metricset": { - "name": "app" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "name": "1234_service-12a3" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "ip": [ - "127.0.0.1" - ] - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ab23456a89012345" - }, - "processor": { - "event": "span" - }, - "service": { - "name": "1234_service-12a3" - }, - "span": { - "duration": { - "us": 3564 - }, - "id": "0123456a89012345", - "name": "GET /api/types", - "representative_count": 1, - "type": "request" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "0123456789abcdef0123456789abcdef" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "ip": [ - "127.0.0.1" - ] - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ab23456a89012345" - }, - "processor": { - "event": "span" - }, - "service": { - "name": "1234_service-12a3" - }, - "span": { - "duration": { - "us": 3564 - }, - "id": "0123456a89012345", - "name": "GET /api/types", - "representative_count": 1, - "type": "request" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "0123456789abcdef0123456789abcdef" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "ip": [ - "127.0.0.1" - ] - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction" - }, - "service": { - "name": "1234_service-12a3" - }, - "span": { - "id": "abcdef1478523690" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "01234567890123456789abcdefabcdef" - }, - "transaction": { - "duration": { - "us": 32592 - }, - "id": "abcdef1478523690", - "representative_count": 1, - "sampled": true, - "span_count": { - "started": 0 - }, - "type": "request" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.grouping_key": [ + "0b9cba09845a097a271c6beb4c6207f3" + ], + "error.grouping_name": [ + "error log message" + ], + "error.id": [ + "abcdef0123456789" + ], + "error.log.message": [ + "error log message" + ], + "host.ip": [ + "127.0.0.1" + ], + "message": [ + "error log message" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "error" + ], + "service.name": [ + "1234_service-12a3" + ], + "timestamp.us": [ + "dynamic" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "error exception message" + ], + "error.grouping_key": [ + "3a1fb5609458fbb132b44d8fc7cde104" + ], + "error.grouping_name": [ + "error exception message" + ], + "error.id": [ + "abcdef0123456790" + ], + "host.ip": [ + "127.0.0.1" + ], + "message": [ + "error exception message" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "error" + ], + "service.name": [ + "1234_service-12a3" + ], + "timestamp.us": [ + "dynamic" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.type": [ + "error exception type" + ], + "error.grouping_key": [ + "fa405fa2bd848dab17207e7b544d9ad4" + ], + "error.id": [ + "abcdef0123456791" + ], + "host.ip": [ + "127.0.0.1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "error" + ], + "service.name": [ + "1234_service-12a3" + ], + "timestamp.us": [ + "dynamic" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "a": [ + 3.2 + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "host.ip": [ + "127.0.0.1" + ], + "metricset.name": [ + "app" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.name": [ + "1234_service-12a3" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.ip": [ + "127.0.0.1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ab23456a89012345" + ], + "processor.event": [ + "span" + ], + "service.name": [ + "1234_service-12a3" + ], + "span.duration.us": [ + 3564 + ], + "span.id": [ + "0123456a89012345" + ], + "span.name": [ + "GET /api/types" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "request" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "0123456789abcdef0123456789abcdef" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.ip": [ + "127.0.0.1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ab23456a89012345" + ], + "processor.event": [ + "span" + ], + "service.name": [ + "1234_service-12a3" + ], + "span.duration.us": [ + 3564 + ], + "span.id": [ + "0123456a89012345" + ], + "span.name": [ + "GET /api/types" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "request" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "0123456789abcdef0123456789abcdef" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.ip": [ + "127.0.0.1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "service.name": [ + "1234_service-12a3" + ], + "span.id": [ + "abcdef1478523690" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "01234567890123456789abcdefabcdef" + ], + "transaction.duration.us": [ + 32592 + ], + "transaction.id": [ + "abcdef1478523690" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.started": [ + 0 + ], + "transaction.type": [ + "request" + ] + } +] diff --git a/systemtest/approvals/TestIntake/Spans.approved.json b/systemtest/approvals/TestIntake/Spans.approved.json index 2e326ebba4f..368417a5185 100644 --- a/systemtest/approvals/TestIntake/Spans.approved.json +++ b/systemtest/approvals/TestIntake/Spans.approved.json @@ -1,1652 +1,2387 @@ -{ - "events": [ - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "justanid", - "name": "elastic-ruby", - "version": "2.2" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "0:0::0:1", - "ip": "0:0::0:1", - "port": 5432 - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "method": "GET" - }, - "response": { - "decoded_body_size": 401, - "encoded_body_size": 356, - "status_code": 200, - "transfer_size": 30012 - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "service1", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "target": { - "name": "testdb", - "type": "postgres" - } - }, - "span": { - "action": "query", - "db": { - "instance": "customers", - "link": "other.db.com", - "rows_affected": 2, - "statement": "SELECT * FROM product_types WHERE user_id=?", - "type": "sql", - "user": { - "name": "readonly_user" - } - }, - "destination": { - "service": { - "name": "postgresql", - "resource": "postgres/testdb", - "type": "db" - } - }, - "duration": { - "us": 3781 - }, - "id": "1234567890aaaade", - "name": "SELECT FROM product_types", - "representative_count": 1, - "stacktrace": [ - { - "classname": "Core.js", - "exclude_from_grouping": false, - "filename": "net.js", - "line": { - "number": 547 - } - }, - { - "context": { - "post": [ - " ins.currentTransaction = prev", - "}" - ] - }, - "exclude_from_grouping": false, - "filename": "file2.js", - "line": { - "number": 12 - } - }, - { - "abs_path": "net.js", - "context": { - "post": [ - " ins.currentTransaction = prev", - " return result" - ], - "pre": [ - " var trans = this.currentTransaction", - "" - ] - }, - "exclude_from_grouping": false, - "filename": "net.js", - "function": "onread", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 547 - }, - "module": "some module", - "vars": { - "key": "value" - } - } - ], - "subtype": "postgresql", - "sync": true, - "type": "db" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "abcdef0123456789abcdef9876543210" - }, - "url": { - "original": "http://localhost:8000" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ababcdcdefefabde" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "action": "call", - "duration": { - "us": 13980 - }, - "id": "abcde56a89012345", - "name": "get /api/types", - "representative_count": 1, - "subtype": "http", - "sync": false, - "type": "request" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "abcdef0123456789abcdef9876543210" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "value1", - "tag4": "true" - }, - "numeric_labels": { - "tag2": 123, - "tag3": 12.34 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdefabcdef7890" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "duration": { - "us": 3564 - }, - "id": "0123456a89012345", - "name": "GET /api/types", - "representative_count": 1, - "subtype": "http", - "type": "request" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "abcdef0123456789abcdef9876543210" - }, - "transaction": { - "id": "ab23456a89012345" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "0000000011111111" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "duration": { - "us": 32592 - }, - "id": "1234abcdef567895", - "name": "GET /api/types", - "representative_count": 1, - "type": "request" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "abcdef0123456789abcdef9876543210" - }, - "transaction": { - "id": "ab45781d265894fe" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2021-07-06T11:58:05.682Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "action": "query", - "composite": { - "compression_strategy": "exact_match", - "count": 10, - "sum": { - "us": 359298 - } - }, - "duration": { - "us": 378191 - }, - "id": "abcdef01234567", - "name": "SELECT FROM p_details", - "representative_count": 1, - "subtype": "postgresql", - "type": "db" - }, - "timestamp": { - "us": 1625572685682272 - }, - "trace": { - "id": "edcbaf0123456789abcdef9876543210" - }, - "transaction": { - "id": "01af25874dec69dd" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "justanid", - "name": "elastic-ruby", - "version": "2.2" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" +[ + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "justanid" + ], + "agent.name": [ + "elastic-ruby" + ], + "agent.version": [ + "2.2" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "0:0::0:1" + ], + "destination.ip": [ + "::1" + ], + "destination.port": [ + 5432 + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.method": [ + "GET" + ], + "http.response.decoded_body_size": [ + 401 + ], + "http.response.encoded_body_size": [ + 356 + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 30012 + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.target.name": [ + "testdb" + ], + "service.target.type": [ + "postgres" + ], + "span.action": [ + "query" + ], + "span.db.instance": [ + "customers" + ], + "span.db.link": [ + "other.db.com" + ], + "span.db.rows_affected": [ + 2 + ], + "span.db.statement": [ + "SELECT * FROM product_types WHERE user_id=?" + ], + "span.db.type": [ + "sql" + ], + "span.db.user.name": [ + "readonly_user" + ], + "span.destination.service.name": [ + "postgresql" + ], + "span.destination.service.resource": [ + "postgres/testdb" + ], + "span.destination.service.type": [ + "db" + ], + "span.duration.us": [ + 3781 + ], + "span.id": [ + "1234567890aaaade" + ], + "span.name": [ + "SELECT FROM product_types" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "classname": "Core.js", + "exclude_from_grouping": false, + "filename": "net.js", + "line": { + "number": 547 } }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "0:0::0:1", - "ip": "0:0::0:1", - "port": 5432 - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "method": "GET" - }, - "response": { - "decoded_body_size": 401, - "encoded_body_size": 356, - "status_code": 200, - "transfer_size": 30012 - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" + { + "context": { + "post": [ + " ins.currentTransaction = prev", + "}" + ] + }, + "exclude_from_grouping": false, + "filename": "file2.js", + "line": { + "number": 12 } }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "service1", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "target": { - "name": "testdb", - "type": "postgres" + { + "abs_path": "net.js", + "context": { + "post": [ + " ins.currentTransaction = prev", + " return result" + ], + "pre": [ + " var trans = this.currentTransaction", + "" + ] + }, + "exclude_from_grouping": false, + "filename": "net.js", + "function": "onread", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 547 + }, + "module": "some module", + "vars": { + "key": "value" } - }, - "span": { - "action": "query", - "db": { - "instance": "customers", - "link": "other.db.com", - "rows_affected": 2, - "statement": "SELECT * FROM product_types WHERE user_id=?", - "type": "sql", - "user": { - "name": "readonly_user" - } - }, - "destination": { - "service": { - "name": "postgresql", - "resource": "postgresql", - "type": "db" - } - }, - "duration": { - "us": 3781 - }, - "id": "fdc4567890aaaade", - "name": "SELECT FROM product_types", - "representative_count": 1, - "stacktrace": [ - { - "classname": "Core.js", - "exclude_from_grouping": false, - "filename": "net.js", - "line": { - "number": 547 - } - }, - { - "context": { - "post": [ - " ins.currentTransaction = prev", - "}" - ] - }, - "exclude_from_grouping": false, - "filename": "file2.js", - "line": { - "number": 12 - } - }, - { - "abs_path": "net.js", - "context": { - "post": [ - " ins.currentTransaction = prev", - " return result" - ], - "pre": [ - " var trans = this.currentTransaction", - "" - ] - }, - "exclude_from_grouping": false, - "filename": "net.js", - "function": "onread", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 547 - }, - "module": "some module", - "vars": { - "key": "value" - } - } - ], - "subtype": "postgresql", - "sync": true, - "type": "db" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "fdceas0123456789abcdef9876543210" - }, - "url": { - "original": "http://localhost:8000" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" + ], + "span.subtype": [ + "postgresql" + ], + "span.sync": [ + true + ], + "span.type": [ + "db" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "abcdef0123456789abcdef9876543210" + ], + "url.original": [ + "http://localhost:8000" + ], + "url.original.text": [ + "http://localhost:8000" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ababcdcdefefabde" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.action": [ + "call" + ], + "span.duration.us": [ + 13980 + ], + "span.id": [ + "abcde56a89012345" + ], + "span.name": [ + "get /api/types" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "http" + ], + "span.sync": [ + false + ], + "span.type": [ + "request" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "abcdef0123456789abcdef9876543210" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "value1" + ], + "labels.tag4": [ + "true" + ], + "numeric_labels.tag2": [ + 123 + ], + "numeric_labels.tag3": [ + 12.34 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdefabcdef7890" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.duration.us": [ + 3564 + ], + "span.id": [ + "0123456a89012345" + ], + "span.name": [ + "GET /api/types" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "http" + ], + "span.type": [ + "request" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "abcdef0123456789abcdef9876543210" + ], + "transaction.id": [ + "ab23456a89012345" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "0000000011111111" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.duration.us": [ + 32592 + ], + "span.id": [ + "1234abcdef567895" + ], + "span.name": [ + "GET /api/types" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "request" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "abcdef0123456789abcdef9876543210" + ], + "transaction.id": [ + "ab45781d265894fe" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2021-07-06T11:58:05.682Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.action": [ + "query" + ], + "span.composite.compression_strategy": [ + "exact_match" + ], + "span.composite.count": [ + 10 + ], + "span.composite.sum.us": [ + 359298 + ], + "span.duration.us": [ + 378191 + ], + "span.id": [ + "abcdef01234567" + ], + "span.name": [ + "SELECT FROM p_details" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "postgresql" + ], + "span.type": [ + "db" + ], + "timestamp.us": [ + 1625572685682272 + ], + "trace.id": [ + "edcbaf0123456789abcdef9876543210" + ], + "transaction.id": [ + "01af25874dec69dd" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "justanid" + ], + "agent.name": [ + "elastic-ruby" + ], + "agent.version": [ + "2.2" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "0:0::0:1" + ], + "destination.ip": [ + "::1" + ], + "destination.port": [ + 5432 + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.method": [ + "GET" + ], + "http.response.decoded_body_size": [ + 401 + ], + "http.response.encoded_body_size": [ + 356 + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 30012 + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.target.name": [ + "testdb" + ], + "service.target.type": [ + "postgres" + ], + "span.action": [ + "query" + ], + "span.db.instance": [ + "customers" + ], + "span.db.link": [ + "other.db.com" + ], + "span.db.rows_affected": [ + 2 + ], + "span.db.statement": [ + "SELECT * FROM product_types WHERE user_id=?" + ], + "span.db.type": [ + "sql" + ], + "span.db.user.name": [ + "readonly_user" + ], + "span.destination.service.name": [ + "postgresql" + ], + "span.destination.service.resource": [ + "postgresql" + ], + "span.destination.service.type": [ + "db" + ], + "span.duration.us": [ + 3781 + ], + "span.id": [ + "fdc4567890aaaade" + ], + "span.name": [ + "SELECT FROM product_types" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "classname": "Core.js", + "exclude_from_grouping": false, + "filename": "net.js", + "line": { + "number": 547 } }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "0:0::0:1", - "ip": "0:0::0:1" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" + { + "context": { + "post": [ + " ins.currentTransaction = prev", + "}" + ] + }, + "exclude_from_grouping": false, + "filename": "file2.js", + "line": { + "number": 12 } }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" + { + "abs_path": "net.js", + "context": { + "post": [ + " ins.currentTransaction = prev", + " return result" + ], + "pre": [ + " var trans = this.currentTransaction", + "" + ] + }, + "exclude_from_grouping": false, + "filename": "net.js", + "function": "onread", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 547 + }, + "module": "some module", + "vars": { + "key": "value" } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "action": "receive", - "duration": { - "us": 141581 - }, - "id": "00xxx12312312312", - "message": { - "age": { - "ms": 1577958057123 - }, - "queue": { - "name": "new_users" - }, - "routing_key": "user-created-span" - }, - "name": "Rabbitmq receive", - "representative_count": 1, - "subtype": "JMS", - "type": "messaging" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "fdedef0123456789abcdef9876543210" - }, - "transaction": { - "id": "01af25874dec69dd" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "child": { - "id": [ - "51234abcdef56789" - ] - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" + ], + "span.subtype": [ + "postgresql" + ], + "span.sync": [ + true + ], + "span.type": [ + "db" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "fdceas0123456789abcdef9876543210" + ], + "url.original": [ + "http://localhost:8000" + ], + "url.original.text": [ + "http://localhost:8000" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "0:0::0:1" + ], + "destination.ip": [ + "::1" + ], + "event.outcome": [ + "unknown" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.action": [ + "receive" + ], + "span.duration.us": [ + 141581 + ], + "span.id": [ + "00xxx12312312312" + ], + "span.message.age.ms": [ + 1577958057123 + ], + "span.message.queue.name": [ + "new_users" + ], + "span.message.routing_key": [ + "user-created-span" + ], + "span.name": [ + "Rabbitmq receive" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "JMS" + ], + "span.type": [ + "messaging" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "fdedef0123456789abcdef9876543210" + ], + "transaction.id": [ + "01af25874dec69dd" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "child.id": [ + "51234abcdef56789" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.action": [ + "query.custom" + ], + "span.duration.us": [ + 141581 + ], + "span.id": [ + "abcdef01234567" + ], + "span.name": [ + "GET /api/types" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "postgresql" + ], + "span.type": [ + "db" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "fdedef0123456789abcdef9876543210" + ], + "transaction.id": [ + "01af25874dec69dd" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:33:03.584Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "0:0::0:1" + ], + "destination.ip": [ + "::1" + ], + "destination.port": [ + 8080 + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "backendspans" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.target.name": [ + "localhost:8080" + ], + "service.target.type": [ + "" + ], + "service.version": [ + "5.1.3" + ], + "span.action": [ + "request" + ], + "span.destination.service.name": [ + "external" + ], + "span.destination.service.resource": [ + "localhost:8080" + ], + "span.destination.service.type": [ + "http" + ], + "span.duration.us": [ + 988 + ], + "span.id": [ + "ljf4567890aaaade" + ], + "span.name": [ + "Request" + ], + "span.representative_count": [ + 1 + ], + "span.subtype": [ + "http" + ], + "span.type": [ + "external" + ], + "timestamp.us": [ + 1532975583584217 + ], + "trace.id": [ + "ljfjev0123456789abcdef9876543210" + ], + "transaction.id": [ + "01af25874dec69dd" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + }, + { + "@timestamp": [ + "2018-07-30T18:53:42.281Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "justanid" + ], + "agent.name": [ + "elastic-ruby" + ], + "agent.version": [ + "2.2" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "0:0::0:1" + ], + "destination.ip": [ + "::1" + ], + "destination.port": [ + 5432 + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.id": [ + "some-request-id" + ], + "http.request.method": [ + "GET" + ], + "http.response.decoded_body_size": [ + 401 + ], + "http.response.encoded_body_size": [ + 356 + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 30012 + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "label1" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdef0123456789" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "service1" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.target.type": [ + "postgresql" + ], + "span.action": [ + "query" + ], + "span.db.instance": [ + "customers" + ], + "span.db.link": [ + "other.db.com" + ], + "span.db.rows_affected": [ + 2 + ], + "span.db.statement": [ + "SELECT * FROM product_types WHERE user_id=?" + ], + "span.db.type": [ + "sql" + ], + "span.db.user.name": [ + "readonly_user" + ], + "span.destination.service.name": [ + "postgresql" + ], + "span.destination.service.resource": [ + "postgresql" + ], + "span.destination.service.type": [ + "db" + ], + "span.duration.us": [ + 3781 + ], + "span.id": [ + "ute4567890aaaade" + ], + "span.name": [ + "SELECT FROM product_types" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "classname": "Core.js", + "exclude_from_grouping": false, + "filename": "net.js", + "line": { + "number": 547 } }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" + { + "context": { + "post": [ + " ins.currentTransaction = prev", + "}" + ] + }, + "exclude_from_grouping": false, + "filename": "file2.js", + "line": { + "number": 12 } }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" + { + "abs_path": "net.js", + "context": { + "post": [ + " ins.currentTransaction = prev", + " return result" + ], + "pre": [ + " var trans = this.currentTransaction", + "" + ] + }, + "exclude_from_grouping": false, + "filename": "net.js", + "function": "onread", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 547 + }, + "module": "some module", + "vars": { + "key": "value" } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "action": "query.custom", - "duration": { - "us": 141581 - }, - "id": "abcdef01234567", - "name": "GET /api/types", - "representative_count": 1, - "subtype": "postgresql", - "type": "db" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "fdedef0123456789abcdef9876543210" - }, - "transaction": { - "id": "01af25874dec69dd" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2018-07-30T18:33:03.584Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "0:0::0:1", - "ip": "0:0::0:1", - "port": 8080 - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "backendspans", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "target": { - "name": "localhost:8080", - "type": "" - }, - "version": "5.1.3" - }, - "span": { - "action": "request", - "destination": { - "service": { - "name": "external", - "resource": "localhost:8080", - "type": "http" - } - }, - "duration": { - "us": 988 - }, - "id": "ljf4567890aaaade", - "name": "Request", - "representative_count": 1, - "subtype": "http", - "type": "external" - }, - "timestamp": { - "us": 1532975583584217 - }, - "trace": { - "id": "ljfjev0123456789abcdef9876543210" - }, - "transaction": { - "id": "01af25874dec69dd" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" - } - }, - { - "@timestamp": "2018-07-30T18:53:42.281Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "justanid", - "name": "elastic-ruby", - "version": "2.2" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "0:0::0:1", - "ip": "0:0::0:1", - "port": 5432 - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "id": "some-request-id", - "method": "GET" - }, - "response": { - "decoded_body_size": 401, - "encoded_body_size": 356, - "status_code": 200, - "transfer_size": 30012 - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "label1" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdef0123456789" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "service1", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "target": { - "type": "postgresql" - } - }, - "span": { - "action": "query", - "db": { - "instance": "customers", - "link": "other.db.com", - "rows_affected": 2, - "statement": "SELECT * FROM product_types WHERE user_id=?", - "type": "sql", - "user": { - "name": "readonly_user" - } - }, - "destination": { - "service": { - "name": "postgresql", - "resource": "postgresql", - "type": "db" - } - }, - "duration": { - "us": 3781 - }, - "id": "ute4567890aaaade", - "name": "SELECT FROM product_types", - "representative_count": 1, - "stacktrace": [ - { - "classname": "Core.js", - "exclude_from_grouping": false, - "filename": "net.js", - "line": { - "number": 547 - } - }, - { - "context": { - "post": [ - " ins.currentTransaction = prev", - "}" - ] - }, - "exclude_from_grouping": false, - "filename": "file2.js", - "line": { - "number": 12 - } - }, - { - "abs_path": "net.js", - "context": { - "post": [ - " ins.currentTransaction = prev", - " return result" - ], - "pre": [ - " var trans = this.currentTransaction", - "" - ] - }, - "exclude_from_grouping": false, - "filename": "net.js", - "function": "onread", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 547 - }, - "module": "some module", - "vars": { - "key": "value" - } - } - ], - "subtype": "postgresql", - "sync": true, - "type": "db" - }, - "timestamp": { - "us": 1532976822281000 - }, - "trace": { - "id": "utedif0123456789abcdef9876543210" - }, - "url": { - "original": "http://localhost:8000" - }, - "user": { - "domain": "ldap://abc", - "email": "s@test.com", - "id": "123", - "name": "john" } - } - ] -} + ], + "span.subtype": [ + "postgresql" + ], + "span.sync": [ + true + ], + "span.type": [ + "db" + ], + "timestamp.us": [ + 1532976822281000 + ], + "trace.id": [ + "utedif0123456789abcdef9876543210" + ], + "url.original": [ + "http://localhost:8000" + ], + "url.original.text": [ + "http://localhost:8000" + ], + "user.domain": [ + "ldap://abc" + ], + "user.email": [ + "s@test.com" + ], + "user.id": [ + "123" + ], + "user.name": [ + "john" + ], + "user.name.text": [ + "john" + ] + } +] diff --git a/systemtest/approvals/TestIntake/Transactions.approved.json b/systemtest/approvals/TestIntake/Transactions.approved.json index 77e6ad2ccf6..cce5df9294a 100644 --- a/systemtest/approvals/TestIntake/Transactions.approved.json +++ b/systemtest/approvals/TestIntake/Transactions.approved.json @@ -1,301 +1,698 @@ -{ - "events": [ - { - "@timestamp": "2017-05-30T18:53:27.154Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "tag1": "one" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdefabcdef01234567" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "transaction" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-123" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "session": { - "id": "sunday", - "sequence": 123 - }, - "span": { - "id": "00xxxxFFaaaa1234" - }, - "timestamp": { - "us": 1496170407154000 - }, - "trace": { - "id": "0123456789abcdef0123456789abcdef" - }, - "transaction": { - "duration": { - "us": 3000 - }, - "id": "00xxxxFFaaaa1234", - "message": { - "age": { - "ms": 1577958057123 - }, - "body": "user created", - "headers": { - "Involved_services": [ - "user", - "auth" - ], - "User_id": [ - "1ax3" - ] +[ + { + "@timestamp": [ + "2017-05-30T18:53:27.154Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "one" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdefabcdef01234567" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-123" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "session.id": [ + "sunday" + ], + "session.sequence": [ + 123 + ], + "span.id": [ + "00xxxxFFaaaa1234" + ], + "timestamp.us": [ + 1496170407154000 + ], + "trace.id": [ + "0123456789abcdef0123456789abcdef" + ], + "transaction.duration.us": [ + 3000 + ], + "transaction.id": [ + "00xxxxFFaaaa1234" + ], + "transaction.message.age.ms": [ + 1577958057123 + ], + "transaction.message.body": [ + "user created" + ], + "transaction.message.headers.Involved_services": [ + "user", + "auth" + ], + "transaction.message.headers.User_id": [ + "1ax3" + ], + "transaction.message.queue.name": [ + "new_users" + ], + "transaction.message.routing_key": [ + "user-created-transaction" + ], + "transaction.name": [ + "amqp receive" + ], + "transaction.name.text": [ + "amqp receive" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.started": [ + 1 + ], + "transaction.type": [ + "messaging" + ], + "user.email": [ + "bar@user.com" + ], + "user.id": [ + "123user" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:27.154Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.tag1": [ + "one" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "abcdefabcdef01234567" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-123" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.id": [ + "945254c567a5417e" + ], + "timestamp.us": [ + 1496170407154000 + ], + "trace.id": [ + "0123456789abcdef0123456789abcdef" + ], + "transaction.duration.us": [ + 32592 + ], + "transaction.id": [ + "945254c567a5417e" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.started": [ + 43 + ], + "transaction.type": [ + "request" + ], + "user.email": [ + "bar@user.com" + ], + "user.id": [ + "123user" + ], + "user.name": [ + "bar" + ], + "user.name.text": [ + "bar" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:27.154Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "client.geo.continent_name": [ + "North America" + ], + "client.geo.country_iso_code": [ + "US" + ], + "client.geo.country_name": [ + "United States" + ], + "client.geo.location": [ + "dynamic" + ], + "client.ip": [ + "12.53.12.1" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.instance.id": [ + "instance_id" + ], + "cloud.instance.name": [ + "instance_name" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.body": [ + { + "original": { + "additional": { + "bar": 123, + "req": "additional information" }, - "queue": { - "name": "new_users" - }, - "routing_key": "user-created-transaction" - }, - "name": "amqp receive", - "representative_count": 1, - "sampled": true, - "span_count": { - "started": 1 - }, - "type": "messaging" - }, - "user": { - "email": "bar@user.com", - "id": "123user", - "name": "bar" - } - }, - { - "@timestamp": "2017-05-30T18:53:27.154Z", - "agent": { - "activation_method": "some_activation_method", - "name": "elastic-node", - "version": "3.14.0" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "instance": { - "id": "instance_id", - "name": "instance_name" - }, - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" + "str": "hello world" } - }, - "labels": { - "tag1": "one" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "abcdefabcdef01234567" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "transaction" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-123" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "id": "945254c567a5417e" - }, - "timestamp": { - "us": 1496170407154000 - }, - "trace": { - "id": "0123456789abcdef0123456789abcdef" - }, - "transaction": { - "duration": { - "us": 32592 - }, - "id": "945254c567a5417e", - "representative_count": 1, - "sampled": true, - "span_count": { - "started": 43 - }, - "type": "request" - }, - "user": { - "email": "bar@user.com", - "id": "123user", - "name": "bar" + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Array": [ + "foo", + "bar", + "baz" + ], + "http.request.headers.Content-Type": [ + "text/html" + ], + "http.request.headers.Cookie": [ + "c1=v1, c2=v2" + ], + "http.request.headers.Some-Other-Header": [ + "foo" + ], + "http.request.headers.User-Agent": [ + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36", + "Mozilla Chrome Edge" + ], + "http.request.method": [ + "POST" + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "http.response.decoded_body_size": [ + 2990 + ], + "http.response.encoded_body_size": [ + 2690 + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 258 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "labels.tag1": [ + "one" + ], + "labels.tag4": [ + "false" + ], + "numeric_labels.tag2": [ + 12 + ], + "numeric_labels.tag3": [ + 12.45 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-123" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "7.0" + ], + "service.version": [ + "5.1.3" + ], + "source.ip": [ + "12.53.12.1" + ], + "span.id": [ + "4340a8e0df1906ecbfa9" + ], + "timestamp.us": [ + 1496170407154000 + ], + "trace.id": [ + "0acd456789abcdef0123456789abcdef" + ], + "transaction.custom": [ + { + "(": "not a valid regex and that is fine", + "and_objects": { + "foo": [ + "bar", + "baz" + ] + }, + "my_key": 1, + "some_other_value": "foo bar" } }, { diff --git a/systemtest/approvals/TestIntake/TransactionsHugeTraces.approved.json b/systemtest/approvals/TestIntake/TransactionsHugeTraces.approved.json index 53aeea4b608..1632198401d 100644 --- a/systemtest/approvals/TestIntake/TransactionsHugeTraces.approved.json +++ b/systemtest/approvals/TestIntake/TransactionsHugeTraces.approved.json @@ -41,211 +41,279 @@ "service": { "name": "lambda" } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "body": { - "original": { - "additional": { - "bar": 123, - "req": "additional information" - }, - "str": "hello world" - } - }, - "cookies": { - "c1": "v1", - "c2": "v2" - }, - "env": { - "GATEWAY_INTERFACE": "CGI/1.1", - "SERVER_SOFTWARE": "nginx" - }, - "headers": { - "Array": [ - "foo", - "bar", - "baz" - ], - "Content-Type": [ - "text/html" - ], - "Cookie": [ - "c1=v1, c2=v2" - ], - "Some-Other-Header": [ - "foo" - ], - "User-Agent": [ - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36", - "Mozilla Chrome Edge" - ] - }, - "method": "POST", - "referrer": "http://localhost:8000/test/e2e/" - }, - "response": { - "decoded_body_size": 2990, - "encoded_body_size": 2690, - "finished": true, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "headers_sent": true, - "status_code": 200, - "transfer_size": 258 - }, - "version": "1.1" - }, - "kubernetes": { - "namespace": "namespace1", - "node": { - "name": "node-name" - }, - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "organization_uuid": "9f0e9d64-c185-4d21-a6f4-4673ed561ec8", - "tag1": "one", - "tag4": "false" - }, - "numeric_labels": { - "tag2": 12, - "tag3": 12.45 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "transaction" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "chatty-service", - "node": { - "name": "chatty-node" - }, - "runtime": { - "name": "node", - "version": "7.0" - }, - "version": "5.1.3" - }, - "source": { - "ip": "12.53.12.1" - }, - "span": { - "id": "ddf109a4c4aa5f2b6e984548ca57774c" - }, - "timestamp": { - "us": 1496170407154000 - }, - "trace": { - "id": "646df3b8b5279e982cc12a2f1ac004f3" - }, - "transaction": { - "custom": { - "(": "not a valid regex and that is fine", - "and_objects": { - "foo": [ - "bar", - "baz" - ] - }, - "my_key": 1, - "some_other_value": "foo bar" - }, - "duration": { - "us": 32592 - }, - "id": "ddf109a4c4aa5f2b6e984548ca57774c", - "name": "GET /api/types", - "representative_count": 1, - "result": "success", - "sampled": true, - "span_count": { - "dropped": 3, - "started": 20 - }, - "type": "request" - }, - "url": { - "domain": "www.example.com", - "fragment": "#hash", - "full": "https://www.example.com/p/a/t/h?query=string#hash", - "original": "/p/a/t/h?query=string#hash", - "path": "/p/a/t/h", - "port": 8080, - "query": "?query=string", - "scheme": "https" - }, - "user": { - "domain": "ldap://abc", - "id": "99", - "name": "foo" - }, - "user_agent": { - "device": { - "name": "Mac" - }, - "name": "Chrome", - "original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36, Mozilla Chrome Edge", - "os": { - "full": "Mac OS X 10.10.5", - "name": "Mac OS X", - "version": "10.10.5" + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Array": [ + "foo", + "bar", + "baz" + ], + "http.request.headers.Content-Type": [ + "text/html" + ], + "http.request.headers.Cookie": [ + "c1=v1, c2=v2" + ], + "http.request.headers.Some-Other-Header": [ + "foo" + ], + "http.request.headers.User-Agent": [ + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36", + "Mozilla Chrome Edge" + ], + "http.request.method": [ + "POST" + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "http.response.decoded_body_size": [ + 2990 + ], + "http.response.encoded_body_size": [ + 2690 + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 258 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "labels.tag1": [ + "one" + ], + "labels.tag4": [ + "false" + ], + "numeric_labels.tag2": [ + 12 + ], + "numeric_labels.tag3": [ + 12.45 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "chatty-service" + ], + "service.node.name": [ + "chatty-node" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "7.0" + ], + "service.version": [ + "5.1.3" + ], + "source.ip": [ + "12.53.12.1" + ], + "span.id": [ + "ddf109a4c4aa5f2b6e984548ca57774c" + ], + "timestamp.us": [ + 1496170407154000 + ], + "trace.id": [ + "646df3b8b5279e982cc12a2f1ac004f3" + ], + "transaction.custom": [ + { + "(": "not a valid regex and that is fine", + "and_objects": { + "foo": [ + "bar", + "baz" + ] }, - "version": "51.0.2704.103" + "my_key": 1, + "some_other_value": "foo bar" } - } - ] -} + ], + "transaction.duration.us": [ + 32592 + ], + "transaction.id": [ + "ddf109a4c4aa5f2b6e984548ca57774c" + ], + "transaction.name": [ + "GET /api/types" + ], + "transaction.name.text": [ + "GET /api/types" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.result": [ + "success" + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.dropped": [ + 3 + ], + "transaction.span_count.started": [ + 20 + ], + "transaction.type": [ + "request" + ], + "url.domain": [ + "www.example.com" + ], + "url.fragment": [ + "#hash" + ], + "url.full": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.full.text": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.original": [ + "/p/a/t/h?query=string#hash" + ], + "url.original.text": [ + "/p/a/t/h?query=string#hash" + ], + "url.path": [ + "/p/a/t/h" + ], + "url.port": [ + 8080 + ], + "url.query": [ + "?query=string" + ], + "url.scheme": [ + "https" + ], + "user.domain": [ + "ldap://abc" + ], + "user.id": [ + "99" + ], + "user.name": [ + "foo" + ], + "user.name.text": [ + "foo" + ], + "user_agent.device.name": [ + "Mac" + ], + "user_agent.name": [ + "Chrome" + ], + "user_agent.original": [ + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36, Mozilla Chrome Edge" + ], + "user_agent.original.text": [ + "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36, Mozilla Chrome Edge" + ], + "user_agent.os.full": [ + "Mac OS X 10.10.5" + ], + "user_agent.os.full.text": [ + "Mac OS X 10.10.5" + ], + "user_agent.os.name": [ + "Mac OS X" + ], + "user_agent.os.name.text": [ + "Mac OS X" + ], + "user_agent.os.version": [ + "10.10.5" + ], + "user_agent.version": [ + "51.0.2704.103" + ] + } +] diff --git a/systemtest/approvals/TestIntake/UnknownSpanType.approved.json b/systemtest/approvals/TestIntake/UnknownSpanType.approved.json index ff809e1d9ee..578ef307e0b 100644 --- a/systemtest/approvals/TestIntake/UnknownSpanType.approved.json +++ b/systemtest/approvals/TestIntake/UnknownSpanType.approved.json @@ -1,361 +1,493 @@ -{ - "events": [ - { - "@timestamp": "2017-05-30T18:53:27.154Z", - "agent": { - "name": "elastic-node", - "version": "3.14.0" - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "x64", - "ip": [ - "127.0.0.1" - ], - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "method": "GET" +[ + { + "@timestamp": [ + "2017-05-30T18:53:27.154Z" + ], + "agent.name": [ + "elastic-node" + ], + "agent.version": [ + "3.14.0" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "x64" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.method": [ + "GET" + ], + "http.response.status_code": [ + 200 + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.span_tag": [ + "something" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "945254c567a5417e" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "container-id" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "span.db.instance": [ + "customers" + ], + "span.db.statement": [ + "SELECT * FROM product_types WHERE user_id=?" + ], + "span.db.type": [ + "sql" + ], + "span.db.user.name": [ + "readonly_user" + ], + "span.duration.us": [ + 3781 + ], + "span.id": [ + "0aaaaaaaaaaaaaaa" + ], + "span.name": [ + "SELECT FROM product_types" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "abs_path": "net.js", + "context": { + "post": [ + " ins.currentTransaction = prev", + " return result", + "}" + ], + "pre": [ + " var trans = this.currentTransaction", + "" + ] + }, + "exclude_from_grouping": false, + "filename": "net.js", + "function": "onread", + "library_frame": true, + "line": { + "column": 4, + "context": "line3", + "number": 547 }, - "response": { - "status_code": 200 + "module": "some module", + "vars": { + "key": "value" } }, - "kubernetes": { - "namespace": "namespace1", - "pod": { - "name": "pod-name", - "uid": "pod-uid" + { + "exclude_from_grouping": false, + "filename": "my2file.js", + "line": { + "number": 10 } - }, - "labels": { - "span_tag": "something" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "945254c567a5417e" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "container-id" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "span": { - "db": { - "instance": "customers", - "statement": "SELECT * FROM product_types WHERE user_id=?", - "type": "sql", - "user": { - "name": "readonly_user" - } - }, - "duration": { - "us": 3781 - }, - "id": "0aaaaaaaaaaaaaaa", - "name": "SELECT FROM product_types", - "representative_count": 1, - "stacktrace": [ - { - "abs_path": "net.js", - "context": { - "post": [ - " ins.currentTransaction = prev", - " return result", - "}" - ], - "pre": [ - " var trans = this.currentTransaction", - "" - ] - }, - "exclude_from_grouping": false, - "filename": "net.js", - "function": "onread", - "library_frame": true, - "line": { - "column": 4, - "context": "line3", - "number": 547 - }, - "module": "some module", - "vars": { - "key": "value" - } - }, - { - "exclude_from_grouping": false, - "filename": "my2file.js", - "line": { - "number": 10 - } - } - ], - "sync": false, - "type": "unknown" - }, - "timestamp": { - "us": 1496170407154000 - }, - "trace": { - "id": "945254c567a5417eaaaaaaaaaaaaaaaa" - }, - "transaction": { - "id": "945254c567a5417e" - }, - "url": { - "original": "http://localhost:8000" - }, - "user": { - "email": "foo@bar.com", - "id": "123user", - "name": "foo" } - }, - { - "@timestamp": "2017-05-30T18:53:27.154Z", - "agent": { - "name": "js-base", - "version": "1.3" - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success" - }, - "host": { - "architecture": "x64", - "ip": [ - "127.0.0.1" - ], - "os": { - "platform": "darwin" - } - }, - "http": { - "request": { - "body": { - "original": { - "additional": { - "bar": 123, - "req": "additional information" - }, - "str": "hello world" - } + ], + "span.sync": [ + false + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1496170407154000 + ], + "trace.id": [ + "945254c567a5417eaaaaaaaaaaaaaaaa" + ], + "transaction.id": [ + "945254c567a5417e" + ], + "url.original": [ + "http://localhost:8000" + ], + "url.original.text": [ + "http://localhost:8000" + ], + "user.email": [ + "foo@bar.com" + ], + "user.id": [ + "123user" + ], + "user.name": [ + "foo" + ], + "user.name.text": [ + "foo" + ] + }, + { + "@timestamp": [ + "2017-05-30T18:53:27.154Z" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "1.3" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "host.architecture": [ + "x64" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.os.platform": [ + "darwin" + ], + "http.request.body": [ + { + "original": { + "additional": { + "bar": 123, + "req": "additional information" }, - "cookies": { - "c1": "v1", - "c2": "v2" - }, - "env": { - "GATEWAY_INTERFACE": "CGI/1.1", - "SERVER_SOFTWARE": "nginx" - }, - "headers": { - "Array": [ - "foo", - "bar", - "baz" - ], - "Content-Type": [ - "text/html" - ], - "Cookie": [ - "c1=v1,c2=v2" - ], - "Some-Other-Header": [ - "foo" - ], - "User-Agent": [ - "Mozilla Chrome Edge" - ] - }, - "method": "POST", - "referrer": "http://localhost:8000/test/e2e/" - }, - "response": { - "finished": true, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "headers_sent": true, - "status_code": 200 - }, - "version": "1.1" - }, - "kubernetes": { - "namespace": "namespace1", - "pod": { - "name": "pod-name", - "uid": "pod-uid" - } - }, - "labels": { - "bool_error": "false", - "organization_uuid": "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" - }, - "numeric_labels": { - "number_code": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "node", - "server.js" - ], - "parent": { - "pid": 6789 - }, - "pid": 1234, - "title": "node" - }, - "processor": { - "event": "transaction" - }, - "service": { - "environment": "staging", - "framework": { - "name": "Express", - "version": "1.2.3" - }, - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "serviceabc", - "node": { - "name": "special-name" - }, - "runtime": { - "name": "javascript", - "version": "8.0.0" + "str": "hello world" } - }, - "span": { - "id": "945254c567a5417e" - }, - "timestamp": { - "us": 1496170407154000 - }, - "trace": { - "id": "945254c567a5417eaaaaaaaaaaaaaaaa" - }, - "transaction": { - "custom": { - "(": "not a valid regex and that is fine", - "and_objects": { - "foo": [ - "bar", - "baz" - ] - }, - "my_key": 1, - "some_other_value": "foo bar" - }, - "duration": { - "us": 32592 - }, - "id": "945254c567a5417e", - "marks": { - "another_mark": { - "some_float": 10, - "some_long": 10 - }, - "navigationTiming": { - "appBeforeBootstrap": 608.9300000000001, - "navigationStart": -21 - } - }, - "name": "GET /api/types", - "representative_count": 1, - "result": "success", - "sampled": true, - "span_count": { - "dropped": 2, - "started": 4 - }, - "type": "unknown" - }, - "url": { - "domain": "www.example.com", - "fragment": "#hash", - "full": "https://www.example.com/p/a/t/h?query=string#hash", - "original": "/p/a/t/h?query=string#hash", - "path": "/p/a/t/h", - "port": 8080, - "query": "?query=string", - "scheme": "https" - }, - "user": { - "email": "foo@example.com", - "id": "99" - }, - "user_agent": { - "device": { - "name": "Other" + } + ], + "http.request.cookies.c1": [ + "v1" + ], + "http.request.cookies.c2": [ + "v2" + ], + "http.request.env.GATEWAY_INTERFACE": [ + "CGI/1.1" + ], + "http.request.env.SERVER_SOFTWARE": [ + "nginx" + ], + "http.request.headers.Array": [ + "foo", + "bar", + "baz" + ], + "http.request.headers.Content-Type": [ + "text/html" + ], + "http.request.headers.Cookie": [ + "c1=v1,c2=v2" + ], + "http.request.headers.Some-Other-Header": [ + "foo" + ], + "http.request.headers.User-Agent": [ + "Mozilla Chrome Edge" + ], + "http.request.method": [ + "POST" + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "http.response.finished": [ + true + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.headers_sent": [ + true + ], + "http.response.status_code": [ + 200 + ], + "http.version": [ + "1.1" + ], + "kubernetes.namespace": [ + "namespace1" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "kubernetes.pod.uid": [ + "pod-uid" + ], + "labels.bool_error": [ + "false" + ], + "labels.organization_uuid": [ + "9f0e9d64-c185-4d21-a6f4-4673ed561ec8" + ], + "numeric_labels.number_code": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "node", + "server.js" + ], + "process.parent.pid": [ + 6789 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "node" + ], + "process.title.text": [ + "node" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "staging" + ], + "service.framework.name": [ + "Express" + ], + "service.framework.version": [ + "1.2.3" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "serviceabc" + ], + "service.node.name": [ + "special-name" + ], + "service.runtime.name": [ + "javascript" + ], + "service.runtime.version": [ + "8.0.0" + ], + "span.id": [ + "945254c567a5417e" + ], + "timestamp.us": [ + 1496170407154000 + ], + "trace.id": [ + "945254c567a5417eaaaaaaaaaaaaaaaa" + ], + "transaction.custom": [ + { + "(": "not a valid regex and that is fine", + "and_objects": { + "foo": [ + "bar", + "baz" + ] }, - "name": "Other", - "original": "Mozilla Chrome Edge" + "my_key": 1, + "some_other_value": "foo bar" } - } - ] -} + ], + "transaction.duration.us": [ + 32592 + ], + "transaction.id": [ + "945254c567a5417e" + ], + "transaction.marks.another_mark.some_float": [ + 10 + ], + "transaction.marks.another_mark.some_long": [ + 10 + ], + "transaction.marks.navigationTiming.appBeforeBootstrap": [ + 608.93 + ], + "transaction.marks.navigationTiming.navigationStart": [ + -21 + ], + "transaction.name": [ + "GET /api/types" + ], + "transaction.name.text": [ + "GET /api/types" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.result": [ + "success" + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.dropped": [ + 2 + ], + "transaction.span_count.started": [ + 4 + ], + "transaction.type": [ + "unknown" + ], + "url.domain": [ + "www.example.com" + ], + "url.fragment": [ + "#hash" + ], + "url.full": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.full.text": [ + "https://www.example.com/p/a/t/h?query=string#hash" + ], + "url.original": [ + "/p/a/t/h?query=string#hash" + ], + "url.original.text": [ + "/p/a/t/h?query=string#hash" + ], + "url.path": [ + "/p/a/t/h" + ], + "url.port": [ + 8080 + ], + "url.query": [ + "?query=string" + ], + "url.scheme": [ + "https" + ], + "user.email": [ + "foo@example.com" + ], + "user.id": [ + "99" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Other" + ], + "user_agent.original": [ + "Mozilla Chrome Edge" + ], + "user_agent.original.text": [ + "Mozilla Chrome Edge" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/with_faas.approved.json b/systemtest/approvals/TestIntakeLog/with_faas.approved.json index 9887a676b38..f4027880df6 100644 --- a/systemtest/approvals/TestIntakeLog/with_faas.approved.json +++ b/systemtest/approvals/TestIntakeLog/with_faas.approved.json @@ -1,93 +1,136 @@ -{ - "events": [ - { - "@timestamp": "2022-09-08T05:47:29.000Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "faas": { - "coldstart": true, - "execution": "6f7f0961f83442118a7af6fe80b88d56", - "id": "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "group": "experimental" - }, - "message": "test log message with faas", - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "1234_service-12a3", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "4.3.0" - } - } - ] -} +[ + { + "@timestamp": [ + "2022-09-08T05:47:29.000Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "faas.coldstart": [ + true + ], + "faas.execution": [ + "6f7f0961f83442118a7af6fe80b88d56" + ], + "faas.id": [ + "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "message": [ + "test log message with faas" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "4.3.0" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/with_flat_ecs_fields.approved.json b/systemtest/approvals/TestIntakeLog/with_flat_ecs_fields.approved.json index 640b1bf778f..b7af03e4488 100644 --- a/systemtest/approvals/TestIntakeLog/with_flat_ecs_fields.approved.json +++ b/systemtest/approvals/TestIntakeLog/with_flat_ecs_fields.approved.json @@ -1,121 +1,178 @@ -{ - "events": [ - { - "@timestamp": "2022-09-08T05:47:29.000Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.testsvc", - "namespace": "default", - "type": "logs" - }, - "event": { - "dataset": "accesslog", - "kind": "event" - }, - "faas": { - "coldstart": true, - "execution": "6f7f0961f83442118a7af6fe80b88d56", - "id": "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "bool": "true", - "group": "experimental", - "str": "str" - }, - "log": { - "level": "warn", - "logger": "testLogger", - "origin": { - "file": { - "line": 10, - "name": "testFile" - }, - "function": "testFunc" - } - }, - "message": "test log message with ecs fields", - "numeric_labels": { - "float": 1.1, - "int": 1, - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "thread": { - "name": "testThread" - }, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "prod", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "testSvc", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "v1.0.0" - }, - "span": { - "id": "txn-id" - }, - "trace": { - "id": "trace-id" - }, - "transaction": { - "id": "txn-id" - } - } - ] -} +[ + { + "@timestamp": [ + "2022-09-08T05:47:29.000Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.testsvc" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.dataset": [ + "accesslog" + ], + "event.kind": [ + "event" + ], + "faas.coldstart": [ + true + ], + "faas.execution": [ + "6f7f0961f83442118a7af6fe80b88d56" + ], + "faas.id": [ + "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.bool": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.str": [ + "str" + ], + "log.level": [ + "warn" + ], + "log.logger": [ + "testLogger" + ], + "log.origin.file.line": [ + 10 + ], + "log.origin.file.name": [ + "testFile" + ], + "log.origin.function": [ + "testFunc" + ], + "message": [ + "test log message with ecs fields" + ], + "numeric_labels.float": [ + 1.1 + ], + "numeric_labels.int": [ + 1 + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.thread.name": [ + "testThread" + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "prod" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "testSvc" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "v1.0.0" + ], + "span.id": [ + "txn-id" + ], + "trace.id": [ + "trace-id" + ], + "transaction.id": [ + "txn-id" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields.approved.json b/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields.approved.json index ee229a305be..58e95a53a41 100644 --- a/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields.approved.json +++ b/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields.approved.json @@ -1,121 +1,178 @@ -{ - "events": [ - { - "@timestamp": "2022-09-08T05:47:29.000Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.testsvc", - "namespace": "default", - "type": "logs" - }, - "event": { - "dataset": "accesslog", - "kind": "event" - }, - "faas": { - "coldstart": true, - "execution": "6f7f0961f83442118a7af6fe80b88d56", - "id": "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "bool": "true", - "group": "experimental", - "str": "str" - }, - "log": { - "level": "warn", - "logger": "testLogger", - "origin": { - "file": { - "line": 10, - "name": "testFile" - }, - "function": "testFunc" - } - }, - "message": "test log message with nested ecs fields", - "numeric_labels": { - "float": 1.1, - "int": 1, - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "thread": { - "name": "testThread" - }, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "prod", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "testSvc", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "v1.0.0" - }, - "span": { - "id": "txn-id" - }, - "trace": { - "id": "trace-id" - }, - "transaction": { - "id": "txn-id" - } - } - ] -} +[ + { + "@timestamp": [ + "2022-09-08T05:47:29.000Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.testsvc" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.dataset": [ + "accesslog" + ], + "event.kind": [ + "event" + ], + "faas.coldstart": [ + true + ], + "faas.execution": [ + "6f7f0961f83442118a7af6fe80b88d56" + ], + "faas.id": [ + "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.bool": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.str": [ + "str" + ], + "log.level": [ + "warn" + ], + "log.logger": [ + "testLogger" + ], + "log.origin.file.line": [ + 10 + ], + "log.origin.file.name": [ + "testFile" + ], + "log.origin.function": [ + "testFunc" + ], + "message": [ + "test log message with nested ecs fields" + ], + "numeric_labels.float": [ + 1.1 + ], + "numeric_labels.int": [ + 1 + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.thread.name": [ + "testThread" + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "prod" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "testSvc" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "v1.0.0" + ], + "span.id": [ + "txn-id" + ], + "trace.id": [ + "trace-id" + ], + "transaction.id": [ + "txn-id" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields_overrides_flat_fields.approved.json b/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields_overrides_flat_fields.approved.json index 53cea0bad7e..14f97043e1e 100644 --- a/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields_overrides_flat_fields.approved.json +++ b/systemtest/approvals/TestIntakeLog/with_nested_ecs_fields_overrides_flat_fields.approved.json @@ -1,121 +1,178 @@ -{ - "events": [ - { - "@timestamp": "2022-09-08T05:47:29.000Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.testsvc", - "namespace": "default", - "type": "logs" - }, - "event": { - "dataset": "accesslog", - "kind": "event" - }, - "faas": { - "coldstart": true, - "execution": "6f7f0961f83442118a7af6fe80b88d56", - "id": "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "bool": "true", - "group": "experimental", - "str": "str" - }, - "log": { - "level": "warn", - "logger": "testLogger", - "origin": { - "file": { - "line": 10, - "name": "testFile" - }, - "function": "testFunc" - } - }, - "message": "test log message with override of flat ecs fields by nested ecs fields", - "numeric_labels": { - "float": 1.1, - "int": 1, - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "thread": { - "name": "testThread" - }, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "prod", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "testSvc", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "v1.0.0" - }, - "span": { - "id": "txn-id" - }, - "trace": { - "id": "trace-id" - }, - "transaction": { - "id": "txn-id" - } - } - ] -} +[ + { + "@timestamp": [ + "2022-09-08T05:47:29.000Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.testsvc" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.dataset": [ + "accesslog" + ], + "event.kind": [ + "event" + ], + "faas.coldstart": [ + true + ], + "faas.execution": [ + "6f7f0961f83442118a7af6fe80b88d56" + ], + "faas.id": [ + "arn:aws:lambda:us-east-2:123456789012:function:custom-runtime" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.bool": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "labels.str": [ + "str" + ], + "log.level": [ + "warn" + ], + "log.logger": [ + "testLogger" + ], + "log.origin.file.line": [ + 10 + ], + "log.origin.file.name": [ + "testFile" + ], + "log.origin.function": [ + "testFunc" + ], + "message": [ + "test log message with override of flat ecs fields by nested ecs fields" + ], + "numeric_labels.float": [ + 1.1 + ], + "numeric_labels.int": [ + 1 + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.thread.name": [ + "testThread" + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "prod" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "testSvc" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "v1.0.0" + ], + "span.id": [ + "txn-id" + ], + "trace.id": [ + "trace-id" + ], + "transaction.id": [ + "txn-id" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/with_timestamp.approved.json b/systemtest/approvals/TestIntakeLog/with_timestamp.approved.json index cab2f99b616..39869bafc29 100644 --- a/systemtest/approvals/TestIntakeLog/with_timestamp.approved.json +++ b/systemtest/approvals/TestIntakeLog/with_timestamp.approved.json @@ -1,88 +1,127 @@ -{ - "events": [ - { - "@timestamp": "2022-09-08T05:47:29.000Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "group": "experimental" - }, - "message": "test log message with timestamp", - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "1234_service-12a3", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "4.3.0" - } - } - ] -} +[ + { + "@timestamp": [ + "2022-09-08T05:47:29.000Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "message": [ + "test log message with timestamp" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "4.3.0" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/with_timestamp_as_str.approved.json b/systemtest/approvals/TestIntakeLog/with_timestamp_as_str.approved.json index 78906cc28be..bc0c05fa3e6 100644 --- a/systemtest/approvals/TestIntakeLog/with_timestamp_as_str.approved.json +++ b/systemtest/approvals/TestIntakeLog/with_timestamp_as_str.approved.json @@ -1,88 +1,127 @@ -{ - "events": [ - { - "@timestamp": "2022-09-08T21:47:29.111Z", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "group": "experimental" - }, - "message": "test log message with string timestamp", - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "1234_service-12a3", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "4.3.0" - } - } - ] -} +[ + { + "@timestamp": [ + "2022-09-08T21:47:29.111Z" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "message": [ + "test log message with string timestamp" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "4.3.0" + ] + } +] diff --git a/systemtest/approvals/TestIntakeLog/without_timestamp.approved.json b/systemtest/approvals/TestIntakeLog/without_timestamp.approved.json index 46e41c21104..8620e852b9b 100644 --- a/systemtest/approvals/TestIntakeLog/without_timestamp.approved.json +++ b/systemtest/approvals/TestIntakeLog/without_timestamp.approved.json @@ -1,88 +1,127 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "activation_method": "some_activation_method", - "ephemeral_id": "e71be9ac-93b0-44b9-a997-5638f6ccfc36", - "name": "java", - "version": "1.10.0" - }, - "container": { - "id": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "data_stream": { - "dataset": "apm.app.1234_service_12a3", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "architecture": "amd64", - "hostname": "node-name", - "ip": [ - "127.0.0.1" - ], - "name": "host1", - "os": { - "platform": "Linux" - } - }, - "kubernetes": { - "namespace": "default", - "node": { - "name": "node-name" - }, - "pod": { - "name": "instrumented-java-service", - "uid": "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" - } - }, - "labels": { - "ab_testing": "true", - "group": "experimental" - }, - "message": "test log message without timestamp", - "numeric_labels": { - "segment": 5 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "args": [ - "-v" - ], - "parent": { - "pid": 1 - }, - "pid": 1234, - "title": "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" - }, - "service": { - "environment": "production", - "framework": { - "name": "spring", - "version": "5.0.0" - }, - "language": { - "name": "Java", - "version": "10.0.2" - }, - "name": "1234_service-12a3", - "node": { - "name": "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" - }, - "runtime": { - "name": "Java", - "version": "10.0.2" - }, - "version": "4.3.0" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.activation_method": [ + "some_activation_method" + ], + "agent.ephemeral_id": [ + "e71be9ac-93b0-44b9-a997-5638f6ccfc36" + ], + "agent.name": [ + "java" + ], + "agent.version": [ + "1.10.0" + ], + "container.id": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "data_stream.dataset": [ + "apm.app.1234_service_12a3" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.architecture": [ + "amd64" + ], + "host.hostname": [ + "node-name" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "host1" + ], + "host.os.platform": [ + "Linux" + ], + "kubernetes.namespace": [ + "default" + ], + "kubernetes.node.name": [ + "node-name" + ], + "kubernetes.pod.name": [ + "instrumented-java-service" + ], + "kubernetes.pod.uid": [ + "b17f231da0ad128dc6c6c0b2e82f6f303d3893e3" + ], + "labels.ab_testing": [ + "true" + ], + "labels.group": [ + "experimental" + ], + "message": [ + "test log message without timestamp" + ], + "numeric_labels.segment": [ + 5 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.args": [ + "-v" + ], + "process.parent.pid": [ + 1 + ], + "process.pid": [ + 1234 + ], + "process.title": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "process.title.text": [ + "/usr/lib/jvm/java-10-openjdk-amd64/bin/java" + ], + "service.environment": [ + "production" + ], + "service.framework.name": [ + "spring" + ], + "service.framework.version": [ + "5.0.0" + ], + "service.language.name": [ + "Java" + ], + "service.language.version": [ + "10.0.2" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "8ec7ceb990749e79b37f6dc6cd3628633618d6ce412553a552a0fa6b69419ad4" + ], + "service.runtime.name": [ + "Java" + ], + "service.runtime.version": [ + "10.0.2" + ], + "service.version": [ + "4.3.0" + ] + } +] diff --git a/systemtest/approvals/TestJaeger/batch_0.approved.json b/systemtest/approvals/TestJaeger/batch_0.approved.json index 4051d7bd2f1..3484db6e060 100644 --- a/systemtest/approvals/TestJaeger/batch_0.approved.json +++ b/systemtest/approvals/TestJaeger/batch_0.approved.json @@ -1,422 +1,589 @@ -{ - "events": [ - { - "@timestamp": "2019-12-20T07:41:45.007Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "redis timeout" - } - ], - "grouping_key": "dd09a7d0d9dde0adfcd694967c5a88de", - "grouping_name": "Retrying GetDriver after error", - "log": { - "message": "Retrying GetDriver after error" - } - }, - "event": {}, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "message": "Retrying GetDriver after error", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "timestamp": { - "us": 1576827705007552 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "id": "7be2fd98d0973be3", - "sampled": true, - "type": "unknown" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.089Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "redis timeout" - } - ], - "grouping_key": "dd09a7d0d9dde0adfcd694967c5a88de", - "grouping_name": "Retrying GetDriver after error", - "log": { - "message": "Retrying GetDriver after error" - } - }, - "event": {}, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "message": "Retrying GetDriver after error", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "timestamp": { - "us": 1576827705089431 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "id": "7be2fd98d0973be3", - "sampled": true, - "type": "unknown" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.172Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "redis timeout" - } - ], - "grouping_key": "dd09a7d0d9dde0adfcd694967c5a88de", - "grouping_name": "Retrying GetDriver after error", - "log": { - "message": "Retrying GetDriver after error" - } - }, - "event": {}, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "message": "Retrying GetDriver after error", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "timestamp": { - "us": 1576827705172530 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "id": "7be2fd98d0973be3", - "sampled": true, - "type": "unknown" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.197Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.app.driver", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "level": "info" - }, - "message": "Search successful", - "numeric_labels": { - "num_drivers": 10 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "id": "7be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:44.954Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.app.driver", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "level": "info", - "location": "728,326" - }, - "message": "Searching for nearby drivers", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "id": "7be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:44.954Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.app.driver", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "key": "customer", - "value": "Japanese Desserts" - }, - "message": "baggage", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "id": "7be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:44.953Z", - "agent": { - "ephemeral_id": "624386e9c81d2980", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "as": "thrift", - "peer_service": "driver-client", - "sampler_param": "true", - "sampler_type": "const" - }, - "numeric_labels": { - "peer_ipv4": 2130706433, - "peer_port": 50535 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "driver", - "node": { - "name": "host01" - } - }, - "span": { - "id": "7be2fd98d0973be3" - }, - "timestamp": { - "us": 1576827704953864 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - }, - "transaction": { - "duration": { - "us": 243417 - }, - "id": "7be2fd98d0973be3", - "name": "Driver::findNearest", - "sampled": true, - "type": "unknown" - } - } - ] -} +[ + { + "@timestamp": [ + "2019-12-20T07:41:45.007Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "redis timeout" + ], + "error.grouping_key": [ + "dd09a7d0d9dde0adfcd694967c5a88de" + ], + "error.grouping_name": [ + "Retrying GetDriver after error" + ], + "error.log.message": [ + "Retrying GetDriver after error" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "message": [ + "Retrying GetDriver after error" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "error" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "timestamp.us": [ + 1576827705007552 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.id": [ + "7be2fd98d0973be3" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "unknown" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.089Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "redis timeout" + ], + "error.grouping_key": [ + "dd09a7d0d9dde0adfcd694967c5a88de" + ], + "error.grouping_name": [ + "Retrying GetDriver after error" + ], + "error.log.message": [ + "Retrying GetDriver after error" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "message": [ + "Retrying GetDriver after error" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "error" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "timestamp.us": [ + 1576827705089431 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.id": [ + "7be2fd98d0973be3" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "unknown" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.172Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "redis timeout" + ], + "error.grouping_key": [ + "dd09a7d0d9dde0adfcd694967c5a88de" + ], + "error.grouping_name": [ + "Retrying GetDriver after error" + ], + "error.log.message": [ + "Retrying GetDriver after error" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "message": [ + "Retrying GetDriver after error" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "error" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "timestamp.us": [ + 1576827705172530 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.id": [ + "7be2fd98d0973be3" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "unknown" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.197Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.app.driver" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.level": [ + "info" + ], + "message": [ + "Search successful" + ], + "numeric_labels.num_drivers": [ + 10 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.id": [ + "7be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:44.954Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.app.driver" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.level": [ + "info" + ], + "labels.location": [ + "728,326" + ], + "message": [ + "Searching for nearby drivers" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.id": [ + "7be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:44.954Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.app.driver" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.key": [ + "customer" + ], + "labels.value": [ + "Japanese Desserts" + ], + "message": [ + "baggage" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.id": [ + "7be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:44.953Z" + ], + "agent.ephemeral_id": [ + "624386e9c81d2980" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.as": [ + "thrift" + ], + "labels.peer_service": [ + "driver-client" + ], + "labels.sampler_param": [ + "true" + ], + "labels.sampler_type": [ + "const" + ], + "numeric_labels.peer_ipv4": [ + 2130706433 + ], + "numeric_labels.peer_port": [ + 50535 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "driver" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "7be2fd98d0973be3" + ], + "timestamp.us": [ + 1576827704953864 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ], + "transaction.duration.us": [ + 243417 + ], + "transaction.id": [ + "7be2fd98d0973be3" + ], + "transaction.name": [ + "Driver::findNearest" + ], + "transaction.name.text": [ + "Driver::findNearest" + ], + "transaction.result": [ + "Success" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "unknown" + ] + } +] diff --git a/systemtest/approvals/TestJaeger/batch_1.approved.json b/systemtest/approvals/TestJaeger/batch_1.approved.json index ced4f97992c..71f7aef4764 100644 --- a/systemtest/approvals/TestJaeger/batch_1.approved.json +++ b/systemtest/approvals/TestJaeger/batch_1.approved.json @@ -1,1091 +1,1511 @@ -{ - "events": [ - { - "@timestamp": "2019-12-20T07:41:45.006Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "redis timeout" - } - ], - "grouping_key": "dd09a7d0d9dde0adfcd694967c5a88de", - "grouping_name": "redis timeout", - "log": { - "message": "redis timeout" - } - }, - "event": {}, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "driver_id": "T762465C" - }, - "message": "redis timeout", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "333295bfb438ea03" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "timestamp": { - "us": 1576827705006847 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.089Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "redis timeout" - } - ], - "grouping_key": "dd09a7d0d9dde0adfcd694967c5a88de", - "grouping_name": "redis timeout", - "log": { - "message": "redis timeout" - } - }, - "event": {}, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "driver_id": "T781861C" - }, - "message": "redis timeout", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "614811d6c498bfb0" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "timestamp": { - "us": 1576827705089372 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.172Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "message": "redis timeout" - } - ], - "grouping_key": "dd09a7d0d9dde0adfcd694967c5a88de", - "grouping_name": "redis timeout", - "log": { - "message": "redis timeout" - } - }, - "event": {}, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "driver_id": "T752547C" - }, - "message": "redis timeout", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "0242ee3774d9eab1" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "timestamp": { - "us": 1576827705172347 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:44.973Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm.app.redis", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "level": "info" - }, - "message": "Found drivers", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "id": "6e09e8bcefd6b828" - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.132Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "failure", - "success_count": 0 - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T752547C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 39602 - }, - "id": "0242ee3774d9eab1", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705132896 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.089Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T781861C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 11802 - }, - "id": "231604559da84d61", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705089459 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.186Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T757338C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 10431 - }, - "id": "2b4c28f02b272f17", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705186670 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.113Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T708771C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 11986 - }, - "id": "2ef335bad24accc2", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705113531 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:44.973Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "failure", - "success_count": 0 - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T762465C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 33732 - }, - "id": "333295bfb438ea03", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827704973809 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.125Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T710624C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 7311 - }, - "id": "38ec645e7201224d", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705125567 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.054Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "failure", - "success_count": 0 - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T781861C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 35375 - }, - "id": "614811d6c498bfb0", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705054046 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.101Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T705860C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 12236 - }, - "id": "61f7ecf24d13c36a", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705101278 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.007Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T762465C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 9240 - }, - "id": "627c37a97e475c2f", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705007578 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.172Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T752547C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 14029 - }, - "id": "6a63d1e81cfc7d95", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705172618 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.029Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T752110C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 10630 - }, - "id": "6b4051dd2a5e2366", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705029415 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.040Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T757670C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 13946 - }, - "id": "6df97a86b9b3451b", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705040082 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:44.954Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_location": "728,326" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 19711 - }, - "id": "6e09e8bcefd6b828", - "name": "FindDriverIDs", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827704954062 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - }, - { - "@timestamp": "2019-12-20T07:41:45.016Z", - "agent": { - "ephemeral_id": "2e3f8db3eb77fae0", - "name": "Jaeger/Go", - "version": "2.20.1" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "host": { - "hostname": "host01", - "ip": [ - "10.0.0.13" - ], - "name": "host01" - }, - "labels": { - "param_driverID": "T712515C" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "7be2fd98d0973be3" - }, - "processor": { - "event": "span" - }, - "service": { - "language": { - "name": "Go" - }, - "name": "redis", - "node": { - "name": "host01" - } - }, - "span": { - "duration": { - "us": 12561 - }, - "id": "7bd7663d39c5a847", - "name": "GetDriver", - "representative_count": 1, - "type": "unknown" - }, - "timestamp": { - "us": 1576827705016845 - }, - "trace": { - "id": "00000000000000007be2fd98d0973be3" - } - } - ] -} +[ + { + "@timestamp": [ + "2019-12-20T07:41:45.006Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "redis timeout" + ], + "error.grouping_key": [ + "dd09a7d0d9dde0adfcd694967c5a88de" + ], + "error.grouping_name": [ + "redis timeout" + ], + "error.log.message": [ + "redis timeout" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.driver_id": [ + "T762465C" + ], + "message": [ + "redis timeout" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "333295bfb438ea03" + ], + "processor.event": [ + "error" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "timestamp.us": [ + 1576827705006847 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.089Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "redis timeout" + ], + "error.grouping_key": [ + "dd09a7d0d9dde0adfcd694967c5a88de" + ], + "error.grouping_name": [ + "redis timeout" + ], + "error.log.message": [ + "redis timeout" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.driver_id": [ + "T781861C" + ], + "message": [ + "redis timeout" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "614811d6c498bfb0" + ], + "processor.event": [ + "error" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "timestamp.us": [ + 1576827705089372 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.172Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.message": [ + "redis timeout" + ], + "error.grouping_key": [ + "dd09a7d0d9dde0adfcd694967c5a88de" + ], + "error.grouping_name": [ + "redis timeout" + ], + "error.log.message": [ + "redis timeout" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.driver_id": [ + "T752547C" + ], + "message": [ + "redis timeout" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "0242ee3774d9eab1" + ], + "processor.event": [ + "error" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "timestamp.us": [ + 1576827705172347 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:44.973Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm.app.redis" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.level": [ + "info" + ], + "message": [ + "Found drivers" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.id": [ + "6e09e8bcefd6b828" + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.132Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "failure" + ], + "event.success_count": [ + 0 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T752547C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 39602 + ], + "span.id": [ + "0242ee3774d9eab1" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705132896 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.089Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T781861C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 11802 + ], + "span.id": [ + "231604559da84d61" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705089459 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.186Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T757338C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 10431 + ], + "span.id": [ + "2b4c28f02b272f17" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705186670 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.113Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T708771C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 11986 + ], + "span.id": [ + "2ef335bad24accc2" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705113531 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:44.973Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "failure" + ], + "event.success_count": [ + 0 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T762465C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 33732 + ], + "span.id": [ + "333295bfb438ea03" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827704973809 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.125Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T710624C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 7311 + ], + "span.id": [ + "38ec645e7201224d" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705125567 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.054Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "failure" + ], + "event.success_count": [ + 0 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T781861C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 35375 + ], + "span.id": [ + "614811d6c498bfb0" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705054046 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.101Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T705860C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 12236 + ], + "span.id": [ + "61f7ecf24d13c36a" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705101278 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.007Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T762465C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 9240 + ], + "span.id": [ + "627c37a97e475c2f" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705007578 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.172Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T752547C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 14029 + ], + "span.id": [ + "6a63d1e81cfc7d95" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705172618 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.029Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T752110C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 10630 + ], + "span.id": [ + "6b4051dd2a5e2366" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705029415 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.040Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T757670C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 13946 + ], + "span.id": [ + "6df97a86b9b3451b" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705040082 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:44.954Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_location": [ + "728,326" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 19711 + ], + "span.id": [ + "6e09e8bcefd6b828" + ], + "span.name": [ + "FindDriverIDs" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827704954062 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + }, + { + "@timestamp": [ + "2019-12-20T07:41:45.016Z" + ], + "agent.ephemeral_id": [ + "2e3f8db3eb77fae0" + ], + "agent.name": [ + "Jaeger/Go" + ], + "agent.version": [ + "2.20.1" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.hostname": [ + "host01" + ], + "host.ip": [ + "10.0.0.13" + ], + "host.name": [ + "host01" + ], + "labels.param_driverID": [ + "T712515C" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "7be2fd98d0973be3" + ], + "processor.event": [ + "span" + ], + "service.language.name": [ + "Go" + ], + "service.name": [ + "redis" + ], + "service.node.name": [ + "host01" + ], + "span.duration.us": [ + 12561 + ], + "span.id": [ + "7bd7663d39c5a847" + ], + "span.name": [ + "GetDriver" + ], + "span.representative_count": [ + 1 + ], + "span.type": [ + "unknown" + ], + "timestamp.us": [ + 1576827705016845 + ], + "trace.id": [ + "00000000000000007be2fd98d0973be3" + ] + } +] diff --git a/systemtest/approvals/TestNoMatchingSourcemap.approved.json b/systemtest/approvals/TestNoMatchingSourcemap.approved.json index a636db9b175..0c0caf5703f 100644 --- a/systemtest/approvals/TestNoMatchingSourcemap.approved.json +++ b/systemtest/approvals/TestNoMatchingSourcemap.approved.json @@ -1,90 +1,111 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "0.0.0" - }, - "client": { - "ip": "127.0.0.1" - }, - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "611f4fa950f04631" - }, - "processor": { - "event": "span" - }, - "service": { - "name": "apm-agent-js" - }, - "source": { - "ip": "127.0.0.1", - "port": "dynamic" - }, - "span": { - "duration": { - "us": 643000 +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "0.0.0" + ], + "client.ip": [ + "127.0.0.1" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "611f4fa950f04631" + ], + "processor.event": [ + "span" + ], + "service.name": [ + "apm-agent-js" + ], + "source.ip": [ + "127.0.0.1" + ], + "source.port": [ + "dynamic" + ], + "span.duration.us": [ + 643000 + ], + "span.id": [ + "aaaaaaaaaaaaaaaa" + ], + "span.name": [ + "transaction" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "abs_path": "http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map", + "exclude_from_grouping": false, + "filename": "test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "line": { + "column": 18, + "number": 1 }, - "id": "aaaaaaaaaaaaaaaa", - "name": "transaction", - "representative_count": 1, - "stacktrace": [ - { - "abs_path": "http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map", - "exclude_from_grouping": false, - "filename": "test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "line": { - "column": 18, - "number": 1 - }, - "sourcemap": { - "error": "unable to find sourcemap.url for service.name=apm-agent-js service.version=1.0.0 bundle.path=http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map" - } - }, - { - "abs_path": "http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map", - "exclude_from_grouping": false, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "library_frame": true, - "line": { - "column": 18, - "number": 1 - }, - "sourcemap": { - "error": "unable to find sourcemap.url for service.name=apm-agent-js service.version=1.0.0 bundle.path=http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map" - } - } - ], - "type": "transaction" - }, - "timestamp": { - "us": "dynamic" + "sourcemap": { + "error": "unable to find sourcemap.url for service.name=apm-agent-js service.version=1.0.0 bundle.path=http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map" + } }, - "trace": { - "id": "611f4fa950f04631aaaaaaaaaaaaaaaa" - }, - "transaction": { - "id": "611f4fa950f04631" - }, - "url": { - "original": "http://localhost:8000/test/e2e/general-usecase/span" + { + "abs_path": "http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map", + "exclude_from_grouping": false, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "library_frame": true, + "line": { + "column": 18, + "number": 1 + }, + "sourcemap": { + "error": "unable to find sourcemap.url for service.name=apm-agent-js service.version=1.0.0 bundle.path=http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map" + } } - } - ] -} + ], + "span.type": [ + "transaction" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "611f4fa950f04631aaaaaaaaaaaaaaaa" + ], + "transaction.id": [ + "611f4fa950f04631" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/span" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/general-usecase/span" + ] + } +] diff --git a/systemtest/approvals/TestOTLPGRPCLogs.approved.json b/systemtest/approvals/TestOTLPGRPCLogs.approved.json index 0eea8aa83e0..c3abed08e21 100644 --- a/systemtest/approvals/TestOTLPGRPCLogs.approved.json +++ b/systemtest/approvals/TestOTLPGRPCLogs.approved.json @@ -1,46 +1,58 @@ -{ - "events": [ - { - "@timestamp": "1970-01-01T00:00:01.000Z", - "agent": { - "name": "otlp/go", - "version": "unknown" - }, - "data_stream": { - "dataset": "apm.app.unknown", - "namespace": "default", - "type": "logs" - }, - "event": { - "severity": 9 - }, - "labels": { - "key": "value" - }, - "log": { - "level": "Info" - }, - "message": "a log message", - "numeric_labels": { - "numeric_key": 1234 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "language": { - "name": "go" - }, - "name": "unknown" - }, - "span": { - "id": "0200000000000000" - }, - "trace": { - "id": "01000000000000000000000000000000" - } - } - ] -} +[ + { + "@timestamp": [ + "1970-01-01T00:00:01.000Z" + ], + "agent.name": [ + "otlp/go" + ], + "agent.version": [ + "unknown" + ], + "data_stream.dataset": [ + "apm.app.unknown" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.severity": [ + 9 + ], + "labels.key": [ + "value" + ], + "log.level": [ + "Info" + ], + "message": [ + "a log message" + ], + "numeric_labels.numeric_key": [ + 1234 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown" + ], + "span.id": [ + "0200000000000000" + ], + "trace.id": [ + "01000000000000000000000000000000" + ] + } +] diff --git a/systemtest/approvals/TestOTLPGRPCMetrics_counter.approved.json b/systemtest/approvals/TestOTLPGRPCMetrics_counter.approved.json index d4b52539d92..0a439456ec9 100644 --- a/systemtest/approvals/TestOTLPGRPCMetrics_counter.approved.json +++ b/systemtest/approvals/TestOTLPGRPCMetrics_counter.approved.json @@ -1,34 +1,46 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "opentelemetry/go", - "version": "1.17.0" - }, - "counter": 1, - "data_stream": { - "dataset": "apm.app.unknown_service_systemtest_test", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "name": "app" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "unknown_service_systemtest_test" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "opentelemetry/go" + ], + "agent.version": [ + "1.19.0" + ], + "counter": [ + 1 + ], + "data_stream.dataset": [ + "apm.app.unknown_service_systemtest_test" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.name": [ + "app" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown_service_systemtest_test" + ] + } +] diff --git a/systemtest/approvals/TestOTLPGRPCMetrics_histogram.approved.json b/systemtest/approvals/TestOTLPGRPCMetrics_histogram.approved.json index 8b26929890c..ff53d2e172b 100644 --- a/systemtest/approvals/TestOTLPGRPCMetrics_histogram.approved.json +++ b/systemtest/approvals/TestOTLPGRPCMetrics_histogram.approved.json @@ -1,17 +1,25 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "opentelemetry/go", - "version": "1.17.0" - }, - "data_stream": { - "dataset": "apm.app.unknown_service_systemtest_test", - "namespace": "default", - "type": "metrics" - }, - "histogram": { +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "opentelemetry/go" + ], + "agent.version": [ + "1.19.0" + ], + "data_stream.dataset": [ + "apm.app.unknown_service_systemtest_test" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "histogram": [ + { "counts": [ 1, 1, @@ -24,24 +32,28 @@ 5500, 10000 ] - }, - "metricset": { - "name": "app" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "unknown_service_systemtest_test" } - } - ] -} + ], + "metricset.name": [ + "app" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown_service_systemtest_test" + ] + } +] diff --git a/systemtest/approvals/TestOTLPGRPCMetrics_summary.approved.json b/systemtest/approvals/TestOTLPGRPCMetrics_summary.approved.json index 49104d36c74..4ad1b9142cd 100644 --- a/systemtest/approvals/TestOTLPGRPCMetrics_summary.approved.json +++ b/systemtest/approvals/TestOTLPGRPCMetrics_summary.approved.json @@ -1,37 +1,49 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "otlp", - "version": "unknown" - }, - "data_stream": { - "dataset": "apm.app.unknown", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "name": "app" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "unknown" - }, - "name": "unknown" - }, - "summary": { +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "otlp" + ], + "agent.version": [ + "unknown" + ], + "data_stream.dataset": [ + "apm.app.unknown" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.name": [ + "app" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "unknown" + ], + "service.name": [ + "unknown" + ], + "summary": [ + { "sum": 123.456, "value_count": 10 } - } - ] -} + ] + } +] diff --git a/systemtest/approvals/TestOTLPGRPCTraces.approved.json b/systemtest/approvals/TestOTLPGRPCTraces.approved.json index c5c4efd3b47..dbcfe453a16 100644 --- a/systemtest/approvals/TestOTLPGRPCTraces.approved.json +++ b/systemtest/approvals/TestOTLPGRPCTraces.approved.json @@ -1,214 +1,292 @@ -{ - "events": [ - { - "@timestamp": "1970-01-01T00:02:03.002Z", - "agent": { - "name": "opentelemetry/go", - "version": "1.17.0" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "exception": [ - { - "handled": true, - "message": "kablamo", - "type": "*errors.errorString" - } - ], - "grouping_key": "14f4d08792a45fce53a46c93851e36e1", - "grouping_name": "kablamo", - "id": "dynamic", - "stack_trace": "not an actual real stack trace" - }, - "event": {}, - "labels": { - "resource_attribute_array": [ - "a", - "b" - ], - "resource_attribute_bool": "true", - "resource_attribute_bool_array": [ - "true", - "false" - ] - }, - "message": "kablamo", - "numeric_labels": { - "resource_attribute_float": 123456.789, - "resource_attribute_float_array": [ - 123456.789, - 987654321.1234568 - ], - "resource_attribute_int": 123456 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "b3ee9be3b687a611" - }, - "service": { - "framework": { - "name": "systemtest" - }, - "language": { - "name": "go" - }, - "name": "unknown_service_systemtest_test" - }, - "span": { - "id": "b3ee9be3b687a611" - }, - "timestamp": { - "us": 123002000 - }, - "trace": { - "id": "d2acbef8b37655e48548fd9d61ad6114" - }, - "transaction": { - "id": "b3ee9be3b687a611", - "sampled": true, - "type": "unknown" - } - }, - { - "@timestamp": "1970-01-01T00:02:03.001Z", - "agent": { - "name": "opentelemetry/go", - "version": "1.17.0" - }, - "data_stream": { - "dataset": "apm.app.unknown_service_systemtest_test", - "namespace": "default", - "type": "logs" - }, - "event": { - "kind": "event" - }, - "labels": { - "resource_attribute_array": [ - "a", - "b" - ], - "resource_attribute_bool": "true", - "resource_attribute_bool_array": [ - "true", - "false" - ] - }, - "message": "a_span_event", - "numeric_labels": { - "resource_attribute_float": 123456.789, - "resource_attribute_float_array": [ - 123456.789, - 987654321.1234568 - ], - "resource_attribute_int": 123456 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "framework": { - "name": "systemtest" - }, - "language": { - "name": "go" - }, - "name": "unknown_service_systemtest_test" - }, - "span": { - "id": "b3ee9be3b687a611" - }, - "trace": { - "id": "d2acbef8b37655e48548fd9d61ad6114" - }, - "transaction": { - "id": "b3ee9be3b687a611" - } - }, - { - "@timestamp": "1970-01-01T00:02:03.000Z", - "agent": { - "name": "opentelemetry/go", - "version": "1.17.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "labels": { - "resource_attribute_array": [ - "a", - "b" - ], - "resource_attribute_bool": "true", - "resource_attribute_bool_array": [ - "true", - "false" - ], - "span_attribute_array": [ - "a", - "b", - "c" - ] - }, - "numeric_labels": { - "resource_attribute_float": 123456.789, - "resource_attribute_float_array": [ - 123456.789, - 987654321.1234568 - ], - "resource_attribute_int": 123456 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction" - }, - "service": { - "framework": { - "name": "systemtest" - }, - "language": { - "name": "go" - }, - "name": "unknown_service_systemtest_test" - }, - "span": { - "id": "b3ee9be3b687a611" - }, - "timestamp": { - "us": 123000000 - }, - "trace": { - "id": "d2acbef8b37655e48548fd9d61ad6114" - }, - "transaction": { - "duration": { - "us": 31536000000000 - }, - "id": "b3ee9be3b687a611", - "name": "operation_name", - "representative_count": 1, - "sampled": true, - "type": "unknown" - } - } - ] -} +[ + { + "@timestamp": [ + "1970-01-01T00:02:03.002Z" + ], + "agent.name": [ + "opentelemetry/go" + ], + "agent.version": [ + "1.19.0" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.exception.handled": [ + true + ], + "error.exception.message": [ + "kablamo" + ], + "error.exception.type": [ + "*errors.errorString" + ], + "error.grouping_key": [ + "14f4d08792a45fce53a46c93851e36e1" + ], + "error.grouping_name": [ + "kablamo" + ], + "error.id": [ + "dynamic" + ], + "error.stack_trace": [ + "not an actual real stack trace" + ], + "error.stack_trace.text": [ + "not an actual real stack trace" + ], + "labels.resource_attribute_array": [ + "a", + "b" + ], + "labels.resource_attribute_bool": [ + "true" + ], + "labels.resource_attribute_bool_array": [ + "true", + "false" + ], + "message": [ + "kablamo" + ], + "numeric_labels.resource_attribute_float": [ + 123456.789 + ], + "numeric_labels.resource_attribute_float_array": [ + 123456.789, + 987654321.123457 + ], + "numeric_labels.resource_attribute_int": [ + 123456 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "b3ee9be3b687a611" + ], + "processor.event": [ + "error" + ], + "service.framework.name": [ + "systemtest" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown_service_systemtest_test" + ], + "span.id": [ + "b3ee9be3b687a611" + ], + "timestamp.us": [ + 123002000 + ], + "trace.id": [ + "d2acbef8b37655e48548fd9d61ad6114" + ], + "transaction.id": [ + "b3ee9be3b687a611" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "unknown" + ] + }, + { + "@timestamp": [ + "1970-01-01T00:02:03.001Z" + ], + "agent.name": [ + "opentelemetry/go" + ], + "agent.version": [ + "1.19.0" + ], + "data_stream.dataset": [ + "apm.app.unknown_service_systemtest_test" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "event.kind": [ + "event" + ], + "labels.resource_attribute_array": [ + "a", + "b" + ], + "labels.resource_attribute_bool": [ + "true" + ], + "labels.resource_attribute_bool_array": [ + "true", + "false" + ], + "message": [ + "a_span_event" + ], + "numeric_labels.resource_attribute_float": [ + 123456.789 + ], + "numeric_labels.resource_attribute_float_array": [ + 123456.789, + 987654321.123457 + ], + "numeric_labels.resource_attribute_int": [ + 123456 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "service.framework.name": [ + "systemtest" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown_service_systemtest_test" + ], + "span.id": [ + "b3ee9be3b687a611" + ], + "trace.id": [ + "d2acbef8b37655e48548fd9d61ad6114" + ], + "transaction.id": [ + "b3ee9be3b687a611" + ] + }, + { + "@timestamp": [ + "1970-01-01T00:02:03.000Z" + ], + "agent.name": [ + "opentelemetry/go" + ], + "agent.version": [ + "1.19.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "labels.resource_attribute_array": [ + "a", + "b" + ], + "labels.resource_attribute_bool": [ + "true" + ], + "labels.resource_attribute_bool_array": [ + "true", + "false" + ], + "labels.span_attribute_array": [ + "a", + "b", + "c" + ], + "numeric_labels.resource_attribute_float": [ + 123456.789 + ], + "numeric_labels.resource_attribute_float_array": [ + 123456.789, + 987654321.123457 + ], + "numeric_labels.resource_attribute_int": [ + 123456 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "service.framework.name": [ + "systemtest" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown_service_systemtest_test" + ], + "span.id": [ + "b3ee9be3b687a611" + ], + "timestamp.us": [ + 123000000 + ], + "trace.id": [ + "d2acbef8b37655e48548fd9d61ad6114" + ], + "transaction.duration.us": [ + 31536000000000 + ], + "transaction.id": [ + "b3ee9be3b687a611" + ], + "transaction.name": [ + "operation_name" + ], + "transaction.name.text": [ + "operation_name" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.result": [ + "Success" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "unknown" + ] + } +] diff --git a/systemtest/approvals/TestOTLPGRPCTraces/data_streams_disabled.approved.json b/systemtest/approvals/TestOTLPGRPCTraces/data_streams_disabled.approved.json index e96dc079675..5bf920bc281 100644 --- a/systemtest/approvals/TestOTLPGRPCTraces/data_streams_disabled.approved.json +++ b/systemtest/approvals/TestOTLPGRPCTraces/data_streams_disabled.approved.json @@ -1,64 +1,82 @@ -{ - "events": [ - { - "@timestamp": "1970-01-01T00:02:03.000Z", - "agent": { - "name": "opentelemetry/go", - "version": "1.0.0" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic", - "outcome": "unknown" - }, - "labels": { - "resource_attribute_array": [ - "a", - "b" - ], - "span_attribute_array": [ - "a", - "b", - "c" - ] - }, - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction", - "name": "transaction" - }, - "service": { - "framework": { - "name": "systemtest" - }, - "language": { - "name": "go" - }, - "name": "unknown_service_systemtest_test" - }, - "timestamp": { - "us": 123000000 - }, - "trace": { - "id": "d2acbef8b37655e48548fd9d61ad6114" - }, - "transaction": { - "duration": { - "us": 1000000 - }, - "id": "b3ee9be3b687a611", - "name": "operation_name", - "sampled": true, - "type": "custom" - } - } - ] -} +[ + { + "@timestamp": [ + "1970-01-01T00:02:03.000Z" + ], + "agent.name": [ + "opentelemetry/go" + ], + "agent.version": [ + "1.0.0" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "event.outcome": [ + "unknown" + ], + "labels.resource_attribute_array": [ + "a", + "b" + ], + "labels.span_attribute_array": [ + "a", + "b", + "c" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "processor.name": [ + "transaction" + ], + "service.framework.name": [ + "systemtest" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "unknown_service_systemtest_test" + ], + "timestamp.us": [ + 123000000 + ], + "trace.id": [ + "d2acbef8b37655e48548fd9d61ad6114" + ], + "transaction.duration.us": [ + 1000000 + ], + "transaction.id": [ + "b3ee9be3b687a611" + ], + "transaction.name": [ + "operation_name" + ], + "transaction.sampled": [ + true + ], + "transaction.type": [ + "custom" + ] + } +] diff --git a/systemtest/approvals/TestRUMErrorSourcemapping/absolute_bundle_filepath/standalone.approved.json b/systemtest/approvals/TestRUMErrorSourcemapping/absolute_bundle_filepath/standalone.approved.json index 3a1b196bd09..45f2b2242f9 100644 --- a/systemtest/approvals/TestRUMErrorSourcemapping/absolute_bundle_filepath/standalone.approved.json +++ b/systemtest/approvals/TestRUMErrorSourcemapping/absolute_bundle_filepath/standalone.approved.json @@ -1,296 +1,342 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "0.0.0" - }, - "client": { - "ip": "dynamic" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "culprit": "webpack:///webpack/bootstrap 6002740481c9666b0d38 in \u003canonymous\u003e", - "exception": [ - { - "message": "Uncaught Error: timeout test error", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "__webpack_require__", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/../test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "library_frame": true, - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t// __webpack_public_path__", - " \t__webpack_require__.p = \"\";", - "", - " \t// Load entry module and return exports" - ], - "pre": [ - "", - " \t// expose the modules object (__webpack_modules__)", - " \t__webpack_require__.m = modules;", - "", - " \t// expose the module cache" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "line": { - "column": 0, - "context": " \t__webpack_require__.c = installedModules;", - "number": 33 - }, - "original": { - "abs_path": "http://localhost:8000/test/./e2e/general-usecase/bundle.js.map", - "colno": 181, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "invokeTask", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 15, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "runTask", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - "", - "", - "/** WEBPACK FOOTER **", - " ** webpack/bootstrap 6002740481c9666b0d38" - ], - "pre": [ - "", - " \t// __webpack_public_path__", - " \t__webpack_require__.p = \"\";", - "", - " \t// Load entry module and return exports" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "moduleId", - "line": { - "column": 0, - "context": " \treturn __webpack_require__(0);", - "number": 39 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 199, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "invoke", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - " \t\t\treturn installedModules[moduleId].exports;", - "", - " \t\t// Create a new module (and put it into the cache)", - " \t\tvar module = installedModules[moduleId] = {", - " \t\t\texports: {}," - ], - "pre": [ - "", - " \t// The require function", - " \tfunction __webpack_require__(moduleId) {", - "", - " \t\t// Check if module is in cache" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "line": { - "column": 0, - "context": " \t\tif(installedModules[moduleId])", - "number": 8 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 33, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "timer", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } - ], - "type": "Error" - } - ], - "grouping_key": "89e23da755c2dd759d2d529e37c92b8f", - "grouping_name": "Uncaught Error: log timeout test error", - "id": "aba2688e033848ce9c4e4005f1caa534", - "log": { - "message": "Uncaught Error: log timeout test error", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "0.0.0" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.culprit": [ + "webpack:///webpack/bootstrap 6002740481c9666b0d38 in \u003canonymous\u003e" + ], + "error.exception.message": [ + "Uncaught Error: timeout test error" + ], + "error.exception.stacktrace": [ + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "__webpack_require__", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://localhost:8000/test/../test/e2e/general-usecase/bundle.js.map", + "colno": 18, + "filename": "test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "library_frame": true, + "lineno": 1 + }, + "sourcemap": { + "updated": true } }, - "http": { - "request": { - "referrer": "http://localhost:8000/test/e2e/" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t// __webpack_public_path__", + " \t__webpack_require__.p = \"\";", + "", + " \t// Load entry module and return exports" + ], + "pre": [ + "", + " \t// expose the modules object (__webpack_modules__)", + " \t__webpack_require__.m = modules;", + "", + " \t// expose the module cache" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003cunknown\u003e", + "line": { + "column": 0, + "context": " \t__webpack_require__.c = installedModules;", + "number": 33 + }, + "original": { + "abs_path": "http://localhost:8000/test/./e2e/general-usecase/bundle.js.map", + "colno": 181, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "invokeTask", + "lineno": 1 + }, + "sourcemap": { + "updated": true } }, - "message": "Uncaught Error: log timeout test error", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "name": "apm-agent-js", - "version": "1.0.1" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "timestamp": { - "us": "dynamic" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003cunknown\u003e", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 15, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "runTask", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } }, - "url": { - "domain": "localhost", - "full": "http://localhost:8000/test/e2e/general-usecase/", - "original": "http://localhost:8000/test/e2e/general-usecase/", - "path": "/test/e2e/general-usecase/", - "port": 8000, - "scheme": "http" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + "", + "", + "/** WEBPACK FOOTER **", + " ** webpack/bootstrap 6002740481c9666b0d38" + ], + "pre": [ + "", + " \t// __webpack_public_path__", + " \t__webpack_require__.p = \"\";", + "", + " \t// Load entry module and return exports" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "moduleId", + "line": { + "column": 0, + "context": " \treturn __webpack_require__(0);", + "number": 39 + }, + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 199, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "invoke", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } }, - "user_agent": { - "device": { - "name": "Other" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + " \t\t\treturn installedModules[moduleId].exports;", + "", + " \t\t// Create a new module (and put it into the cache)", + " \t\tvar module = installedModules[moduleId] = {", + " \t\t\texports: {}," + ], + "pre": [ + "", + " \t// The require function", + " \tfunction __webpack_require__(moduleId) {", + "", + " \t\t// Check if module is in cache" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003canonymous\u003e", + "line": { + "column": 0, + "context": " \t\tif(installedModules[moduleId])", + "number": 8 }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 33, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "timer", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } + } + ], + "error.exception.type": [ + "Error" + ], + "error.grouping_key": [ + "89e23da755c2dd759d2d529e37c92b8f" + ], + "error.grouping_name": [ + "Uncaught Error: log timeout test error" + ], + "error.id": [ + "aba2688e033848ce9c4e4005f1caa534" + ], + "error.log.message": [ + "Uncaught Error: log timeout test error" + ], + "error.log.stacktrace": [ + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003canonymous\u003e", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 18, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } } - } - ] -} + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "message": [ + "Uncaught Error: log timeout test error" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "error" + ], + "service.name": [ + "apm-agent-js" + ], + "service.version": [ + "1.0.1" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "timestamp.us": [ + "dynamic" + ], + "url.domain": [ + "localhost" + ], + "url.full": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.full.text": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.path": [ + "/test/e2e/general-usecase/" + ], + "url.port": [ + 8000 + ], + "url.scheme": [ + "http" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.original.text": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestRUMErrorSourcemapping/relative_bundle_filepath/standalone.approved.json b/systemtest/approvals/TestRUMErrorSourcemapping/relative_bundle_filepath/standalone.approved.json index 3a1b196bd09..45f2b2242f9 100644 --- a/systemtest/approvals/TestRUMErrorSourcemapping/relative_bundle_filepath/standalone.approved.json +++ b/systemtest/approvals/TestRUMErrorSourcemapping/relative_bundle_filepath/standalone.approved.json @@ -1,296 +1,342 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "0.0.0" - }, - "client": { - "ip": "dynamic" - }, - "data_stream": { - "dataset": "apm.error", - "namespace": "default", - "type": "logs" - }, - "error": { - "culprit": "webpack:///webpack/bootstrap 6002740481c9666b0d38 in \u003canonymous\u003e", - "exception": [ - { - "message": "Uncaught Error: timeout test error", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "__webpack_require__", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/../test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "library_frame": true, - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t// __webpack_public_path__", - " \t__webpack_require__.p = \"\";", - "", - " \t// Load entry module and return exports" - ], - "pre": [ - "", - " \t// expose the modules object (__webpack_modules__)", - " \t__webpack_require__.m = modules;", - "", - " \t// expose the module cache" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "line": { - "column": 0, - "context": " \t__webpack_require__.c = installedModules;", - "number": 33 - }, - "original": { - "abs_path": "http://localhost:8000/test/./e2e/general-usecase/bundle.js.map", - "colno": 181, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "invokeTask", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 15, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "runTask", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - "", - "", - "/** WEBPACK FOOTER **", - " ** webpack/bootstrap 6002740481c9666b0d38" - ], - "pre": [ - "", - " \t// __webpack_public_path__", - " \t__webpack_require__.p = \"\";", - "", - " \t// Load entry module and return exports" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "moduleId", - "line": { - "column": 0, - "context": " \treturn __webpack_require__(0);", - "number": 39 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 199, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "invoke", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - " \t\t\treturn installedModules[moduleId].exports;", - "", - " \t\t// Create a new module (and put it into the cache)", - " \t\tvar module = installedModules[moduleId] = {", - " \t\t\texports: {}," - ], - "pre": [ - "", - " \t// The require function", - " \tfunction __webpack_require__(moduleId) {", - "", - " \t\t// Check if module is in cache" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "line": { - "column": 0, - "context": " \t\tif(installedModules[moduleId])", - "number": 8 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 33, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "timer", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } - ], - "type": "Error" - } - ], - "grouping_key": "89e23da755c2dd759d2d529e37c92b8f", - "grouping_name": "Uncaught Error: log timeout test error", - "id": "aba2688e033848ce9c4e4005f1caa534", - "log": { - "message": "Uncaught Error: log timeout test error", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "0.0.0" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.error" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "logs" + ], + "error.culprit": [ + "webpack:///webpack/bootstrap 6002740481c9666b0d38 in \u003canonymous\u003e" + ], + "error.exception.message": [ + "Uncaught Error: timeout test error" + ], + "error.exception.stacktrace": [ + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "__webpack_require__", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://localhost:8000/test/../test/e2e/general-usecase/bundle.js.map", + "colno": 18, + "filename": "test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "library_frame": true, + "lineno": 1 + }, + "sourcemap": { + "updated": true } }, - "http": { - "request": { - "referrer": "http://localhost:8000/test/e2e/" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t// __webpack_public_path__", + " \t__webpack_require__.p = \"\";", + "", + " \t// Load entry module and return exports" + ], + "pre": [ + "", + " \t// expose the modules object (__webpack_modules__)", + " \t__webpack_require__.m = modules;", + "", + " \t// expose the module cache" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003cunknown\u003e", + "line": { + "column": 0, + "context": " \t__webpack_require__.c = installedModules;", + "number": 33 + }, + "original": { + "abs_path": "http://localhost:8000/test/./e2e/general-usecase/bundle.js.map", + "colno": 181, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "invokeTask", + "lineno": 1 + }, + "sourcemap": { + "updated": true } }, - "message": "Uncaught Error: log timeout test error", - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "service": { - "name": "apm-agent-js", - "version": "1.0.1" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "timestamp": { - "us": "dynamic" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003cunknown\u003e", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 15, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "runTask", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } }, - "url": { - "domain": "localhost", - "full": "http://localhost:8000/test/e2e/general-usecase/", - "original": "http://localhost:8000/test/e2e/general-usecase/", - "path": "/test/e2e/general-usecase/", - "port": 8000, - "scheme": "http" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + "", + "", + "/** WEBPACK FOOTER **", + " ** webpack/bootstrap 6002740481c9666b0d38" + ], + "pre": [ + "", + " \t// __webpack_public_path__", + " \t__webpack_require__.p = \"\";", + "", + " \t// Load entry module and return exports" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "moduleId", + "line": { + "column": 0, + "context": " \treturn __webpack_require__(0);", + "number": 39 + }, + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 199, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "invoke", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } }, - "user_agent": { - "device": { - "name": "Other" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + " \t\t\treturn installedModules[moduleId].exports;", + "", + " \t\t// Create a new module (and put it into the cache)", + " \t\tvar module = installedModules[moduleId] = {", + " \t\t\texports: {}," + ], + "pre": [ + "", + " \t// The require function", + " \tfunction __webpack_require__(moduleId) {", + "", + " \t\t// Check if module is in cache" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003canonymous\u003e", + "line": { + "column": 0, + "context": " \t\tif(installedModules[moduleId])", + "number": 8 }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 33, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "timer", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } + } + ], + "error.exception.type": [ + "Error" + ], + "error.grouping_key": [ + "89e23da755c2dd759d2d529e37c92b8f" + ], + "error.grouping_name": [ + "Uncaught Error: log timeout test error" + ], + "error.id": [ + "aba2688e033848ce9c4e4005f1caa534" + ], + "error.log.message": [ + "Uncaught Error: log timeout test error" + ], + "error.log.stacktrace": [ + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003canonymous\u003e", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 18, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } } - } - ] -} + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "message": [ + "Uncaught Error: log timeout test error" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "error" + ], + "service.name": [ + "apm-agent-js" + ], + "service.version": [ + "1.0.1" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "timestamp.us": [ + "dynamic" + ], + "url.domain": [ + "localhost" + ], + "url.full": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.full.text": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.path": [ + "/test/e2e/general-usecase/" + ], + "url.port": [ + 8000 + ], + "url.scheme": [ + "http" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.original.text": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestRUMRoutingIntegration.approved.json b/systemtest/approvals/TestRUMRoutingIntegration.approved.json index 5296974eda3..9e00f3a44a8 100644 --- a/systemtest/approvals/TestRUMRoutingIntegration.approved.json +++ b/systemtest/approvals/TestRUMRoutingIntegration.approved.json @@ -1,771 +1,1094 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "localhost", - "port": 8003 - }, - "event": { - "outcome": "success" - }, - "http": { - "request": { - "method": "POST" +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "localhost" + ], + "destination.port": [ + 8003 + ], + "event.outcome": [ + "success" + ], + "http.request.method": [ + "POST" + ], + "http.response.status_code": [ + 200 + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.destination.service.name": [ + "http://localhost:8003" + ], + "span.destination.service.resource": [ + "localhost:8003" + ], + "span.destination.service.type": [ + "external" + ], + "span.duration.us": [ + 11584 + ], + "span.id": [ + "27f45fd274f976d4" + ], + "span.name": [ + "POST http://localhost:8003/data" + ], + "span.subtype": [ + "h" + ], + "span.sync": [ + true + ], + "span.type": [ + "external" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ], + "url.original": [ + "http://localhost:8003/data" + ], + "url.original.text": [ + "http://localhost:8003/data" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "localhost" + ], + "destination.port": [ + 8000 + ], + "event.outcome": [ + "success" + ], + "http.request.method": [ + "GET" + ], + "http.response.status_code": [ + 200 + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.destination.service.name": [ + "http://localhost:8000" + ], + "span.destination.service.resource": [ + "localhost:8000" + ], + "span.destination.service.type": [ + "external" + ], + "span.duration.us": [ + 6724 + ], + "span.id": [ + "5ecb8ee030749715" + ], + "span.name": [ + "GET /test/e2e/common/data.json" + ], + "span.subtype": [ + "h" + ], + "span.sync": [ + true + ], + "span.type": [ + "external" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ], + "url.original": [ + "http://localhost:8000/test/e2e/common/data.json?test=hamid" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/common/data.json?test=hamid" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.duration.us": [ + 198070 + ], + "span.id": [ + "9b80535c4403c9fb" + ], + "span.name": [ + "OpenTracing y" + ], + "span.type": [ + "cu" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "localhost" + ], + "destination.port": [ + 8003 + ], + "event.outcome": [ + "success" + ], + "http.request.method": [ + "POST" + ], + "http.response.status_code": [ + 200 + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "bbd8bcc3be14d814" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.action": [ + "action" + ], + "span.destination.service.name": [ + "http://localhost:8003" + ], + "span.destination.service.resource": [ + "localhost:8003" + ], + "span.destination.service.type": [ + "external" + ], + "span.duration.us": [ + 15949 + ], + "span.id": [ + "a3c043330bc2015e" + ], + "span.name": [ + "POST http://localhost:8003/fetch" + ], + "span.subtype": [ + "h" + ], + "span.sync": [ + false + ], + "span.type": [ + "external" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ], + "url.original": [ + "http://localhost:8003/fetch" + ], + "url.original.text": [ + "http://localhost:8003/fetch" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.duration.us": [ + 2000 + ], + "span.id": [ + "bbd8bcc3be14d814" + ], + "span.name": [ + "Requesting and receiving the document" + ], + "span.subtype": [ + "browser-timing" + ], + "span.type": [ + "hard-navigation" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.duration.us": [ + 2000 + ], + "span.id": [ + "bc7665dc25629379" + ], + "span.name": [ + "Fire \"DOMContentLoaded\" event" + ], + "span.stacktrace": [ + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", + "exclude_from_grouping": false, + "filename": "test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", + "function": "generateError", + "line": { + "column": 9, + "number": 7662 }, - "response": { - "status_code": 200 + "sourcemap": { + "error": "unable to find sourcemap.url for service.name=apm-a-rum-test-e2e-general-usecase service.version=0.0.1 bundle.path=http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js" } }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "destination": { - "service": { - "name": "http://localhost:8003", - "resource": "localhost:8003", - "type": "external" - } - }, - "duration": { - "us": 11584 - }, - "id": "27f45fd274f976d4", - "name": "POST http://localhost:8003/data", - "subtype": "h", - "sync": true, - "type": "external" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - }, - "url": { - "original": "http://localhost:8003/data" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "localhost", - "port": 8000 - }, - "event": { - "outcome": "success" - }, - "http": { - "request": { - "method": "GET" + { + "abs_path": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", + "exclude_from_grouping": false, + "filename": "test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", + "function": "\u003canonymous\u003e", + "line": { + "column": 3, + "number": 7666 }, - "response": { - "status_code": 200 - } - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" + "sourcemap": { + "error": "unable to find sourcemap.url for service.name=apm-a-rum-test-e2e-general-usecase service.version=0.0.1 bundle.path=http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js" } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "destination": { - "service": { - "name": "http://localhost:8000", - "resource": "localhost:8000", - "type": "external" - } - }, - "duration": { - "us": 6724 - }, - "id": "5ecb8ee030749715", - "name": "GET /test/e2e/common/data.json", - "subtype": "h", - "sync": true, - "type": "external" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - }, - "url": { - "original": "http://localhost:8000/test/e2e/common/data.json?test=hamid" } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "duration": { - "us": 198070 - }, - "id": "9b80535c4403c9fb", - "name": "OpenTracing y", - "type": "cu" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "localhost", - "port": 8003 - }, - "event": { - "outcome": "success" - }, - "http": { - "request": { - "method": "POST" - }, - "response": { - "status_code": 200 - } - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "bbd8bcc3be14d814" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "action": "action", - "destination": { - "service": { - "name": "http://localhost:8003", - "resource": "localhost:8003", - "type": "external" - } - }, - "duration": { - "us": 15949 - }, - "id": "a3c043330bc2015e", - "name": "POST http://localhost:8003/fetch", - "subtype": "h", - "sync": false, - "type": "external" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - }, - "url": { - "original": "http://localhost:8003/fetch" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "duration": { - "us": 2000 - }, - "id": "bbd8bcc3be14d814", - "name": "Requesting and receiving the document", - "subtype": "browser-timing", - "type": "hard-navigation" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success" - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "duration": { - "us": 2000 - }, - "id": "bc7665dc25629379", - "name": "Fire \"DOMContentLoaded\" event", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", - "exclude_from_grouping": false, - "filename": "test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", - "function": "generateError", - "line": { - "column": 9, - "number": 7662 - }, - "sourcemap": { - "error": "unable to find sourcemap.url for service.name=apm-a-rum-test-e2e-general-usecase service.version=0.0.1 bundle.path=http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js" - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", - "exclude_from_grouping": false, - "filename": "test/e2e/general-usecase/app.e2e-bundle.min.js?token=secret", - "function": "\u003canonymous\u003e", - "line": { - "column": 3, - "number": 7666 - }, - "sourcemap": { - "error": "unable to find sourcemap.url for service.name=apm-a-rum-test-e2e-general-usecase service.version=0.0.1 bundle.path=http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js" - } - } - ], - "subtype": "browser-timing", - "type": "hard-navigation" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "destination": { - "address": "localhost", - "port": 8000 - }, - "event": { - "outcome": "unknown" - }, - "http": { - "response": { - "decoded_body_size": 676864, - "encoded_body_size": 676864, - "transfer_size": 677175 - } - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "destination": { - "service": { - "name": "http://localhost:8000", - "resource": "localhost:8000", - "type": "rc" - } - }, - "duration": { - "us": 35060 - }, - "id": "fb8f717930697299", - "name": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js", - "subtype": "script", - "type": "rc" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - }, - "url": { - "original": "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=REDACTED" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "ec2e280be8345240" - }, - "processor": { - "event": "span" - }, - "service": { - "environment": "prod", - "name": "apm-a-rum-test-e2e-general-usecase" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "span": { - "duration": { - "us": 106000 - }, - "id": "fc546e87a90a774f", - "name": "Parsing the document, executing sy. scripts", - "subtype": "browser-timing", - "type": "hard-navigation" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "id": "ec2e280be8345240" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "js-base", - "version": "4.8.1" - }, - "client": "dynamic", - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success" - }, - "http": { - "request": { - "headers": { - "Accept": [ - "application/json" - ] - }, - "method": "GET", - "referrer": "http://localhost:8000/test/e2e/" - }, - "response": { - "decoded_body_size": 690, - "encoded_body_size": 690, - "headers": { - "Content-Type": [ - "application/json" - ] - }, - "status_code": 200, - "transfer_size": 983 - }, - "version": "1.1" - }, - "labels": { - "testTagKey": "testTagValue" - }, - "network": { - "connection": { - "type": "5G" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "1ef08ac234fca23b455d9e27c660f1ab" - }, - "processor": { - "event": "transaction" - }, - "service": { - "environment": "prod", - "framework": { - "name": "angular", - "version": "2" - }, - "language": { - "name": "javascript", - "version": "6" - }, - "name": "apm-a-rum-test-e2e-general-usecase", - "runtime": { - "name": "v8", - "version": "8.0" - }, - "version": "0.0.1" - }, - "source": { - "ip": "dynamic", - "port": "dynamic" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "286ac3ad697892c406528f13c82e0ce1" - }, - "transaction": { - "custom": { - "testContext": "testContext" - }, - "duration": { - "us": 295000 - }, - "experience": { - "cls": 1, - "fid": 2, - "longtask": { - "count": 3, - "max": 1, - "sum": 2.5 - }, - "tbt": 3.4 - }, - "id": "ec2e280be8345240", - "marks": { - "agent": { - "domComplete": 138, - "domContentLoadedEventEnd": 110, - "domContentLoadedEventStart": 100, - "domInteractive": 120, - "firstContentfulPaint": 70.82500003930181, - "largestContentfulPaint": 131.03000004775822, - "timeToFirstByte": 5 - }, - "navigationTiming": { - "connectEnd": 0, - "connectStart": 0, - "domComplete": 138, - "domContentLoadedEventEnd": 122, - "domContentLoadedEventStart": 120, - "domInteractive": 120, - "domLoading": 14, - "domainLookupEnd": 0, - "domainLookupStart": 0, - "fetchStart": 0, - "loadEventEnd": 138, - "loadEventStart": 138, - "requestStart": 4, - "responseEnd": 6, - "responseStart": 5 - } - }, - "name": "general-usecase-initial-p-load", - "representative_count": 1, - "sampled": true, - "span_count": { - "dropped": 1, - "started": 8 - }, - "type": "p-load" - }, - "url": { - "domain": "localhost", - "full": "http://localhost:8000/test/e2e/general-usecase/", - "original": "http://localhost:8000/test/e2e/general-usecase/", - "path": "/test/e2e/general-usecase/", - "port": 8000, - "scheme": "http" - }, - "user": { - "email": "em", - "id": "uId", - "name": "un" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" + ], + "span.subtype": [ + "browser-timing" + ], + "span.type": [ + "hard-navigation" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "destination.address": [ + "localhost" + ], + "destination.port": [ + 8000 + ], + "event.outcome": [ + "unknown" + ], + "http.response.decoded_body_size": [ + 676864 + ], + "http.response.encoded_body_size": [ + 676864 + ], + "http.response.transfer_size": [ + 677175 + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.destination.service.name": [ + "http://localhost:8000" + ], + "span.destination.service.resource": [ + "localhost:8000" + ], + "span.destination.service.type": [ + "rc" + ], + "span.duration.us": [ + 35060 + ], + "span.id": [ + "fb8f717930697299" + ], + "span.name": [ + "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js" + ], + "span.subtype": [ + "script" + ], + "span.type": [ + "rc" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=REDACTED" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/general-usecase/app.e2e-bundle.min.js?token=REDACTED" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "ec2e280be8345240" + ], + "processor.event": [ + "span" + ], + "service.environment": [ + "prod" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "span.duration.us": [ + 106000 + ], + "span.id": [ + "fc546e87a90a774f" + ], + "span.name": [ + "Parsing the document, executing sy. scripts" + ], + "span.subtype": [ + "browser-timing" + ], + "span.type": [ + "hard-navigation" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.id": [ + "ec2e280be8345240" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "js-base" + ], + "agent.version": [ + "4.8.1" + ], + "client.ip": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "http.request.headers.Accept": [ + "application/json" + ], + "http.request.method": [ + "GET" + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "http.response.decoded_body_size": [ + 690 + ], + "http.response.encoded_body_size": [ + 690 + ], + "http.response.headers.Content-Type": [ + "application/json" + ], + "http.response.status_code": [ + 200 + ], + "http.response.transfer_size": [ + 983 + ], + "http.version": [ + "1.1" + ], + "labels.testTagKey": [ + "testTagValue" + ], + "network.connection.type": [ + "5G" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "1ef08ac234fca23b455d9e27c660f1ab" + ], + "processor.event": [ + "transaction" + ], + "service.environment": [ + "prod" + ], + "service.framework.name": [ + "angular" + ], + "service.framework.version": [ + "2" + ], + "service.language.name": [ + "javascript" + ], + "service.language.version": [ + "6" + ], + "service.name": [ + "apm-a-rum-test-e2e-general-usecase" + ], + "service.runtime.name": [ + "v8" + ], + "service.runtime.version": [ + "8.0" + ], + "service.version": [ + "0.0.1" + ], + "source.ip": [ + "dynamic" + ], + "source.port": [ + "dynamic" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "286ac3ad697892c406528f13c82e0ce1" + ], + "transaction.custom": [ + { + "testContext": "testContext" } - } - ] -} + ], + "transaction.duration.us": [ + 295000 + ], + "transaction.experience.cls": [ + 1 + ], + "transaction.experience.fid": [ + 2 + ], + "transaction.experience.longtask.count": [ + 3 + ], + "transaction.experience.longtask.max": [ + 1 + ], + "transaction.experience.longtask.sum": [ + 2.5 + ], + "transaction.experience.tbt": [ + 3.4 + ], + "transaction.id": [ + "ec2e280be8345240" + ], + "transaction.marks.agent.domComplete": [ + 138 + ], + "transaction.marks.agent.domContentLoadedEventEnd": [ + 110 + ], + "transaction.marks.agent.domContentLoadedEventStart": [ + 100 + ], + "transaction.marks.agent.domInteractive": [ + 120 + ], + "transaction.marks.agent.firstContentfulPaint": [ + 70.825 + ], + "transaction.marks.agent.largestContentfulPaint": [ + 131.03 + ], + "transaction.marks.agent.timeToFirstByte": [ + 5 + ], + "transaction.marks.navigationTiming.connectEnd": [ + 0 + ], + "transaction.marks.navigationTiming.connectStart": [ + 0 + ], + "transaction.marks.navigationTiming.domComplete": [ + 138 + ], + "transaction.marks.navigationTiming.domContentLoadedEventEnd": [ + 122 + ], + "transaction.marks.navigationTiming.domContentLoadedEventStart": [ + 120 + ], + "transaction.marks.navigationTiming.domInteractive": [ + 120 + ], + "transaction.marks.navigationTiming.domLoading": [ + 14 + ], + "transaction.marks.navigationTiming.domainLookupEnd": [ + 0 + ], + "transaction.marks.navigationTiming.domainLookupStart": [ + 0 + ], + "transaction.marks.navigationTiming.fetchStart": [ + 0 + ], + "transaction.marks.navigationTiming.loadEventEnd": [ + 138 + ], + "transaction.marks.navigationTiming.loadEventStart": [ + 138 + ], + "transaction.marks.navigationTiming.requestStart": [ + 4 + ], + "transaction.marks.navigationTiming.responseEnd": [ + 6 + ], + "transaction.marks.navigationTiming.responseStart": [ + 5 + ], + "transaction.name": [ + "general-usecase-initial-p-load" + ], + "transaction.name.text": [ + "general-usecase-initial-p-load" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.dropped": [ + 1 + ], + "transaction.span_count.started": [ + 8 + ], + "transaction.type": [ + "p-load" + ], + "url.domain": [ + "localhost" + ], + "url.full": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.full.text": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.path": [ + "/test/e2e/general-usecase/" + ], + "url.port": [ + 8000 + ], + "url.scheme": [ + "http" + ], + "user.email": [ + "em" + ], + "user.id": [ + "uId" + ], + "user.name": [ + "un" + ], + "user.name.text": [ + "un" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.original.text": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestRUMSpanSourcemapping.approved.json b/systemtest/approvals/TestRUMSpanSourcemapping.approved.json index 6a5638173e6..d24f9c48dd5 100644 --- a/systemtest/approvals/TestRUMSpanSourcemapping.approved.json +++ b/systemtest/approvals/TestRUMSpanSourcemapping.approved.json @@ -1,135 +1,156 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "0.0.0" - }, - "client": { - "ip": "127.0.0.1" - }, - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "parent": { - "id": "611f4fa950f04631" - }, - "processor": { - "event": "span" - }, - "service": { - "name": "apm-agent-js" - }, - "source": { - "ip": "127.0.0.1", - "port": "dynamic" - }, - "span": { - "duration": { - "us": 643000 +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "0.0.0" + ], + "client.ip": [ + "127.0.0.1" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "parent.id": [ + "611f4fa950f04631" + ], + "processor.event": [ + "span" + ], + "service.name": [ + "apm-agent-js" + ], + "source.ip": [ + "127.0.0.1" + ], + "source.port": [ + "dynamic" + ], + "span.duration.us": [ + 643000 + ], + "span.id": [ + "aaaaaaaaaaaaaaaa" + ], + "span.name": [ + "transaction" + ], + "span.representative_count": [ + 1 + ], + "span.stacktrace": [ + { + "abs_path": "http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ] }, - "id": "aaaaaaaaaaaaaaaa", - "name": "transaction", - "representative_count": 1, - "stacktrace": [ - { - "abs_path": "http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } - ], - "type": "transaction" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "611f4fa950f04631aaaaaaaaaaaaaaaa" - }, - "transaction": { - "id": "611f4fa950f04631" + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003cunknown\u003e", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://subdomain1.localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 18, + "filename": "test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } }, - "url": { - "original": "http://localhost:8000/test/e2e/general-usecase/span" + { + "abs_path": "http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map", + "context": { + "post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ] + }, + "exclude_from_grouping": false, + "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "function": "\u003canonymous\u003e", + "line": { + "column": 0, + "context": " \tfunction __webpack_require__(moduleId) {", + "number": 5 + }, + "original": { + "abs_path": "http://subdomain2.localhost:8000/test/e2e/general-usecase/bundle.js.map", + "colno": 18, + "filename": "~/test/e2e/general-usecase/bundle.js.map", + "function": "\u003canonymous\u003e", + "lineno": 1 + }, + "sourcemap": { + "updated": true + } } - } - ] -} + ], + "span.type": [ + "transaction" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "611f4fa950f04631aaaaaaaaaaaaaaaa" + ], + "transaction.id": [ + "611f4fa950f04631" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/span" + ], + "url.original.text": [ + "http://localhost:8000/test/e2e/general-usecase/span" + ] + } +] diff --git a/systemtest/approvals/TestRUMXForwardedFor.approved.json b/systemtest/approvals/TestRUMXForwardedFor.approved.json index 8f8d26e4f97..3ed284fcf21 100644 --- a/systemtest/approvals/TestRUMXForwardedFor.approved.json +++ b/systemtest/approvals/TestRUMXForwardedFor.approved.json @@ -1,143 +1,213 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "5.5.0" - }, - "client": { - "geo": { - "city_name": "Perth", - "continent_name": "Oceania", - "country_iso_code": "AU", - "country_name": "Australia", - "location": "dynamic", - "region_iso_code": "AU-WA", - "region_name": "Western Australia" - }, - "ip": "220.244.41.16" - }, - "data_stream": { - "dataset": "apm.internal", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "name": "span_breakdown" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "name": "rum-js-test" - }, - "source": { - "ip": "220.244.41.16", - "nat": { - "ip": "127.0.0.1" - } - }, - "span": { - "self_time": { - "count": 1, - "sum": { - "us": 633 - } - }, - "subtype": "http", - "type": "external" - }, - "transaction": { - "name": "GET /", - "type": "request" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "5.5.0" - }, - "client": { - "geo": { - "city_name": "Perth", - "continent_name": "Oceania", - "country_iso_code": "AU", - "country_name": "Australia", - "location": "dynamic", - "region_iso_code": "AU-WA", - "region_name": "Western Australia" - }, - "ip": "220.244.41.16" - }, - "data_stream": { - "dataset": "apm.rum", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "unknown" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction" - }, - "service": { - "name": "rum-js-test" - }, - "source": { - "ip": "220.244.41.16", - "nat": { - "ip": "127.0.0.1" - } - }, - "span": { - "id": "611f4fa950f04631" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "611f4fa950f04631aaaaaaaaaaaaaaaa" - }, - "transaction": { - "duration": { - "us": 643000 - }, - "id": "611f4fa950f04631", - "representative_count": 1, - "sampled": true, - "span_count": { - "started": 0 - }, - "type": "page-load" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "5.5.0" + ], + "client.geo.city_name": [ + "Perth" + ], + "client.geo.continent_name": [ + "Oceania" + ], + "client.geo.country_iso_code": [ + "AU" + ], + "client.geo.country_name": [ + "Australia" + ], + "client.geo.location": [ + "dynamic" + ], + "client.geo.region_iso_code": [ + "AU-WA" + ], + "client.geo.region_name": [ + "Western Australia" + ], + "client.ip": [ + "220.244.41.16" + ], + "data_stream.dataset": [ + "apm.internal" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.name": [ + "span_breakdown" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.name": [ + "rum-js-test" + ], + "source.ip": [ + "220.244.41.16" + ], + "source.nat.ip": [ + "127.0.0.1" + ], + "span.self_time.count": [ + 1 + ], + "span.self_time.sum.us": [ + 633 + ], + "span.subtype": [ + "http" + ], + "span.type": [ + "external" + ], + "transaction.name": [ + "GET /" + ], + "transaction.type": [ + "request" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.original.text": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "5.5.0" + ], + "client.geo.city_name": [ + "Perth" + ], + "client.geo.continent_name": [ + "Oceania" + ], + "client.geo.country_iso_code": [ + "AU" + ], + "client.geo.country_name": [ + "Australia" + ], + "client.geo.location": [ + "dynamic" + ], + "client.geo.region_iso_code": [ + "AU-WA" + ], + "client.geo.region_name": [ + "Western Australia" + ], + "client.ip": [ + "220.244.41.16" + ], + "data_stream.dataset": [ + "apm.rum" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "unknown" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "service.name": [ + "rum-js-test" + ], + "source.ip": [ + "220.244.41.16" + ], + "source.nat.ip": [ + "127.0.0.1" + ], + "span.id": [ + "611f4fa950f04631" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "611f4fa950f04631aaaaaaaaaaaaaaaa" + ], + "transaction.duration.us": [ + 643000 + ], + "transaction.id": [ + "611f4fa950f04631" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.started": [ + 0 + ], + "transaction.type": [ + "page-load" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.original.text": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestRUMXForwardedFor/data_streams_disabled.approved.json b/systemtest/approvals/TestRUMXForwardedFor/data_streams_disabled.approved.json index b91f784eeb1..271042a432c 100644 --- a/systemtest/approvals/TestRUMXForwardedFor/data_streams_disabled.approved.json +++ b/systemtest/approvals/TestRUMXForwardedFor/data_streams_disabled.approved.json @@ -1,137 +1,213 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "5.5.0" - }, - "client": { - "geo": { - "city_name": "Perth", - "continent_name": "Oceania", - "country_iso_code": "AU", - "country_name": "Australia", - "location": "dynamic", - "region_iso_code": "AU-WA", - "region_name": "Western Australia" - }, - "ip": "220.244.41.16" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic" - }, - "metricset.name": "span_breakdown", - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric", - "name": "metric" - }, - "service": { - "name": "rum-js-test" - }, - "source": { - "ip": "127.0.0.1", - "port": "dynamic" - }, - "span": { - "self_time": { - "count": 1, - "sum.us": 633 - }, - "subtype": "http", - "type": "external" - }, - "transaction": { - "name": "GET /", - "type": "request" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "5.5.0" - }, - "client": { - "geo": { - "city_name": "Perth", - "continent_name": "Oceania", - "country_iso_code": "AU", - "country_name": "Australia", - "location": "dynamic", - "region_iso_code": "AU-WA", - "region_name": "Western Australia" - }, - "ip": "220.244.41.16" - }, - "ecs": { - "version": "dynamic" - }, - "event": { - "ingested": "dynamic", - "outcome": "unknown" - }, - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "transaction", - "name": "transaction" - }, - "service": { - "name": "rum-js-test" - }, - "source": { - "ip": "127.0.0.1", - "port": "dynamic" - }, - "timestamp": { - "us": "dynamic" - }, - "trace": { - "id": "611f4fa950f04631aaaaaaaaaaaaaaaa" - }, - "transaction": { - "duration": { - "us": 643000 - }, - "id": "611f4fa950f04631", - "sampled": true, - "span_count": { - "started": 0 - }, - "type": "page-load" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "5.5.0" + ], + "client.geo.city_name": [ + "Perth" + ], + "client.geo.continent_name": [ + "Oceania" + ], + "client.geo.country_iso_code": [ + "AU" + ], + "client.geo.country_name": [ + "Australia" + ], + "client.geo.location": [ + "dynamic" + ], + "client.geo.region_iso_code": [ + "AU-WA" + ], + "client.geo.region_name": [ + "Western Australia" + ], + "client.ip": [ + "220.244.41.16" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "metricset.name": [ + "span_breakdown" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "processor.name": [ + "metric" + ], + "service.name": [ + "rum-js-test" + ], + "source.ip": [ + "127.0.0.1" + ], + "source.port": [ + "dynamic" + ], + "span.self_time.count": [ + 1 + ], + "span.self_time.sum.us": [ + 633 + ], + "span.subtype": [ + "http" + ], + "span.type": [ + "external" + ], + "transaction.name": [ + "GET /" + ], + "transaction.type": [ + "request" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "5.5.0" + ], + "client.geo.city_name": [ + "Perth" + ], + "client.geo.continent_name": [ + "Oceania" + ], + "client.geo.country_iso_code": [ + "AU" + ], + "client.geo.country_name": [ + "Australia" + ], + "client.geo.location": [ + "dynamic" + ], + "client.geo.region_iso_code": [ + "AU-WA" + ], + "client.geo.region_name": [ + "Western Australia" + ], + "client.ip": [ + "220.244.41.16" + ], + "ecs.version": [ + "dynamic" + ], + "event.ingested": [ + "dynamic" + ], + "event.outcome": [ + "unknown" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "transaction" + ], + "processor.name": [ + "transaction" + ], + "service.name": [ + "rum-js-test" + ], + "source.ip": [ + "127.0.0.1" + ], + "source.port": [ + "dynamic" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "611f4fa950f04631aaaaaaaaaaaaaaaa" + ], + "transaction.duration.us": [ + 643000 + ], + "transaction.id": [ + "611f4fa950f04631" + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.started": [ + 0 + ], + "transaction.type": [ + "page-load" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestServiceDestinationAggregation.approved.json b/systemtest/approvals/TestServiceDestinationAggregation.approved.json index 758d7179adc..1ba70139ede 100644 --- a/systemtest/approvals/TestServiceDestinationAggregation.approved.json +++ b/systemtest/approvals/TestServiceDestinationAggregation.approved.json @@ -1,169 +1,206 @@ -{ - "events": [ - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 5, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "labels": { - "company": "elastic", - "department_name": "apm", - "organization": "observability" - }, - "metricset": { - "interval": "10m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "resource" - } - }, - "span": { - "destination": { - "service": { - "resource": "resource", - "response_time": { - "count": 5, - "sum": { - "us": 5000000 - } - } - } - }, - "name": "name" - } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "_doc_count": 5, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "labels": { - "company": "elastic", - "department_name": "apm", - "organization": "observability" - }, - "metricset": { - "interval": "1m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "resource" - } - }, - "span": { - "destination": { - "service": { - "resource": "resource", - "response_time": { - "count": 5, - "sum": { - "us": 5000000 - } - } - } - }, - "name": "name" - } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 5, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "labels": { - "company": "elastic", - "department_name": "apm", - "organization": "observability" - }, - "metricset": { - "interval": "60m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "resource" - } - }, - "span": { - "destination": { - "service": { - "resource": "resource", - "response_time": { - "count": 5, - "sum": { - "us": 5000000 - } - } - } - }, - "name": "name" - } - } - ] -} +[ + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "labels.company": [ + "elastic" + ], + "labels.department_name": [ + "apm" + ], + "labels.organization": [ + "observability" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "resource" + ], + "span.destination.service.resource": [ + "resource" + ], + "span.destination.service.response_time.count": [ + 5 + ], + "span.destination.service.response_time.sum.us": [ + 5000000 + ], + "span.name": [ + "name" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "labels.company": [ + "elastic" + ], + "labels.department_name": [ + "apm" + ], + "labels.organization": [ + "observability" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "resource" + ], + "span.destination.service.resource": [ + "resource" + ], + "span.destination.service.response_time.count": [ + 5 + ], + "span.destination.service.response_time.sum.us": [ + 5000000 + ], + "span.name": [ + "name" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "labels.company": [ + "elastic" + ], + "labels.department_name": [ + "apm" + ], + "labels.organization": [ + "observability" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "resource" + ], + "span.destination.service.resource": [ + "resource" + ], + "span.destination.service.response_time.count": [ + 5 + ], + "span.destination.service.response_time.sum.us": [ + 5000000 + ], + "span.name": [ + "name" + ] + } +] diff --git a/systemtest/approvals/TestServiceSummaryMetricsAggregation.approved.json b/systemtest/approvals/TestServiceSummaryMetricsAggregation.approved.json index b8f7e2c94c9..c937596cd3a 100644 --- a/systemtest/approvals/TestServiceSummaryMetricsAggregation.approved.json +++ b/systemtest/approvals/TestServiceSummaryMetricsAggregation.approved.json @@ -1,91 +1,125 @@ -{ - "events": [ - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.10m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "10m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.1m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "1m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.60m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "60m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - } - } - ] -} +[ + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + } +] diff --git a/systemtest/approvals/TestServiceSummaryMetricsAggregationOverflow.approved.json b/systemtest/approvals/TestServiceSummaryMetricsAggregationOverflow.approved.json index d08dc9d47b8..242e01cd566 100644 --- a/systemtest/approvals/TestServiceSummaryMetricsAggregationOverflow.approved.json +++ b/systemtest/approvals/TestServiceSummaryMetricsAggregationOverflow.approved.json @@ -1,268 +1,380 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "data_stream": { - "dataset": "apm.service_summary.10m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "10m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "name": "_other" - }, - "service_summary": { - "aggregation": { - "overflow_count": 2 - } - } - }, - { - "@timestamp": "dynamic", - "data_stream": { - "dataset": "apm.service_summary.1m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "1m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "name": "_other" - }, - "service_summary": { - "aggregation": { - "overflow_count": 2 - } - } - }, - { - "@timestamp": "dynamic", - "data_stream": { - "dataset": "apm.service_summary.60m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "60m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "name": "_other" - }, - "service_summary": { - "aggregation": { - "overflow_count": 2 - } - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.10m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "10m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "prod", - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.1m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "1m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "prod", - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.60m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "60m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "prod", - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.10m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "10m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "test", - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.1m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "1m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "test", - "language": { - "name": "go" - }, - "name": "systemtest" - } - }, - { - "@timestamp": "dynamic", - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_summary.60m", - "namespace": "default", - "type": "metrics" - }, - "metricset": { - "interval": "60m", - "name": "service_summary" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "test", - "language": { - "name": "go" - }, - "name": "systemtest" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.service_summary.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.name": [ + "_other" + ], + "service_summary.aggregation.overflow_count": [ + 2 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.service_summary.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.name": [ + "_other" + ], + "service_summary.aggregation.overflow_count": [ + 2 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "data_stream.dataset": [ + "apm.service_summary.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.name": [ + "_other" + ], + "service_summary.aggregation.overflow_count": [ + 2 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "prod" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "prod" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "prod" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "test" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "test" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_summary.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_summary" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "test" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ] + } +] diff --git a/systemtest/approvals/TestServiceTransactionMetricsAggregation.approved.json b/systemtest/approvals/TestServiceTransactionMetricsAggregation.approved.json index 850ac19386b..70c5980a6c8 100644 --- a/systemtest/approvals/TestServiceTransactionMetricsAggregation.approved.json +++ b/systemtest/approvals/TestServiceTransactionMetricsAggregation.approved.json @@ -1,322 +1,398 @@ -{ - "events": [ - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 2, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_transaction.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "success_count": { - "sum": 2, - "value_count": 2 - } - }, - "metricset": { - "interval": "10m", - "name": "service_transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 2007038, - "value_count": 2 - } - }, - "type": "type1" +[ + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_transaction.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.success_count": [ + { + "sum": 2, + "value_count": 2 } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "_doc_count": 2, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_transaction.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "success_count": { - "sum": 2, - "value_count": 2 - } - }, - "metricset": { - "interval": "1m", - "name": "service_transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 2007038, - "value_count": 2 - } - }, - "type": "type1" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 1003519 + ] } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 2, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_transaction.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "success_count": { - "sum": 2, - "value_count": 2 - } - }, - "metricset": { - "interval": "60m", - "name": "service_transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 2007038, - "value_count": 2 - } - }, - "type": "type1" + ], + "transaction.duration.summary": [ + { + "sum": 2007038, + "value_count": 2 } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 2, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_transaction.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "success_count": { - "sum": 2, - "value_count": 2 - } - }, - "metricset": { - "interval": "10m", - "name": "service_transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 2007038, - "value_count": 2 - } - }, - "type": "type2" + ], + "transaction.type": [ + "type1" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_transaction.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.success_count": [ + { + "sum": 2, + "value_count": 2 } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "_doc_count": 2, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_transaction.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "success_count": { - "sum": 2, - "value_count": 2 - } - }, - "metricset": { - "interval": "1m", - "name": "service_transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 2007038, - "value_count": 2 - } - }, - "type": "type2" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 1003519 + ] } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 2, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_transaction.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "success_count": { - "sum": 2, - "value_count": 2 - } - }, - "metricset": { - "interval": "60m", - "name": "service_transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 2007038, - "value_count": 2 - } - }, - "type": "type2" + ], + "transaction.duration.summary": [ + { + "sum": 2007038, + "value_count": 2 } - } - ] -} + ], + "transaction.type": [ + "type1" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_transaction.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.success_count": [ + { + "sum": 2, + "value_count": 2 + } + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 2007038, + "value_count": 2 + } + ], + "transaction.type": [ + "type1" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_transaction.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.success_count": [ + { + "sum": 2, + "value_count": 2 + } + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 2007038, + "value_count": 2 + } + ], + "transaction.type": [ + "type2" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_transaction.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.success_count": [ + { + "sum": 2, + "value_count": 2 + } + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 2007038, + "value_count": 2 + } + ], + "transaction.type": [ + "type2" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_transaction.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.success_count": [ + { + "sum": 2, + "value_count": 2 + } + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 2007038, + "value_count": 2 + } + ], + "transaction.type": [ + "type2" + ] + } +] diff --git a/systemtest/approvals/TestSourcemapUploadInvalidElasticsearchConfig.approved.json b/systemtest/approvals/TestSourcemapUploadInvalidElasticsearchConfig.approved.json index f30fb5e5e1a..7e1b5d09db1 100644 --- a/systemtest/approvals/TestSourcemapUploadInvalidElasticsearchConfig.approved.json +++ b/systemtest/approvals/TestSourcemapUploadInvalidElasticsearchConfig.approved.json @@ -1,308 +1,318 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "rum-js", - "version": "0.0.0" - }, - "client": { - "ip": "127.0.0.1" - }, - "ecs": { - "version": "dynamic" - }, - "error": { - "culprit": "webpack:///webpack/bootstrap 6002740481c9666b0d38 in \u003canonymous\u003e", - "exception": [ - { - "message": "Uncaught Error: timeout test error", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "__webpack_require__", - "library_frame": false, - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/../test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "library_frame": true, - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t// __webpack_public_path__", - " \t__webpack_require__.p = \"\";", - "", - " \t// Load entry module and return exports" - ], - "pre": [ - "", - " \t// expose the modules object (__webpack_modules__)", - " \t__webpack_require__.m = modules;", - "", - " \t// expose the module cache" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "library_frame": false, - "line": { - "column": 0, - "context": " \t__webpack_require__.c = installedModules;", - "number": 33 - }, - "original": { - "abs_path": "http://localhost:8000/test/./e2e/general-usecase/bundle.js.map", - "colno": 181, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "invokeTask", - "library_frame": false, - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003cunknown\u003e", - "library_frame": false, - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 15, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "runTask", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - "", - "", - "/** WEBPACK FOOTER **", - " ** webpack/bootstrap 6002740481c9666b0d38" - ], - "pre": [ - "", - " \t// __webpack_public_path__", - " \t__webpack_require__.p = \"\";", - "", - " \t// Load entry module and return exports" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "moduleId", - "library_frame": false, - "line": { - "column": 0, - "context": " \treturn __webpack_require__(0);", - "number": 39 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 199, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "invoke", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - }, - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - " \t\t\treturn installedModules[moduleId].exports;", - "", - " \t\t// Create a new module (and put it into the cache)", - " \t\tvar module = installedModules[moduleId] = {", - " \t\t\texports: {}," - ], - "pre": [ - "", - " \t// The require function", - " \tfunction __webpack_require__(moduleId) {", - "", - " \t\t// Check if module is in cache" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "library_frame": false, - "line": { - "column": 0, - "context": " \t\tif(installedModules[moduleId])", - "number": 8 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 33, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "timer", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } - ], - "type": "Error" - } - ], - "grouping_key": "89e23da755c2dd759d2d529e37c92b8f", - "grouping_name": "Uncaught Error: log timeout test error", - "id": "aba2688e033848ce9c4e4005f1caa534", - "log": { - "message": "Uncaught Error: log timeout test error", - "stacktrace": [ - { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "context": { - "post": [ - "", - " \t\t// Check if module is in cache", - " \t\tif(installedModules[moduleId])", - " \t\t\treturn installedModules[moduleId].exports;", - "" - ], - "pre": [ - " \t// The module cache", - " \tvar installedModules = {};", - "", - " \t// The require function" - ] - }, - "exclude_from_grouping": false, - "filename": "webpack:///webpack/bootstrap 6002740481c9666b0d38", - "function": "\u003canonymous\u003e", - "library_frame": false, - "line": { - "column": 0, - "context": " \tfunction __webpack_require__(moduleId) {", - "number": 5 - }, - "original": { - "abs_path": "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", - "colno": 18, - "filename": "~/test/e2e/general-usecase/bundle.js.map", - "function": "\u003canonymous\u003e", - "lineno": 1 - }, - "sourcemap": { - "updated": true - } - } - ] - } - }, - "event": { - "ingested": "dynamic" - }, - "http": { - "request": { - "referrer": "http://localhost:8000/test/e2e/" - } - }, - "observer": { - "ephemeral_id": "dynamic", - "hostname": "dynamic", - "id": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "error", - "name": "error" - }, - "service": { - "name": "apm-agent-js", - "version": "1.0.1" - }, - "source": { - "ip": "127.0.0.1" - }, - "timestamp": { - "us": "dynamic" - }, - "url": { - "domain": "localhost", - "full": "http://localhost:8000/test/e2e/general-usecase/", - "original": "http://localhost:8000/test/e2e/general-usecase/", - "path": "/test/e2e/general-usecase/", - "port": 8000, - "scheme": "http" - }, - "user_agent": { - "device": { - "name": "Other" - }, - "name": "Go-http-client", - "original": "Go-http-client/1.1", - "version": "1.1" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "rum-js" + ], + "agent.version": [ + "0.0.0" + ], + "client.ip": [ + "127.0.0.1" + ], + "ecs.version": [ + "dynamic" + ], + "error.culprit": [ + "webpack:///webpack/bootstrap 6002740481c9666b0d38 in \u003canonymous\u003e" + ], + "error.exception.message": [ + "Uncaught Error: timeout test error" + ], + "error.exception.stacktrace.abs_path": [ + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map" + ], + "error.exception.stacktrace.context.post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "", + "", + " \t// __webpack_public_path__", + " \t__webpack_require__.p = \"\";", + "", + " \t// Load entry module and return exports", + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "", + "", + "", + "", + "/** WEBPACK FOOTER **", + " ** webpack/bootstrap 6002740481c9666b0d38", + " \t\t\treturn installedModules[moduleId].exports;", + "", + " \t\t// Create a new module (and put it into the cache)", + " \t\tvar module = installedModules[moduleId] = {", + " \t\t\texports: {}," + ], + "error.exception.stacktrace.context.pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function", + "", + " \t// expose the modules object (__webpack_modules__)", + " \t__webpack_require__.m = modules;", + "", + " \t// expose the module cache", + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function", + "", + " \t// __webpack_public_path__", + " \t__webpack_require__.p = \"\";", + "", + " \t// Load entry module and return exports", + "", + " \t// The require function", + " \tfunction __webpack_require__(moduleId) {", + "", + " \t\t// Check if module is in cache" + ], + "error.exception.stacktrace.exclude_from_grouping": [ + false, + false, + false, + false, + false + ], + "error.exception.stacktrace.filename": [ + "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "webpack:///webpack/bootstrap 6002740481c9666b0d38", + "webpack:///webpack/bootstrap 6002740481c9666b0d38" + ], + "error.exception.stacktrace.function": [ + "__webpack_require__", + "\u003cunknown\u003e", + "\u003cunknown\u003e", + "moduleId", + "\u003canonymous\u003e" + ], + "error.exception.stacktrace.library_frame": [ + false, + false, + false, + false, + false + ], + "error.exception.stacktrace.line.column": [ + 0, + 0, + 0, + 0, + 0 + ], + "error.exception.stacktrace.line.context": [ + " \tfunction __webpack_require__(moduleId) {", + " \t__webpack_require__.c = installedModules;", + " \tfunction __webpack_require__(moduleId) {", + " \treturn __webpack_require__(0);", + " \t\tif(installedModules[moduleId])" + ], + "error.exception.stacktrace.line.number": [ + 5, + 33, + 5, + 39, + 8 + ], + "error.exception.stacktrace.original.abs_path": [ + "http://localhost:8000/test/../test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/./e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map", + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map" + ], + "error.exception.stacktrace.original.colno": [ + 18, + 181, + 15, + 199, + 33 + ], + "error.exception.stacktrace.original.filename": [ + "test/e2e/general-usecase/bundle.js.map", + "~/test/e2e/general-usecase/bundle.js.map", + "~/test/e2e/general-usecase/bundle.js.map", + "~/test/e2e/general-usecase/bundle.js.map", + "~/test/e2e/general-usecase/bundle.js.map" + ], + "error.exception.stacktrace.original.function": [ + "\u003canonymous\u003e", + "invokeTask", + "runTask", + "invoke", + "timer" + ], + "error.exception.stacktrace.original.library_frame": [ + true, + false + ], + "error.exception.stacktrace.original.lineno": [ + 1, + 1, + 1, + 1, + 1 + ], + "error.exception.stacktrace.sourcemap.updated": [ + true, + true, + true, + true, + true + ], + "error.exception.type": [ + "Error" + ], + "error.grouping_key": [ + "89e23da755c2dd759d2d529e37c92b8f" + ], + "error.grouping_name": [ + "Uncaught Error: log timeout test error" + ], + "error.id": [ + "aba2688e033848ce9c4e4005f1caa534" + ], + "error.log.message": [ + "Uncaught Error: log timeout test error" + ], + "error.log.stacktrace.abs_path": [ + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map" + ], + "error.log.stacktrace.context.post": [ + "", + " \t\t// Check if module is in cache", + " \t\tif(installedModules[moduleId])", + " \t\t\treturn installedModules[moduleId].exports;", + "" + ], + "error.log.stacktrace.context.pre": [ + " \t// The module cache", + " \tvar installedModules = {};", + "", + " \t// The require function" + ], + "error.log.stacktrace.exclude_from_grouping": [ + false + ], + "error.log.stacktrace.filename": [ + "webpack:///webpack/bootstrap 6002740481c9666b0d38" + ], + "error.log.stacktrace.function": [ + "\u003canonymous\u003e" + ], + "error.log.stacktrace.library_frame": [ + false + ], + "error.log.stacktrace.line.column": [ + 0 + ], + "error.log.stacktrace.line.context": [ + " \tfunction __webpack_require__(moduleId) {" + ], + "error.log.stacktrace.line.number": [ + 5 + ], + "error.log.stacktrace.original.abs_path": [ + "http://localhost:8000/test/e2e/general-usecase/bundle.js.map" + ], + "error.log.stacktrace.original.colno": [ + 18 + ], + "error.log.stacktrace.original.filename": [ + "~/test/e2e/general-usecase/bundle.js.map" + ], + "error.log.stacktrace.original.function": [ + "\u003canonymous\u003e" + ], + "error.log.stacktrace.original.lineno": [ + 1 + ], + "error.log.stacktrace.sourcemap.updated": [ + true + ], + "event.ingested": [ + "dynamic" + ], + "http.request.referrer": [ + "http://localhost:8000/test/e2e/" + ], + "observer.ephemeral_id": [ + "dynamic" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.id": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "error" + ], + "processor.name": [ + "error" + ], + "service.name": [ + "apm-agent-js" + ], + "service.version": [ + "1.0.1" + ], + "source.ip": [ + "127.0.0.1" + ], + "timestamp.us": [ + "dynamic" + ], + "url.domain": [ + "localhost" + ], + "url.full": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.original": [ + "http://localhost:8000/test/e2e/general-usecase/" + ], + "url.path": [ + "/test/e2e/general-usecase/" + ], + "url.port": [ + 8000 + ], + "url.scheme": [ + "http" + ], + "user_agent.device.name": [ + "Other" + ], + "user_agent.name": [ + "Go-http-client" + ], + "user_agent.original": [ + "Go-http-client/1.1" + ], + "user_agent.version": [ + "1.1" + ] + } +] diff --git a/systemtest/approvals/TestTransactionAggregation.approved.json b/systemtest/approvals/TestTransactionAggregation.approved.json index 34cf299ab4b..1f1c147f6f8 100644 --- a/systemtest/approvals/TestTransactionAggregation.approved.json +++ b/systemtest/approvals/TestTransactionAggregation.approved.json @@ -1,757 +1,1010 @@ -{ - "events": [ - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 5, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 5, - "value_count": 5 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "10m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 5 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 5017595, - "value_count": 5 - } - }, - "name": "abc", - "root": true, - "type": "backend" +[ + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 5, + "value_count": 5 } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "_doc_count": 5, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 5, - "value_count": 5 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "1m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 5 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 5017595, - "value_count": 5 - } - }, - "name": "abc", - "root": true, - "type": "backend" + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 5 + ], + "values": [ + 1003519 + ] } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 5, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 5, - "value_count": 5 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "60m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 5 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 5017595, - "value_count": 5 - } - }, - "name": "abc", - "root": true, - "type": "backend" + ], + "transaction.duration.summary": [ + { + "sum": 5017595, + "value_count": 5 } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 10, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 10, - "value_count": 10 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "10m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 10 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 10035190, - "value_count": 10 - } - }, - "name": "def", - "root": true, - "type": "backend" + ], + "transaction.name": [ + "abc" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "backend" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 5, + "value_count": 5 } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "_doc_count": 10, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 10, - "value_count": 10 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "1m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 10 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 10035190, - "value_count": 10 - } - }, - "name": "def", - "root": true, - "type": "backend" + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 5 + ], + "values": [ + 1003519 + ] } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 10, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 10, - "value_count": 10 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "60m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 10 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 10035190, - "value_count": 10 - } - }, - "name": "def", - "root": true, - "type": "backend" + ], + "transaction.duration.summary": [ + { + "sum": 5017595, + "value_count": 5 } - }, - { - "@timestamp": "2021-09-15T20:10:00.000Z", - "_doc_count": 2, - "agent": { - "name": "elastic-node" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.transaction.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "unknown" - }, - "faas": { - "coldstart": false, - "trigger": { - "type": "http" - } - }, - "host": { - "hostname": "node-name", - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "pod": { - "name": "pod-name" - } - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "interval": "10m", - "name": "transaction" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "staging", - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-123" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 38911 - ] - }, - "summary": { - "sum": 77822, - "value_count": 2 - } - }, - "name": "faas", - "result": "success", - "root": true, - "type": "lambda" + ], + "transaction.name": [ + "abc" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "backend" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 5, + "value_count": 5 } - }, - { - "@timestamp": "2021-09-15T20:11:00.000Z", - "_doc_count": 2, - "agent": { - "name": "elastic-node" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.transaction.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "unknown" - }, - "faas": { - "coldstart": false, - "trigger": { - "type": "http" - } - }, - "host": { - "hostname": "node-name", - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "pod": { - "name": "pod-name" - } - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "interval": "1m", - "name": "transaction" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "staging", - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-123" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 38911 - ] - }, - "summary": { - "sum": 77822, - "value_count": 2 - } - }, - "name": "faas", - "result": "success", - "root": true, - "type": "lambda" + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 5 + ], + "values": [ + 1003519 + ] } - }, - { - "@timestamp": "2021-09-15T20:00:00.000Z", - "_doc_count": 2, - "agent": { - "name": "elastic-node" - }, - "cloud": { - "account": { - "id": "account_id", - "name": "account_name" - }, - "availability_zone": "cloud_availability_zone", - "machine": { - "type": "machine_type" - }, - "project": { - "id": "project_id", - "name": "project_name" - }, - "provider": "cloud_provider", - "region": "cloud_region", - "service": { - "name": "lambda" - } - }, - "container": { - "id": "container-id" - }, - "data_stream": { - "dataset": "apm.transaction.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "unknown" - }, - "faas": { - "coldstart": false, - "trigger": { - "type": "http" - } - }, - "host": { - "hostname": "node-name", - "name": "node-name", - "os": { - "platform": "darwin" - } - }, - "kubernetes": { - "pod": { - "name": "pod-name" - } - }, - "labels": { - "tag1": "one" - }, - "metricset": { - "interval": "60m", - "name": "transaction" - }, - "numeric_labels": { - "tag2": 2 - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "environment": "staging", - "language": { - "name": "ecmascript", - "version": "8" - }, - "name": "1234_service-12a3", - "node": { - "name": "node-123" - }, - "runtime": { - "name": "node", - "version": "8.0.0" - }, - "version": "5.1.3" - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 2 - ], - "values": [ - 38911 - ] - }, - "summary": { - "sum": 77822, - "value_count": 2 - } - }, - "name": "faas", - "result": "success", - "root": true, - "type": "lambda" + ], + "transaction.duration.summary": [ + { + "sum": 5017595, + "value_count": 5 } - } - ] -} + ], + "transaction.name": [ + "abc" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "backend" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 10, + "value_count": 10 + } + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 10 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 10035190, + "value_count": 10 + } + ], + "transaction.name": [ + "def" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "backend" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 10, + "value_count": 10 + } + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 10 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 10035190, + "value_count": 10 + } + ], + "transaction.name": [ + "def" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "backend" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 10, + "value_count": 10 + } + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 10 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 10035190, + "value_count": 10 + } + ], + "transaction.name": [ + "def" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "backend" + ] + }, + { + "@timestamp": [ + "2021-09-15T20:10:00.000Z" + ], + "agent.name": [ + "elastic-node" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.transaction.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "unknown" + ], + "faas.coldstart": [ + false + ], + "faas.trigger.type": [ + "http" + ], + "host.hostname": [ + "node-name" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "labels.tag1": [ + "one" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "transaction" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "staging" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-123" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 38911 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 77822, + "value_count": 2 + } + ], + "transaction.name": [ + "faas" + ], + "transaction.result": [ + "success" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "lambda" + ] + }, + { + "@timestamp": [ + "2021-09-15T20:11:00.000Z" + ], + "agent.name": [ + "elastic-node" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.transaction.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "unknown" + ], + "faas.coldstart": [ + false + ], + "faas.trigger.type": [ + "http" + ], + "host.hostname": [ + "node-name" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "labels.tag1": [ + "one" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "transaction" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "staging" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-123" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 38911 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 77822, + "value_count": 2 + } + ], + "transaction.name": [ + "faas" + ], + "transaction.result": [ + "success" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "lambda" + ] + }, + { + "@timestamp": [ + "2021-09-15T20:00:00.000Z" + ], + "agent.name": [ + "elastic-node" + ], + "cloud.account.id": [ + "account_id" + ], + "cloud.account.name": [ + "account_name" + ], + "cloud.availability_zone": [ + "cloud_availability_zone" + ], + "cloud.machine.type": [ + "machine_type" + ], + "cloud.project.id": [ + "project_id" + ], + "cloud.project.name": [ + "project_name" + ], + "cloud.provider": [ + "cloud_provider" + ], + "cloud.region": [ + "cloud_region" + ], + "cloud.service.name": [ + "lambda" + ], + "container.id": [ + "container-id" + ], + "data_stream.dataset": [ + "apm.transaction.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "unknown" + ], + "faas.coldstart": [ + false + ], + "faas.trigger.type": [ + "http" + ], + "host.hostname": [ + "node-name" + ], + "host.name": [ + "node-name" + ], + "host.os.platform": [ + "darwin" + ], + "kubernetes.pod.name": [ + "pod-name" + ], + "labels.tag1": [ + "one" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "transaction" + ], + "numeric_labels.tag2": [ + 2 + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.environment": [ + "staging" + ], + "service.language.name": [ + "ecmascript" + ], + "service.language.version": [ + "8" + ], + "service.name": [ + "1234_service-12a3" + ], + "service.node.name": [ + "node-123" + ], + "service.runtime.name": [ + "node" + ], + "service.runtime.version": [ + "8.0.0" + ], + "service.version": [ + "5.1.3" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 2 + ], + "values": [ + 38911 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 77822, + "value_count": 2 + } + ], + "transaction.name": [ + "faas" + ], + "transaction.result": [ + "success" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "lambda" + ] + } +] diff --git a/systemtest/approvals/TestTransactionAggregationShutdown.approved.json b/systemtest/approvals/TestTransactionAggregationShutdown.approved.json index afc6ac793bd..667edb05506 100644 --- a/systemtest/approvals/TestTransactionAggregationShutdown.approved.json +++ b/systemtest/approvals/TestTransactionAggregationShutdown.approved.json @@ -1,217 +1,290 @@ -{ - "events": [ - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 1, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 1, - "value_count": 1 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "10m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 1 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 1003519, - "value_count": 1 - } - }, - "name": "name", - "root": true, - "type": "type" +[ + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 1, + "value_count": 1 } - }, - { - "@timestamp": "2006-01-02T15:04:00.000Z", - "_doc_count": 1, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 1, - "value_count": 1 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "1m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 1 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 1003519, - "value_count": 1 - } - }, - "name": "name", - "root": true, - "type": "type" + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 1 + ], + "values": [ + 1003519 + ] } - }, - { - "@timestamp": "2006-01-02T15:00:00.000Z", - "_doc_count": 1, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.transaction.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success", - "success_count": { - "sum": 1, - "value_count": 1 - } - }, - "host": { - "hostname": "beowulf", - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "metricset": { - "interval": "60m", - "name": "transaction" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "transaction": { - "duration": { - "histogram": { - "counts": [ - 1 - ], - "values": [ - 1003519 - ] - }, - "summary": { - "sum": 1003519, - "value_count": 1 - } - }, - "name": "name", - "root": true, - "type": "type" + ], + "transaction.duration.summary": [ + { + "sum": 1003519, + "value_count": 1 } - } - ] -} + ], + "transaction.name": [ + "name" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "type" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:04:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 1, + "value_count": 1 + } + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 1 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 1003519, + "value_count": 1 + } + ], + "transaction.name": [ + "name" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "type" + ] + }, + { + "@timestamp": [ + "2006-01-02T15:00:00.000Z" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.transaction.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + { + "sum": 1, + "value_count": 1 + } + ], + "host.hostname": [ + "beowulf" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "transaction" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "transaction.duration.histogram": [ + { + "counts": [ + 1 + ], + "values": [ + 1003519 + ] + } + ], + "transaction.duration.summary": [ + { + "sum": 1003519, + "value_count": 1 + } + ], + "transaction.name": [ + "name" + ], + "transaction.root": [ + true + ], + "transaction.type": [ + "type" + ] + } +] diff --git a/systemtest/approvals/TestTransactionDroppedSpansStatsMetrics.approved.json b/systemtest/approvals/TestTransactionDroppedSpansStatsMetrics.approved.json index 387a875923a..95e8c64c6d3 100644 --- a/systemtest/approvals/TestTransactionDroppedSpansStatsMetrics.approved.json +++ b/systemtest/approvals/TestTransactionDroppedSpansStatsMetrics.approved.json @@ -1,298 +1,338 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "_doc_count": 4, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "metricset": { - "interval": "10m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "elasticsearch" - } - }, - "span": { - "destination": { - "service": { - "resource": "elasticsearch", - "response_time": { - "count": 4, - "sum": { - "us": 3600 - } - } - } - } - } - }, - { - "@timestamp": "dynamic", - "_doc_count": 4, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "metricset": { - "interval": "1m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "elasticsearch" - } - }, - "span": { - "destination": { - "service": { - "resource": "elasticsearch", - "response_time": { - "count": 4, - "sum": { - "us": 3600 - } - } - } - } - } - }, - { - "@timestamp": "dynamic", - "_doc_count": 4, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "metricset": { - "interval": "60m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "elasticsearch" - } - }, - "span": { - "destination": { - "service": { - "resource": "elasticsearch", - "response_time": { - "count": 4, - "sum": { - "us": 3600 - } - } - } - } - } - }, - { - "@timestamp": "dynamic", - "_doc_count": 50, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.10m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "metricset": { - "interval": "10m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "redis" - } - }, - "span": { - "destination": { - "service": { - "resource": "redis", - "response_time": { - "count": 50, - "sum": { - "us": 5000 - } - } - } - } - } - }, - { - "@timestamp": "dynamic", - "_doc_count": 50, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.1m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "metricset": { - "interval": "1m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "redis" - } - }, - "span": { - "destination": { - "service": { - "resource": "redis", - "response_time": { - "count": 50, - "sum": { - "us": 5000 - } - } - } - } - } - }, - { - "@timestamp": "dynamic", - "_doc_count": 50, - "agent": { - "name": "go" - }, - "data_stream": { - "dataset": "apm.service_destination.60m", - "namespace": "default", - "type": "metrics" - }, - "event": { - "outcome": "success" - }, - "metricset": { - "interval": "60m", - "name": "service_destination" - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "processor": { - "event": "metric" - }, - "service": { - "language": { - "name": "go" - }, - "name": "systemtest", - "target": { - "type": "redis" - } - }, - "span": { - "destination": { - "service": { - "resource": "redis", - "response_time": { - "count": 50, - "sum": { - "us": 5000 - } - } - } - } - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "elasticsearch" + ], + "span.destination.service.resource": [ + "elasticsearch" + ], + "span.destination.service.response_time.count": [ + 4 + ], + "span.destination.service.response_time.sum.us": [ + 3600 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "elasticsearch" + ], + "span.destination.service.resource": [ + "elasticsearch" + ], + "span.destination.service.response_time.count": [ + 4 + ], + "span.destination.service.response_time.sum.us": [ + 3600 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "elasticsearch" + ], + "span.destination.service.resource": [ + "elasticsearch" + ], + "span.destination.service.response_time.count": [ + 4 + ], + "span.destination.service.response_time.sum.us": [ + 3600 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.10m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "metricset.interval": [ + "10m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "redis" + ], + "span.destination.service.resource": [ + "redis" + ], + "span.destination.service.response_time.count": [ + 50 + ], + "span.destination.service.response_time.sum.us": [ + 5000 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.1m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "metricset.interval": [ + "1m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "redis" + ], + "span.destination.service.resource": [ + "redis" + ], + "span.destination.service.response_time.count": [ + 50 + ], + "span.destination.service.response_time.sum.us": [ + 5000 + ] + }, + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "data_stream.dataset": [ + "apm.service_destination.60m" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "metrics" + ], + "event.outcome": [ + "success" + ], + "metricset.interval": [ + "60m" + ], + "metricset.name": [ + "service_destination" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "processor.event": [ + "metric" + ], + "service.language.name": [ + "go" + ], + "service.name": [ + "systemtest" + ], + "service.target.type": [ + "redis" + ], + "span.destination.service.resource": [ + "redis" + ], + "span.destination.service.response_time.count": [ + 50 + ], + "span.destination.service.response_time.sum.us": [ + 5000 + ] + } +] diff --git a/systemtest/approvals/TestTransactionDroppedSpansStatsTransaction.approved.json b/systemtest/approvals/TestTransactionDroppedSpansStatsTransaction.approved.json index bc9aee4e497..951a0cb2591 100644 --- a/systemtest/approvals/TestTransactionDroppedSpansStatsTransaction.approved.json +++ b/systemtest/approvals/TestTransactionDroppedSpansStatsTransaction.approved.json @@ -1,78 +1,118 @@ -{ - "events": [ - { - "@timestamp": "dynamic", - "agent": { - "name": "go", - "version": "0.0.0" - }, - "data_stream": { - "dataset": "apm", - "namespace": "default", - "type": "traces" - }, - "event": { - "outcome": "success", - "success_count": 1 - }, - "host": { - "architecture": "i386", - "hostname": "beowulf", - "ip": [ - "127.0.0.1" - ], - "name": "beowulf", - "os": { - "platform": "minix" - } - }, - "observer": { - "hostname": "dynamic", - "type": "apm-server", - "version": "dynamic" - }, - "process": { - "pid": 1, - "title": "systemtest.test" - }, - "processor": { - "event": "transaction" - }, - "service": { - "language": { - "name": "go", - "version": "2.0" - }, - "name": "systemtest", - "node": { - "name": "beowulf" - }, - "runtime": { - "name": "gc", - "version": "2.0" - } - }, - "span": { - "id": "dynamic" - }, - "timestamp": "dynamic", - "trace": { - "id": "dynamic" - }, - "transaction": { - "duration": { - "us": 30000 - }, - "id": "dynamic", - "name": "huge-traces", - "representative_count": 1, - "sampled": true, - "span_count": { - "dropped": 54, - "started": 0 - }, - "type": "type" - } - } - ] -} +[ + { + "@timestamp": [ + "dynamic" + ], + "agent.name": [ + "go" + ], + "agent.version": [ + "0.0.0" + ], + "data_stream.dataset": [ + "apm" + ], + "data_stream.namespace": [ + "default" + ], + "data_stream.type": [ + "traces" + ], + "event.outcome": [ + "success" + ], + "event.success_count": [ + 1 + ], + "host.architecture": [ + "i386" + ], + "host.hostname": [ + "beowulf" + ], + "host.ip": [ + "127.0.0.1" + ], + "host.name": [ + "beowulf" + ], + "host.os.platform": [ + "minix" + ], + "observer.hostname": [ + "dynamic" + ], + "observer.type": [ + "apm-server" + ], + "observer.version": [ + "dynamic" + ], + "process.pid": [ + 1 + ], + "process.title": [ + "systemtest.test" + ], + "process.title.text": [ + "systemtest.test" + ], + "processor.event": [ + "transaction" + ], + "service.language.name": [ + "go" + ], + "service.language.version": [ + "2.0" + ], + "service.name": [ + "systemtest" + ], + "service.node.name": [ + "beowulf" + ], + "service.runtime.name": [ + "gc" + ], + "service.runtime.version": [ + "2.0" + ], + "span.id": [ + "dynamic" + ], + "timestamp.us": [ + "dynamic" + ], + "trace.id": [ + "dynamic" + ], + "transaction.duration.us": [ + 30000 + ], + "transaction.id": [ + "dynamic" + ], + "transaction.name": [ + "huge-traces" + ], + "transaction.name.text": [ + "huge-traces" + ], + "transaction.representative_count": [ + 1 + ], + "transaction.sampled": [ + true + ], + "transaction.span_count.dropped": [ + 54 + ], + "transaction.span_count.started": [ + 0 + ], + "transaction.type": [ + "type" + ] + } +] diff --git a/systemtest/errors_test.go b/systemtest/errors_test.go index 71069ce9688..53aafb8d7ca 100644 --- a/systemtest/errors_test.go +++ b/systemtest/errors_test.go @@ -19,6 +19,8 @@ package systemtest_test import ( "bytes" + "errors" + "fmt" "net/http" "os" "testing" @@ -51,5 +53,35 @@ func TestErrorIngest(t *testing.T) { result := estest.ExpectDocs(t, systemtest.Elasticsearch, "logs-apm.error*", espoll.ExistsQuery{ Field: "transaction.name", }) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) +} + +// TestErrorExceptionCause tests hierarchical exception causes, +// which must be obtained from _source due to how the exception +// tree is structured as an array of objects. +func TestErrorExceptionCause(t *testing.T) { + systemtest.CleanupElasticsearch(t) + srv := apmservertest.NewServerTB(t) + + tracer := srv.Tracer() + tracer.NewError(fmt.Errorf( + "parent: %w %w", + fmt.Errorf("child1: %w", errors.New("grandchild")), + errors.New("child2"), + )).Send() + tracer.Flush(nil) + + result := estest.ExpectDocs(t, systemtest.Elasticsearch, "logs-apm.error*", nil) + errorObj := result.Hits.Hits[0].Source["error"].(map[string]any) + exceptions := errorObj["exception"].([]any) + + require.Len(t, exceptions, 4) + assert.Equal(t, "parent: child1: grandchild child2", exceptions[0].(map[string]any)["message"]) + assert.Equal(t, "child1: grandchild", exceptions[1].(map[string]any)["message"]) + assert.Equal(t, "grandchild", exceptions[2].(map[string]any)["message"]) + assert.Equal(t, "child2", exceptions[3].(map[string]any)["message"]) + assert.NotContains(t, exceptions[0], "parent") + assert.NotContains(t, exceptions[1], "parent") + assert.NotContains(t, exceptions[2], "parent") + assert.Equal(t, float64(0), exceptions[3].(map[string]any)["parent"]) } diff --git a/systemtest/go.mod b/systemtest/go.mod index e16ee9b3b0b..657bd68596a 100644 --- a/systemtest/go.mod +++ b/systemtest/go.mod @@ -5,11 +5,11 @@ go 1.21 toolchain go1.21.3 require ( - github.com/docker/docker v23.0.3+incompatible + github.com/docker/docker v24.0.7+incompatible github.com/docker/go-connections v0.4.0 github.com/elastic/apm-perf v0.0.0-20230608162138-29920c01cfd6 - github.com/elastic/apm-tools v0.0.0-20230828065051-3f799314cc8b - github.com/elastic/go-elasticsearch/v8 v8.8.1 + github.com/elastic/apm-tools v0.0.0-20231123072934-d85ff07a8390 + github.com/elastic/go-elasticsearch/v8 v8.10.1 github.com/elastic/go-lumber v0.1.1 github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 github.com/hashicorp/go-multierror v1.1.1 @@ -17,26 +17,26 @@ require ( github.com/spf13/cobra v1.7.0 github.com/stretchr/testify v1.8.4 github.com/testcontainers/testcontainers-go v0.18.0 - github.com/tidwall/gjson v1.14.4 - go.elastic.co/apm/v2 v2.4.4 - go.elastic.co/fastjson v1.1.0 + github.com/tidwall/gjson v1.17.0 + go.elastic.co/apm/v2 v2.4.5 + go.elastic.co/fastjson v1.3.0 go.opentelemetry.io/collector/pdata v1.0.0-rcv0013 go.opentelemetry.io/collector/semconv v0.81.0 - go.opentelemetry.io/otel v1.17.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.40.0 - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.40.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0 - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.17.0 - go.opentelemetry.io/otel/metric v1.17.0 - go.opentelemetry.io/otel/sdk v1.17.0 - go.opentelemetry.io/otel/sdk/metric v0.40.0 - go.opentelemetry.io/otel/trace v1.17.0 + go.opentelemetry.io/otel v1.19.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 + go.opentelemetry.io/otel/metric v1.19.0 + go.opentelemetry.io/otel/sdk v1.19.0 + go.opentelemetry.io/otel/sdk/metric v1.19.0 + go.opentelemetry.io/otel/trace v1.19.0 go.uber.org/zap v1.24.0 golang.org/x/sync v0.3.0 - golang.org/x/sys v0.11.0 + golang.org/x/sys v0.13.0 golang.org/x/time v0.3.0 - google.golang.org/grpc v1.57.0 + google.golang.org/grpc v1.58.3 gopkg.in/yaml.v3 v3.0.1 ) @@ -44,7 +44,7 @@ require ( github.com/containerd/containerd v1.7.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect @@ -59,12 +59,12 @@ require ( github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/go-units v0.5.0 // indirect github.com/elastic/elastic-transport-go/v8 v8.3.0 // indirect - github.com/elastic/go-sysinfo v1.7.1 // indirect + github.com/elastic/go-sysinfo v1.11.1 // indirect github.com/elastic/go-windows v1.0.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/uuid v1.3.0 // indirect github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -82,24 +82,24 @@ require ( github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/procfs v0.10.1 // indirect + github.com/prometheus/procfs v0.12.0 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/sirupsen/logrus v1.9.0 // indirect github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.40.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 // indirect go.opentelemetry.io/proto/otlp v1.0.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.14.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/tools v0.12.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect google.golang.org/protobuf v1.31.0 // indirect howett.net/plist v1.0.0 // indirect ) diff --git a/systemtest/go.sum b/systemtest/go.sum index 574c162aac4..8a39cc825c0 100644 --- a/systemtest/go.sum +++ b/systemtest/go.sum @@ -1,3 +1,5 @@ +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8 h1:V8krnnfGj4pV65YLUm3C0/8bl7V5Nry2Pwvy3ru/wLc= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= 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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= @@ -34,8 +36,8 @@ 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/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v23.0.3+incompatible h1:9GhVsShNWz1hO//9BNg/dpMnZW25KydO4wtVxWAIbho= -github.com/docker/docker v23.0.3+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -43,17 +45,16 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/elastic/apm-perf v0.0.0-20230608162138-29920c01cfd6 h1:xT0z9yPjU0Csoq9B3BZls8CCtEeU3HMFhuSK8vu9YAo= github.com/elastic/apm-perf v0.0.0-20230608162138-29920c01cfd6/go.mod h1:zK9WN3ehaqmWNgGCDtLpJ3ensSTsZ+N+T4TD11fQPx0= -github.com/elastic/apm-tools v0.0.0-20230828065051-3f799314cc8b h1:47VFNMVQQt7WTHF7NdS37Qkk4fMx4uGhM5WWf5lUqio= -github.com/elastic/apm-tools v0.0.0-20230828065051-3f799314cc8b/go.mod h1:IUMdGldUOSqfeXSj+zIjYaBX6WFM7M95WU2VdmZ5ZyE= +github.com/elastic/apm-tools v0.0.0-20231123072934-d85ff07a8390 h1:UZ2g+AJibFB+fX68DbozgJVKGUZAOqLtiCdwQ9cIk2Q= +github.com/elastic/apm-tools v0.0.0-20231123072934-d85ff07a8390/go.mod h1:QrCraAInc4Adxm0XBtjHFAMrdF/vfXt2D6D1LoudCPo= github.com/elastic/elastic-transport-go/v8 v8.3.0 h1:DJGxovyQLXGr62e9nDMPSxRyWION0Bh6d9eCFBriiHo= github.com/elastic/elastic-transport-go/v8 v8.3.0/go.mod h1:87Tcz8IVNe6rVSLdBux1o/PEItLtyabHU3naC7IoqKI= -github.com/elastic/go-elasticsearch/v8 v8.8.1 h1:/OiP5Yex40q5eWpzFVQIS8jRE7SaEZrFkG9JbE6TXtY= -github.com/elastic/go-elasticsearch/v8 v8.8.1/go.mod h1:GU1BJHO7WeamP7UhuElYwzzHtvf9SDmeVpSSy9+o6Qg= +github.com/elastic/go-elasticsearch/v8 v8.10.1 h1:JJ3i2DimYTsJcUoEGbg6tNB0eehTNdid9c5kTR1TGuI= +github.com/elastic/go-elasticsearch/v8 v8.10.1/go.mod h1:GU1BJHO7WeamP7UhuElYwzzHtvf9SDmeVpSSy9+o6Qg= github.com/elastic/go-lumber v0.1.1 h1:aae5rSBnwBvdB0aShJ7AbOYPyvP1/wS/JIOC1A4D1DM= github.com/elastic/go-lumber v0.1.1/go.mod h1:DMVoFv7YM71enE9X5vWJWWv7wvQNtzXh7bPeKukDccY= -github.com/elastic/go-sysinfo v1.7.1 h1:Wx4DSARcKLllpKT2TnFVdSUJOsybqMYCNQZq1/wO+s0= -github.com/elastic/go-sysinfo v1.7.1/go.mod h1:i1ZYdU10oLNfRzq4vq62BEwD2fH8KaWh6eh0ikPT9F0= -github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU= +github.com/elastic/go-sysinfo v1.11.1 h1:g9mwl05njS4r69TisC+vwHWTSKywZFYYUu3so3T/Lao= +github.com/elastic/go-sysinfo v1.11.1/go.mod h1:6KQb31j0QeWBDF88jIdWSxE8cwoOB9tO4Y4osN7Q70E= github.com/elastic/go-windows v1.0.1 h1:AlYZOldA+UJ0/2nBuqWdo90GFCgG9xuyw9SYzGUtJm0= github.com/elastic/go-windows v1.0.1/go.mod h1:FoVvqWSun28vaDQPbj2Elfc0JahhPB7WQEGa3c814Ss= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= @@ -75,15 +76,15 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 h1:YBftPWNWd4WwGqtY2yeZL2ef8rHAxPBD8KFhJpmcqms= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0/go.mod h1:YN5jB8ie0yfIUg6VvR9Kz84aCaG7AsGZnLjhHbUqwPg= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -104,7 +105,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.16.7 h1:2mk3MPGNzKyxErAw8YaohYh69+pa4sIQSC0fPGCFR9I= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -139,15 +139,13 @@ github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.m github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 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/prometheus/procfs v0.0.0-20190425082905-87a4384529e0/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -173,12 +171,13 @@ github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG github.com/testcontainers/testcontainers-go v0.18.0 h1:8RXrcIQv5xX/uBOSmZd297gzvA7F0yuRA37/918o7Yg= github.com/testcontainers/testcontainers-go v0.18.0/go.mod h1:rLC7hR2SWRjJZZNrUYiTKvUXCziNxzZiYtz9icTWYNQ= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/gjson v1.14.4 h1:uo0p8EbA09J7RQaflQ1aBRffTR7xedD2bcIVSYxLnkM= -github.com/tidwall/gjson v1.14.4/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= +github.com/tidwall/gjson v1.17.0 h1:/Jocvlh98kcTfpN2+JzGQWQcqrPQwDrVEMApx/M5ZwM= +github.com/tidwall/gjson v1.17.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/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= 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/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= @@ -190,36 +189,36 @@ github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYp github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -go.elastic.co/apm/v2 v2.4.4 h1:KGbmUEtLNQ6sCFGpqTMhfRjqDOKP8IliO+efErKY5lU= -go.elastic.co/apm/v2 v2.4.4/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= -go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= -go.elastic.co/fastjson v1.1.0/go.mod h1:boNGISWMjQsUPy/t6yqt2/1Wx4YNPSe+mZjlyw9vKKI= +go.elastic.co/apm/v2 v2.4.5 h1:+01xPucS6YazBMYxbTSwNEsV9sgznFC0WW7x5dzxyPg= +go.elastic.co/apm/v2 v2.4.5/go.mod h1:+CiBUdrrAGnGCL9TNx7tQz3BrfYV23L8Ljvotoc87so= +go.elastic.co/fastjson v1.3.0 h1:hJO3OsYIhiqiT4Fgu0ZxAECnKASbwgiS+LMW5oCopKs= +go.elastic.co/fastjson v1.3.0/go.mod h1:K9vDh7O0ODsVKV2B5e2XYLY277QZaCbB3tS1SnARvko= go.opentelemetry.io/collector/pdata v1.0.0-rcv0013 h1:4sONXE9hAX+4Di8m0bQ/KaoH3Mi+OPt04cXkZ7A8W3k= go.opentelemetry.io/collector/pdata v1.0.0-rcv0013/go.mod h1:x09G/4KjEcDKNuWCjC5ZtnuDE0XEqiRwI+yrHSVjIy8= go.opentelemetry.io/collector/semconv v0.81.0 h1:lCYNNo3powDvFIaTPP2jDKIrBiV1T92NK4QgL/aHYXw= go.opentelemetry.io/collector/semconv v0.81.0/go.mod h1:TlYPtzvsXyHOgr5eATi43qEMqwSmIziivJB2uctKswo= -go.opentelemetry.io/otel v1.17.0 h1:MW+phZ6WZ5/uk2nd93ANk/6yJ+dVrvNWUjGhnnFU5jM= -go.opentelemetry.io/otel v1.17.0/go.mod h1:I2vmBGtFaODIVMBSTPVDlJSzBDNf93k60E6Ft0nyjo0= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.40.0 h1:MZbjiZeMmn5wFMORhozpouGKDxj9POHTuU5UA8msBQk= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.40.0/go.mod h1:C7tOYVCJmrDTCwxNny0MuUtnDIR3032vFHYke0F2ZrU= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.40.0 h1:q3FNPi8FLQVjLlmV+WWHQfH9ZCCtQIS0O/+dn1+4cJ4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.40.0/go.mod h1:rmx4n0uSIAkKBeQYkygcv9dENAlL2/tv3OSq68h1JAo= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.40.0 h1:SZaSbubADNhH2Gxm+1GaZ/cFsGiYefZoodMMX79AOd4= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.40.0/go.mod h1:N65FzQDfQH7NY7umgb0U+7ypGKVYKwwE24L6KXT4OA8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0 h1:U5GYackKpVKlPrd/5gKMlrTlP2dCESAAFU682VCpieY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.17.0/go.mod h1:aFsJfCEnLzEu9vRRAcUiB/cpRTbVsNdF3OHSPpdjxZQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0 h1:iGeIsSYwpYSvh5UGzWrJfTDJvPjrXtxl3GUppj6IXQU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.17.0/go.mod h1:1j3H3G1SBYpZFti6OI4P0uRQCW20MXkG5v4UWXppLLE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.17.0 h1:kvWMtSUNVylLVrOE4WLUmBtgziYoCIYUNSpTYtMzVJI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.17.0/go.mod h1:SExUrRYIXhDgEKG4tkiQovd2HTaELiHUsuK08s5Nqx4= -go.opentelemetry.io/otel/metric v1.17.0 h1:iG6LGVz5Gh+IuO0jmgvpTB6YVrCGngi8QGm+pMd8Pdc= -go.opentelemetry.io/otel/metric v1.17.0/go.mod h1:h4skoxdZI17AxwITdmdZjjYJQH5nzijUUjm+wtPph5o= -go.opentelemetry.io/otel/sdk v1.17.0 h1:FLN2X66Ke/k5Sg3V623Q7h7nt3cHXaW1FOvKKrW0IpE= -go.opentelemetry.io/otel/sdk v1.17.0/go.mod h1:U87sE0f5vQB7hwUoW98pW5Rz4ZDuCFBZFNUBlSgmDFQ= -go.opentelemetry.io/otel/sdk/metric v0.40.0 h1:qOM29YaGcxipWjL5FzpyZDpCYrDREvX0mVlmXdOjCHU= -go.opentelemetry.io/otel/sdk/metric v0.40.0/go.mod h1:dWxHtdzdJvg+ciJUKLTKwrMe5P6Dv3FyDbh8UkfgkVs= -go.opentelemetry.io/otel/trace v1.17.0 h1:/SWhSRHmDPOImIAetP1QAeMnZYiQXrTy4fMMYOdSKWQ= -go.opentelemetry.io/otel/trace v1.17.0/go.mod h1:I/4vKTgFclIsXRVucpH25X0mpFSczM7aHeaz0ZBLWjY= +go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= +go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 h1:ZtfnDL+tUrs1F0Pzfwbg2d59Gru9NCH3bgSHBM6LDwU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0/go.mod h1:hG4Fj/y8TR/tlEDREo8tWstl9fO9gcFkn4xrx0Io8xU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 h1:NmnYCiR0qNufkldjVvyQfZTHSdzeHoZ41zggMsdMcLM= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0/go.mod h1:UVAO61+umUsHLtYb8KXXRoHtxUkdOPkYidzW3gipRLQ= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 h1:wNMDy/LVGLj2h3p6zg4d0gypKfWKSWI14E1C4smOgl8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0/go.mod h1:YfbDdXAAkemWJK3H/DshvlrxqFB2rtW4rY6ky/3x/H0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0 h1:3d+S281UTjM+AbF31XSOYn1qXn3BgIdWl8HNEpx08Jk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.19.0/go.mod h1:0+KuTDyKL4gjKCF75pHOX4wuzYDUZYfAQdSu43o+Z2I= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= +go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= +go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= +go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/sdk/metric v1.19.0 h1:EJoTO5qysMsYCa+w4UghwFV/ptQgqSL/8Ni+hx+8i1k= +go.opentelemetry.io/otel/sdk/metric v1.19.0/go.mod h1:XjG0jQyFJrv2PbMvwND7LwCEhsJzCzV5210euduKcKY= +go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= +go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -242,9 +241,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL 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.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= 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= @@ -254,7 +252,6 @@ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -266,18 +263,17 @@ golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= 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.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 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-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= 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.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= @@ -300,11 +296,9 @@ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/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.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= 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= diff --git a/systemtest/huge_traces_test.go b/systemtest/huge_traces_test.go index 771784b208e..b618c6b1dff 100644 --- a/systemtest/huge_traces_test.go +++ b/systemtest/huge_traces_test.go @@ -76,13 +76,26 @@ func TestTransactionDroppedSpansStats(t *testing.T) { metricsResult := estest.ExpectMinDocs(t, systemtest.Elasticsearch, 6, "metrics-apm.service_destination*", espoll.TermQuery{Field: "metricset.name", Value: "service_destination"}, ) - approvaltest.ApproveEvents(t, t.Name()+"Metrics", metricsResult.Hits.Hits, "@timestamp") + approvaltest.ApproveFields(t, t.Name()+"Metrics", metricsResult.Hits.Hits, "@timestamp") + + // _doc_count is not returned in fields, it is only visible in _source and + // in the results of aggregations. + // + // TODO(axw) we should use a terms aggregation on `service.target.type`, + // and check that the returned doc_counts are expected. This would require + // more changes to apm-tools to specify aggregations in Expect(Min)Docs. + docCounts := make(map[string]float64) + for _, hit := range metricsResult.Hits.Hits { + serviceTargetType := hit.Fields["service.target.type"][0].(string) + docCounts[serviceTargetType] = hit.Source["_doc_count"].(float64) + } + assert.Equal(t, map[string]float64{"elasticsearch": 4, "redis": 50}, docCounts) txResult := estest.ExpectDocs(t, systemtest.Elasticsearch, "traces-apm-*", espoll.TermQuery{Field: "transaction.id", Value: tx.TraceContext().Span.String()}, ) - approvaltest.ApproveEvents(t, t.Name()+"Transaction", txResult.Hits.Hits, - "@timestamp", "timestamp", "trace.id", "transaction.id", "span.id", + approvaltest.ApproveFields(t, t.Name()+"Transaction", txResult.Hits.Hits, + "@timestamp", "timestamp.us", "trace.id", "transaction.id", "span.id", ) } @@ -150,5 +163,5 @@ func TestCompressedSpans(t *testing.T) { spanResults := estest.ExpectMinDocs(t, systemtest.Elasticsearch, 2, "traces-apm-*", espoll.TermQuery{Field: "span.type", Value: "db"}, ) - approvaltest.ApproveEvents(t, t.Name(), spanResults.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), spanResults.Hits.Hits) } diff --git a/systemtest/ingest_test.go b/systemtest/ingest_test.go index d1b3337fc4a..c1bd709dd6e 100644 --- a/systemtest/ingest_test.go +++ b/systemtest/ingest_test.go @@ -18,14 +18,11 @@ package systemtest_test import ( - "bytes" "context" "encoding/json" - "fmt" "io" "net/http" "net/url" - "os" "strings" "testing" @@ -36,7 +33,6 @@ import ( "github.com/elastic/apm-server/systemtest" "github.com/elastic/apm-server/systemtest/apmservertest" "github.com/elastic/apm-server/systemtest/estest" - "github.com/elastic/apm-tools/pkg/approvaltest" "github.com/elastic/apm-tools/pkg/espoll" "github.com/elastic/go-elasticsearch/v8/esapi" ) @@ -181,39 +177,6 @@ func TestIngestPipelineEventDuration(t *testing.T) { } } -func TestIngestPipelineDataStreamMigration(t *testing.T) { - systemtest.CleanupElasticsearch(t) - - var testdata struct { - Hits struct { - Hits []struct { - Source json.RawMessage `json:"_source"` - } `json:"hits` - } `json:"hits` - } - - data, err := os.ReadFile("../testdata/ingest/7_17_docs.json") - require.NoError(t, err) - err = json.Unmarshal(data, &testdata) - require.NoError(t, err) - - // Index documents using the data stream migration ingest pipeline. - pipeline := fmt.Sprintf("traces-apm-%s-apm_data_stream_migration", systemtest.IntegrationPackage.Version) - for _, doc := range testdata.Hits.Hits { - _, err := systemtest.Elasticsearch.Do(context.Background(), esapi.IndexRequest{ - Index: "traces-apm-foo", // should not be created; ingest pipeline should take over - Pipeline: pipeline, - Body: bytes.NewReader(doc.Source), - }, nil) - require.NoError(t, err) - } - - result := estest.ExpectMinDocs(t, systemtest.Elasticsearch, - len(testdata.Hits.Hits), "traces-apm*,logs-apm*,metrics-apm*", nil, - ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) -} - func TestIngestPipelineEventSuccessCount(t *testing.T) { type test struct { source string diff --git a/systemtest/intake_log_test.go b/systemtest/intake_log_test.go index 53e29ad8c3e..a597f1ef03b 100644 --- a/systemtest/intake_log_test.go +++ b/systemtest/intake_log_test.go @@ -91,7 +91,7 @@ func TestIntakeLog(t *testing.T) { fmt.Sprintf("logs-apm.app.%s-*", test.ServiceName), espoll.MatchPhraseQuery{Field: "message", Value: test.Message}, ) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits, test.DynamicFields...) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits, test.DynamicFields...) }) } } diff --git a/systemtest/intake_test.go b/systemtest/intake_test.go index 2d068227ff2..566af778708 100644 --- a/systemtest/intake_test.go +++ b/systemtest/intake_test.go @@ -24,6 +24,7 @@ import ( "github.com/elastic/apm-server/systemtest/apmservertest" "github.com/elastic/apm-server/systemtest/estest" "github.com/elastic/apm-tools/pkg/approvaltest" + "github.com/elastic/apm-tools/pkg/espoll" ) func TestIntake(t *testing.T) { @@ -51,10 +52,15 @@ func TestIntake(t *testing.T) { srv := apmservertest.NewServerTB(t) systemtest.CleanupElasticsearch(t) response := systemtest.SendBackendEventsPayload(t, srv.URL, "../testdata/intake-v2/"+tc.filename) - // Since we are just waiting for traces/metrics/logs and that they should go through almost immediately, - // there shouldn't be any aggregated metrics. result := estest.ExpectMinDocs(t, systemtest.Elasticsearch, - response.Accepted, "traces-apm*,metrics-apm*,logs-apm*", nil, + response.Accepted, "traces-apm*,metrics-apm*,logs-apm*", + // Exclude aggregated transaction/service_destination metrics. + // Aggregations are flushed on 1m/10m/60m boundaries, so even + // if the test is fast there's a possibility of aggregated + // metrics being returned. + espoll.BoolQuery{ + MustNot: []any{espoll.ExistsQuery{Field: "metricset.interval"}}, + }, ) tc.dynamicFields = append(tc.dynamicFields, "client.geo.city_name", "client.geo.location.lat", "client.geo.location.lon", "client.geo.region_iso_code", "client.geo.region_name") approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits, tc.dynamicFields...) diff --git a/systemtest/jaeger_test.go b/systemtest/jaeger_test.go index 94d4d6616a9..059fd3ccdfe 100644 --- a/systemtest/jaeger_test.go +++ b/systemtest/jaeger_test.go @@ -52,7 +52,7 @@ func TestJaeger(t *testing.T) { t.Run(name, func(t *testing.T) { systemtest.CleanupElasticsearch(t) hits := sendJaegerBatch(t, srv, "../testdata/jaeger/"+name+".json", grpc.WithInsecure()) - approvaltest.ApproveEvents(t, t.Name(), hits) + approvaltest.ApproveFields(t, t.Name(), hits) }) } diff --git a/systemtest/metrics_test.go b/systemtest/metrics_test.go index d67acb685c9..67b466e747b 100644 --- a/systemtest/metrics_test.go +++ b/systemtest/metrics_test.go @@ -68,7 +68,7 @@ func TestApprovedMetrics(t *testing.T) { espoll.TermQuery{Field: "metricset.name", Value: "transaction"}, }, }) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) // Check dynamic mapping of histograms. mappings := getFieldMappings(t, indices, []string{"latency_distribution"}) diff --git a/systemtest/otlp_test.go b/systemtest/otlp_test.go index ab53dc6ee26..eb486762f4c 100644 --- a/systemtest/otlp_test.go +++ b/systemtest/otlp_test.go @@ -114,7 +114,7 @@ func TestOTLPGRPCTraces(t *testing.T) { indices := "traces-apm*,logs-apm*" result := estest.ExpectMinDocs(t, systemtest.Elasticsearch, 3, indices, nil) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits, "error.id") + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits, "error.id") } func TestOTLPGRPCTraceSpanLinks(t *testing.T) { @@ -194,7 +194,14 @@ func TestOTLPGRPCMetrics(t *testing.T) { int64Histogram.Record(context.Background(), 123) int64Histogram.Record(context.Background(), 1024) int64Histogram.Record(context.Background(), 20000) - }) + }, sdkmetric.NewView( + sdkmetric.Instrument{Name: "*histogram"}, + sdkmetric.Stream{ + Aggregation: sdkmetric.AggregationExplicitBucketHistogram{ + Boundaries: []float64{0, 1, 100, 1000, 10000}, + }, + }, + )) require.NoError(t, err) // opentelemetry-go does not support sending Summary metrics, @@ -212,19 +219,52 @@ func TestOTLPGRPCMetrics(t *testing.T) { metricsClient.Export(context.Background(), pmetricotlp.NewExportRequestFromMetrics(metrics)) result := estest.ExpectDocs(t, systemtest.Elasticsearch, "metrics-apm.app.*", espoll.ExistsQuery{Field: "counter"}) - approvaltest.ApproveEvents(t, t.Name()+"_counter", result.Hits.Hits, "@timestamp") + approvaltest.ApproveFields(t, t.Name()+"_counter", result.Hits.Hits, "@timestamp") result = estest.ExpectDocs(t, systemtest.Elasticsearch, "metrics-apm.app.*", espoll.ExistsQuery{Field: "summary"}) - approvaltest.ApproveEvents(t, t.Name()+"_summary", result.Hits.Hits, "@timestamp") + approvaltest.ApproveFields(t, t.Name()+"_summary", result.Hits.Hits, "@timestamp") result = estest.ExpectDocs(t, systemtest.Elasticsearch, "metrics-apm.app.*", espoll.ExistsQuery{Field: "histogram"}) - approvaltest.ApproveEvents(t, t.Name()+"_histogram", result.Hits.Hits, "@timestamp") + approvaltest.ApproveFields(t, t.Name()+"_histogram", result.Hits.Hits, "@timestamp") // Make sure we report monitoring for the metrics consumer. Metric values are unit tested. doc := getBeatsMonitoringStats(t, srv, nil) assert.True(t, gjson.GetBytes(doc.RawSource, "beats_stats.metrics.apm-server.otlp.grpc.metrics.consumer").Exists()) } +func TestOTLPGRPCMetrics_partialSuccess(t *testing.T) { + systemtest.CleanupElasticsearch(t) + srv := apmservertest.NewUnstartedServerTB(t) + srv.Config.Monitoring = newFastMonitoringConfig() + err := srv.Start() + require.NoError(t, err) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + err = sendOTLPMetrics(t, ctx, srv, func(meter metric.Meter) { + float64Counter, err := meter.Float64Counter("counter") + require.NoError(t, err) + float64Counter.Add(context.Background(), 1) + + int64Histogram, err := meter.Int64Histogram("histogram") + require.NoError(t, err) + int64Histogram.Record(context.Background(), 1) + int64Histogram.Record(context.Background(), 123) + int64Histogram.Record(context.Background(), 1024) + int64Histogram.Record(context.Background(), 20000) + }, sdkmetric.NewView( + sdkmetric.Instrument{Name: "*histogram"}, + sdkmetric.Stream{ + Aggregation: sdkmetric.AggregationBase2ExponentialHistogram{ + MaxSize: 5, + MaxScale: -10, + }, + }, + )) + + require.ErrorContains(t, err, "OTLP partial success:") +} + func TestOTLPGRPCLogs(t *testing.T) { systemtest.CleanupElasticsearch(t) srv := apmservertest.NewServerTB(t) @@ -242,7 +282,7 @@ func TestOTLPGRPCLogs(t *testing.T) { require.NoError(t, err) result := estest.ExpectDocs(t, systemtest.Elasticsearch, "logs-apm*", nil) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits) + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits) } func TestOTLPGRPCAuth(t *testing.T) { @@ -595,22 +635,14 @@ func sendOTLPMetrics( ctx context.Context, srv *apmservertest.Server, recordMetrics func(metric.Meter), + mv sdkmetric.View, ) error { exporter := newOTLPMetricExporter(t, srv) meterProvider := sdkmetric.NewMeterProvider( sdkmetric.WithReader( sdkmetric.NewPeriodicReader(exporter, sdkmetric.WithInterval(time.Minute)), ), - sdkmetric.WithView( - sdkmetric.NewView( - sdkmetric.Instrument{Name: "*histogram"}, - sdkmetric.Stream{ - Aggregation: sdkmetric.AggregationExplicitBucketHistogram{ - Boundaries: []float64{0, 1, 100, 1000, 10000}, - }, - }, - ), - ), + sdkmetric.WithView(mv), ) meter := meterProvider.Meter("test-meter") diff --git a/systemtest/rum_test.go b/systemtest/rum_test.go index 3e0a4633c49..d48659dc205 100644 --- a/systemtest/rum_test.go +++ b/systemtest/rum_test.go @@ -70,7 +70,7 @@ func TestRUMXForwardedFor(t *testing.T) { Field: "processor.event", Values: []interface{}{"transaction", "metric"}, }) - approvaltest.ApproveEvents( + approvaltest.ApproveFields( t, t.Name(), result.Hits.Hits, // RUM timestamps are set by the server based on the time the payload is received. "@timestamp", "timestamp.us", @@ -110,7 +110,7 @@ func TestRUMAllowServiceNames(t *testing.T) { respBody, _ := io.ReadAll(resp.Body) assert.Equal(t, http.StatusForbidden, resp.StatusCode, string(respBody)) - assert.Equal(t, `{"accepted":0,"errors":[{"message":"unauthorized: anonymous access not permitted for service \"disallowed\""}]}`+"\n", string(respBody)) + assert.Equal(t, `{"accepted":0,"errors":[{"message":"cannot handle stream: cannot process batch: unauthorized: anonymous access not permitted for service \"disallowed\""}]}`+"\n", string(respBody)) } func TestRUMRateLimit(t *testing.T) { @@ -218,8 +218,8 @@ func TestRUMRoutingIntegration(t *testing.T) { defer resp.Body.Close() } result := estest.ExpectSourcemapError(t, systemtest.Elasticsearch, "traces-apm.rum*", retry, nil, false) - approvaltest.ApproveEvents( + approvaltest.ApproveFields( t, t.Name(), result.Hits.Hits, "@timestamp", "timestamp.us", - "source.port", "source.ip", "client", + "source.port", "source.ip", "client.ip", ) } diff --git a/systemtest/sampling_test.go b/systemtest/sampling_test.go index 6ac2521d8a3..f7cd9d37dde 100644 --- a/systemtest/sampling_test.go +++ b/systemtest/sampling_test.go @@ -74,7 +74,7 @@ func TestDropUnsampled(t *testing.T) { Value: "TestDropUnsampled", }) assert.Len(t, result.Hits.Hits, 2) - approvaltest.ApproveEvents(t, t.Name(), result.Hits.Hits, + approvaltest.ApproveFields(t, t.Name(), result.Hits.Hits, // RUM timestamps are set by the server based on the time the payload is received. "@timestamp", "timestamp.us", // RUM events have the source port recorded, and in the tests it will be dynamic diff --git a/systemtest/sourcemap_test.go b/systemtest/sourcemap_test.go index 5de283be3bd..27194b45e32 100644 --- a/systemtest/sourcemap_test.go +++ b/systemtest/sourcemap_test.go @@ -44,7 +44,7 @@ func TestRUMErrorSourcemapping(t *testing.T) { systemtest.SendRUMEventsPayload(t, serverURL, "../testdata/intake-v2/errors_rum.ndjson") } result := estest.ExpectSourcemapError(t, systemtest.Elasticsearch, "logs-apm.error-*", retry, nil, true) - approvaltest.ApproveEvents( + approvaltest.ApproveFields( t, t.Name(), result.Hits.Hits, // RUM timestamps are set by the server based on the time the payload is received. "@timestamp", "timestamp.us", @@ -96,7 +96,7 @@ func TestRUMSpanSourcemapping(t *testing.T) { Value: "span", }, true) - approvaltest.ApproveEvents( + approvaltest.ApproveFields( t, t.Name(), result.Hits.Hits, // RUM timestamps are set by the server based on the time the payload is received. "@timestamp", "timestamp.us", @@ -129,7 +129,7 @@ func TestNoMatchingSourcemap(t *testing.T) { Value: "span", }, false) - approvaltest.ApproveEvents( + approvaltest.ApproveFields( t, t.Name(), result.Hits.Hits, // RUM timestamps are set by the server based on the time the payload is received. "@timestamp", "timestamp.us", diff --git a/testing/infra/k8s/base/kustomization.yaml b/testing/infra/k8s/base/kustomization.yaml index 1af63f9ef56..86967ce0fab 100644 --- a/testing/infra/k8s/base/kustomization.yaml +++ b/testing/infra/k8s/base/kustomization.yaml @@ -1,6 +1,6 @@ resources: - - https://download.elastic.co/downloads/eck/2.4.0/crds.yaml - - https://download.elastic.co/downloads/eck/2.4.0/operator.yaml + - https://download.elastic.co/downloads/eck/2.9.0/crds.yaml + - https://download.elastic.co/downloads/eck/2.9.0/operator.yaml - stack/elasticsearch.yaml - stack/kibana.yaml - stack/apm-server.yaml diff --git a/testing/infra/k8s/base/stack/apm-server.yaml b/testing/infra/k8s/base/stack/apm-server.yaml index 4ce90f1ce56..bf8a03c6fcc 100644 --- a/testing/infra/k8s/base/stack/apm-server.yaml +++ b/testing/infra/k8s/base/stack/apm-server.yaml @@ -17,6 +17,13 @@ spec: enabled: true logging: level: debug + monitoring: + enabled: true + elasticsearch: + username: admin + password: changeme + hosts: [http://elasticsearch-es-http.default.svc:9200] + protocol: "http" output: elasticsearch: username: admin diff --git a/testing/infra/k8s/base/stack/elasticsearch.yaml b/testing/infra/k8s/base/stack/elasticsearch.yaml index 39002e821a0..319015cfbc7 100644 --- a/testing/infra/k8s/base/stack/elasticsearch.yaml +++ b/testing/infra/k8s/base/stack/elasticsearch.yaml @@ -7,6 +7,15 @@ spec: auth: fileRealm: - secretName: elasticsearch-admin + monitoring: + metrics: + elasticsearchRefs: + - name: elasticsearch + namespace: default + logs: + elasticsearchRefs: + - name: elasticsearch + namespace: default nodeSets: - name: default count: 1 diff --git a/testing/infra/k8s/base/stack/kibana.yaml b/testing/infra/k8s/base/stack/kibana.yaml index e4a5de4e899..177f277acd2 100644 --- a/testing/infra/k8s/base/stack/kibana.yaml +++ b/testing/infra/k8s/base/stack/kibana.yaml @@ -12,6 +12,15 @@ spec: tls: selfSignedCertificate: disabled: true + monitoring: + metrics: + elasticsearchRefs: + - name: elasticsearch + namespace: default + logs: + elasticsearchRefs: + - name: elasticsearch + namespace: default podTemplate: spec: containers: diff --git a/testing/smoke/lib.sh b/testing/smoke/lib.sh index 4da7470267f..e1c896d4f9e 100644 --- a/testing/smoke/lib.sh +++ b/testing/smoke/lib.sh @@ -17,7 +17,8 @@ get_versions() { local RC=0 RES=$(curl_fail -H "Authorization: ApiKey ${EC_API_KEY}" ${EC_VERSION_ENDPOINT}) || RC=$? if [ $RC -ne 0 ]; then echo "${RES}"; fi - VERSIONS=$(echo "${RES}" | jq -r -c '[.stacks[].version | select(. | contains("-") | not)] | sort') + # NOTE: jq with semver requires some numeric transformation with sort_by + VERSIONS=$(echo "${RES}" | jq -r -c '[.stacks[].version | select(. | contains("-") | not)] | sort_by(.| split(".") | map(tonumber))') } get_latest_patch() { @@ -38,7 +39,9 @@ get_latest_snapshot() { local RC=0 RES=$(curl_fail -H "Authorization: ApiKey ${EC_API_KEY}" ${EC_VERSION_ENDPOINT}) || RC=$? if [ $RC -ne 0 ]; then echo "${RES}"; fi - VERSIONS=$(echo "${RES}" | jq -r -c '[.stacks[].version | select(. | contains("-"))] | sort') + # NOTE: semver with SNAPSHOT is not working when using the sort_by function in jq, + # that's the reason for transforming the SNAPSHOT in a semver 4 digits. + VERSIONS=$(echo "${RES}" | jq -r -c '[.stacks[].version | select(. | contains("-SNAPSHOT"))] | sort' | sed 's#-SNAPSHOT#.0#g' | jq -r -c ' sort_by(.| split(".") | map(tonumber))' | sed 's#.0"#-SNAPSHOT"#g' | jq -r -c .) } terraform_init() { @@ -265,12 +268,12 @@ legacy_assert_ilm() { local ILM_HOT_PHASE_MAX_SIZE=$(echo ${ILM_HOT_PHASE} | jq -r '.actions.rollover.max_size') local ILM_HOT_PHASE_MAX_AGE=$(echo ${ILM_HOT_PHASE} | jq -r '.actions.rollover.max_age') if [[ "${ILM_HOT_PHASE_MAX_SIZE}" != "${EXPECTED_MAX_SIZE}" ]]; then - echo "-> Invalid ILM policy ${LEGACY_ILM_POLICY}; expected hot phase max_size ${EXPECTED_MAX_SIZE} got ${ILM_HOT_PHASE_MAX_SIZE}" + echo "-> Invalid ILM policy \"${LEGACY_ILM_POLICY}\"; expected hot phase \"max_age\" ${EXPECTED_MAX_SIZE} got ${ILM_HOT_PHASE_MAX_SIZE}" echo "${ILM_HOT_PHASE}" SUCCESS=false fi if [[ "${ILM_HOT_PHASE_MAX_AGE}" != "${EXPECTED_MAX_AGE}" ]]; then - echo "-> Invalid ILM policy ${LEGACY_ILM_POLICY}; expected hot phase max_size ${EXPECTED_MAX_AGE} got ${ILM_HOT_PHASE_MAX_AGE}" + echo "-> Invalid ILM policy \"${LEGACY_ILM_POLICY}\"; expected hot phase \"max_age\" ${EXPECTED_MAX_AGE} got ${ILM_HOT_PHASE_MAX_AGE}" echo "${ILM_HOT_PHASE}" SUCCESS=false fi diff --git a/tools/go.mod b/tools/go.mod index 88db1a27949..35485e06323 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -6,7 +6,7 @@ toolchain go1.21.3 require ( github.com/elastic/apm-tools v0.0.0-20230828065051-3f799314cc8b - github.com/elastic/elastic-package v0.85.0 + github.com/elastic/elastic-package v0.88.0 github.com/elastic/go-licenser v0.4.1 github.com/elastic/gobench v0.0.0-20220608141032-f30bc57e329c github.com/goreleaser/nfpm/v2 v2.29.0 @@ -35,7 +35,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 // indirect github.com/AlekSi/pointer v1.2.0 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect @@ -46,19 +46,20 @@ require ( github.com/PaesslerAG/gval v1.2.1 // indirect github.com/PaesslerAG/jsonpath v0.1.1 // indirect github.com/Pallinder/go-randomdata v1.2.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f // indirect - github.com/ProtonMail/gopenpgp/v2 v2.7.2 // indirect - github.com/acomagu/bufpipe v1.0.4 // indirect + github.com/ProtonMail/gopenpgp/v2 v2.7.3 // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/akavel/rsrc v0.10.2 // indirect github.com/andybalholm/brotli v1.0.4 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect github.com/aymerick/raymond v2.0.2+incompatible // indirect + github.com/bitfield/gotestdox v0.2.1 // indirect github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 // indirect github.com/cavaliergopher/cpio v1.0.1 // indirect + github.com/cbroglie/mustache v1.4.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect @@ -75,35 +76,36 @@ require ( github.com/elastic/go-resource v0.1.1 // indirect github.com/elastic/go-ucfg v0.8.6 // indirect github.com/elastic/gojsonschema v1.2.1 // indirect - github.com/elastic/package-spec/v2 v2.10.0 // indirect + github.com/elastic/kbncontent v0.1.1 // indirect + github.com/elastic/package-spec/v2 v2.13.0 // indirect github.com/emicklei/go-restful/v3 v3.10.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect - github.com/evanphx/json-patch/v5 v5.6.0 // indirect + github.com/evanphx/json-patch/v5 v5.7.0 // indirect github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect github.com/fatih/color v1.15.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.4.1 // indirect - github.com/go-git/go-git/v5 v5.8.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-git/v5 v5.11.0 // indirect + github.com/go-logr/logr v1.2.4 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-openapi/errors v0.20.3 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.1 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect github.com/go-openapi/strfmt v0.21.3 // indirect github.com/go-openapi/swag v0.22.3 // indirect github.com/gobuffalo/here v0.6.7 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.4.2 // indirect + github.com/golang-jwt/jwt/v4 v4.5.0 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/gnostic v0.6.9 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-github/v32 v32.1.0 // indirect github.com/google/go-github/v39 v39.2.0 // indirect github.com/google/go-github/v45 v45.2.0 // indirect @@ -111,7 +113,7 @@ require ( github.com/google/gofuzz v1.2.0 // indirect github.com/google/licenseclassifier v0.0.0-20220907210658-23923d047d0e // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.1 // indirect github.com/goreleaser/chglog v0.4.2 // indirect @@ -152,7 +154,7 @@ require ( github.com/mailru/easyjson v0.7.7 // indirect github.com/markbates/pkger v0.17.1 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mattn/go-shellwords v1.0.12 // indirect github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect @@ -164,7 +166,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/moby/spdystream v0.2.0 // indirect - github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect + github.com/moby/term v0.5.0 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect @@ -190,25 +192,25 @@ require ( github.com/rivo/uniseg v0.4.3 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.2.0 // indirect - github.com/shirou/gopsutil/v3 v3.23.7 // indirect + github.com/shirou/gopsutil/v3 v3.23.8 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/shopspring/decimal v1.3.1 // indirect - github.com/skeema/knownhosts v1.2.0 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.15.0 // indirect - github.com/stretchr/testify v1.8.4 // indirect + github.com/stretchr/objx v0.5.1 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/terraform-docs/terraform-config-inspect v0.0.0-20210728164355-9c1f178932fa // indirect github.com/tidwall/gjson v1.14.4 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tidwall/sjson v1.2.5 // indirect - github.com/tklauser/go-sysconf v0.3.11 // indirect - github.com/tklauser/numcpus v0.6.0 // indirect + github.com/tklauser/go-sysconf v0.3.12 // indirect + github.com/tklauser/numcpus v0.6.1 // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/vvakame/sdlog v0.0.0-20200409072131-7c0d359efddc // indirect github.com/xanzy/go-gitlab v0.73.1 // indirect @@ -216,52 +218,54 @@ require ( github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect - github.com/xlab/treeprint v1.1.0 // indirect + github.com/xlab/treeprint v1.2.0 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect github.com/zclconf/go-cty v1.11.0 // indirect gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect go.mongodb.org/mongo-driver v1.11.1 // indirect go.opencensus.io v0.24.0 // indirect - go.starlark.net v0.0.0-20221205180719-3fd0dac74452 // indirect + go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect golang.org/x/build v0.0.0-20220908145327-656fd833c864 // indirect - golang.org/x/crypto v0.12.0 // indirect + golang.org/x/crypto v0.17.0 // indirect golang.org/x/exp/typeparams v0.0.0-20221208152030-732eee02a75a // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.14.0 // indirect - golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/oauth2 v0.8.0 // indirect golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/term v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.12.1-0.20230825192346-2191a27a6dc5 // indirect golang.org/x/tools/go/vcs v0.1.0-deprecated // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.114.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.56.2 // indirect + google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 // indirect + google.golang.org/grpc v1.56.3 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - helm.sh/helm/v3 v3.12.2 // indirect - k8s.io/api v0.27.4 // indirect - k8s.io/apiextensions-apiserver v0.27.2 // indirect - k8s.io/apimachinery v0.27.4 // indirect - k8s.io/cli-runtime v0.27.4 // indirect - k8s.io/client-go v0.27.4 // indirect - k8s.io/component-base v0.27.2 // indirect - k8s.io/klog/v2 v2.90.1 // indirect - k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect - k8s.io/kubectl v0.27.2 // indirect - k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5 // indirect + helm.sh/helm/v3 v3.13.0 // indirect + k8s.io/api v0.28.2 // indirect + k8s.io/apiextensions-apiserver v0.28.2 // indirect + k8s.io/apimachinery v0.28.2 // indirect + k8s.io/cli-runtime v0.28.2 // indirect + k8s.io/client-go v0.28.2 // indirect + k8s.io/component-base v0.28.2 // indirect + k8s.io/klog/v2 v2.100.1 // indirect + k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect + k8s.io/kubectl v0.28.2 // indirect + k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect mvdan.cc/xurls/v2 v2.4.0 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/kustomize/api v0.13.2 // indirect - sigs.k8s.io/kustomize/kyaml v0.14.1 // indirect + sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 // indirect + sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/tools/go.sum b/tools/go.sum index 6f93424f609..805ce78c43d 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -59,8 +59,8 @@ github.com/AlekSi/pointer v1.2.0/go.mod h1:gZGfd3dpW4vEc/UlyfKKi1roIqcCgwOIvb0tS 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/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= @@ -84,7 +84,6 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2 h1:+vx7roKuyA63nhn5WAunQHLTznkw5W8b1Xc0dNjp83s= github.com/Netflix/go-expect v0.0.0-20220104043353-73e0943537d2/go.mod h1:HBCaDeC1lPdgDeDbhX8XFpy1jqjK0IBG8W5K+xYqA0w= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PaesslerAG/gval v1.0.0/go.mod h1:y/nm5yEyTeX6av0OfKJNp9rBNj2XrGhAf5+v24IBN1I= github.com/PaesslerAG/gval v1.2.1 h1:Ggwtej1xCyt1994VuDCSjycybIDo3duDCDghK/xc/A0= github.com/PaesslerAG/gval v1.2.1/go.mod h1:XRFLwvmkTEdYziLdaCeCa5ImcGVrfQbeNUbVR+C6xac= @@ -93,14 +92,13 @@ github.com/PaesslerAG/jsonpath v0.1.1 h1:c1/AToHQMVsduPAa4Vh6xp2U0evy4t8SWp8imEs github.com/PaesslerAG/jsonpath v0.1.1/go.mod h1:lVboNxFGal/VwW6d9JzIy56bUsYAP6tH/x80vjnCseY= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= -github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95 h1:KLq8BE0KwCL+mmXnjLWEAOYO+2l2AE4YMmqG1ZpZHBs= github.com/ProtonMail/go-crypto v0.0.0-20230717121422-5aa5874ade95/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f h1:tCbYj7/299ekTTXpdwKYF8eBlsYsDVoggDAuAjoK66k= github.com/ProtonMail/go-mime v0.0.0-20230322103455-7d82a3887f2f/go.mod h1:gcr0kNtGBqin9zDW9GOHcVntrwnjrK+qdJ06mWYBybw= -github.com/ProtonMail/gopenpgp/v2 v2.7.2 h1:mIwxSUPezxNYq0RA5106VPWyKC+Ly3FvBUnBJh/7GWw= -github.com/ProtonMail/gopenpgp/v2 v2.7.2/go.mod h1:IhkNEDaxec6NyzSI0PlxapinnwPVIESk8/76da3Ct3g= -github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= -github.com/acomagu/bufpipe v1.0.4/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= +github.com/ProtonMail/gopenpgp/v2 v2.7.3 h1:AJu1OI/1UWVYZl6QcCLKGu9OTngS2r52618uGlje84I= +github.com/ProtonMail/gopenpgp/v2 v2.7.3/go.mod h1:IhkNEDaxec6NyzSI0PlxapinnwPVIESk8/76da3Ct3g= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= @@ -128,6 +126,8 @@ github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:W github.com/aymerick/raymond v2.0.2+incompatible h1:VEp3GpgdAnv9B2GFyTvqgcKvY+mfKMjPOA3SbKLtnU0= github.com/aymerick/raymond v2.0.2+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitfield/gotestdox v0.2.1 h1:Zj8IMLAO5/oiAKoMmtN96eyFiPZraJRTH2p0zDgtxc0= +github.com/bitfield/gotestdox v0.2.1/go.mod h1:D+gwtS0urjBrzguAkTM2wodsTQYFHdpx8eqRJ3N+9pY= github.com/bketelsen/crypt v0.0.4/go.mod h1:aI6NrJ0pMGgvZKL1iVgXLnfIFJtfV+bKCoqOes/6LfM= github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4= github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI= @@ -135,7 +135,6 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bradleyfalzon/ghinstallation/v2 v2.1.0 h1:5+NghM1Zred9Z078QEZtm28G/kfDfZN/92gkDlLwGVA= github.com/bradleyfalzon/ghinstallation/v2 v2.1.0/go.mod h1:Xg3xPRN5Mcq6GDqeUVhFbjEWMb4JHCyWEeeBGEYQoTU= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/caarlos0/go-rpmutils v0.2.1-0.20211112020245-2cd62ff89b11 h1:IRrDwVlWQr6kS1U8/EtyA1+EHcc4yl8pndcqXWrEamg= github.com/caarlos0/go-rpmutils v0.2.1-0.20211112020245-2cd62ff89b11/go.mod h1:je2KZ+LxaCNvCoKg32jtOIULcFogJKcL1ZWUaIBjKj0= @@ -143,8 +142,9 @@ github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8 github.com/caarlos0/testfs v0.4.4/go.mod h1:bRN55zgG4XCUVVHZCeU+/Tz1Q6AxEJOEJTliBy+1DMk= github.com/cavaliergopher/cpio v1.0.1 h1:KQFSeKmZhv0cr+kawA3a0xTQCU4QxXF1vhU7P7av2KM= github.com/cavaliergopher/cpio v1.0.1/go.mod h1:pBdaqQjnvXxdS/6CvNDwIANIFSP0xRKI16PX4xejRQc= +github.com/cbroglie/mustache v1.4.0 h1:Azg0dVhxTml5me+7PsZ7WPrQq1Gkf3WApcHMjMprYoU= +github.com/cbroglie/mustache v1.4.0/go.mod h1:SS1FTIghy0sjse4DUVGV1k/40B1qE1XkD9DtDsHo9iM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -156,7 +156,6 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -176,7 +175,6 @@ 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/dnephin/pflag v1.0.7 h1:oxONGlWxhmUct0YzKTgrpQv9AUA1wtPBn7zuSjJqptk= github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5 h1:iFaUwBSo5Svw6L7HYpRu/0lE3e0BaElwnNO1qkNQxBY= github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s= github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY= @@ -186,8 +184,8 @@ github.com/elastic/apm-tools v0.0.0-20230828065051-3f799314cc8b h1:47VFNMVQQt7WT github.com/elastic/apm-tools v0.0.0-20230828065051-3f799314cc8b/go.mod h1:IUMdGldUOSqfeXSj+zIjYaBX6WFM7M95WU2VdmZ5ZyE= github.com/elastic/elastic-integration-corpus-generator-tool v0.5.0 h1:Me2T3/O4nASmdjmfaKYaiJaGq8zVhasjfZi3il5p/gs= github.com/elastic/elastic-integration-corpus-generator-tool v0.5.0/go.mod h1:uf9N86y+UACGybdEhZLpwZ93XHWVhsYZAA4c2T2v6YM= -github.com/elastic/elastic-package v0.85.0 h1:CEkscnwrfbKOh9iTFkd6H0db4OU4+Ex+e7aKXStlDT0= -github.com/elastic/elastic-package v0.85.0/go.mod h1:6qeSI5sdJVNAftPZRYlrbFTVbfcTCTeStlqAL3BrMDA= +github.com/elastic/elastic-package v0.88.0 h1:mZVrf8Rzjslj05EAWk+k9TgmTuZCM0tBLIjsqRi8xVk= +github.com/elastic/elastic-package v0.88.0/go.mod h1:h/mpD65Vt8suyoVAHhXvTqrsbo9J24q2StMXh7QtULc= github.com/elastic/elastic-transport-go/v8 v8.3.0 h1:DJGxovyQLXGr62e9nDMPSxRyWION0Bh6d9eCFBriiHo= github.com/elastic/elastic-transport-go/v8 v8.3.0/go.mod h1:87Tcz8IVNe6rVSLdBux1o/PEItLtyabHU3naC7IoqKI= github.com/elastic/go-elasticsearch/v7 v7.17.10 h1:TCQ8i4PmIJuBunvBS6bwT2ybzVFxxUhhltAs3Gyu1yo= @@ -218,19 +216,17 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCvpL6mnFh5mB2/l16U= github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= +github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4= github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/flowstack/go-jsonschema v0.1.1/go.mod h1:yL7fNggx1o8rm9RlgXv7hTBWxdBM0rVwpMwimd3F3N0= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/frankban/quicktest v1.14.3/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= @@ -254,8 +250,8 @@ github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9 github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= @@ -263,8 +259,8 @@ github.com/go-openapi/errors v0.20.3 h1:rz6kiC84sqNQoqrtulzaL/VERgkoCyB6WdEkc2uj github.com/go-openapi/errors v0.20.3/go.mod h1:Z3FlZ4I8jEGxjUK+bugx3on2mIAk4txuAOhlsB1FSgk= github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/strfmt v0.21.3 h1:xwhj5X6CjXEZZHMWy1zKJxvW9AfHC9pkyUjLvHtKG7o= github.com/go-openapi/strfmt v0.21.3/go.mod h1:k+RzNO0Da+k3FrrynSNN8F7n/peCmQQqbbXjtDfvmGg= github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= @@ -283,8 +279,8 @@ github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5x github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= -github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= +github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -327,8 +323,8 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/gnostic v0.6.9 h1:ZK/5VhkoX835RikCHpSUJV9a+S3e1zLh59YnyWeBW+0= -github.com/google/gnostic v0.6.9/go.mod h1:Nm8234We1lq6iB9OmlgNv3nH91XLLVZHCDayfA3xq+E= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -342,8 +338,9 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v32 v32.1.0 h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II= github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= github.com/google/go-github/v39 v39.2.0 h1:rNNM311XtPOz5rDdsJXAp2o8F67X9FnROXTvto3aSnQ= @@ -384,8 +381,8 @@ github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3 github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -481,7 +478,6 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jedib0t/go-pretty v4.3.0+incompatible h1:CGs8AVhEKg/n9YbUenWmNStRW2PHJzaeDodcfvRAbIo= github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4= @@ -517,7 +513,6 @@ github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -544,7 +539,6 @@ github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJ github.com/markbates/pkger v0.17.0/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= github.com/markbates/pkger v0.17.1 h1:/MKEtWqtc0mZvu9OinB9UzVN9iYCwLWuyUv4Bw+PCno= github.com/markbates/pkger v0.17.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -560,8 +554,9 @@ github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcME github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -601,8 +596,8 @@ github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zx github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= -github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -690,8 +685,8 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= -github.com/shirou/gopsutil/v3 v3.23.7 h1:C+fHO8hfIppoJ1WdsVm1RoI0RwXoNdfTK7yWXV0wVj4= -github.com/shirou/gopsutil/v3 v3.23.7/go.mod h1:c4gnmoRC0hQuaLqvxnx1//VXQ0Ms/X9UnJF8pddY5z4= +github.com/shirou/gopsutil/v3 v3.23.8 h1:xnATPiybo6GgdRoC4YoGnxXZFRc3dqQTGi73oLvvBrE= +github.com/shirou/gopsutil/v3 v3.23.8/go.mod h1:7hmCaBn+2ZwaZOr6jmPBZDfawwMGuo1id3C6aM8EDqQ= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= github.com/shoenig/test v0.6.4 h1:kVTaSd7WLz5WZ2IaoM0RSzRsUD+m8wRR+5qvntpn4LU= @@ -701,8 +696,8 @@ github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5g github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/skeema/knownhosts v1.2.0 h1:h9r9cf0+u7wSE+M183ZtMGgOJKiL96brpaz5ekfJCpM= -github.com/skeema/knownhosts v1.2.0/go.mod h1:g4fPeYpque7P0xefxtGzV81ihjC8sX2IqpAoNkjxbMo= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/assertions v1.2.0 h1:42S6lae5dvLc7BrLu/0ugRtcFVjoJNMC/N3yZFZkDFs= github.com/smartystreets/assertions v1.2.0/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo= @@ -728,11 +723,11 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= 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 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.1 h1:4VhoImhV/Bm0ToFkXFi8hXNXwpDRZ/ynw3amt82mzq0= +github.com/stretchr/objx v0.5.1/go.mod h1:/iHQpkQwBD6DLUmQ4pE+s1TXdob1mORJ4/UFdrifcy0= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -744,6 +739,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= @@ -765,10 +761,10 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= -github.com/tklauser/go-sysconf v0.3.11 h1:89WgdJhk5SNwJfu+GKyYveZ4IaJ7xAkecBo+KdJV0CM= -github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= -github.com/tklauser/numcpus v0.6.0 h1:kebhY2Qt+3U6RNK7UqpYNA+tJ23IBEGKkB7JQBfDYms= -github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= +github.com/tklauser/go-sysconf v0.3.12 h1:0QaGUFOdQaIVdPgfITYzaTegZvdCjmYO52cSFAEVmqU= +github.com/tklauser/go-sysconf v0.3.12/go.mod h1:Ho14jnntGE1fpdOqQEEaiKRpvIavV0hSfmBq8nJbHYI= +github.com/tklauser/numcpus v0.6.1 h1:ng9scYS7az0Bk4OZLvrNXNSAO2Pxr1XXRAPyjhIx+Fk= +github.com/tklauser/numcpus v0.6.1/go.mod h1:1XfjsgE2zo8GVw7POkMbHENHzVg3GzmoZ9fESEdAacY= github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= @@ -790,11 +786,10 @@ github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMc github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= -github.com/xlab/treeprint v1.1.0 h1:G/1DjNkPpfZCFt9CSh6b5/nY4VimlbHF3Rh4obvtzDk= -github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= +github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= +github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -802,7 +797,6 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= @@ -831,9 +825,8 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.starlark.net v0.0.0-20221205180719-3fd0dac74452 h1:JZtNuL6LPB+scU5yaQ6hqRlJFRiddZm2FwRt2AQqtHA= -go.starlark.net v0.0.0-20221205180719-3fd0dac74452/go.mod h1:kIVgS18CjmEC3PqMd5kaJSGEifyV/CeB9x506ZJ1Vbk= +go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= +go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= @@ -856,8 +849,9 @@ golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.3.0/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/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-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -898,6 +892,7 @@ golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -940,14 +935,15 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.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.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= 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= @@ -960,8 +956,8 @@ golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= +golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= 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= @@ -973,7 +969,6 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= @@ -1035,7 +1030,6 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211102192858-4dd72447c267/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1048,17 +1042,21 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.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.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1071,8 +1069,10 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.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.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= 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= @@ -1132,7 +1132,6 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.12.1-0.20230825192346-2191a27a6dc5 h1:Vk4mysSz+GqQK2eqgWbo4zEO89wkeAjJiFIr9bpqa8k= @@ -1221,9 +1220,12 @@ google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54 h1:9NWlQfY2ePejTmfwUH1OWwmznFa+0kKcHGPDvcPza9M= +google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54/go.mod h1:zqTuNwFlFRsw5zIts5VnzLQxSRqh+CGOTVMlYbY0Eyk= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9 h1:m8v1xLLLzMe1m5P+gCTF8nJB9epwZQUBERm20Oy1poQ= +google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19 h1:0nDDozoAU19Qb2HwhXadU8OcsiO/09cnTqhUtq2MEOM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1245,9 +1247,8 @@ google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.56.2 h1:fVRFRnXvU+x6C4IlHZewvJOVHoOv1TUuQyoRsYnB4bI= -google.golang.org/grpc v1.56.2/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1260,7 +1261,6 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1288,16 +1288,15 @@ gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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= -gotest.tools/gotestsum v1.10.1 h1:TOV5xZVd5HDscBLSrPXpc4/MQm6QQr/YSI9iDC62d7E= -gotest.tools/gotestsum v1.10.1/go.mod h1:6JHCiN6TEjA7Kaz23q1bH0e2Dc3YJjDUZ0DmctFZf+w= +gotest.tools/gotestsum v1.11.0 h1:A88/QWw7acMjZH1dMe6KZFhw32odUOIjCiAU/Q4n3mI= +gotest.tools/gotestsum v1.11.0/go.mod h1:cUOKgFEvWAP0twchmiOvdzX0SBZX0UI58bGRpRIu4xs= gotest.tools/v3 v3.3.0 h1:MfDY1b1/0xN1CyMlQDac0ziEy9zJQd9CXBRRDHw2jJo= gotest.tools/v3 v3.3.0/go.mod h1:Mcr9QNxkg0uMvy/YElmo4SpXgJKWgQvYrT7Kw5RzJ1A= -helm.sh/helm/v3 v3.12.2 h1:kFyDBr/mgJUlyGzVTCieG4wW0zmo7fcNRWK0+FKkxqU= -helm.sh/helm/v3 v3.12.2/go.mod h1:v1PMayudIfZAvec3Wp4wAErensvK/rv5fu/xCiE6t3I= +helm.sh/helm/v3 v3.13.0 h1:XPJKIU30K4JTQ6VX/6e0hFAmEIonYa8E7wx5aqv4xOc= +helm.sh/helm/v3 v3.13.0/go.mod h1:2PBEKsMWKLVZTojUOqMS3Eadv5mP43FBWrRgLNkNm9Y= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1336,10 +1335,10 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/kustomize/api v0.13.2 h1:kejWfLeJhUsTGioDoFNJET5LQe/ajzXhJGYoU+pJsiA= -sigs.k8s.io/kustomize/api v0.13.2/go.mod h1:DUp325VVMFVcQSq+ZxyDisA8wtldwHxLZbr1g94UHsw= -sigs.k8s.io/kustomize/kyaml v0.14.1 h1:c8iibius7l24G2wVAGZn/Va2wNys03GXLjYVIcFVxKA= -sigs.k8s.io/kustomize/kyaml v0.14.1/go.mod h1:AN1/IpawKilWD7V+YvQwRGUvuUOOWpjsHu6uHwonSF4= +sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= +sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= +sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= +sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/x-pack/apm-server/aggregation.go b/x-pack/apm-server/aggregation.go index 71c70e96359..856d4d7449b 100644 --- a/x-pack/apm-server/aggregation.go +++ b/x-pack/apm-server/aggregation.go @@ -2,8 +2,6 @@ // or more contributor license agreements. Licensed under the Elastic License 2.0; // you may not use this file except in compliance with the Elastic License 2.0. -//go:build !386 - package main import ( diff --git a/x-pack/apm-server/aggregation_386.go b/x-pack/apm-server/aggregation_386.go deleted file mode 100644 index 64b954846c2..00000000000 --- a/x-pack/apm-server/aggregation_386.go +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License 2.0; -// you may not use this file except in compliance with the Elastic License 2.0. - -package main - -import "github.com/elastic/apm-server/internal/beater" - -func newAggregationProcessors(args beater.ServerParams) ([]namedProcessor, error) { - return nil, nil -}