elastic-apm 4.7.0 → 4.7.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/updatecli.d/update-gherkin-specs.yml +10 -1
- data/.ci/updatecli.d/update-json-specs.yml +10 -1
- data/.ci/updatecli.d/update-specs.yml +10 -0
- data/.github/dependabot.yml +17 -1
- data/.github/workflows/README.md +58 -0
- data/CHANGELOG.asciidoc +13 -0
- data/Gemfile +12 -3
- data/lib/elastic_apm/context_builder.rb +3 -0
- data/lib/elastic_apm/metadata/cloud_info.rb +3 -4
- data/lib/elastic_apm/spies/action_dispatch.rb +11 -3
- data/lib/elastic_apm/spies/faraday.rb +8 -1
- data/lib/elastic_apm/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a42c0ce245df1d22209302a5047957fdc35532ef06e0834078200305377df50
|
4
|
+
data.tar.gz: 43cbfaca9d8b8d382bb95c42559a7a497e28926bf7067558741b57aa036842e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe8f8a3f6228788632530c5ee4ecfcf8ade01e199aa5cc06bc40e1af68a54f75266d5fcae91aa4d2357bb57fbd54c62f357b24a6e89b841ac449ae75199b1603
|
7
|
+
data.tar.gz: 2d3f2ece8d92db1a43475384e284fc82678ca5bf8352ce3b5d384e682dfbf55c6324886de1a94f95641861ce808cadaa1f057e7956c2b46fe4ab39db213fa0c1
|
@@ -23,7 +23,15 @@ sources:
|
|
23
23
|
transformers:
|
24
24
|
- findsubmatch:
|
25
25
|
pattern: "[0-9a-f]{40}"
|
26
|
-
|
26
|
+
pull_request:
|
27
|
+
kind: shell
|
28
|
+
dependson:
|
29
|
+
- sha
|
30
|
+
spec:
|
31
|
+
command: gh api /repos/elastic/apm/commits/{{ source "sha" }}/pulls --jq '.[].html_url'
|
32
|
+
environments:
|
33
|
+
- name: GITHUB_TOKEN
|
34
|
+
- name: PATH
|
27
35
|
api_key.feature:
|
28
36
|
kind: file
|
29
37
|
spec:
|
@@ -65,6 +73,7 @@ actions:
|
|
65
73
|
### Why
|
66
74
|
*Changeset*
|
67
75
|
* https://github.com/elastic/apm/commit/{{ source "sha" }}
|
76
|
+
* {{ source "pull_request" }}
|
68
77
|
|
69
78
|
targets:
|
70
79
|
api_key.feature:
|
@@ -23,7 +23,15 @@ sources:
|
|
23
23
|
transformers:
|
24
24
|
- findsubmatch:
|
25
25
|
pattern: "[0-9a-f]{40}"
|
26
|
-
|
26
|
+
pull_request:
|
27
|
+
kind: shell
|
28
|
+
dependson:
|
29
|
+
- sha
|
30
|
+
spec:
|
31
|
+
command: gh api /repos/elastic/apm/commits/{{ source "sha" }}/pulls --jq '.[].html_url'
|
32
|
+
environments:
|
33
|
+
- name: GITHUB_TOKEN
|
34
|
+
- name: PATH
|
27
35
|
container_metadata_discovery.json:
|
28
36
|
kind: file
|
29
37
|
spec:
|
@@ -68,6 +76,7 @@ actions:
|
|
68
76
|
### Why
|
69
77
|
*Changeset*
|
70
78
|
* https://github.com/elastic/apm/commit/{{ source "sha" }}
|
79
|
+
* {{ source "pull_request" }}
|
71
80
|
|
72
81
|
targets:
|
73
82
|
container_metadata_discovery.json:
|
@@ -23,6 +23,15 @@ sources:
|
|
23
23
|
transformers:
|
24
24
|
- findsubmatch:
|
25
25
|
pattern: "[0-9a-f]{40}"
|
26
|
+
pull_request:
|
27
|
+
kind: shell
|
28
|
+
dependson:
|
29
|
+
- sha
|
30
|
+
spec:
|
31
|
+
command: gh api /repos/elastic/apm-data/commits/{{ source "sha" }}/pulls --jq '.[].html_url'
|
32
|
+
environments:
|
33
|
+
- name: GITHUB_TOKEN
|
34
|
+
- name: PATH
|
26
35
|
error.json:
|
27
36
|
kind: file
|
28
37
|
spec:
|
@@ -64,6 +73,7 @@ actions:
|
|
64
73
|
### Why
|
65
74
|
*Changeset*
|
66
75
|
* https://github.com/elastic/apm-data/commit/{{ source "sha" }}
|
76
|
+
* {{ source "pull_request" }}
|
67
77
|
|
68
78
|
targets:
|
69
79
|
error.json:
|
data/.github/dependabot.yml
CHANGED
@@ -3,7 +3,9 @@ updates:
|
|
3
3
|
- package-ecosystem: bundler
|
4
4
|
directory: "/"
|
5
5
|
schedule:
|
6
|
-
interval:
|
6
|
+
interval: "weekly"
|
7
|
+
day: "sunday"
|
8
|
+
time: "22:00"
|
7
9
|
open-pull-requests-limit: 10
|
8
10
|
ignore:
|
9
11
|
- dependency-name: sucker_punch
|
@@ -14,3 +16,17 @@ updates:
|
|
14
16
|
- 1.8.10
|
15
17
|
- 1.8.8
|
16
18
|
- 1.8.9
|
19
|
+
|
20
|
+
# GitHub actions
|
21
|
+
- package-ecosystem: "github-actions"
|
22
|
+
directory: "/"
|
23
|
+
reviewers:
|
24
|
+
- "elastic/observablt-ci"
|
25
|
+
schedule:
|
26
|
+
interval: "weekly"
|
27
|
+
day: "sunday"
|
28
|
+
time: "22:00"
|
29
|
+
groups:
|
30
|
+
github-actions:
|
31
|
+
patterns:
|
32
|
+
- "*"
|
@@ -0,0 +1,58 @@
|
|
1
|
+
## CI/CD
|
2
|
+
|
3
|
+
There are 5 main stages that run on GitHub actions:
|
4
|
+
|
5
|
+
* Linting
|
6
|
+
* Test
|
7
|
+
* Test `main` versions
|
8
|
+
* Package
|
9
|
+
* Release
|
10
|
+
|
11
|
+
There are some other stages that run for every push on the main branches:
|
12
|
+
|
13
|
+
* [Microbenchmark](./microbenchmark.yml)
|
14
|
+
* [Snapshoty](./snapshoty.yml)
|
15
|
+
|
16
|
+
### Scenarios
|
17
|
+
|
18
|
+
* Compatibility matrix runs on branches, tags and PRs basis.
|
19
|
+
* Tests should be triggered on branch, tag and PR basis.
|
20
|
+
* Commits that are only affecting the docs files should not trigger any test or similar stages that are not required.
|
21
|
+
* Automated release in the CI gets triggered when a tag release is created.
|
22
|
+
* **This is not the case yet**, but if Github secrets are required then Pull Requests from forked repositories won't run any build accessing those secrets. If needed, then create a feature branch.
|
23
|
+
|
24
|
+
### Compatibility matrix
|
25
|
+
|
26
|
+
Ruby agent supports compatibility to different ruby versions and frameworks, those are defined in:
|
27
|
+
|
28
|
+
* [frameworks](../../.ci/.framework.yml) for all the PRs.
|
29
|
+
* [frameworks](../../.ci/.main_framework.yml) for all the PRs using the `main` branches.
|
30
|
+
* Ruby [versions](../../.ci/.ruby.yml) for all the `*nix` builds.
|
31
|
+
* [Exclude list](../../.ci/.exclude.yml) for the above entries.
|
32
|
+
|
33
|
+
### How to interact with the CI?
|
34
|
+
|
35
|
+
#### On a PR basis
|
36
|
+
|
37
|
+
Once a PR has been opened then there are two different ways you can trigger builds in the CI:
|
38
|
+
|
39
|
+
1. Commit based
|
40
|
+
1. UI based, any Elasticians can force a build through the GitHub UI
|
41
|
+
|
42
|
+
#### Branches
|
43
|
+
|
44
|
+
Every time there is a merge to main or any release branches the whole workflow will compile and test every entry in the compatibility matrix for Linux.
|
45
|
+
|
46
|
+
### Release process
|
47
|
+
|
48
|
+
This process has been fully automated and it gets triggered when a tag release has been created.
|
49
|
+
The tag release follows the naming convention: `v.<major>.<minor>.<patch>`, where `<major>`, `<minor>` and `<patch>`.
|
50
|
+
|
51
|
+
### OpenTelemetry
|
52
|
+
|
53
|
+
There is a GitHub workflow in charge to populate what the workflow run in terms of jobs and steps. Those details can be seen in [here](https://ela.st/oblt-ci-cd-stats) (**NOTE**: only available for Elasticians).
|
54
|
+
|
55
|
+
## Bump automation
|
56
|
+
|
57
|
+
[updatecli](https://www.updatecli.io/) is the tool we use to automatically update the specs
|
58
|
+
the [APM agents](./updatecli.yml) use.
|
data/CHANGELOG.asciidoc
CHANGED
@@ -34,6 +34,19 @@ endif::[]
|
|
34
34
|
[[release-notes-4.x]]
|
35
35
|
=== Ruby Agent version 4.x
|
36
36
|
|
37
|
+
[[release-notes-4.7.1]
|
38
|
+
==== 4.7.1
|
39
|
+
|
40
|
+
[float]
|
41
|
+
===== Fixed
|
42
|
+
- Skip capturing cookie header when it's set separately {pull}1405[#1405]
|
43
|
+
- Changes/fixes to metadata.cloud.* fields collected for GCP {pull}1415[#1415]
|
44
|
+
- Pin version of bigdecimal for ruby 2.4 {pull}1417[#1417]
|
45
|
+
- Use response method on Faraday error for older versions of the library {pull}1419[#1419]
|
46
|
+
- Fix ActionDispatchSpy#render_exception for Rails 7.1 {pull}1423[#1423]
|
47
|
+
- Use graphql < 2.1 when Ruby < 2.7 {pull}1425[#1425]
|
48
|
+
- Guard against various Faraday exception response formats {pull}1428[#1428]
|
49
|
+
|
37
50
|
[[release-notes-4.7.0]]
|
38
51
|
==== 4.7.0
|
39
52
|
|
data/Gemfile
CHANGED
@@ -41,9 +41,14 @@ gem 'ecs-logging', require: 'ecs_logging/logger'
|
|
41
41
|
gem 'elasticsearch', require: nil
|
42
42
|
gem 'fakeredis', require: nil
|
43
43
|
gem 'faraday', require: nil
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
if RUBY_VERSION < '2.7'
|
45
|
+
gem 'graphql', '< 2.1', require: nil
|
46
|
+
else
|
47
|
+
gem 'graphql', require: nil
|
48
|
+
end
|
49
|
+
if !defined?(JRUBY_VERSION)
|
50
|
+
gem 'google-protobuf', '< 3.12' if RUBY_VERSION < '2.5'
|
51
|
+
gem 'google-protobuf', '< 3.23' if RUBY_VERSION < '2.7' && RUBY_VERSION > '2.5'
|
47
52
|
end
|
48
53
|
gem 'grpc' if !defined?(JRUBY_VERSION) && RUBY_VERSION < '3.0'
|
49
54
|
gem 'json'
|
@@ -131,6 +136,10 @@ if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.5.0') && !defined
|
|
131
136
|
gem 'sneakers', github: 'jondot/sneakers', ref: 'd761dfe1493', require: nil
|
132
137
|
end
|
133
138
|
|
139
|
+
if Gem::Version.create(RUBY_VERSION) <= Gem::Version.create('2.5.0')
|
140
|
+
gem 'bigdecimal', '1.3.5'
|
141
|
+
end
|
142
|
+
|
134
143
|
group :bench do
|
135
144
|
gem 'ruby-prof', require: nil, platforms: %i[ruby]
|
136
145
|
gem 'stackprof', require: nil, platforms: %i[ruby]
|
@@ -97,13 +97,12 @@ module ElasticAPM
|
|
97
97
|
zone = metadata["instance"]["zone"]&.split("/")&.at(-1)
|
98
98
|
|
99
99
|
self.provider = "gcp"
|
100
|
-
self.instance_id = metadata["instance"]["id"]
|
100
|
+
self.instance_id = metadata["instance"]["id"].to_s
|
101
101
|
self.instance_name = metadata["instance"]["name"]
|
102
|
-
self.project_id = metadata["project"]["
|
103
|
-
self.project_name = metadata["project"]["projectId"]
|
102
|
+
self.project_id = metadata["project"]["projectId"]
|
104
103
|
self.availability_zone = zone
|
105
104
|
self.region = zone.split("-")[0..-2].join("-")
|
106
|
-
self.machine_type = metadata["instance"]["machineType"]
|
105
|
+
self.machine_type = metadata["instance"]["machineType"].split("/")[-1]
|
107
106
|
rescue HTTP::TimeoutError, HTTP::ConnectionError
|
108
107
|
nil
|
109
108
|
end
|
@@ -24,11 +24,19 @@ module ElasticAPM
|
|
24
24
|
class ActionDispatchSpy
|
25
25
|
# @api private
|
26
26
|
module Ext
|
27
|
-
def render_exception(
|
28
|
-
context = ElasticAPM.build_context(
|
27
|
+
def render_exception(request, exception_or_wrapper)
|
28
|
+
context = ElasticAPM.build_context(
|
29
|
+
rack_env: request, for_type: :error
|
30
|
+
)
|
31
|
+
exception =
|
32
|
+
if exception_or_wrapper.is_a?(ActionDispatch::ExceptionWrapper)
|
33
|
+
exception_or_wrapper.exception
|
34
|
+
else
|
35
|
+
exception_or_wrapper
|
36
|
+
end
|
29
37
|
ElasticAPM.report(exception, context: context, handled: false)
|
30
38
|
|
31
|
-
super(
|
39
|
+
super(request, exception_or_wrapper)
|
32
40
|
end
|
33
41
|
end
|
34
42
|
|
@@ -109,7 +109,14 @@ module ElasticAPM
|
|
109
109
|
yield req if block
|
110
110
|
end
|
111
111
|
rescue Faraday::ClientError, Faraday::ServerError => e # Faraday::Response::RaiseError
|
112
|
-
status =
|
112
|
+
status =
|
113
|
+
if e.respond_to?(:response_status)
|
114
|
+
e.response_status
|
115
|
+
elsif e.response && e.response.respond_to?(:status)
|
116
|
+
e.response.status
|
117
|
+
elsif e.response && e.response.respond_to?(:fetch)
|
118
|
+
e.response[:status]
|
119
|
+
end
|
113
120
|
http = span&.context&.http
|
114
121
|
if http && status
|
115
122
|
http.status_code = status.to_s
|
data/lib/elastic_apm/version.rb
CHANGED
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.7.
|
4
|
+
version: 4.7.1
|
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:
|
12
|
+
date: 2024-01-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: concurrent-ruby
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- ".github/PULL_REQUEST_TEMPLATE.md"
|
85
85
|
- ".github/dependabot.yml"
|
86
86
|
- ".github/labeler-config.yml"
|
87
|
+
- ".github/workflows/README.md"
|
87
88
|
- ".github/workflows/addToProject.yml"
|
88
89
|
- ".github/workflows/ci-docs.yml"
|
89
90
|
- ".github/workflows/ci.yml"
|