elastic-apm 4.5.1 → 4.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ci/.jenkins_exclude.yml +73 -16
- data/.ci/.jenkins_framework.yml +3 -2
- data/.ci/.jenkins_ruby.yml +1 -1
- data/.ci/.jenkins_ruby_benchmarks.yml +6 -0
- data/.ci/Jenkinsfile +35 -26
- data/.ci/docker/jruby/11-jdk/Dockerfile +3 -0
- data/.ci/docker/jruby/12-jdk/Dockerfile +3 -0
- data/.ci/docker/jruby/13-jdk/Dockerfile +3 -0
- data/.ci/docker/jruby/7-jdk/Dockerfile +3 -0
- data/.ci/docker/jruby/8-jdk/Dockerfile +3 -0
- data/.ci/snapshoty.yml +34 -0
- data/.ci/update-specs.yml +108 -0
- data/.github/workflows/update-specs.yml +30 -0
- data/CHANGELOG.asciidoc +34 -0
- data/Gemfile +10 -3
- data/bench/report.rb +1 -1
- data/docker-compose.yml +6 -0
- data/docs/configuration.asciidoc +6 -4
- data/elastic-apm.gemspec +3 -2
- data/lib/elastic_apm/central_config.rb +5 -0
- data/lib/elastic_apm/config/server_info.rb +50 -0
- data/lib/elastic_apm/config.rb +25 -4
- data/lib/elastic_apm/error.rb +2 -1
- data/lib/elastic_apm/error_builder.rb +1 -0
- data/lib/elastic_apm/instrumenter.rb +4 -2
- data/lib/elastic_apm/metadata/system_info/container_info.rb +4 -3
- data/lib/elastic_apm/metadata/system_info.rb +1 -1
- data/lib/elastic_apm/span/context/links.rb +32 -0
- data/lib/elastic_apm/span/context/service.rb +55 -0
- data/lib/elastic_apm/span/context.rb +19 -3
- data/lib/elastic_apm/span.rb +3 -0
- data/lib/elastic_apm/span_helpers.rb +2 -2
- data/lib/elastic_apm/spies/faraday.rb +23 -0
- data/lib/elastic_apm/spies/racecar.rb +77 -0
- data/lib/elastic_apm/spies/redis.rb +1 -1
- data/lib/elastic_apm/spies/sequel.rb +9 -0
- data/lib/elastic_apm/spies/sqs.rb +1 -0
- data/lib/elastic_apm/trace_context/tracestate.rb +4 -2
- data/lib/elastic_apm/trace_context.rb +1 -1
- data/lib/elastic_apm/transport/connection/http.rb +9 -3
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +25 -0
- data/lib/elastic_apm/version.rb +1 -1
- data/lib/elastic_apm.rb +1 -0
- metadata +26 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49b381ca37784473aef9bf3462b37eb77b3d263dfd402adf929c866153f81af3
|
4
|
+
data.tar.gz: 51f9290d7cace3428273171484ab6f6526e1309bdb2d27a101d9e74a17f9f619
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55c315cf52ce113f032b471f64d6662d4e5b9d85577bf228913da82c3f114cdc1846c70a8078de2fc7e1362c89f2cff2559b6e6b046007667feeb0c194223e75
|
7
|
+
data.tar.gz: 9962145d110f552e1beb449e721389cefe17bb862b3e255f48ef236170fa04523c29654f11fb3e1cc89cc5b8f69e14f0678cab51431b86a501ec016631278992
|
data/.ci/.jenkins_exclude.yml
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
exclude:
|
2
2
|
# Ruby 2.4
|
3
|
-
# Only
|
3
|
+
# Only test on rails-5.2, sinatra-1.4
|
4
|
+
- RUBY_VERSION: ruby:2.4
|
5
|
+
FRAMEWORK: rails-7.0
|
4
6
|
- RUBY_VERSION: ruby:2.4
|
5
7
|
FRAMEWORK: rails-6.1
|
6
8
|
- RUBY_VERSION: ruby:2.4
|
@@ -8,11 +10,11 @@ exclude:
|
|
8
10
|
- RUBY_VERSION: ruby:2.4
|
9
11
|
FRAMEWORK: rails-4.2
|
10
12
|
- RUBY_VERSION: ruby:2.4
|
11
|
-
FRAMEWORK: sinatra-
|
13
|
+
FRAMEWORK: sinatra-2.2
|
12
14
|
- RUBY_VERSION: ruby:2.4
|
13
15
|
FRAMEWORK: grape-1.6
|
14
16
|
- RUBY_VERSION: ruby:2.4
|
15
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
17
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.0
|
16
18
|
- RUBY_VERSION: ruby:2.4
|
17
19
|
FRAMEWORK: rails-main
|
18
20
|
- RUBY_VERSION: ruby:2.4
|
@@ -21,7 +23,9 @@ exclude:
|
|
21
23
|
FRAMEWORK: grape-master
|
22
24
|
|
23
25
|
# rails-4.2 exclusions
|
24
|
-
# Only test on ruby 2.6, 2.5, 2.4
|
26
|
+
# Only test on ruby 2.6, 2.5, 2.4
|
27
|
+
- RUBY_VERSION: ruby:3.1
|
28
|
+
FRAMEWORK: rails-4.2
|
25
29
|
- RUBY_VERSION: ruby:3.0
|
26
30
|
FRAMEWORK: rails-4.2
|
27
31
|
- RUBY_VERSION: ruby:2.7
|
@@ -35,6 +39,8 @@ exclude:
|
|
35
39
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
36
40
|
FRAMEWORK: rails-4.2
|
37
41
|
# sinatra-1.4 exclusions
|
42
|
+
- RUBY_VERSION: ruby:3.1
|
43
|
+
FRAMEWORK: sinatra-1.4
|
38
44
|
- RUBY_VERSION: ruby:3.0
|
39
45
|
FRAMEWORK: sinatra-1.4
|
40
46
|
- RUBY_VERSION: ruby:2.7
|
@@ -55,7 +61,11 @@ exclude:
|
|
55
61
|
- RUBY_VERSION: ruby:2.4
|
56
62
|
FRAMEWORK: rails-6.0
|
57
63
|
|
58
|
-
# Only test rails master on ruby
|
64
|
+
# Only test rails master on ruby 3.1
|
65
|
+
- RUBY_VERSION: ruby:3.0
|
66
|
+
FRAMEWORK: rails-main
|
67
|
+
- RUBY_VERSION: ruby:2.7
|
68
|
+
FRAMEWORK: rails-main
|
59
69
|
- RUBY_VERSION: ruby:2.6
|
60
70
|
FRAMEWORK: rails-main
|
61
71
|
- RUBY_VERSION: ruby:2.5
|
@@ -71,7 +81,25 @@ exclude:
|
|
71
81
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
72
82
|
FRAMEWORK: rails-main
|
73
83
|
|
74
|
-
# Only test
|
84
|
+
# Only test rails 7.0 on ruby >= 2.7
|
85
|
+
- RUBY_VERSION: ruby:2.6
|
86
|
+
FRAMEWORK: rails-7.0
|
87
|
+
- RUBY_VERSION: ruby:2.5
|
88
|
+
FRAMEWORK: rails-7.0
|
89
|
+
- RUBY_VERSION: ruby:2.4
|
90
|
+
FRAMEWORK: rails-7.0
|
91
|
+
- RUBY_VERSION: jruby:9.2
|
92
|
+
FRAMEWORK: rails-7.0
|
93
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
94
|
+
FRAMEWORK: rails-7.0
|
95
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
96
|
+
FRAMEWORK: rails-7.0
|
97
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
98
|
+
FRAMEWORK: rails-7.0
|
99
|
+
|
100
|
+
# Only test sinatra master on ruby 2.7 and ruby 3.1
|
101
|
+
- RUBY_VERSION: ruby:3.0
|
102
|
+
FRAMEWORK: sinatra-master
|
75
103
|
- RUBY_VERSION: ruby:2.6
|
76
104
|
FRAMEWORK: sinatra-master
|
77
105
|
- RUBY_VERSION: ruby:2.5
|
@@ -104,31 +132,60 @@ exclude:
|
|
104
132
|
FRAMEWORK: grape-master
|
105
133
|
|
106
134
|
# grape 1.5 doesn't support ruby 3.0
|
135
|
+
- RUBY_VERSION: ruby:3.1
|
136
|
+
FRAMEWORK: grape-1.6
|
137
|
+
- RUBY_VERSION: ruby:3.1
|
138
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
139
|
+
- RUBY_VERSION: ruby:3.1
|
140
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
107
141
|
- RUBY_VERSION: ruby:3.0
|
108
142
|
FRAMEWORK: grape-1.6
|
109
143
|
- RUBY_VERSION: ruby:3.0
|
110
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
144
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
111
145
|
|
112
|
-
# only test ruby 3.0 with rails 6.0 and rails 6.1
|
146
|
+
# only test ruby >= 3.0 with rails 6.0 and rails 6.1
|
147
|
+
- RUBY_VERSION: ruby:3.1
|
148
|
+
FRAMEWORK: rails-5.2
|
149
|
+
- RUBY_VERSION: ruby:3.1
|
150
|
+
FRAMEWORK: rails-5.1
|
113
151
|
- RUBY_VERSION: ruby:3.0
|
114
152
|
FRAMEWORK: rails-5.2
|
115
153
|
- RUBY_VERSION: ruby:3.0
|
116
154
|
FRAMEWORK: rails-5.1
|
117
155
|
|
118
156
|
# Unsupported
|
157
|
+
# Ruby 2.6
|
119
158
|
- RUBY_VERSION: ruby:2.6
|
120
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
159
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
160
|
+
- RUBY_VERSION: ruby:2.6
|
161
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
162
|
+
# Ruby 2.5
|
163
|
+
- RUBY_VERSION: ruby:2.5
|
164
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
121
165
|
- RUBY_VERSION: ruby:2.5
|
122
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
166
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
167
|
+
# Ruby 2.4
|
123
168
|
- RUBY_VERSION: ruby:2.4
|
124
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
169
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
125
170
|
- RUBY_VERSION: ruby:2.4
|
126
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
171
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
172
|
+
# JRuby 9.2
|
173
|
+
- RUBY_VERSION: jruby:9.2
|
174
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
127
175
|
- RUBY_VERSION: jruby:9.2
|
128
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
176
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
177
|
+
# JRuby 9.2-13-jdk
|
129
178
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
130
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
179
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
180
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-13-jdk
|
181
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
182
|
+
# JRuby 9.2-11-jdk
|
183
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
184
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
131
185
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-11-jdk
|
132
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
186
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
187
|
+
# JRuby 9.2-8-jdk
|
188
|
+
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
189
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-6.1
|
133
190
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.2-8-jdk
|
134
|
-
FRAMEWORK: grape-1.6,sinatra-2.
|
191
|
+
FRAMEWORK: grape-1.6,sinatra-2.2,rails-7.0
|
data/.ci/.jenkins_framework.yml
CHANGED
data/.ci/.jenkins_ruby.yml
CHANGED
data/.ci/Jenkinsfile
CHANGED
@@ -21,12 +21,11 @@ pipeline {
|
|
21
21
|
CODECOV_SECRET = 'secret/apm-team/ci/apm-agent-ruby-codecov'
|
22
22
|
DOCKER_REGISTRY = 'docker.elastic.co'
|
23
23
|
DOCKER_SECRET = 'secret/apm-team/ci/docker-registry/prod'
|
24
|
-
GITHUB_CHECK_ITS_NAME = 'Integration Tests'
|
25
|
-
ITS_PIPELINE = 'apm-integration-tests-selector-mbp/main'
|
26
24
|
RELEASE_SECRET = 'secret/apm-team/ci/apm-agent-ruby-rubygems-release'
|
27
25
|
OPBEANS_REPO = 'opbeans-ruby'
|
28
26
|
REFERENCE_REPO = '/var/lib/jenkins/.git-references/apm-agent-ruby.git'
|
29
27
|
SLACK_CHANNEL = '#apm-agent-ruby'
|
28
|
+
RUBY_DOCKER_TAG = 'ruby:2.6'
|
30
29
|
}
|
31
30
|
options {
|
32
31
|
timeout(time: 2, unit: 'HOURS')
|
@@ -123,24 +122,36 @@ pipeline {
|
|
123
122
|
}
|
124
123
|
}
|
125
124
|
}
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
125
|
+
}
|
126
|
+
}
|
127
|
+
stage('Publish snapshot packages') {
|
128
|
+
options { skipDefaultCheckout() }
|
129
|
+
environment {
|
130
|
+
PATH = "${env.WORKSPACE}/.local/bin:${env.WORKSPACE}/bin:${env.PATH}"
|
131
|
+
BUCKET_NAME = 'oblt-artifacts'
|
132
|
+
DOCKER_REGISTRY = 'docker.elastic.co'
|
133
|
+
DOCKER_REGISTRY_SECRET = 'secret/observability-team/ci/docker-registry/prod'
|
134
|
+
GCS_ACCOUNT_SECRET = 'secret/observability-team/ci/snapshoty'
|
135
|
+
}
|
136
|
+
when { branch 'main' }
|
137
|
+
steps {
|
138
|
+
withGithubNotify(context: 'Publish snapshot packages') {
|
139
|
+
deleteDir()
|
140
|
+
unstash 'source'
|
141
|
+
dir(env.BASE_DIR) {
|
142
|
+
script {
|
143
|
+
docker.image(env.RUBY_DOCKER_TAG).inside() {
|
144
|
+
sh(label: 'install build system', script: 'gem install rake yard rspec')
|
145
|
+
sh(label: 'create gem', script: 'rake build')
|
146
|
+
}
|
147
|
+
snapshoty(
|
148
|
+
bucket: env.BUCKET_NAME,
|
149
|
+
gcsAccountSecret: env.GCS_ACCOUNT_SECRET,
|
150
|
+
dockerRegistry: env.DOCKER_REGISTRY,
|
151
|
+
dockerSecret: env.DOCKER_REGISTRY_SECRET
|
152
|
+
)
|
133
153
|
}
|
134
154
|
}
|
135
|
-
steps {
|
136
|
-
githubNotify(context: "${env.GITHUB_CHECK_ITS_NAME}", description: "${env.GITHUB_CHECK_ITS_NAME} ...", status: 'PENDING', targetUrl: "${env.JENKINS_URL}search/?q=${env.ITS_PIPELINE.replaceAll('/','+')}")
|
137
|
-
build(job: env.ITS_PIPELINE, propagate: false, wait: true,
|
138
|
-
parameters: [ string(name: 'INTEGRATION_TEST', value: 'Ruby'),
|
139
|
-
string(name: 'BUILD_OPTS', value: "--ruby-agent-version ${env.GIT_BASE_COMMIT} --ruby-agent-version-state ${env.GIT_BUILD_CAUSE} --ruby-agent-repo ${env.CHANGE_FORK?.trim() ?: 'elastic'}/${env.REPO} --opbeans-ruby-agent-branch ${env.GIT_BASE_COMMIT}"),
|
140
|
-
string(name: 'GITHUB_CHECK_NAME', value: env.GITHUB_CHECK_ITS_NAME),
|
141
|
-
string(name: 'GITHUB_CHECK_REPO', value: env.REPO),
|
142
|
-
string(name: 'GITHUB_CHECK_SHA1', value: env.GIT_BASE_COMMIT) ])
|
143
|
-
}
|
144
155
|
}
|
145
156
|
}
|
146
157
|
}
|
@@ -162,13 +173,13 @@ pipeline {
|
|
162
173
|
}
|
163
174
|
stages {
|
164
175
|
stage('Clean Workspace') {
|
165
|
-
agent { label '
|
176
|
+
agent { label 'microbenchmarks-pool' }
|
166
177
|
steps {
|
167
178
|
echo "Cleaning Workspace"
|
168
179
|
}
|
169
180
|
post {
|
170
181
|
always {
|
171
|
-
cleanWs()
|
182
|
+
cleanWs(notFailBuild: true)
|
172
183
|
}
|
173
184
|
}
|
174
185
|
}
|
@@ -183,7 +194,7 @@ pipeline {
|
|
183
194
|
unstash 'source'
|
184
195
|
dir("${BASE_DIR}"){
|
185
196
|
script {
|
186
|
-
def versions = readYaml(file: ".ci/.
|
197
|
+
def versions = readYaml(file: ".ci/.jenkins_ruby_benchmarks.yml")
|
187
198
|
def benchmarkTask = [:]
|
188
199
|
versions['RUBY_VERSION'].each{ v ->
|
189
200
|
benchmarkTask[v] = runBenchmark(v)
|
@@ -199,7 +210,6 @@ pipeline {
|
|
199
210
|
stage('Release') {
|
200
211
|
options { skipDefaultCheckout() }
|
201
212
|
environment {
|
202
|
-
RUBY_DOCKER_TAG = 'ruby:2.6'
|
203
213
|
HOME = '/var/lib/jenkins'
|
204
214
|
}
|
205
215
|
when {
|
@@ -283,7 +293,7 @@ pipeline {
|
|
283
293
|
*/
|
284
294
|
def runBenchmark(version){
|
285
295
|
return {
|
286
|
-
node('
|
296
|
+
node('microbenchmarks-pool'){
|
287
297
|
// Transform the versions like:
|
288
298
|
// - docker.elastic.co/observability-ci/jruby:9.2-12-jdk to jruby-9.2-12-jdk
|
289
299
|
// - jruby:9.1 to jruby-9.1
|
@@ -299,8 +309,6 @@ def runBenchmark(version){
|
|
299
309
|
}
|
300
310
|
try{
|
301
311
|
sh """./spec/scripts/benchmarks.sh "${version}" "${REFERENCE_REPO}" """
|
302
|
-
} catch(e){
|
303
|
-
throw e
|
304
312
|
} finally {
|
305
313
|
archiveArtifacts(
|
306
314
|
allowEmptyArchive: true,
|
@@ -308,6 +316,7 @@ def runBenchmark(version){
|
|
308
316
|
onlyIfSuccessful: false)
|
309
317
|
sendBenchmarks(file: "benchmark-${transformedVersion}.bulk",
|
310
318
|
index: "benchmark-ruby", archive: true)
|
319
|
+
cleanWs(notFailBuild: true)
|
311
320
|
}
|
312
321
|
}
|
313
322
|
}
|
@@ -411,7 +420,7 @@ def convergeCoverage() {
|
|
411
420
|
|
412
421
|
def prepareRelease(Closure body){
|
413
422
|
dir("${env.BASE_DIR}"){
|
414
|
-
docker.image(
|
423
|
+
docker.image(env.RUBY_DOCKER_TAG).inside('-v ${REFERENCE_REPO}:${REFERENCE_REPO} -v /etc/passwd:/etc/passwd -v ${HOME}/.ssh:${HOME}/.ssh') {
|
415
424
|
withEnv(["HOME=${env.WORKSPACE}/${env.BASE_DIR ?: ''}"]) {
|
416
425
|
rubygemsLogin.withApi(secret: "${env.RELEASE_SECRET}") {
|
417
426
|
withGitRelease(credentialsId: '2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken') {
|
data/.ci/snapshoty.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
# Version of configuration to use
|
4
|
+
version: '1.0'
|
5
|
+
|
6
|
+
# You can define a Google Cloud Account to use
|
7
|
+
account:
|
8
|
+
# Project id of the service account
|
9
|
+
project: '${GCS_PROJECT}'
|
10
|
+
# Private key id of the service account
|
11
|
+
private_key_id: '${GCS_PRIVATE_KEY_ID}'
|
12
|
+
# Private key of the service account
|
13
|
+
private_key: '${GCS_PRIVATE_KEY}'
|
14
|
+
# Email of the service account
|
15
|
+
client_email: '${GCS_CLIENT_EMAIL}'
|
16
|
+
# URI token
|
17
|
+
token_uri: 'https://oauth2.googleapis.com/token'
|
18
|
+
|
19
|
+
# List of artifacts
|
20
|
+
artifacts:
|
21
|
+
# Path to use for artifacts discovery
|
22
|
+
- path: './pkg'
|
23
|
+
# Files pattern to match
|
24
|
+
files_pattern: 'elastic-apm-(?P<app_version>\d+\.\d+\.\d+)\.gem'
|
25
|
+
# File layout on GCS bucket
|
26
|
+
output_pattern: '{project}/{jenkins_branch_name}/elastic-apm-ruby-{app_version}-{jenkins_git_commit_short}.gem'
|
27
|
+
# List of metadata processors to use.
|
28
|
+
metadata:
|
29
|
+
# Define static custom metadata
|
30
|
+
- name: 'custom'
|
31
|
+
data:
|
32
|
+
project: 'apm-agent-ruby'
|
33
|
+
# Add jenkins metadata
|
34
|
+
- name: 'jenkins'
|
@@ -0,0 +1,108 @@
|
|
1
|
+
name: update-specs
|
2
|
+
|
3
|
+
title: synchronize schema specs
|
4
|
+
|
5
|
+
scms:
|
6
|
+
default:
|
7
|
+
kind: github
|
8
|
+
spec:
|
9
|
+
user: '{{ requiredEnv "GIT_USER" }}'
|
10
|
+
email: '{{ requiredEnv "GIT_EMAIL" }}'
|
11
|
+
owner: elastic
|
12
|
+
repository: apm-agent-ruby
|
13
|
+
token: '{{ requiredEnv "GITHUB_TOKEN" }}'
|
14
|
+
username: '{{ requiredEnv "GIT_USER" }}'
|
15
|
+
branch: main
|
16
|
+
|
17
|
+
sources:
|
18
|
+
sha:
|
19
|
+
kind: file
|
20
|
+
spec:
|
21
|
+
file: 'https://github.com/elastic/apm-data/commit/main.patch'
|
22
|
+
matchpattern: "^From\\s([0-9a-f]{40})\\s"
|
23
|
+
transformers:
|
24
|
+
- findsubmatch:
|
25
|
+
pattern: "[0-9a-f]{40}"
|
26
|
+
error.json:
|
27
|
+
kind: file
|
28
|
+
spec:
|
29
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/error.json
|
30
|
+
metadata.json:
|
31
|
+
kind: file
|
32
|
+
spec:
|
33
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/metadata.json
|
34
|
+
metricset.json:
|
35
|
+
kind: file
|
36
|
+
spec:
|
37
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/metricset.json
|
38
|
+
span.json:
|
39
|
+
kind: file
|
40
|
+
spec:
|
41
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/span.json
|
42
|
+
transaction.json:
|
43
|
+
kind: file
|
44
|
+
spec:
|
45
|
+
file: https://raw.githubusercontent.com/elastic/apm-data/main/input/elasticapm/docs/spec/v2/transaction.json
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
actions:
|
52
|
+
pr:
|
53
|
+
kind: "github/pullrequest"
|
54
|
+
scmid: default
|
55
|
+
sourceid: sha
|
56
|
+
spec:
|
57
|
+
automerge: false
|
58
|
+
draft: false
|
59
|
+
labels:
|
60
|
+
- "automation"
|
61
|
+
description: |-
|
62
|
+
### What
|
63
|
+
APM agent json schema automatic sync
|
64
|
+
### Why
|
65
|
+
*Changeset*
|
66
|
+
* https://github.com/elastic/apm-data/commit/{{ source "sha" }}
|
67
|
+
|
68
|
+
targets:
|
69
|
+
error.json:
|
70
|
+
name: error.json
|
71
|
+
scmid: default
|
72
|
+
sourceid: error.json
|
73
|
+
kind: file
|
74
|
+
spec:
|
75
|
+
file: spec/fixtures/error.json
|
76
|
+
forcecreate: true
|
77
|
+
metadata.json:
|
78
|
+
name: metadata.json
|
79
|
+
scmid: default
|
80
|
+
sourceid: metadata.json
|
81
|
+
kind: file
|
82
|
+
spec:
|
83
|
+
file: spec/fixtures/metadata.json
|
84
|
+
forcecreate: true
|
85
|
+
metricset.json:
|
86
|
+
name: metricset.json
|
87
|
+
scmid: default
|
88
|
+
sourceid: metricset.json
|
89
|
+
kind: file
|
90
|
+
spec:
|
91
|
+
file: spec/fixtures/metricset.json
|
92
|
+
forcecreate: true
|
93
|
+
span.json:
|
94
|
+
name: span.json
|
95
|
+
scmid: default
|
96
|
+
sourceid: span.json
|
97
|
+
kind: file
|
98
|
+
spec:
|
99
|
+
file: spec/fixtures/span.json
|
100
|
+
forcecreate: true
|
101
|
+
transaction.json:
|
102
|
+
name: transaction.json
|
103
|
+
scmid: default
|
104
|
+
sourceid: transaction.json
|
105
|
+
kind: file
|
106
|
+
spec:
|
107
|
+
file: spec/fixtures/transaction.json
|
108
|
+
forcecreate: true
|
@@ -0,0 +1,30 @@
|
|
1
|
+
name: update-specs
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch: ~
|
5
|
+
schedule:
|
6
|
+
- cron: '0 6 * * *'
|
7
|
+
|
8
|
+
permissions:
|
9
|
+
contents: read
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
bump:
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
steps:
|
15
|
+
- uses: actions/checkout@v3
|
16
|
+
- uses: elastic/apm-pipeline-library/.github/actions/updatecli@current
|
17
|
+
env:
|
18
|
+
BRANCH_NAME: ${{ github.ref_name }}
|
19
|
+
with:
|
20
|
+
vaultUrl: ${{ secrets.VAULT_ADDR }}
|
21
|
+
vaultRoleId: ${{ secrets.VAULT_ROLE_ID }}
|
22
|
+
vaultSecretId: ${{ secrets.VAULT_SECRET_ID }}
|
23
|
+
pipeline: ./.ci/update-specs.yml
|
24
|
+
- if: failure()
|
25
|
+
uses: elastic/apm-pipeline-library/.github/actions/notify-build-status@current
|
26
|
+
with:
|
27
|
+
vaultUrl: ${{ secrets.VAULT_ADDR }}
|
28
|
+
vaultRoleId: ${{ secrets.VAULT_ROLE_ID }}
|
29
|
+
vaultSecretId: ${{ secrets.VAULT_SECRET_ID }}
|
30
|
+
slackChannel: "#apm-agent-ruby"
|
data/CHANGELOG.asciidoc
CHANGED
@@ -35,6 +35,40 @@ endif::[]
|
|
35
35
|
[[release-notes-4.x]]
|
36
36
|
=== Ruby Agent version 4.x
|
37
37
|
|
38
|
+
[[release-notes-4.6.1]]
|
39
|
+
==== 4.6.1
|
40
|
+
|
41
|
+
[float]
|
42
|
+
===== Fixed
|
43
|
+
|
44
|
+
- Fix growing number of open file descriptors when HTTP request to APM is never sent {pull}1351[#1351]
|
45
|
+
- Fix setting span http status code when Faraday Middleware is used {pull}1368[#1368]
|
46
|
+
- Handle whitespace when splitting tracestate entries {pull}1353[#1353]
|
47
|
+
|
48
|
+
[[release-notes-4.6.0]]
|
49
|
+
==== 4.6.0
|
50
|
+
|
51
|
+
[float]
|
52
|
+
===== Added
|
53
|
+
|
54
|
+
- Added transaction_name to reported error to allow grouping by transaction name {pull}1267[#1267]
|
55
|
+
- Added ability to query server for version (useful in the future) {pull}1278[#1278]
|
56
|
+
- Added instrumentation for https://github.com/zendesk/racecar/ Racecar Kafka library {pull}1284[#1284]
|
57
|
+
|
58
|
+
===== Changed
|
59
|
+
|
60
|
+
- Expanded filtering to sanitize any key that contains the string 'auth' {pull}1266[#1266]
|
61
|
+
- Rename `log_ecs_formatting` option to `log_ecs_reformatting`, deprecate old option name {pull}1248[#1248]
|
62
|
+
- When the configuration value for `log_path` is set, override the `logger` to point to that path instead of using e.g. Rails logger {pull}1247[#1247]
|
63
|
+
- Only send tracestate header for distributed tracing when it has content {pull}1277[#1277]
|
64
|
+
- Use the hostname as the Kubernetes pod name in the Container Info metadata if the pod id is parsed from cgroup {pull}1314[#1314]
|
65
|
+
|
66
|
+
====== Fixed
|
67
|
+
|
68
|
+
- Small change to Sidekiq tests to handle new configuration passing method {pull}1283[#1283]
|
69
|
+
- Set transaction sample rate to 0 when it's unsampled {pull}1339[#1339]
|
70
|
+
- Don't send unsampled transactions to APM server >= 8.0 {pull}1341[#1341]
|
71
|
+
|
38
72
|
[[release-notes-4.5.1]]
|
39
73
|
==== 4.5.1
|
40
74
|
|
data/Gemfile
CHANGED
@@ -46,11 +46,12 @@ if !defined?(JRUBY_VERSION) && RUBY_VERSION < '2.5'
|
|
46
46
|
gem 'google-protobuf', '< 3.12'
|
47
47
|
end
|
48
48
|
gem 'grpc' if !defined?(JRUBY_VERSION) && RUBY_VERSION < '3.0'
|
49
|
-
gem 'json'
|
49
|
+
gem 'json'
|
50
50
|
gem 'json-schema', require: nil
|
51
51
|
gem 'mongo', require: nil
|
52
52
|
gem 'opentracing', require: nil
|
53
53
|
gem 'rake', '>= 13.0', require: nil
|
54
|
+
gem 'racecar', require: nil if !defined?(JRUBY_VERSION)
|
54
55
|
gem 'resque', require: nil
|
55
56
|
gem 'sequel', require: nil
|
56
57
|
gem 'shoryuken', require: nil
|
@@ -77,6 +78,10 @@ frameworks_versions = parsed_frameworks.inject({}) do |frameworks, str|
|
|
77
78
|
end
|
78
79
|
|
79
80
|
frameworks_versions.each do |framework, version|
|
81
|
+
if framework =='rails' && RUBY_VERSION >= '3.1'
|
82
|
+
gem 'net-smtp', require: false
|
83
|
+
end
|
84
|
+
|
80
85
|
case version
|
81
86
|
when 'master' # sinatra, grape
|
82
87
|
gem framework, github: GITHUB_REPOS.fetch(framework)
|
@@ -111,12 +116,14 @@ if RUBY_PLATFORM == 'java'
|
|
111
116
|
end
|
112
117
|
elsif frameworks_versions['rails'] =~ /^(4|5)/
|
113
118
|
gem 'sqlite3', '~> 1.3.6'
|
119
|
+
elsif RUBY_VERSION < '2.7'
|
120
|
+
gem 'sqlite3', '~> 1.4.4'
|
114
121
|
else
|
115
122
|
gem 'sqlite3'
|
116
123
|
end
|
117
124
|
|
118
|
-
#
|
119
|
-
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.5.0')
|
125
|
+
# sneakers main only supports >=2.5.0
|
126
|
+
if Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('2.5.0') && !defined?(JRUBY_VERSION)
|
120
127
|
gem 'sneakers', github: 'jondot/sneakers', ref: 'd761dfe1493', require: nil
|
121
128
|
end
|
122
129
|
|
data/bench/report.rb
CHANGED
@@ -11,7 +11,7 @@ git_date = `git log -n 1 --pretty="format:%ai"`
|
|
11
11
|
platform = Gem::Platform.local
|
12
12
|
|
13
13
|
def doc(payload)
|
14
|
-
puts({ index: { _index: "benchmark-ruby"
|
14
|
+
puts({ index: { _index: "benchmark-ruby" } }.to_json)
|
15
15
|
puts(payload.to_json)
|
16
16
|
end
|
17
17
|
|
data/docker-compose.yml
CHANGED
@@ -6,6 +6,8 @@ services:
|
|
6
6
|
image: mongo:latest
|
7
7
|
volumes: ['mongodata:/data/db']
|
8
8
|
ports: ['27017:27017']
|
9
|
+
security_opt:
|
10
|
+
- no-new-privileges
|
9
11
|
|
10
12
|
specs:
|
11
13
|
build:
|
@@ -27,12 +29,16 @@ services:
|
|
27
29
|
depends_on:
|
28
30
|
- mongodb
|
29
31
|
user: ${USER_ID}
|
32
|
+
security_opt:
|
33
|
+
- no-new-privileges
|
30
34
|
|
31
35
|
ruby_rspec:
|
32
36
|
image: apm-agent-ruby:${RUBY_VERSION}
|
33
37
|
environment:
|
34
38
|
MONGODB_URL: 'mongodb:27017'
|
35
39
|
user: ${USER_ID}
|
40
|
+
security_opt:
|
41
|
+
- no-new-privileges
|
36
42
|
|
37
43
|
volumes:
|
38
44
|
vendor:
|