elastic-apm 2.8.1 → 2.11.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.
- checksums.yaml +4 -4
- data/.ci/.jenkins_codecov.yml +5 -0
- data/.ci/.jenkins_exclude.yml +63 -0
- data/.ci/.jenkins_framework.yml +9 -0
- data/.ci/.jenkins_master_framework.yml +3 -0
- data/.ci/.jenkins_ruby.yml +11 -0
- data/.ci/Jenkinsfile +268 -0
- data/.ci/bin/check_paths_for_matches.py +80 -0
- data/.ci/downstreamTests.groovy +188 -0
- data/.ci/jobs/apm-agent-ruby-downstream.yml +37 -0
- data/.ci/jobs/apm-agent-ruby-linting-mbp.yml +38 -0
- data/.ci/jobs/apm-agent-ruby-mbp.yml +41 -0
- data/.ci/jobs/apm-agent-ruby.yml +4 -0
- data/.ci/jobs/defaults.yml +24 -0
- data/.ci/linting.groovy +32 -0
- data/.ci/prepare-git-context.sh +23 -0
- data/.pre-commit-config.yaml +22 -0
- data/.rspec +0 -1
- data/.rubocop.yml +3 -3
- data/CHANGELOG.md +59 -2
- data/docs/api.asciidoc +24 -7
- data/docs/configuration.asciidoc +43 -4
- data/docs/index.asciidoc +2 -0
- data/docs/log-correlation.asciidoc +96 -0
- data/docs/metrics.asciidoc +77 -6
- data/lib/elastic_apm.rb +37 -5
- data/lib/elastic_apm/agent.rb +29 -4
- data/lib/elastic_apm/central_config.rb +141 -0
- data/lib/elastic_apm/central_config/cache_control.rb +34 -0
- data/lib/elastic_apm/config.rb +165 -340
- data/lib/elastic_apm/config/bytes.rb +25 -0
- data/lib/elastic_apm/config/duration.rb +6 -8
- data/lib/elastic_apm/config/options.rb +134 -0
- data/lib/elastic_apm/config/regexp_list.rb +13 -0
- data/lib/elastic_apm/context_builder.rb +2 -0
- data/lib/elastic_apm/error/exception.rb +3 -1
- data/lib/elastic_apm/error_builder.rb +6 -3
- data/lib/elastic_apm/instrumenter.rb +6 -0
- data/lib/elastic_apm/metadata.rb +2 -1
- data/lib/elastic_apm/metrics.rb +2 -1
- data/lib/elastic_apm/metrics/vm.rb +60 -0
- data/lib/elastic_apm/normalizers/action_controller.rb +5 -2
- data/lib/elastic_apm/normalizers/action_mailer.rb +5 -2
- data/lib/elastic_apm/normalizers/action_view.rb +14 -9
- data/lib/elastic_apm/normalizers/active_record.rb +5 -2
- data/lib/elastic_apm/rails.rb +59 -0
- data/lib/elastic_apm/railtie.rb +11 -48
- data/lib/elastic_apm/span.rb +29 -7
- data/lib/elastic_apm/spies/faraday.rb +9 -2
- data/lib/elastic_apm/spies/http.rb +9 -2
- data/lib/elastic_apm/spies/mongo.rb +18 -3
- data/lib/elastic_apm/spies/net_http.rb +8 -2
- data/lib/elastic_apm/stacktrace/frame.rb +3 -1
- data/lib/elastic_apm/stacktrace_builder.rb +2 -2
- data/lib/elastic_apm/subscriber.rb +11 -3
- data/lib/elastic_apm/transport/connection.rb +17 -3
- data/lib/elastic_apm/transport/connection/proxy_pipe.rb +8 -1
- data/lib/elastic_apm/transport/filters/secrets_filter.rb +3 -1
- data/lib/elastic_apm/transport/serializers/error_serializer.rb +12 -2
- data/lib/elastic_apm/transport/serializers/metadata_serializer.rb +6 -1
- data/lib/elastic_apm/transport/serializers/span_serializer.rb +11 -3
- data/lib/elastic_apm/version.rb +1 -1
- metadata +26 -4
- data/Jenkinsfile +0 -280
- data/lib/elastic_apm/config/size.rb +0 -28
@@ -0,0 +1,188 @@
|
|
1
|
+
#!/usr/bin/env groovy
|
2
|
+
@Library('apm@current') _
|
3
|
+
|
4
|
+
import co.elastic.matrix.*
|
5
|
+
import groovy.transform.Field
|
6
|
+
|
7
|
+
/**
|
8
|
+
This is the parallel tasks generator,
|
9
|
+
it is need as field to store the results of the tests.
|
10
|
+
*/
|
11
|
+
@Field def rubyTasksGen
|
12
|
+
|
13
|
+
pipeline {
|
14
|
+
agent { label 'linux && immutable' }
|
15
|
+
environment {
|
16
|
+
REPO="git@github.com:elastic/apm-agent-ruby.git"
|
17
|
+
BASE_DIR="src/github.com/elastic/apm-agent-ruby"
|
18
|
+
PIPELINE_LOG_LEVEL='INFO'
|
19
|
+
NOTIFY_TO = credentials('notify-to')
|
20
|
+
JOB_GCS_BUCKET = credentials('gcs-bucket')
|
21
|
+
JOB_GIT_CREDENTIALS = "f6c7695a-671e-4f4f-a331-acdce44ff9ba"
|
22
|
+
DOCKER_REGISTRY = 'docker.elastic.co'
|
23
|
+
DOCKER_SECRET = 'secret/apm-team/ci/docker-registry/prod'
|
24
|
+
CODECOV_SECRET = 'secret/apm-team/ci/apm-agent-ruby-codecov'
|
25
|
+
}
|
26
|
+
options {
|
27
|
+
timeout(time: 2, unit: 'HOURS')
|
28
|
+
buildDiscarder(logRotator(numToKeepStr: '300', artifactNumToKeepStr: '20', daysToKeepStr: '30'))
|
29
|
+
timestamps()
|
30
|
+
ansiColor('xterm')
|
31
|
+
disableResume()
|
32
|
+
durabilityHint('PERFORMANCE_OPTIMIZED')
|
33
|
+
rateLimitBuilds(throttle: [count: 60, durationName: 'hour', userBoost: true])
|
34
|
+
quietPeriod(10)
|
35
|
+
}
|
36
|
+
parameters {
|
37
|
+
string(name: 'RUBY_VERSION', defaultValue: "ruby:2.6", description: "Ruby version to test")
|
38
|
+
string(name: 'BRANCH_SPECIFIER', defaultValue: "master", description: "Git branch/tag to use")
|
39
|
+
}
|
40
|
+
stages {
|
41
|
+
/**
|
42
|
+
Checkout the code and stash it, to use it on other stages.
|
43
|
+
*/
|
44
|
+
stage('Checkout') {
|
45
|
+
agent { label 'immutable' }
|
46
|
+
options { skipDefaultCheckout() }
|
47
|
+
steps {
|
48
|
+
deleteDir()
|
49
|
+
gitCheckout(basedir: "${BASE_DIR}",
|
50
|
+
branch: "${params.BRANCH_SPECIFIER}",
|
51
|
+
repo: "${REPO}",
|
52
|
+
credentialsId: "${JOB_GIT_CREDENTIALS}")
|
53
|
+
stash allowEmpty: true, name: 'source', useDefaultExcludes: false
|
54
|
+
}
|
55
|
+
}
|
56
|
+
stage('Test') {
|
57
|
+
agent { label 'linux && immutable' }
|
58
|
+
options { skipDefaultCheckout() }
|
59
|
+
steps {
|
60
|
+
runTests('.ci/.jenkins_framework.yml')
|
61
|
+
}
|
62
|
+
}
|
63
|
+
stage('Master Test') {
|
64
|
+
agent { label 'linux && immutable' }
|
65
|
+
options { skipDefaultCheckout() }
|
66
|
+
steps {
|
67
|
+
catchError(buildResult: 'SUCCESS', stageResult: 'UNSTABLE', message: "The tests for the master framework have failed. Let's warn instead.") {
|
68
|
+
runTests('.ci/.jenkins_master_framework.yml')
|
69
|
+
}
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
post {
|
74
|
+
cleanup {
|
75
|
+
script{
|
76
|
+
if(rubyTasksGen?.results){
|
77
|
+
writeJSON(file: 'results.json', json: toJSON(rubyTasksGen.results), pretty: 2)
|
78
|
+
def mapResults = ["Ruby": rubyTasksGen.results]
|
79
|
+
def processor = new ResultsProcessor()
|
80
|
+
processor.processResults(mapResults)
|
81
|
+
archiveArtifacts allowEmptyArchive: true, artifacts: 'results.json,results.html', defaultExcludes: false
|
82
|
+
catchError(buildResult: 'SUCCESS') {
|
83
|
+
def datafile = readFile(file: "results.json")
|
84
|
+
def json = getVaultSecret(secret: 'secret/apm-team/ci/jenkins-stats-cloud')
|
85
|
+
sendDataToElasticsearch(es: json.data.url, data: datafile, restCall: '/jenkins-builds-ruby-test-results/_doc/')
|
86
|
+
}
|
87
|
+
}
|
88
|
+
}
|
89
|
+
notifyBuildResult()
|
90
|
+
}
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
Parallel task generator for the integration tests.
|
96
|
+
*/
|
97
|
+
class RubyParallelTaskGenerator extends DefaultParallelTaskGenerator {
|
98
|
+
|
99
|
+
public RubyParallelTaskGenerator(Map params){
|
100
|
+
super(params)
|
101
|
+
}
|
102
|
+
|
103
|
+
/**
|
104
|
+
build a clousure that launch and agent and execute the corresponding test script,
|
105
|
+
then store the results.
|
106
|
+
*/
|
107
|
+
public Closure generateStep(x, y){
|
108
|
+
return {
|
109
|
+
steps.sleep steps.randomNumber(min:10, max: 30)
|
110
|
+
steps.node('linux && immutable'){
|
111
|
+
// Label is transformed to avoid using the internal docker registry in the x coordinate
|
112
|
+
// TODO: def label = "${tag}:${x?.drop(x?.lastIndexOf('/')+1)}#${y}"
|
113
|
+
def label = "${tag}:${x}#${y}"
|
114
|
+
try {
|
115
|
+
steps.runScript(label: label, ruby: x, framework: y)
|
116
|
+
saveResult(x, y, 1)
|
117
|
+
} catch(e){
|
118
|
+
saveResult(x, y, 0)
|
119
|
+
steps.error("${label} tests failed : ${e.toString()}\n")
|
120
|
+
} finally {
|
121
|
+
steps.junit(allowEmptyResults: true,
|
122
|
+
keepLongStdio: true,
|
123
|
+
testResults: "**/spec/ruby-agent-junit.xml")
|
124
|
+
if (steps.isCodecovEnabled(x, y)) {
|
125
|
+
steps.codecov(repo: "${steps.env.REPO}", basedir: "${steps.env.BASE_DIR}",
|
126
|
+
secret: "${steps.env.CODECOV_SECRET}")
|
127
|
+
}
|
128
|
+
}
|
129
|
+
}
|
130
|
+
}
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
/**
|
135
|
+
Run tests for a Ruby version and framework version.
|
136
|
+
*/
|
137
|
+
def runScript(Map params = [:]){
|
138
|
+
def label = params.label
|
139
|
+
def ruby = params.ruby
|
140
|
+
def framework = params.framework
|
141
|
+
log(level: 'INFO', text: "${label}")
|
142
|
+
env.HOME = "${env.WORKSPACE}"
|
143
|
+
env.PATH = "${env.PATH}:${env.WORKSPACE}/bin"
|
144
|
+
deleteDir()
|
145
|
+
unstash 'source'
|
146
|
+
dir("${BASE_DIR}"){
|
147
|
+
retry(2){
|
148
|
+
sleep randomNumber(min:10, max: 30)
|
149
|
+
dockerLogin(secret: "${DOCKER_SECRET}", registry: "${DOCKER_REGISTRY}")
|
150
|
+
sh("./spec/scripts/spec.sh ${ruby} ${framework}")
|
151
|
+
}
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
/**
|
156
|
+
* Whether the given ruby version and framework are in charge of sending the
|
157
|
+
* codecov results. It does require the workspace.
|
158
|
+
*/
|
159
|
+
def isCodecovEnabled(ruby, framework){
|
160
|
+
dir(BASE_DIR){
|
161
|
+
def codecovVersions = readYaml(file: '.ci/.jenkins_codecov.yml')
|
162
|
+
return codecovVersions['ENABLED'].any { it.trim() == "${ruby?.trim()}#${framework?.trim()}" }
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
/**
|
167
|
+
Run all the tests for the given ruby version and file with the frameworks to test
|
168
|
+
*/
|
169
|
+
def runTests(frameworkFile) {
|
170
|
+
deleteDir()
|
171
|
+
unstash "source"
|
172
|
+
dir("${BASE_DIR}"){
|
173
|
+
script {
|
174
|
+
rubyTasksGen = new RubyParallelTaskGenerator(
|
175
|
+
xVersions: [ "${params.RUBY_VERSION}" ],
|
176
|
+
xKey: 'RUBY_VERSION',
|
177
|
+
yKey: 'FRAMEWORK',
|
178
|
+
yFile: frameworkFile,
|
179
|
+
exclusionFile: '.ci/.jenkins_exclude.yml',
|
180
|
+
tag: 'Ruby',
|
181
|
+
name: 'Ruby',
|
182
|
+
steps: this
|
183
|
+
)
|
184
|
+
def mapPatallelTasks = rubyTasksGen.generateParallelTests()
|
185
|
+
parallel(mapPatallelTasks)
|
186
|
+
}
|
187
|
+
}
|
188
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: apm-agent-ruby/apm-agent-ruby-downstream
|
4
|
+
display-name: APM Agent Ruby Downstream
|
5
|
+
description: APM Agent Ruby Downstream .
|
6
|
+
script-path: .ci/downstreamTests.groovy
|
7
|
+
scm:
|
8
|
+
- github:
|
9
|
+
branch-discovery: no-pr
|
10
|
+
discover-pr-forks-strategy: merge-current
|
11
|
+
discover-pr-forks-trust: permission
|
12
|
+
discover-pr-origin: merge-current
|
13
|
+
discover-tags: true
|
14
|
+
notification-context: 'apm-ci/downstream'
|
15
|
+
property-strategies:
|
16
|
+
all-branches:
|
17
|
+
- suppress-scm-triggering: true
|
18
|
+
repo: apm-agent-ruby
|
19
|
+
repo-owner: elastic
|
20
|
+
credentials-id: 2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken
|
21
|
+
ssh-checkout:
|
22
|
+
credentials: f6c7695a-671e-4f4f-a331-acdce44ff9ba
|
23
|
+
clean:
|
24
|
+
after: true
|
25
|
+
before: true
|
26
|
+
prune: true
|
27
|
+
shallow-clone: true
|
28
|
+
depth: 3
|
29
|
+
do-not-fetch-tags: true
|
30
|
+
submodule:
|
31
|
+
disable: false
|
32
|
+
recursive: true
|
33
|
+
parent-credentials: true
|
34
|
+
timeout: 100
|
35
|
+
timeout: '15'
|
36
|
+
use-author: true
|
37
|
+
wipe-workspace: 'True'
|
@@ -0,0 +1,38 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: apm-agent-ruby/apm-agent-ruby-linting-mbp
|
4
|
+
display-name: APM Agent Ruby Linting
|
5
|
+
description: APM Agent Ruby Linting
|
6
|
+
script-path: .ci/linting.groovy
|
7
|
+
scm:
|
8
|
+
- github:
|
9
|
+
branch-discovery: no-pr
|
10
|
+
discover-pr-forks-strategy: merge-current
|
11
|
+
discover-pr-forks-trust: permission
|
12
|
+
discover-pr-origin: merge-current
|
13
|
+
discover-tags: false
|
14
|
+
notification-context: 'apm-ci/linting'
|
15
|
+
head-filter-regex: '^PR-.*$'
|
16
|
+
repo: apm-agent-ruby
|
17
|
+
repo-owner: elastic
|
18
|
+
credentials-id: 2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken
|
19
|
+
ssh-checkout:
|
20
|
+
credentials: f6c7695a-671e-4f4f-a331-acdce44ff9ba
|
21
|
+
build-strategies:
|
22
|
+
- change-request:
|
23
|
+
ignore-target-only-changes: false
|
24
|
+
clean:
|
25
|
+
after: true
|
26
|
+
before: true
|
27
|
+
prune: true
|
28
|
+
shallow-clone: true
|
29
|
+
depth: 3
|
30
|
+
do-not-fetch-tags: true
|
31
|
+
submodule:
|
32
|
+
disable: false
|
33
|
+
recursive: true
|
34
|
+
parent-credentials: true
|
35
|
+
timeout: 100
|
36
|
+
timeout: '15'
|
37
|
+
use-author: true
|
38
|
+
wipe-workspace: 'True'
|
@@ -0,0 +1,41 @@
|
|
1
|
+
---
|
2
|
+
- job:
|
3
|
+
name: apm-agent-ruby/apm-agent-ruby-mbp
|
4
|
+
display-name: APM Agent Ruby
|
5
|
+
description: APM Agent Ruby
|
6
|
+
script-path: .ci/Jenkinsfile
|
7
|
+
scm:
|
8
|
+
- github:
|
9
|
+
branch-discovery: no-pr
|
10
|
+
discover-pr-forks-strategy: merge-current
|
11
|
+
discover-pr-forks-trust: permission
|
12
|
+
discover-pr-origin: merge-current
|
13
|
+
discover-tags: true
|
14
|
+
notification-context: 'apm-ci'
|
15
|
+
repo: apm-agent-ruby
|
16
|
+
repo-owner: elastic
|
17
|
+
credentials-id: 2a9602aa-ab9f-4e52-baf3-b71ca88469c7-UserAndToken
|
18
|
+
ssh-checkout:
|
19
|
+
credentials: f6c7695a-671e-4f4f-a331-acdce44ff9ba
|
20
|
+
build-strategies:
|
21
|
+
- tags:
|
22
|
+
ignore-tags-older-than: -1
|
23
|
+
ignore-tags-newer-than: -1
|
24
|
+
- regular-branches: true
|
25
|
+
- change-request:
|
26
|
+
ignore-target-only-changes: false
|
27
|
+
clean:
|
28
|
+
after: true
|
29
|
+
before: true
|
30
|
+
prune: true
|
31
|
+
shallow-clone: true
|
32
|
+
depth: 3
|
33
|
+
do-not-fetch-tags: true
|
34
|
+
submodule:
|
35
|
+
disable: false
|
36
|
+
recursive: true
|
37
|
+
parent-credentials: true
|
38
|
+
timeout: 100
|
39
|
+
timeout: '15'
|
40
|
+
use-author: true
|
41
|
+
wipe-workspace: 'True'
|
@@ -0,0 +1,24 @@
|
|
1
|
+
---
|
2
|
+
|
3
|
+
##### GLOBAL METADATA
|
4
|
+
|
5
|
+
- meta:
|
6
|
+
cluster: apm-ci
|
7
|
+
|
8
|
+
##### JOB DEFAULTS
|
9
|
+
|
10
|
+
- job:
|
11
|
+
view: APM-CI
|
12
|
+
project-type: multibranch
|
13
|
+
logrotate:
|
14
|
+
daysToKeep: 30
|
15
|
+
numToKeep: 300
|
16
|
+
number-to-keep: '100'
|
17
|
+
days-to-keep: '30'
|
18
|
+
concurrent: true
|
19
|
+
node: linux
|
20
|
+
periodic-folder-trigger: 1d
|
21
|
+
prune-dead-branches: true
|
22
|
+
publishers:
|
23
|
+
- email:
|
24
|
+
recipients: infra-root+build@elastic.co
|
data/.ci/linting.groovy
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/usr/bin/env groovy
|
2
|
+
@Library('apm@current') _
|
3
|
+
|
4
|
+
pipeline {
|
5
|
+
agent { label 'docker && linux && immutable' }
|
6
|
+
options {
|
7
|
+
buildDiscarder(logRotator(numToKeepStr: '20', artifactNumToKeepStr: '20', daysToKeepStr: '30'))
|
8
|
+
timestamps()
|
9
|
+
ansiColor('xterm')
|
10
|
+
disableResume()
|
11
|
+
durabilityHint('PERFORMANCE_OPTIMIZED')
|
12
|
+
rateLimitBuilds(throttle: [count: 60, durationName: 'hour', userBoost: true])
|
13
|
+
quietPeriod(10)
|
14
|
+
}
|
15
|
+
triggers {
|
16
|
+
issueCommentTrigger('(?i).*(?:jenkins\\W+)?run\\W+(?:the\\W+)?linters(?:\\W+please)?.*')
|
17
|
+
}
|
18
|
+
stages {
|
19
|
+
stage('Sanity checks') {
|
20
|
+
environment {
|
21
|
+
HOME = "${env.WORKSPACE}"
|
22
|
+
PATH = "${env.WORKSPACE}/bin:${env.PATH}"
|
23
|
+
}
|
24
|
+
steps {
|
25
|
+
script {
|
26
|
+
def sha = getGitCommitSha()
|
27
|
+
preCommit(commit: "${sha}", junit: true)
|
28
|
+
}
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -exo pipefail
|
3
|
+
|
4
|
+
# Enable git+ssh. Env variables are created on the fly with the gitCheckout
|
5
|
+
git config remote.origin.url "git@github.com:${ORG_NAME}/${REPO_NAME}.git"
|
6
|
+
|
7
|
+
# Enable to fetch branches when cloning with a detached and shallow clone
|
8
|
+
git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'
|
9
|
+
|
10
|
+
# Force the git user details when pushing using the last commit details
|
11
|
+
USER_MAIL=$(git log -1 --pretty=format:'%ae')
|
12
|
+
USER_NAME=$(git log -1 --pretty=format:'%an')
|
13
|
+
git config --global user.email "${USER_MAIL}"
|
14
|
+
git config --global user.name "${USER_NAME}"
|
15
|
+
|
16
|
+
# Checkout the branch as it's detached based by default.
|
17
|
+
# See https://issues.jenkins-ci.org/browse/JENKINS-33171
|
18
|
+
git fetch --all
|
19
|
+
git checkout "${BRANCH_NAME}"
|
20
|
+
|
21
|
+
# Ensure the master branch points to the original commit to avoid commit injection
|
22
|
+
# when running the release pipeline.
|
23
|
+
git reset --hard "${GIT_COMMIT}"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
repos:
|
2
|
+
- repo: git://github.com/pre-commit/pre-commit-hooks
|
3
|
+
rev: v2.2.3
|
4
|
+
hooks:
|
5
|
+
- id: check-case-conflict
|
6
|
+
- id: check-executables-have-shebangs
|
7
|
+
- id: check-json
|
8
|
+
- id: check-merge-conflict
|
9
|
+
- id: check-yaml
|
10
|
+
- id: check-xml
|
11
|
+
- id: end-of-file-fixer
|
12
|
+
|
13
|
+
- repo: git@github.com:elastic/apm-pipeline-library
|
14
|
+
rev: current
|
15
|
+
hooks:
|
16
|
+
- id: check-bash-syntax
|
17
|
+
- id: check-abstract-classes-and-trait
|
18
|
+
- id: check-jsonslurper-class
|
19
|
+
- id: check-jenkins-pipelines
|
20
|
+
- id: check-unicode-non-breaking-spaces
|
21
|
+
- id: remove-unicode-non-breaking-spaces
|
22
|
+
- id: check-jjbb
|
data/.rspec
CHANGED
data/.rubocop.yml
CHANGED
@@ -66,9 +66,6 @@ Style/DoubleNegation:
|
|
66
66
|
Style/EmptyMethod:
|
67
67
|
Enabled: false
|
68
68
|
|
69
|
-
Rails/Delegate:
|
70
|
-
Enabled: false
|
71
|
-
|
72
69
|
Style/NumericPredicate:
|
73
70
|
Enabled: false
|
74
71
|
|
@@ -83,3 +80,6 @@ Naming/MemoizedInstanceVariableName:
|
|
83
80
|
|
84
81
|
Style/SpecialGlobalVars:
|
85
82
|
Enabled: false
|
83
|
+
|
84
|
+
Style/MissingRespondToMissing:
|
85
|
+
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,63 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## 2.11.0 (2019-09-23)
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- Add `Rails` module with `#start` method to run Rails setup explicitly ([#522](https://github.com/elastic/apm-agent-ruby/pull/522))
|
12
|
+
- Support for log/trace correlation ([#527](https://github.com/elastic/apm-agent-ruby/pull/527))
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
|
16
|
+
- Split dot-separated `span.type` into `.type`, `.subtype` and `.action` (auto-upgrades dot style) ([#531](https://github.com/elastic/apm-agent-ruby/pull/531))
|
17
|
+
|
18
|
+
## 2.10.1
|
19
|
+
|
20
|
+
### Fixed
|
21
|
+
|
22
|
+
- Fixed loading options from a config file specified by `ELASTIC_APM_CONFIG_FILE` ([#518](https://github.com/elastic/apm-agent-ruby/pull/518))
|
23
|
+
- Fixed an issue with CentralConfig polling not starting ([#525](https://github.com/elastic/apm-agent-ruby/pull/525))
|
24
|
+
|
25
|
+
### Added
|
26
|
+
|
27
|
+
- Support for chained exceptions ([#488](https://github.com/elastic/apm-agent-ruby/pull/488))
|
28
|
+
|
29
|
+
## 2.10.0
|
30
|
+
|
31
|
+
### Added
|
32
|
+
|
33
|
+
- Add Ruby specific metrics ([#437](https://github.com/elastic/apm-agent-ruby/pull/437))
|
34
|
+
- Support for APM Agent Configuration via Kibana ([#464](https://github.com/elastic/apm-agent-ruby/pull/464))
|
35
|
+
- Change span name format and add command to context's db.statement for `MongoSpy` ([#488](https://github.com/elastic/apm-agent-ruby/pull/490))
|
36
|
+
|
37
|
+
### Changed
|
38
|
+
|
39
|
+
- `ElasticAPM.report` and `ElasticAPM.report_message` return the string ID of the generated `Error` objects ([#507](https://github.com/elastic/apm-agent-ruby/pull/507))
|
40
|
+
|
41
|
+
## 2.9.1 (2019-06-28)
|
42
|
+
|
43
|
+
### Fixed
|
44
|
+
|
45
|
+
- Use system CA certificate if none is specified ([#460](https://github.com/elastic/apm-agent-ruby/pull/460))
|
46
|
+
|
47
|
+
## 2.9.0 (2019-06-25)
|
48
|
+
|
49
|
+
### Security
|
50
|
+
|
51
|
+
- **NB:** If you are using a custom CA cert via `server_ca_cert`, versions of the agent prior to 2.9.0 may not have validated the certificate of APM Server correctly.
|
52
|
+
|
53
|
+
### Added
|
54
|
+
|
55
|
+
- Add `transaction.type` to errors ([#434](https://github.com/elastic/apm-agent-ruby/pull/434))
|
56
|
+
- Add cookies to `request.cookies` ([#448](https://github.com/elastic/apm-agent-ruby/pull/448))
|
57
|
+
|
58
|
+
### Fixed
|
59
|
+
|
60
|
+
- Fix support for older versions of Http.rb ([#438](https://github.com/elastic/apm-agent-ruby/pull/434))
|
61
|
+
- Strip `Cookie` and `Set-Cookie` from headers ([#448](https://github.com/elastic/apm-agent-ruby/pull/448))
|
62
|
+
- Fix disabling SSL verification ([#449](https://github.com/elastic/apm-agent-ruby/pull/449))
|
63
|
+
|
7
64
|
## 2.8.1 (2019-05-29)
|
8
65
|
|
9
66
|
### Fixed
|
@@ -59,7 +116,7 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html
|
|
59
116
|
|
60
117
|
Both APIs are backwards compatible with fallbacks and deprecation warnings, scheduled for removal in next major release.
|
61
118
|
|
62
|
-
### Added
|
119
|
+
### Added
|
63
120
|
|
64
121
|
- Configuration options to use an HTTP proxy ([#352](https://github.com/elastic/apm-agent-ruby/pull/352))
|
65
122
|
|
@@ -120,7 +177,7 @@ Both APIs are backwards compatible with fallbacks and deprecation warnings, sche
|
|
120
177
|
### Added
|
121
178
|
|
122
179
|
- Support for [OpenTracing](https://opentracing.io) ([#273](https://github.com/elastic/apm-agent-ruby/pull/273))
|
123
|
-
- Add
|
180
|
+
- Add capture\_\* options ([#279](https://github.com/elastic/apm-agent-ruby/pull/279))
|
124
181
|
- Evaluate the config file as ERB ([#288](https://github.com/elastic/apm-agent-ruby/pull/288))
|
125
182
|
|
126
183
|
### Changed
|