elastic-apm 4.8.0 → 4.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.ci/.exclude.yml +8 -2
  3. data/.github/CODEOWNERS +1 -0
  4. data/.github/dependabot.yml +0 -2
  5. data/.github/workflows/addToProject.yml +40 -23
  6. data/.github/workflows/docs-build.yml +10 -13
  7. data/.github/workflows/docs-deploy.yml +16 -0
  8. data/.github/workflows/docs-preview-cleanup.yml +12 -0
  9. data/.github/workflows/github-commands-comment.yml +1 -21
  10. data/.github/workflows/release.yml +2 -1
  11. data/Dockerfile +38 -12
  12. data/Gemfile +27 -5
  13. data/bin/dev +14 -2
  14. data/bin/run-bdd +2 -2
  15. data/docker-compose.yml +12 -5
  16. data/docs/docset.yml +2 -0
  17. data/docs/reference/advanced-topics.md +6 -0
  18. data/docs/reference/api-reference.md +6 -0
  19. data/docs/reference/configuration.md +19 -2
  20. data/docs/reference/context.md +6 -0
  21. data/docs/reference/custom-instrumentation.md +6 -0
  22. data/docs/reference/getting-started-rack.md +6 -0
  23. data/docs/reference/getting-started-rails.md +6 -0
  24. data/docs/reference/graphql.md +6 -0
  25. data/docs/reference/index.md +9 -0
  26. data/docs/reference/logs.md +6 -0
  27. data/docs/reference/metrics.md +6 -0
  28. data/docs/reference/opentracing-api.md +6 -0
  29. data/docs/reference/performance-tuning.md +6 -0
  30. data/docs/reference/set-up-apm-ruby-agent.md +6 -0
  31. data/docs/reference/supported-technologies.md +24 -18
  32. data/docs/reference/toc.yml +3 -1
  33. data/docs/reference/upgrading.md +6 -0
  34. data/docs/release-notes/index.md +16 -0
  35. data/docs/release-notes/known-issues.md +6 -1
  36. data/elastic-apm.gemspec +2 -2
  37. data/lib/elastic_apm/central_config.rb +1 -1
  38. data/lib/elastic_apm/config/round_float_hash_value.rb +35 -0
  39. data/lib/elastic_apm/config.rb +2 -0
  40. data/lib/elastic_apm/instrumenter.rb +23 -3
  41. data/lib/elastic_apm/spies/http.rb +1 -1
  42. data/lib/elastic_apm/transaction.rb +11 -4
  43. data/lib/elastic_apm/version.rb +1 -1
  44. metadata +15 -4
  45. data/.github/workflows/docs-cleanup.yml +0 -14
  46. data/SECURITY.md +0 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5ebd8a3592a4632b3f13811b920430b0052a67d80c921827ceb6639764c99de1
4
- data.tar.gz: 485ec2dcb2f45d58fef2dbdb2acaa2cf515d33d0ce634bc44ef6f0f526e80f41
3
+ metadata.gz: 31edb9bba2adf03fbf15be845cbf4b9612b9d53821cb628d0e58b8433a913645
4
+ data.tar.gz: 7d2ea706462aa65a194292d6014618ed869468e30269de1d1c58b6b744e7a89b
5
5
  SHA512:
6
- metadata.gz: d39a813a6c001fe599e397ec74b8a5037ad3b07c9c0710124046f58ffb96a06c18bbd0021672d6b00e55ef1317a008f354ddf5061eb58ba560ab1684bbb29a0b
7
- data.tar.gz: e72c6f09511b8f2884e7f07d053c8ee4618fc18692e453e4afafd81d164f890fe2fd6c39b1f47097ae828d789c620c72c6448ca85a30746925be4be9ca24625e
6
+ metadata.gz: 6115cc9c39a67366f472436d6f0e22df08518915581361d2ee5999846d0a65238bdfe79e9522f38b1d19312642c09bc1bb5abb7a021efc3b138d24525fb53ccd
7
+ data.tar.gz: 250ece59f0403da4844ca5108559a1a434cceec6dbb2fb5dfb3113d6f466553f5dbf97e820cdeb4b2c6f05de67891521174a1f6f6a32aedd9ee8fd9ffc50032c
data/.ci/.exclude.yml CHANGED
@@ -73,7 +73,9 @@ exclude:
73
73
  - VERSION: elasticobservability/jruby:9.2-8-jdk
74
74
  FRAMEWORK: rails-main
75
75
 
76
- # Only test rails 7.2 on ruby >= 3.1
76
+ # Only test rails 7.2 on ruby >= 3.4
77
+ - VERSION: ruby:3.1
78
+ FRAMEWORK: rails-7.2
77
79
  - VERSION: ruby:2.7
78
80
  FRAMEWORK: rails-7.2
79
81
  - VERSION: ruby:2.6
@@ -103,7 +105,11 @@ exclude:
103
105
  - VERSION: elasticobservability/jruby:9.2-8-jdk
104
106
  FRAMEWORK: sinatra-main
105
107
 
106
- # Only test grape master on ruby 2.7 and ruby 3.1
108
+ # Only test grape master on ruby >= 3.2
109
+ - VERSION: ruby:3.1
110
+ FRAMEWORK: grape-master
111
+ - VERSION: ruby:2.7
112
+ FRAMEWORK: grape-master
107
113
  - VERSION: ruby:2.6
108
114
  FRAMEWORK: grape-master
109
115
  - VERSION: ruby:2.4
@@ -0,0 +1 @@
1
+ /.github/workflows @elastic/observablt-ci
@@ -27,8 +27,6 @@ updates:
27
27
  day: "sunday"
28
28
  time: "22:00"
29
29
  open-pull-requests-limit: 5
30
- reviewers:
31
- - "elastic/observablt-ci"
32
30
  labels:
33
31
  - dependencies
34
32
  groups:
