elastic-apm 3.2.0 → 3.3.0
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 +8 -1
- data/.ci/.jenkins_ruby.yml +1 -0
- data/.ci/Jenkinsfile +64 -31
- data/.github/workflows/main.yml +14 -0
- data/.pre-commit-config.yaml +1 -5
- data/.rubocop.yml +35 -29
- data/CHANGELOG.asciidoc +20 -4
- data/Gemfile +1 -0
- data/README.md +2 -2
- data/bin/dev +1 -1
- data/bin/run-tests +3 -0
- data/docs/api.asciidoc +0 -29
- data/docs/configuration.asciidoc +11 -0
- data/docs/context.asciidoc +4 -4
- data/lib/elastic_apm.rb +5 -9
- data/lib/elastic_apm/agent.rb +0 -9
- data/lib/elastic_apm/central_config.rb +10 -10
- data/lib/elastic_apm/central_config/cache_control.rb +1 -1
- data/lib/elastic_apm/config.rb +4 -11
- data/lib/elastic_apm/config/options.rb +2 -4
- data/lib/elastic_apm/config/wildcard_pattern_list.rb +35 -0
- data/lib/elastic_apm/context_builder.rb +0 -2
- data/lib/elastic_apm/error.rb +1 -1
- data/lib/elastic_apm/error/exception.rb +2 -2
- data/lib/elastic_apm/error_builder.rb +0 -2
- data/lib/elastic_apm/grape.rb +0 -3
- data/lib/elastic_apm/instrumenter.rb +3 -13
- data/lib/elastic_apm/metadata/service_info.rb +0 -5
- data/lib/elastic_apm/metadata/system_info/container_info.rb +4 -6
- data/lib/elastic_apm/metrics.rb +0 -3
- data/lib/elastic_apm/metrics/cpu_mem_set.rb +0 -10
- data/lib/elastic_apm/metrics/metric.rb +6 -2
- data/lib/elastic_apm/metrics/set.rb +4 -4
- data/lib/elastic_apm/metrics/span_scoped_set.rb +1 -1
- data/lib/elastic_apm/metrics/transaction_set.rb +0 -2
- data/lib/elastic_apm/metrics/vm_set.rb +0 -3
- data/lib/elastic_apm/middleware.rb +0 -2
- data/lib/elastic_apm/normalizers/grape/endpoint_run.rb +2 -1
- data/lib/elastic_apm/normalizers/rails/active_record.rb +1 -1
- data/lib/elastic_apm/opentracing.rb +6 -15
- data/lib/elastic_apm/rails.rb +2 -5
- data/lib/elastic_apm/sinatra.rb +1 -1
- data/lib/elastic_apm/span.rb +2 -2
- data/lib/elastic_apm/span/context.rb +17 -1
- data/lib/elastic_apm/spies/elasticsearch.rb +0 -3
- data/lib/elastic_apm/spies/faraday.rb +2 -4
- data/lib/elastic_apm/spies/http.rb +0 -3
- data/lib/elastic_apm/spies/mongo.rb +10 -5
- data/lib/elastic_apm/spies/net_http.rb +1 -4
- data/lib/elastic_apm/spies/rake.rb +0 -2
- data/lib/elastic_apm/spies/sequel.rb +0 -2
- data/lib/elastic_apm/spies/sidekiq.rb +2 -6
- data/lib/elastic_apm/spies/sinatra.rb +0 -2
- data/lib/elastic_apm/stacktrace/frame.rb +0 -3
- data/lib/elastic_apm/stacktrace_builder.rb +0 -2
- data/lib/elastic_apm/subscriber.rb +2 -3
- data/lib/elastic_apm/trace_context.rb +0 -3
- data/lib/elastic_apm/transaction.rb +2 -2
- data/lib/elastic_apm/transport/base.rb +0 -6
- data/lib/elastic_apm/transport/connection.rb +1 -4
- data/lib/elastic_apm/transport/connection/http.rb +0 -2
- data/lib/elastic_apm/transport/filters.rb +1 -1
- data/lib/elastic_apm/transport/filters/secrets_filter.rb +1 -3
- data/lib/elastic_apm/transport/serializers.rb +0 -3
- data/lib/elastic_apm/transport/serializers/context_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/error_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/metadata_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/metricset_serializer.rb +0 -2
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +0 -3
- data/lib/elastic_apm/transport/serializers/transaction_serializer.rb +0 -2
- data/lib/elastic_apm/transport/worker.rb +10 -6
- data/lib/elastic_apm/util.rb +1 -1
- data/lib/elastic_apm/version.rb +1 -1
- metadata +5 -5
- data/.ci/bin/check_paths_for_matches.py +0 -80
- data/.hound.yml +0 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aaf3f0eada3b3bfe036dc55802688666e3df0ee48848b45dd73aa6861e625dc6
|
4
|
+
data.tar.gz: feb50b6f3d2da29af6591f31a62ea95189ab64868fb5403e3d85ceec548868d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7bcd197586b7782f25fa814ec0430c33f7b21abaa6b79c81fe93ee07654df1448eea4257f8c29b6f6dce1b7778c0b88f6e825a1338bdba591fd4934b9bcaa09
|
7
|
+
data.tar.gz: 181bf8aa045473ef55cb794199638722e1bd7f142e558077928a94e03ca75812d21633c6781e734d7029b12e9b4d54232498f604a6be26f70daaffcd1e91f03e
|
data/.ci/.jenkins_exclude.yml
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
exclude:
|
2
|
-
|
2
|
+
- RUBY_VERSION: ruby:2.7-rc
|
3
|
+
FRAMEWORK: rails-4.2
|
3
4
|
- RUBY_VERSION: jruby:9.2
|
4
5
|
FRAMEWORK: rails-4.2
|
5
6
|
- RUBY_VERSION: jruby:9.1
|
@@ -25,6 +26,8 @@ exclude:
|
|
25
26
|
FRAMEWORK: rails-6.0
|
26
27
|
|
27
28
|
# Only test master on newest ruby
|
29
|
+
- RUBY_VERSION: ruby:2.7-rc
|
30
|
+
FRAMEWORK: rails-master
|
28
31
|
- RUBY_VERSION: ruby:2.5
|
29
32
|
FRAMEWORK: rails-master
|
30
33
|
- RUBY_VERSION: ruby:2.4
|
@@ -67,6 +70,8 @@ exclude:
|
|
67
70
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
68
71
|
FRAMEWORK: sinatra-master
|
69
72
|
|
73
|
+
- RUBY_VERSION: ruby:2.7-rc
|
74
|
+
FRAMEWORK: grape-master
|
70
75
|
- RUBY_VERSION: ruby:2.5
|
71
76
|
FRAMEWORK: grape-master
|
72
77
|
- RUBY_VERSION: ruby:2.4
|
@@ -88,6 +93,8 @@ exclude:
|
|
88
93
|
- RUBY_VERSION: docker.elastic.co/observability-ci/jruby:9.1-7-jdk
|
89
94
|
FRAMEWORK: grape-master
|
90
95
|
|
96
|
+
- RUBY_VERSION: ruby:2.7-rc
|
97
|
+
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
91
98
|
- RUBY_VERSION: ruby:2.5
|
92
99
|
FRAMEWORK: grape-1.2,sinatra-2.0,rails-6.0
|
93
100
|
- RUBY_VERSION: ruby:2.4
|
data/.ci/.jenkins_ruby.yml
CHANGED
data/.ci/Jenkinsfile
CHANGED
@@ -5,10 +5,9 @@ import co.elastic.matrix.*
|
|
5
5
|
import groovy.transform.Field
|
6
6
|
|
7
7
|
/**
|
8
|
-
This is the
|
9
|
-
it is need as field to store the results of the tests.
|
8
|
+
This is required to store the results of the tests.
|
10
9
|
*/
|
11
|
-
@Field def
|
10
|
+
@Field def rubyTasksFailed = false
|
12
11
|
|
13
12
|
pipeline {
|
14
13
|
agent { label 'linux && immutable' }
|
@@ -24,6 +23,7 @@ pipeline {
|
|
24
23
|
GITHUB_CHECK_ITS_NAME = 'Integration Tests'
|
25
24
|
ITS_PIPELINE = 'apm-integration-tests-selector-mbp/master'
|
26
25
|
RELEASE_SECRET = 'secret/apm-team/ci/apm-agent-ruby-rubygems-release'
|
26
|
+
OPBEANS_REPO = 'opbeans-ruby'
|
27
27
|
}
|
28
28
|
options {
|
29
29
|
timeout(time: 2, unit: 'HOURS')
|
@@ -49,6 +49,7 @@ pipeline {
|
|
49
49
|
stage('Checkout') {
|
50
50
|
options { skipDefaultCheckout() }
|
51
51
|
steps {
|
52
|
+
pipelineManager([ cancelPreviousRunningBuilds: [ when: 'PR' ] ])
|
52
53
|
deleteDir()
|
53
54
|
gitCheckout(basedir: "${BASE_DIR}", githubNotifyFirstTimeContributor: true)
|
54
55
|
stash allowEmpty: true, name: 'source', useDefaultExcludes: false
|
@@ -155,15 +156,21 @@ pipeline {
|
|
155
156
|
}
|
156
157
|
}
|
157
158
|
}
|
159
|
+
stage('Populate Test failures') {
|
160
|
+
when {
|
161
|
+
expression { return rubyTasksFailed }
|
162
|
+
}
|
163
|
+
steps {
|
164
|
+
error('There were some failures when running the "Test" stage')
|
165
|
+
}
|
166
|
+
}
|
158
167
|
stage('Integration Tests') {
|
159
168
|
agent none
|
160
169
|
when {
|
161
170
|
beforeAgent true
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
expression { return !params.Run_As_Master_Branch }
|
166
|
-
}
|
171
|
+
anyOf {
|
172
|
+
changeRequest()
|
173
|
+
expression { return !params.Run_As_Master_Branch }
|
167
174
|
}
|
168
175
|
}
|
169
176
|
steps {
|
@@ -186,23 +193,25 @@ pipeline {
|
|
186
193
|
}
|
187
194
|
when {
|
188
195
|
beforeAgent true
|
189
|
-
|
190
|
-
tag pattern: 'v\\d+.*', comparator: 'REGEXP'
|
191
|
-
}
|
196
|
+
tag pattern: 'v\\d+.*', comparator: 'REGEXP'
|
192
197
|
}
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
198
|
+
stages {
|
199
|
+
stage('Release') {
|
200
|
+
steps {
|
201
|
+
withGithubNotify(context: 'Release') {
|
202
|
+
deleteDir()
|
203
|
+
unstash 'source'
|
204
|
+
script {
|
205
|
+
dir(BASE_DIR){
|
206
|
+
docker.image("${env.RUBY_DOCKER_TAG}").inside('-v /etc/passwd:/etc/passwd -v ${HOME}/.ssh:${HOME}/.ssh') {
|
207
|
+
withEnv(["HOME=${env.WORKSPACE}/${env.BASE_DIR ?: ''}"]) {
|
208
|
+
rubygemsLogin.withApi(secret: "${env.RELEASE_SECRET}") {
|
209
|
+
sshagent(['f6c7695a-671e-4f4f-a331-acdce44ff9ba']) {
|
210
|
+
sh '.ci/prepare-git-context.sh'
|
211
|
+
sh 'gem install rake yard rspec'
|
212
|
+
sh 'rake release'
|
213
|
+
}
|
214
|
+
}
|
206
215
|
}
|
207
216
|
}
|
208
217
|
}
|
@@ -210,6 +219,23 @@ pipeline {
|
|
210
219
|
}
|
211
220
|
}
|
212
221
|
}
|
222
|
+
stage('Opbeans') {
|
223
|
+
environment {
|
224
|
+
REPO_NAME = "${OPBEANS_REPO}"
|
225
|
+
}
|
226
|
+
steps {
|
227
|
+
deleteDir()
|
228
|
+
dir("${OPBEANS_REPO}"){
|
229
|
+
git credentialsId: 'f6c7695a-671e-4f4f-a331-acdce44ff9ba',
|
230
|
+
url: "git@github.com:elastic/${OPBEANS_REPO}.git"
|
231
|
+
sh script: ".ci/bump-version.sh ${env.BRANCH_NAME}", label: 'Bump version'
|
232
|
+
// The opbeans pipeline will trigger a release for the master branch
|
233
|
+
gitPush()
|
234
|
+
// The opbeans pipeline will trigger a release for the release tag
|
235
|
+
gitCreateTag(tag: "${env.BRANCH_NAME}")
|
236
|
+
}
|
237
|
+
}
|
238
|
+
}
|
213
239
|
}
|
214
240
|
}
|
215
241
|
}
|
@@ -258,11 +284,18 @@ def runBenchmark(version){
|
|
258
284
|
}
|
259
285
|
|
260
286
|
def runJob(rubyVersion){
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
287
|
+
try {
|
288
|
+
build( job: "apm-agent-ruby/apm-agent-ruby-downstream/${env.BRANCH_NAME}",
|
289
|
+
parameters: [
|
290
|
+
string(name: 'RUBY_VERSION', value: "${rubyVersion}"),
|
291
|
+
string(name: 'BRANCH_SPECIFIER', value: "${env.GIT_BASE_COMMIT}")
|
292
|
+
],
|
293
|
+
quietPeriod: 15
|
294
|
+
)
|
295
|
+
} catch(e) {
|
296
|
+
rubyTasksFailed = true
|
297
|
+
warnError('Test Failures') {
|
298
|
+
error("Downstream job for '${rubyVersion}' failed")
|
299
|
+
}
|
300
|
+
}
|
268
301
|
}
|
data/.pre-commit-config.yaml
CHANGED
@@ -8,15 +8,11 @@ repos:
|
|
8
8
|
- id: check-merge-conflict
|
9
9
|
- id: check-yaml
|
10
10
|
- id: check-xml
|
11
|
-
- id: end-of-file-fixer
|
12
11
|
|
13
12
|
- repo: git@github.com:elastic/apm-pipeline-library
|
14
13
|
rev: current
|
15
14
|
hooks:
|
16
15
|
- id: check-bash-syntax
|
17
|
-
- id: check-abstract-classes-and-trait
|
18
|
-
- id: check-jsonslurper-class
|
19
16
|
- id: check-jenkins-pipelines
|
20
|
-
- id: check-unicode-non-breaking-spaces
|
21
|
-
- id: remove-unicode-non-breaking-spaces
|
22
17
|
- id: check-jjbb
|
18
|
+
- id: check-unicode-non-breaking-spaces
|
data/.rubocop.yml
CHANGED
@@ -5,49 +5,67 @@ AllCops:
|
|
5
5
|
- 'vendor/**/*'
|
6
6
|
- 'bench/*'
|
7
7
|
|
8
|
-
|
8
|
+
require:
|
9
|
+
- rubocop-performance
|
10
|
+
|
11
|
+
# Layout/
|
12
|
+
|
13
|
+
Layout/ArgumentAlignment:
|
9
14
|
EnforcedStyle: with_fixed_indentation
|
10
15
|
|
11
|
-
Layout/
|
16
|
+
Layout/ParameterAlignment:
|
12
17
|
EnforcedStyle: with_fixed_indentation
|
13
18
|
|
14
|
-
Layout/
|
19
|
+
Layout/EmptyLineAfterGuardClause:
|
15
20
|
Enabled: false
|
16
21
|
|
17
|
-
Layout/
|
18
|
-
Exclude:
|
19
|
-
- 'Gemfile'
|
20
|
-
|
21
|
-
Layout/EmptyLinesAroundArguments:
|
22
|
+
Layout/FirstParameterIndentation:
|
22
23
|
Enabled: false
|
23
24
|
|
25
|
+
# Lint/
|
26
|
+
|
24
27
|
Lint/RescueException:
|
25
28
|
Enabled: false
|
26
29
|
|
27
|
-
Lint/
|
30
|
+
Lint/SuppressedException:
|
28
31
|
Enabled: false
|
29
32
|
|
30
|
-
|
33
|
+
# Metrics /
|
34
|
+
|
35
|
+
Metrics/AbcSize:
|
31
36
|
Enabled: false
|
32
37
|
|
33
|
-
Metrics/
|
34
|
-
|
35
|
-
- 'spec/**/*.rb'
|
38
|
+
Metrics/ClassLength:
|
39
|
+
Enabled: false
|
36
40
|
|
37
41
|
Metrics/ModuleLength:
|
38
|
-
|
39
|
-
|
42
|
+
Enabled: false
|
43
|
+
|
44
|
+
Metrics/BlockLength:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
Metrics/MethodLength:
|
48
|
+
Enabled: false
|
49
|
+
|
50
|
+
# Naming/
|
40
51
|
|
41
52
|
Naming/PredicateName:
|
42
53
|
Enabled: false
|
43
54
|
|
44
55
|
Naming/FileName:
|
45
|
-
Exclude:
|
46
|
-
- 'lib/elastic-apm.rb'
|
56
|
+
Exclude: ['lib/elastic-apm.rb']
|
47
57
|
|
48
58
|
Naming/AccessorMethodName:
|
49
59
|
Enabled: false
|
50
60
|
|
61
|
+
Naming/MemoizedInstanceVariableName:
|
62
|
+
Enabled: false
|
63
|
+
|
64
|
+
Naming/MethodParameterName:
|
65
|
+
Enabled: false
|
66
|
+
|
67
|
+
# Style/
|
68
|
+
|
51
69
|
Style/Alias:
|
52
70
|
Enabled: false
|
53
71
|
|
@@ -57,9 +75,6 @@ Style/IfUnlessModifier:
|
|
57
75
|
Style/FormatStringToken:
|
58
76
|
Enabled: false
|
59
77
|
|
60
|
-
Style/SafeNavigation:
|
61
|
-
Enabled: false
|
62
|
-
|
63
78
|
Style/DoubleNegation:
|
64
79
|
Enabled: false
|
65
80
|
|
@@ -72,15 +87,6 @@ Style/NumericPredicate:
|
|
72
87
|
Style/PerlBackrefs:
|
73
88
|
Enabled: false
|
74
89
|
|
75
|
-
Layout/EmptyLineAfterGuardClause:
|
76
|
-
Enabled: false
|
77
|
-
|
78
|
-
Naming/MemoizedInstanceVariableName:
|
79
|
-
Enabled: false
|
80
|
-
|
81
|
-
Naming/UncommunicativeMethodParamName:
|
82
|
-
Enabled: false
|
83
|
-
|
84
90
|
Style/SpecialGlobalVars:
|
85
91
|
Enabled: false
|
86
92
|
|
data/CHANGELOG.asciidoc
CHANGED
@@ -26,11 +26,31 @@ endif::[]
|
|
26
26
|
[float]
|
27
27
|
===== Fixed
|
28
28
|
- Fix {pull}2526[#2526]
|
29
|
+
|
30
|
+
[float]
|
31
|
+
[[unreleased]]
|
32
|
+
==== Unreleased
|
29
33
|
////
|
30
34
|
|
31
35
|
[[release-notes-3.x]]
|
32
36
|
=== Ruby Agent version 3.x
|
33
37
|
|
38
|
+
[[release-notes-3.3.0]]
|
39
|
+
==== 3.2.0 (2019-12-05)
|
40
|
+
|
41
|
+
[float]
|
42
|
+
===== Added
|
43
|
+
|
44
|
+
- Add option `disable_metrics` {pull}625[#625]
|
45
|
+
|
46
|
+
[float]
|
47
|
+
===== Fixed
|
48
|
+
|
49
|
+
- Make Filters thread-safe {pull}624[#624]
|
50
|
+
- Omit passwords in outgoing urls {pull}629[#629]
|
51
|
+
- Add missing mutex to Counter metrics {pull}636[#636]
|
52
|
+
- Correct span context collection name for Mongo getMore commands {pull}637[#637]
|
53
|
+
|
34
54
|
[[release-notes-3.2.0]]
|
35
55
|
==== 3.2.0 (2019-11-19)
|
36
56
|
|
@@ -51,10 +71,6 @@ endif::[]
|
|
51
71
|
- Fixed pulling config from Kibana {pull}594[#594]
|
52
72
|
- Fixed a bug where the agent would alter the original cookies hash {pull}616[#616]
|
53
73
|
|
54
|
-
|
55
|
-
[[release-notes-3.x]]
|
56
|
-
=== Ruby Agent version 3.x
|
57
|
-
|
58
74
|
[[release-notes-3.1.0]]
|
59
75
|
==== 3.1.0 (2019-10-21)
|
60
76
|
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# elastic-apm
|
2
2
|
## Elastic APM agent for Ruby
|
3
3
|
|
4
|
-
[![Jenkins](https://apm-ci.elastic.co/buildStatus/icon?job=apm-agent-ruby/apm-agent-ruby-mbp/master)](https://apm-ci.elastic.co/job/apm-agent-ruby/job/apm-agent-ruby-mbp/job/master/) [![Gem](https://img.shields.io/gem/v/elastic-apm.svg)](https://rubygems.org/gems/elastic-apm)
|
4
|
+
[![Jenkins](https://apm-ci.elastic.co/buildStatus/icon?job=apm-agent-ruby/apm-agent-ruby-mbp/master)](https://apm-ci.elastic.co/job/apm-agent-ruby/job/apm-agent-ruby-mbp/job/master/) [![Gem](https://img.shields.io/gem/v/elastic-apm.svg)](https://rubygems.org/gems/elastic-apm)
|
5
5
|
|
6
6
|
The official Rubygem for [Elastic][] [APM][].
|
7
7
|
|
@@ -48,7 +48,7 @@ $ bin/dev
|
|
48
48
|
To pick a specific Ruby version, specify it with the `-i` flag:
|
49
49
|
|
50
50
|
```sh
|
51
|
-
$ bin/dev -i jruby:9.2
|
51
|
+
$ bin/dev -i jruby:9.2
|
52
52
|
```
|
53
53
|
|
54
54
|
If the first argument is a path starting with `spec/`, the passed specs will be run. Otherwise any arguments passed will be run as a command inside the container:
|
data/bin/dev
CHANGED
@@ -28,7 +28,7 @@ USER_ID_GROUP = %w[u g].map { |f| `id -#{f}`.chomp }.join(':')
|
|
28
28
|
RUBY_IMAGE = options.fetch(:image, 'ruby:latest')
|
29
29
|
FRAMEWORKS = options.fetch(:frameworks, 'rails,sinatra,grape')
|
30
30
|
|
31
|
-
IMAGE_PATH_SAFE = RUBY_IMAGE.
|
31
|
+
IMAGE_PATH_SAFE = RUBY_IMAGE.tr(':', '_')
|
32
32
|
IMAGE_NAME = "apm-agent-ruby:#{IMAGE_PATH_SAFE}"
|
33
33
|
VENDOR_PATH = "/vendor/#{IMAGE_PATH_SAFE}"
|
34
34
|
|
data/bin/run-tests
CHANGED
data/docs/api.asciidoc
CHANGED
@@ -276,35 +276,6 @@ Returns `[String]` ID of the generated `[ElasticAPM::Error]` object.
|
|
276
276
|
[[api-context]]
|
277
277
|
=== Context
|
278
278
|
|
279
|
-
[float]
|
280
|
-
[[api-agent-set-tag]]
|
281
|
-
==== `ElasticAPM.set_tag`
|
282
|
-
|
283
|
-
Add a tag to the current transaction.
|
284
|
-
Tags are basic key-value pairs that are indexed in your Elasticsearch database
|
285
|
-
and therefore searchable. The value will always be converted to a String.
|
286
|
-
|
287
|
-
TIP: Before using custom tags, ensure you understand the different types of
|
288
|
-
{apm-overview-ref-v}/metadata.html[metadata] that are available.
|
289
|
-
|
290
|
-
[source,ruby]
|
291
|
-
----
|
292
|
-
before_action do
|
293
|
-
ElasticAPM.set_tag(:company_id, current_user.company.id)
|
294
|
-
end
|
295
|
-
----
|
296
|
-
|
297
|
-
Arguments:
|
298
|
-
|
299
|
-
* `key`: A string key. Note that `.`, `*` or `"` will be converted to `_`.
|
300
|
-
* `value`: A string value.
|
301
|
-
|
302
|
-
Returns the set `value`.
|
303
|
-
|
304
|
-
WARNING: Be aware that tags are indexed in Elasticsearch. Using too many unique keys will result in *https://www.elastic.co/blog/found-crash-elasticsearch#mapping-explosion[Mapping explosion]*.
|
305
|
-
|
306
|
-
NOTE: This method has been deprecated in favor of `set_label`, which does not convert values to Strings.
|
307
|
-
|
308
279
|
[float]
|
309
280
|
[[api-agent-set-label]]
|
310
281
|
==== `ElasticAPM.set_label`
|