@@ -16,31 +16,48 @@ jobs:
16
16
  steps:
17
17
  - name: Get token
18
18
  id: get_token
19
- uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a # v2.1.0
19
+ uses: actions/create-github-app-token@v3
20
20
  with:
21
- app_id: ${{ secrets.OBS_AUTOMATION_APP_ID }}
22
- private_key: ${{ secrets.OBS_AUTOMATION_APP_PEM }}
23
- permissions: >-
24
- {
25
- "issues": "read",
26
- "organization_projects": "write",
27
- "pull_requests": "read"
28
- }
29
- - name: Assign issues with milestones to project
30
- uses: elastic/assign-one-project-github-action@1.2.2
21
+ app-id: ${{ secrets.OBS_AUTOMATION_APP_ID }}
22
+ private-key: ${{ secrets.OBS_AUTOMATION_APP_PEM }}
23
+ permission-organization-projects: write
24
+ permission-issues: read
25
+ permission-pull-requests: read
26
+
27
+ - name: Add milestoned issues to project
28
+ id: add-issue-to-project
29
+ if: github.event.issue && github.event.issue.milestone
30
+ uses: elastic/oblt-actions/github/project-add@v1
31
+ with:
32
+ github-token: ${{ steps.get_token.outputs.token }}
33
+ project-id: 1674
34
+ item-url: ${{ github.event.issue.html_url }}
35
+
36
+ - name: Set issue status to Planned
31
37
  if: github.event.issue && github.event.issue.milestone
38
+ uses: elastic/oblt-actions/github/project-field-set@v1
32
39
  with:
33
- project: 'https://github.com/orgs/elastic/projects/454'
34
- project_id: '5882982'
35
- column_name: 'Planned'
36
- env:
37
- MY_GITHUB_TOKEN: ${{ steps.get_token.outputs.token }}
38
- - name: Assign new pull requests to project
39
- uses: elastic/assign-one-project-github-action@1.2.2
40
+ github-token: ${{ steps.get_token.outputs.token }}
41
+ project-id: 1674
42
+ item-id: ${{ steps.add-issue-to-project.outputs.item-id }}
43
+ field-name: Status
44
+ field-value: Planned
45
+
46
+ - name: Add new pull requests to project
47
+ id: add-pr-to-project
48
+ if: github.event.action == 'opened' && github.event.pull_request
49
+ uses: elastic/oblt-actions/github/project-add@v1
50
+ with:
51
+ github-token: ${{ steps.get_token.outputs.token }}
52
+ project-id: 1674
53
+ item-url: ${{ github.event.pull_request.html_url }}
54
+
55
+ - name: Set pull request status to In Progress
40
56
  if: github.event.action == 'opened' && github.event.pull_request
57
+ uses: elastic/oblt-actions/github/project-field-set@v1
41
58
  with:
42
- project: 'https://github.com/orgs/elastic/projects/454'
43
- project_id: '5882982'
44
- column_name: 'In Progress'
45
- env:
46
- MY_GITHUB_TOKEN: ${{ steps.get_token.outputs.token }}
59
+ github-token: ${{ steps.get_token.outputs.token }}
60
+ project-id: 1674
61
+ item-id: ${{ steps.add-pr-to-project.outputs.item-id }}
62
+ field-name: Status
63
+ field-value: In Progress
@@ -1,19 +1,16 @@
1
1
  name: docs-build
2
-
3
2
  on:
3
+ pull_request:
4
+ branches: [main]
5
+ types: [opened, synchronize, reopened]
4
6
  push:
5
- branches:
6
- - main
7
- pull_request_target: ~
7
+ branches: [main]
8
8
  merge_group: ~
9
-
9
+ permissions:
10
+ contents: read
11
+ pull-requests: read
10
12
  jobs:
11
- docs-preview:
12
- uses: elastic/docs-builder/.github/workflows/preview-build.yml@main
13
+ build:
14
+ uses: elastic/docs-actions/.github/workflows/docs-build.yml@v1
13
15
  with:
14
- path-pattern: docs/**
15
- permissions:
16
- deployments: write
17
- id-token: write
18
- contents: read
19
- pull-requests: read
16
+ enable-vale-linting: true
@@ -0,0 +1,16 @@
1
+ name: docs-deploy
2
+ on:
3
+ workflow_run:
4
+ workflows: [docs-build]
5
+ types: [completed]
6
+ permissions:
7
+ contents: read
8
+ deployments: write
9
+ id-token: write
10
+ pull-requests: write
11
+ actions: read
12
+ jobs:
13
+ deploy:
14
+ uses: elastic/docs-actions/.github/workflows/docs-deploy.yml@v1
15
+ with:
16
+ enable-vale-linting: true
@@ -0,0 +1,12 @@
1
+ name: docs-preview-cleanup
2
+ on:
3
+ pull_request_target:
4
+ branches: [main]
5
+ types: [closed]
6
+ permissions:
7
+ contents: none
8
+ deployments: write
9
+ id-token: write
10
+ jobs:
11
+ cleanup:
12
+ uses: elastic/docs-actions/.github/workflows/docs-preview-cleanup.yml@v1
@@ -13,26 +13,6 @@ jobs:
13
13
  comment:
14
14
  runs-on: ubuntu-latest
15
15
  permissions:
16
- issues: write
17
16
  pull-requests: write
18
17
  steps:
19
- - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
20
- with:
21
- script: |
22
- const body = `
23
- ### :robot: GitHub comments
24
-
25
- <details><summary>Expand to view the GitHub comments</summary>
26
- <p>
27
-
28
- Just comment with:
29
- - `run` `docs-build` : Re-trigger the docs validation. (use unformatted text in the comment!)
30
- </p>
31
- </details>
32
- `.replace(/ +/g, '')
33
- github.rest.issues.createComment({
34
- issue_number: context.issue.number,
35
- owner: context.repo.owner,
36
- repo: context.repo.repo,
37
- body: body
38
- })
18
+ - uses: elastic/oblt-actions/elastic/github-commands@v1
@@ -14,6 +14,7 @@ jobs:
14
14
  release:
15
15
  runs-on: ubuntu-latest
16
16
  permissions:
17
+ artifact-metadata: write
17
18
  attestations: write
18
19
  contents: write
19
20
  id-token: write
@@ -43,7 +44,7 @@ jobs:
43
44
  if: ${{ ! startsWith(github.ref, 'refs/tags') }}
44
45
 
45
46
  - name: generate build provenance
46
- uses: actions/attest-build-provenance@db473fddc028af60658334401dc6fa3ffd8669fd # v2.3.0
47
+ uses: actions/attest-build-provenance@e8998f949152b193b063cb0ec769d69d929409be # v2.4.0
47
48
  with:
48
49
  subject-path: "${{ github.workspace }}/pkg/*.gem"
49
50
 
data/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- ARG RUBY_IMAGE
1
+ ARG RUBY_IMAGE=ruby:3.3
2
2
  FROM ${RUBY_IMAGE}
3
3
 
4
4
  ARG USER_ID_GROUP
@@ -9,10 +9,18 @@ ARG BUNDLER_VERSION
9
9
  # For tzdata
10
10
  # ENV DEBIAN_FRONTEND=noninteractive
11
11
 
12
- RUN apt-get update -qq \
13
- && apt-get install -qq -y --no-install-recommends \
14
- build-essential libpq-dev git \
15
- && rm -rf /var/lib/apt/lists/*
12
+ RUN set -eux; \
13
+ apt-get update -qq || ( \
14
+ find /etc/apt -name '*.list' -type f -print0 | xargs -0 sed -i \
15
+ -e 's|deb.debian.org/debian|archive.debian.org/debian|g' \
16
+ -e 's|security.debian.org/debian-security|archive.debian.org/debian-security|g'; \
17
+ find /etc/apt -name '*.list' -type f -print0 | xargs -0 sed -i '/buster-updates/d'; \
18
+ printf 'Acquire::Check-Valid-Until "false";\n' > /etc/apt/apt.conf.d/99no-check-valid; \
19
+ apt-get -o Acquire::Check-Valid-Until=false update -qq \
20
+ ); \
21
+ apt-get install -qq -y --no-install-recommends \
22
+ build-essential libpq-dev git netbase; \
23
+ rm -rf /var/lib/apt/lists/*
16
24
 
17
25
  # Configure bundler and PATH
18
26
  ENV LANG=C.UTF-8
@@ -29,15 +37,33 @@ ENV FRAMEWORKS $FRAMEWORKS
29
37
  RUN mkdir -p $VENDOR_PATH \
30
38
  && chown -R $USER_ID_GROUP $VENDOR_PATH
31
39
 
32
- USER $USER_ID_GROUP
33
-
34
- # Upgrade RubyGems and install required Bundler version
35
- RUN gem update --system && \
36
- gem install bundler:$BUNDLER_VERSION
40
+ # Upgrade RubyGems with a Ruby-version-compatible strategy and install Bundler.
41
+ RUN set -eux; \
42
+ if ruby -e 'require "rubygems"; exit(Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.2") ? 0 : 1)'; then \
43
+ gem update --system 3.2.3; \
44
+ else \
45
+ gem update --system; \
46
+ fi; \
47
+ if ruby -e 'require "rubygems"; exit(Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.5") ? 0 : 1)'; then \
48
+ gem install bundler:1.17.3; \
49
+ else \
50
+ gem install bundler:$BUNDLER_VERSION; \
51
+ fi
37
52
 
38
- # Use unpatched, system version for more speed over less security
39
- RUN gem install nokogiri -- --use-system-libraries
53
+ # Use unpatched, system version for more speed over less security.
54
+ # Pin Nokogiri by Ruby compatibility to support old CI targets (e.g. Ruby 2.4).
55
+ RUN set -eux; \
56
+ if ruby -e 'require "rubygems"; exit(Gem::Version.new(RUBY_VERSION) < Gem::Version.new("2.5") ? 0 : 1)'; then \
57
+ gem install nokogiri -v 1.10.10 -- --use-system-libraries; \
58
+ elif ruby -e 'require "rubygems"; exit(Gem::Version.new(RUBY_VERSION) < Gem::Version.new("3.2") ? 0 : 1)'; then \
59
+ gem install nokogiri -v 1.12.5 -- --use-system-libraries; \
60
+ else \
61
+ gem install nokogiri -- --use-system-libraries; \
62
+ fi
40
63
  # Rake is required to build http-parser on some jruby images
41
64
  RUN gem install rake
42
65
 
66
+ RUN chown -R $USER_ID_GROUP $VENDOR_PATH
67
+ USER $USER_ID_GROUP
68
+
43
69
  WORKDIR /app
data/Gemfile CHANGED
@@ -59,7 +59,6 @@ gem 'rake', '>= 13.0', require: nil
59
59
  gem 'racecar', require: nil if !defined?(JRUBY_VERSION)
60
60
  gem 'resque', require: nil
61
61
  gem 'sequel', require: nil
62
- gem 'shoryuken', require: nil
63
62
  gem 'sidekiq', require: nil
64
63
  gem 'simplecov', require: false
65
64
  gem 'simplecov-cobertura', require: false
@@ -91,6 +90,10 @@ frameworks_versions.each do |framework, version|
91
90
  gem 'net-smtp', require: false
92
91
  end
93
92
 
93
+ if framework =='rails' && RUBY_VERSION < '3.2' && !defined?(JRUBY_VERSION) && version >= '5.2'
94
+ gem 'i18n', '1.14.8'
95
+ end
96
+
94
97
  if framework =='rails' && RUBY_VERSION >= '3.4' && ['4.2', '5.2', '6.1'].include?(version)
95
98
  gem 'mutex_m'
96
99
  end
@@ -107,17 +110,36 @@ frameworks_versions.each do |framework, version|
107
110
  end
108
111
  end
109
112
 
110
- # Handle Rack::Auth::Digest being removed in rack 3.1, grape requires it
113
+ # Handle Rack::Auth::Digest being removed in rack 3.1, grape requires it.
114
+ # Sinatra 2.x depends on rack 2.x, so use a compatible rack line when both are present.
111
115
  if frameworks_versions.key?('grape')
112
- gem 'rack', '~> 3.0.0'
116
+ sinatra_version = frameworks_versions['sinatra']
117
+ if sinatra_version&.start_with?('2.')
118
+ gem 'rack', '~> 2.2.0'
119
+ else
120
+ gem 'rack', '~> 3.0.0'
121
+ end
113
122
  end
114
123
 
115
124
  if frameworks_versions.key?('rails')
116
- unless /^(main|6)/.match?(frameworks_versions['rails'])
117
- gem 'delayed_job', require: nil
125
+ rails_version = frameworks_versions['rails']
126
+ unless /^(main|6)/.match?(rails_version)
127
+ if rails_version.start_with?('4.') || rails_version.start_with?('5.')
128
+ gem 'delayed_job', '~> 4.1.13', require: nil
129
+ else
130
+ gem 'delayed_job', require: nil
131
+ end
118
132
  end
119
133
  end
120
134
 
135
+ # Shoryuken 7.x references ActiveJob::QueueAdapters::AbstractAdapter, which
136
+ # is missing in the Ruby 3.4 + Rails 6.1 matrix target.
137
+ if frameworks_versions['rails'] == '6.1' && RUBY_VERSION >= '3.4'
138
+ gem 'shoryuken', '< 7.0', require: nil
139
+ else
140
+ gem 'shoryuken', require: nil
141
+ end
142
+
121
143
  if RUBY_PLATFORM == 'java'
122
144
  # See issue #6547 in the JRuby repo. It is fixed in JRuby 9.3
123
145
  gem 'i18n', '< 1.8.8' if JRUBY_VERSION < '9.3'
data/bin/dev CHANGED
@@ -26,14 +26,26 @@ end.parse!
26
26
  USER_ID_GROUP = %w[u g].map { |f| `id -#{f}`.chomp }.join(':')
27
27
 
28
28
  RUBY_IMAGE = options.fetch(:image, 'ruby:latest')
29
- FRAMEWORKS = options.fetch(:frameworks, 'rails,sinatra,grape')
29
+ default_frameworks = if RUBY_IMAGE.include?('jruby')
30
+ 'rails-6.1,sinatra-2.2,grape-1.6'
31
+ else
32
+ 'rails,sinatra,grape'
33
+ end
34
+ FRAMEWORKS = options.fetch(:frameworks, default_frameworks)
30
35
 
31
36
  IMAGE_PATH_SAFE = RUBY_IMAGE.tr(':', '_')
32
37
  IMAGE_NAME = "apm-agent-ruby:#{IMAGE_PATH_SAFE}"
33
38
  VENDOR_PATH = "/vendor/#{IMAGE_PATH_SAFE}"
39
+ legacy_ruby_image = RUBY_IMAGE.match?(/^ruby:(2\.[0-9]+|1\.[0-9]+)/)
40
+ DOCKER_PLATFORM = if RUBY_IMAGE.include?('jruby') || legacy_ruby_image
41
+ 'linux/amd64'
42
+ end
34
43
 
35
44
  def run(cmd)
36
- "IMAGE_NAME=#{IMAGE_NAME} #{cmd}".tap do |str|
45
+ env = ["IMAGE_NAME=#{IMAGE_NAME}"]
46
+ env << "DOCKER_DEFAULT_PLATFORM=#{DOCKER_PLATFORM}" if DOCKER_PLATFORM
47
+
48
+ "#{env.join(' ')} #{cmd}".tap do |str|
37
49
  puts str
38
50
  system str
39
51
  end
data/bin/run-bdd CHANGED
@@ -9,9 +9,9 @@ if [[ $specific_feature = '' ]]; then
9
9
  echo 'Running all features'
10
10
 
11
11
  echo "========================================"
12
- cucumber
12
+ bundle exec cucumber
13
13
  else
14
14
  echo "Running only $specific_feature"
15
15
 
16
- cucumber $specific_feature
16
+ bundle exec cucumber $specific_feature
17
17
  fi
data/docker-compose.yml CHANGED
@@ -1,5 +1,4 @@
1
1
  ---
2
- version: '3.4'
3
2
 
4
3
  services:
5
4
  mongodb:
@@ -14,10 +13,18 @@ services:
14
13
  context: .
15
14
  args:
16
15
  BUNDLER_VERSION: '2.2.21'
16
+ RUBY_IMAGE: ${RUBY_IMAGE:-ruby:3.3}
17
+ USER_ID_GROUP: ${USER_ID_GROUP:-1000:1000}
18
+ FRAMEWORKS: ${FRAMEWORKS:-rails,sinatra,grape}
19
+ VENDOR_PATH: ${VENDOR_PATH:-/vendor/ruby_3.3}
17
20
  image: '$IMAGE_NAME'
18
21
  environment:
19
22
  HOME: '/tmp'
20
23
  MONGODB_URL: 'mongodb:27017'
24
+ USER_ID: ${USER_ID:-1000}
25
+ LOCAL_USER_ID: ${LOCAL_USER_ID:-1000}
26
+ LOCAL_GROUP_ID: ${LOCAL_GROUP_ID:-1000}
27
+ RUBY_VERSION: ${RUBY_VERSION:-3.3}
21
28
  entrypoint:
22
29
  'spec/entrypoint.sh'
23
30
  tty: true
@@ -28,17 +35,17 @@ services:
28
35
  - /tmp:exec,mode=1777
29
36
  depends_on:
30
37
  - mongodb
31
- user: ${USER_ID}
38
+ user: ${USER_ID:-1000}
32
39
  security_opt:
33
40
  - no-new-privileges
34
41
 
35
42
  ruby_rspec:
36
- image: apm-agent-ruby:${RUBY_VERSION}
43
+ image: apm-agent-ruby:${RUBY_VERSION:-3.3}
37
44
  environment:
38
45
  APP_PATH: /opt/app
39
46
  FRAMEWORK: rails
40
- LOCAL_USER_ID: ${LOCAL_USER_ID}
41
- LOCAL_GROUP_ID: ${LOCAL_GROUP_ID}
47
+ LOCAL_USER_ID: ${LOCAL_USER_ID:-1000}
48
+ LOCAL_GROUP_ID: ${LOCAL_GROUP_ID:-1000}
42
49
  MONGODB_URL: 'mongodb:27017'
43
50
  security_opt:
44
51
  - no-new-privileges
data/docs/docset.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  project: 'APM Ruby agent docs'
2
+ products:
3
+ - id: apm-agent
2
4
  cross_links:
3
5
  - apm-agent-rum-js
4
6
  - docs-content
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/advanced.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Advanced topics [advanced]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/api.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # API reference [api]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/configuration.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Configuration [configuration]
@@ -379,7 +385,7 @@ The version number of the used framework. For Ruby on Rails and Sinatra, this de
379
385
  | --- | --- | --- | --- |
380
386
  | `ELASTIC_APM_GLOBAL_LABELS` | `global_labels` | `nil` | `dept=engineering,rack=number8` |
381
387
 
382
- Labels added to all events, with the format key=value[,key=value[,…​]].
388
+ Labels added to all events, with the format key=value[,key=value[,… ]].
383
389
 
384
390
  ::::{note}
385
391
  This option requires APM Server 7.2 or greater, and will have no effect when using older server versions.
@@ -677,6 +683,18 @@ Limits the amount of spans that are recorded per transaction. This is helpful in
677
683
  By default, the agent will sample every transaction (e.g. request to your service). To reduce overhead and storage requirements, you can set the sample rate to a value between `0.0` and `1.0`. We still record overall time and the result for unsampled transactions, but no context information, tags, or spans. The sample rate will be rounded to 4 digits of precision.
678
684
 
679
685
 
686
+ ### `transaction_sample_rate_by_name` [config-transaction-sample-rate-by-name]
687
+
688
+ | | | | |
689
+ | --- | --- | --- | --- |
690
+ | Environment | `Config` key | Default | Example |
691
+ | `ELASTIC_APM_TRANSACTION_SAMPLE_RATE_BY_NAME` | `transaction_sample_rate_by_name` | `{}` | `{"UsersController#index" => 1.0, "HealthController#ping" => 0.0}` |
692
+
693
+ Configure specific sampling rates for transactions with particular names. This option takes a hash where the keys are transaction names and the values are sampling rates between `0.0` and `1.0`.
694
+
695
+ This is useful when you want to ensure critical transactions are always sampled while reducing sampling for high-volume, less important transactions. When a transaction name matches an entry in this hash, the specified sampling rate takes precedence over the global `transaction_sample_rate`.
696
+
697
+
680
698
  ### `verify_server_cert` [config-verify-server-cert]
681
699
 
682
700
  | | | |
@@ -731,4 +749,3 @@ Elastic APM patches `Kernel#require` to auto-detect and instrument supported thi
731
749
  To get around this patch, set the environment variable `ELASTIC_APM_SKIP_REQUIRE_PATCH` to `"1"`.
732
750
 
733
751
  The agent might need some additional tweaking to make sure the third-party libraries are picked up and instrumented. Make sure you require the agent *after* you require your other dependencies.
734
-
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/context.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Adding additional context [context]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/custom-instrumentation.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Custom instrumentation [custom-instrumentation]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/getting-started-rack.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Getting started with Rack [getting-started-rack]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/getting-started-rails.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Getting started with Rails [getting-started-rails]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/graphql.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # GraphQL [graphql]
@@ -2,6 +2,12 @@
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/introduction.html
4
4
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/index.html
5
+ applies_to:
6
+ stack:
7
+ serverless:
8
+ observability:
9
+ product:
10
+ apm_agent_ruby: ga
5
11
  ---
6
12
 
7
13
  # APM Ruby agent [introduction]
@@ -22,3 +28,6 @@ These events, called Transactions and Spans, are sent to the APM Server. The APM
22
28
 
23
29
  APM Agents work in conjunction with the [APM Server](docs-content://solutions/observability/apps/application-performance-monitoring-apm.md), [Elasticsearch](docs-content://get-started/index.md), and [Kibana](docs-content://get-started/the-stack.md). The [APM Guide](docs-content://solutions/observability/apps/application-performance-monitoring-apm.md) provides details on how these components work together, and provides a matrix outlining [Agent and Server compatibility](docs-content://solutions/observability/apps/apm-agent-compatibility.md).
24
30
 
31
+ ## Troubleshooting
32
+
33
+ If you're experiencing issues with the APM Ruby agent, refer to [Troubleshoot APM Ruby Agent](docs-content://troubleshoot/observability/apm-agent-ruby/apm-ruby-agent.md).
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/log-correlation.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Logs [logs]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/metrics.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Metrics [metrics]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/opentracing.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # OpenTracing API [opentracing]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/tuning-and-overhead.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Performance tuning [tuning-and-overhead]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/set-up.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Set up the APM Ruby agent [set-up]
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/supported-technologies.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Supported technologies [supported-technologies]
@@ -10,7 +16,7 @@ The Elastic APM Ruby Agent has built-in support for many frameworks and librarie
10
16
 
11
17
  ## Ruby [supported-technologies-ruby]
12
18
 
13
- We follow Ruby’s own maintenance policy and officially support all currently maintained versions per [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/).
19
+ We follow Ruby’s own maintenance policy and officially support all currently maintained versions per [Ruby Maintenance Branches](https://www.ruby-lang.org/en/downloads/branches/) < 4.0.
14
20
 
15
21
 
16
22
  ## Web Frameworks and Libraries [supported-technologies-web]
@@ -22,21 +28,21 @@ We test against all supported minor versions of Rails, Sinatra, and Grape.
22
28
 
23
29
  ### Ruby on Rails [supported-technologies-rails]
24
30
 
25
- We currently support all versions of Rails since 4.2. This follows Rails' own [Security policy](https://rubyonrails.org/security/).
31
+ We currently support Rails >= 4.2 <= 7.2. This follows Rails' own [Security policy](https://rubyonrails.org/security/).
26
32
 
27
33
  See [Getting started with Rails](/reference/getting-started-rails.md).
28
34
 
29
35
 
30
36
  ### Sinatra [supported-technologies-sinatra]
31
37
 
32
- We currently support all versions of Sinatra since 1.0.
38
+ We currently support Sinatra >= 1.0 <= 2.2.
33
39
 
34
40
  See [Getting started with Rack](/reference/getting-started-rack.md).
35
41
 
36
42
 
37
43
  ### Grape [supported-technologies-grape]
38
44
 
39
- We currently support all versions of Grape since 1.2.
45
+ We currently support Grape >= 1.2 <= 1.6.
40
46
 
41
47
  See [Grape example](/reference/getting-started-rack.md#getting-started-grape).
42
48
 
@@ -45,12 +51,12 @@ See [Grape example](/reference/getting-started-rack.md#getting-started-grape).
45
51
 
46
52
  We automatically instrument database actions using:
47
53
 
48
- * ActiveRecord (v4.2+)
49
- * DynamoDB (v1.0+)
50
- * Elasticsearch (v0.9+)
51
- * Mongo (v2.1+)
52
- * Redis (v3.1+)
53
- * Sequel (v4.35+)
54
+ * ActiveRecord (>= 4.2 <= 7.2)
55
+ * DynamoDB (>= 1.0 <= 1.158.0)
56
+ * Elasticsearch (>= 0.9 <= 9.2.0)
57
+ * Mongo (>= 2.1 <= 2.22.0)
58
+ * Redis (>= 3.1 <= 5.4.1)
59
+ * Sequel (>= 4.35 <= 5.100.0)
54
60
 
55
61
 
56
62
  ## External HTTP requests [supported-technologies-http]
@@ -58,8 +64,8 @@ We automatically instrument database actions using:
58
64
  We automatically instrument and add support for distributed tracing to external requests using these libraries:
59
65
 
60
66
  * `net/http`
61
- * Http.rb (v0.6+)
62
- * Faraday (v0.2.1+)
67
+ * Http.rb (>= 3.0 < 6.0)
68
+ * Faraday (>= 0.2.1 <= 2.14.0)
63
69
 
64
70
  **Note:** These libraries usually assume `localhost` if no `Host` is specified, so the agent does as well.
65
71
 
@@ -68,12 +74,12 @@ We automatically instrument and add support for distributed tracing to external
68
74
 
69
75
  We automatically instrument background processing using:
70
76
 
71
- * DelayedJob
72
- * Sidekiq
73
- * Shoryuken
74
- * Sneakers (v2.12.0+) (Experimental, see [#676](https://github.com/elastic/apm-agent-ruby/pull/676))
75
- * Resque (v2.0.0+)
76
- * SuckerPunch (v2.0.0+)
77
+ * DelayedJob (<= 4.2.0)
78
+ * Sidekiq (<= 8.1.0)
79
+ * Shoryuken (<= 6.2.1)
80
+ * Sneakers (2.12.0) (Experimental, see [#676](https://github.com/elastic/apm-agent-ruby/pull/676))
81
+ * Resque (>= 2.0.0 <= 2.7.0)
82
+ * SuckerPunch (>= 2.0.0 <= 3.3.0)
77
83
 
78
84
 
79
85
  ## Resque [supported-technologies-resque]
@@ -19,4 +19,6 @@ toc:
19
19
  # TO DO: Not available on master
20
20
  # - file: log-correlation.md
21
21
  - file: performance-tuning.md
22
- - file: upgrading.md
22
+ - file: upgrading.md
23
+ - title: Troubleshooting
24
+ crosslink: docs-content://troubleshoot/observability/apm-agent-ruby/apm-ruby-agent.md
@@ -1,6 +1,12 @@
1
1
  ---
2
2
  mapped_pages:
3
3
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/upgrading.html
4
+ applies_to:
5
+ stack:
6
+ serverless:
7
+ observability:
8
+ product:
9
+ apm_agent_ruby: ga
4
10
  ---
5
11
 
6
12
  # Upgrading [upgrading]
@@ -3,6 +3,12 @@ navigation_title: "Elastic APM Ruby Agent"
3
3
  mapped_pages:
4
4
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/release-notes.html
5
5
  - https://www.elastic.co/guide/en/apm/agent/ruby/current/release-notes-4.x.html
6
+ applies_to:
7
+ stack:
8
+ serverless:
9
+ observability:
10
+ product:
11
+ apm_agent_ruby: ga
6
12
  ---
7
13
 
8
14
  # Elastic APM Ruby Agent release notes [elastic-apm-ruby-agent-release-notes]
@@ -22,6 +28,16 @@ All notable changes to this project will be documented here. This project adhere
22
28
 
23
29
  % ### Fixes [elastic-apm-ruby-agent-versionext-fixes]
24
30
 
31
+ ## 4.9.0 [elastic-apm-ruby-agent-490-release-notes]
32
+
33
+ ### Features and enhancements [elastic-apm-ruby-agent-490-features-enhancements]
34
+ * Add ability to configure sampling rate based on transaction span name [#1531](https://github.com/elastic/apm-agent-ruby/pull/1531)
35
+ * Set version 7.0 as http gem upper bound in gemspec [#1624](https://github.com/elastic/apm-agent-ruby/pull/1624)
36
+
37
+ ### Fixes [elastic-apm-ruby-agent-490-fixes]
38
+ * Use status code explicitly in central config for changes in http 6.0 [#1615](https://github.com/elastic/apm-agent-ruby/pull/1615)
39
+ * Use headers method directly for compatibility with all versions of http [#1629](https://github.com/elastic/apm-agent-ruby/pull/1629)
40
+
25
41
  ## 4.8.0 [elastic-apm-ruby-agent-480-release-notes]
26
42
 
27
43
  ### Features and enhancements [elastic-apm-ruby-agent-480-features-enhancements]
@@ -1,6 +1,11 @@
1
1
  ---
2
2
  navigation_title: "Known issues"
3
-
3
+ applies_to:
4
+ stack:
5
+ serverless:
6
+ observability:
7
+ product:
8
+ apm_agent_ruby: ga
4
9
  ---
5
10
 
6
11
  # Elastic APM Ruby Agent known issues [elastic-apm-ruby-agent-known-issues]
data/elastic-apm.gemspec CHANGED
@@ -29,14 +29,14 @@ Gem::Specification.new do |spec|
29
29
  spec.homepage = 'https://github.com/elastic/apm-agent-ruby'
30
30
  spec.metadata = { 'source_code_uri' => 'https://github.com/elastic/apm-agent-ruby' }
31
31
  spec.license = 'Apache-2.0'
32
- spec.required_ruby_version = ">= 2.3.0"
32
+ spec.required_ruby_version = ">= 2.3.0", "< 4.0"
33
33
 
34
34
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
35
35
  f.match(%r{^(test|spec|features)/})
36
36
  end
37
37
 
38
38
  spec.add_dependency('concurrent-ruby', '~> 1.0')
39
- spec.add_dependency('http', '>= 3.0')
39
+ spec.add_dependency('http', '>= 3.0', '< 7.0')
40
40
  spec.add_runtime_dependency('ruby2_keywords')
41
41
 
42
42
  spec.require_paths = ['lib']
@@ -75,7 +75,7 @@ module ElasticAPM
75
75
  resp = perform_request
76
76
 
77
77
  # rubocop:disable Lint/DuplicateBranch
78
- case resp.status
78
+ case resp.status.code
79
79
  when 200..299
80
80
  resp
81
81
  when 300..399
@@ -0,0 +1,35 @@
1
+ # Licensed to Elasticsearch B.V. under one or more contributor
2
+ # license agreements. See the NOTICE file distributed with
3
+ # this work for additional information regarding copyright
4
+ # ownership. Elasticsearch B.V. licenses this file to you under
5
+ # the Apache License, Version 2.0 (the "License"); you may
6
+ # not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing,
12
+ # software distributed under the License is distributed on an
13
+ # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
+ # KIND, either express or implied. See the License for the
15
+ # specific language governing permissions and limitations
16
+ # under the License.
17
+
18
+ # frozen_string_literal: true
19
+
20
+ module ElasticAPM
21
+ class Config
22
+ # @api private
23
+ class RoundFloatHashValue
24
+ def initialize
25
+ @float_converter = RoundFloat.new
26
+ end
27
+
28
+ def call(hash)
29
+ return {} unless hash
30
+
31
+ hash.transform_values { |value| @float_converter.call(value) }
32
+ end
33
+ end
34
+ end
35
+ end
@@ -22,6 +22,7 @@ require 'elastic_apm/config/duration'
22
22
  require 'elastic_apm/config/log_level_map'
23
23
  require 'elastic_apm/config/options'
24
24
  require 'elastic_apm/config/round_float'
25
+ require 'elastic_apm/config/round_float_hash_value'
25
26
  require 'elastic_apm/config/regexp_list'
26
27
  require 'elastic_apm/config/wildcard_pattern_list'
27
28
  require 'elastic_apm/deprecations'
@@ -98,6 +99,7 @@ module ElasticAPM
98
99
  option :transaction_ignore_urls, type: :list, default: [], converter: WildcardPatternList.new
99
100
  option :transaction_max_spans, type: :int, default: 500
100
101
  option :transaction_sample_rate, type: :float, default: 1.0, converter: RoundFloat.new
102
+ option :transaction_sample_rate_by_name, type: :hash, default: {}, converter: RoundFloatHashValue.new
101
103
  option :use_elastic_traceparent_header, type: :bool, default: true
102
104
  option :verify_server_cert, type: :bool, default: true
103
105
 
@@ -123,7 +123,7 @@ module ElasticAPM
123
123
  sampled = trace_context.recorded?
124
124
  sample_rate = trace_context.tracestate.sample_rate
125
125
  else
126
- sampled = random_sample?(config)
126
+ sampled = random_sample?(config.transaction_sample_rate)
127
127
  sample_rate = sampled ? config.transaction_sample_rate : 0
128
128
  end
129
129
 
@@ -195,6 +195,19 @@ module ElasticAPM
195
195
  current_transaction
196
196
  end
197
197
  return unless transaction
198
+
199
+ unless trace_context
200
+ span_sample_rate = transaction_sample_rate_for_name(name, transaction.config)
201
+ # if the span sample rate is different from the transaction sample rate,
202
+ # we need to check if the span should be sampled
203
+ # and update the transaction's sample rate accordingly
204
+ if transaction.started_spans == 0 && span_sample_rate && span_sample_rate != transaction.sample_rate
205
+ span_sampled = random_sample?(span_sample_rate)
206
+ transaction.sampled = span_sampled
207
+ transaction.sample_rate = span_sampled ? span_sample_rate : 0
208
+ end
209
+ end
210
+
198
211
  return unless transaction.sampled?
199
212
  return unless transaction.inc_started_spans!
200
213
 
@@ -278,10 +291,17 @@ module ElasticAPM
278
291
  '>'
279
292
  end
280
293
 
294
+ def transaction_sample_rate_for_name(name, config)
295
+ return if !name || config.transaction_sample_rate_by_name.empty?
296
+ return unless config.transaction_sample_rate_by_name.key?(name)
297
+
298
+ config.transaction_sample_rate_by_name[name]
299
+ end
300
+
281
301
  private
282
302
 
283
- def random_sample?(config)
284
- rand <= config.transaction_sample_rate
303
+ def random_sample?(sample_rate)
304
+ rand <= sample_rate
285
305
  end
286
306
 
287
307
  def update_transaction_metrics(transaction)
@@ -49,7 +49,7 @@ module ElasticAPM
49
49
  context: context
50
50
  ) do |span|
51
51
  trace_context = span&.trace_context || transaction.trace_context
52
- trace_context.apply_headers { |key, value| req[key] = value }
52
+ trace_context.apply_headers { |key, value| req.headers[key] = value }
53
53
 
54
54
  result = super(req, options)
55
55
 
@@ -87,7 +87,15 @@ module ElasticAPM
87
87
  end
88
88
  # rubocop:enable Metrics/ParameterLists
89
89
 
90
- attr_accessor :name, :type, :result, :outcome
90
+ attr_accessor(
91
+ :name,
92
+ :type,
93
+ :result,
94
+ :outcome,
95
+ :sampled,
96
+ :sample_rate,
97
+ :started_spans
98
+ )
91
99
 
92
100
  attr_reader(
93
101
  :breakdown_metrics,
@@ -98,12 +106,11 @@ module ElasticAPM
98
106
  :framework_name,
99
107
  :notifications,
100
108
  :self_time,
101
- :sample_rate,
102
109
  :span_frames_min_duration,
103
- :started_spans,
104
110
  :timestamp,
105
111
  :trace_context,
106
- :transaction_max_spans
112
+ :transaction_max_spans,
113
+ :config
107
114
  )
108
115
 
109
116
  alias :collect_metrics? :collect_metrics
@@ -18,5 +18,5 @@
18
18
  # frozen_string_literal: true
19
19
 
20
20
  module ElasticAPM
21
- VERSION = '4.8.0'
21
+ VERSION = '4.9.0'
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: elastic-apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.8.0
4
+ version: 4.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikkel Malmberg
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2025-05-07 00:00:00.000000000 Z
12
+ date: 2026-06-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -32,6 +32,9 @@ dependencies:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '3.0'
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: '7.0'
35
38
  type: :runtime
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -39,6 +42,9 @@ dependencies:
39
42
  - - ">="
40
43
  - !ruby/object:Gem::Version
41
44
  version: '3.0'
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: '7.0'
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: ruby2_keywords
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -80,6 +86,7 @@ files:
80
86
  - ".ci/updatecli/values.d/apm-json-specs.yml"
81
87
  - ".ci/updatecli/values.d/scm.yml"
82
88
  - ".ci/updatecli/values.d/update-compose.yml"
89
+ - ".github/CODEOWNERS"
83
90
  - ".github/ISSUE_TEMPLATE/Bug_report.md"
84
91
  - ".github/ISSUE_TEMPLATE/Feature_request.md"
85
92
  - ".github/PULL_REQUEST_TEMPLATE.md"
@@ -90,7 +97,8 @@ files:
90
97
  - ".github/workflows/ci-docs.yml"
91
98
  - ".github/workflows/ci.yml"
92
99
  - ".github/workflows/docs-build.yml"
93
- - ".github/workflows/docs-cleanup.yml"
100
+ - ".github/workflows/docs-deploy.yml"
101
+ - ".github/workflows/docs-preview-cleanup.yml"
94
102
  - ".github/workflows/github-commands-comment.yml"
95
103
  - ".github/workflows/labeler.yml"
96
104
  - ".github/workflows/microbenchmark.yml"
@@ -109,7 +117,6 @@ files:
109
117
  - LICENSE
110
118
  - README.md
111
119
  - Rakefile
112
- - SECURITY.md
113
120
  - bench/.gitignore
114
121
  - bench/app.rb
115
122
  - bench/benchmark.rb
@@ -162,6 +169,7 @@ files:
162
169
  - lib/elastic_apm/config/options.rb
163
170
  - lib/elastic_apm/config/regexp_list.rb
164
171
  - lib/elastic_apm/config/round_float.rb
172
+ - lib/elastic_apm/config/round_float_hash_value.rb
165
173
  - lib/elastic_apm/config/server_info.rb
166
174
  - lib/elastic_apm/config/wildcard_pattern_list.rb
167
175
  - lib/elastic_apm/context.rb
@@ -298,6 +306,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
298
306
  - - ">="
299
307
  - !ruby/object:Gem::Version
300
308
  version: 2.3.0
309
+ - - "<"
310
+ - !ruby/object:Gem::Version
311
+ version: '4.0'
301
312
  required_rubygems_version: !ruby/object:Gem::Requirement
302
313
  requirements:
303
314
  - - ">="
@@ -1,14 +0,0 @@
1
- name: docs-cleanup
2
-
3
- on:
4
- pull_request_target:
5
- types:
6
- - closed
7
-
8
- jobs:
9
- docs-preview:
10
- uses: elastic/docs-builder/.github/workflows/preview-cleanup.yml@main
11
- permissions:
12
- contents: none
13
- id-token: write
14
- deployments: write
data/SECURITY.md DELETED
@@ -1,7 +0,0 @@
1
- # Security Policy
2
-
3
- Thanks for your interest in the security of our products.
4
- Our security policy can be found at [https://www.elastic.co/community/security](https://www.elastic.co/community/security).
5
-
6
- ## Reporting a Vulnerability
7
- Please send security vulnerability reports to security@elastic.co.