elastic-apm 2.10.0 → 2.10.1
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/Jenkinsfile +7 -0
- data/.ci/jobs/apm-agent-ruby-linting-mbp.yml +38 -0
- data/.ci/jobs/apm-agent-ruby-mbp.yml +1 -0
- data/.ci/linting.groovy +32 -0
- data/CHANGELOG.md +8 -0
- data/lib/elastic_apm/agent.rb +12 -2
- data/lib/elastic_apm/config.rb +17 -6
- data/lib/elastic_apm/error/exception.rb +3 -1
- data/lib/elastic_apm/metrics/vm.rb +3 -0
- data/lib/elastic_apm/transport/serializers/error_serializer.rb +2 -1
- data/lib/elastic_apm/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2dbd55033ad5acde5c178afb8af7e3c49aea9e64391901ddd571e6eb4a5db139
|
4
|
+
data.tar.gz: 0c117a6853b5e54af3f1ad2b42e0ff99e4d061c95da66a89ee35f525b7d11fd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e5a48afa71841e62e52917e71d6201b68d4b7d36636b93e5b0076999e5a6b13a31f6dac0f39501245122d143497648dafef50fa02a15a30dc767482b4a1181d
|
7
|
+
data.tar.gz: 671f26c821de9e4090aef5f1af8855729d86f4b3b1ef824d3f5114231e9ecb34ef2e1aa81cb9b84ffcfab7a307418bf95a90df4e034075c5d9bc56798344b31c
|
data/.ci/Jenkinsfile
CHANGED
@@ -56,6 +56,13 @@ pipeline {
|
|
56
56
|
}
|
57
57
|
stage('Sanity checks') {
|
58
58
|
agent { label 'linux && immutable && docker' }
|
59
|
+
when {
|
60
|
+
beforeAgent true
|
61
|
+
anyOf {
|
62
|
+
not { changeRequest() }
|
63
|
+
expression { return params.Run_As_Master_Branch }
|
64
|
+
}
|
65
|
+
}
|
59
66
|
options { skipDefaultCheckout() }
|
60
67
|
environment {
|
61
68
|
HOME = "${env.WORKSPACE}"
|
@@ -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'
|
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
|
+
}
|
data/CHANGELOG.md
CHANGED
@@ -4,10 +4,18 @@ 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.10.1
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
|
11
|
+
- Fixed loading options from a config file specified by `ELASTIC_APM_CONFIG_FILE` ([#518](https://github.com/elastic/apm-agent-ruby/pull/518))
|
12
|
+
- Fixed an issue with CentralConfig polling not starting ([#525](https://github.com/elastic/apm-agent-ruby/pull/525))
|
13
|
+
|
7
14
|
## 2.10.0
|
8
15
|
|
9
16
|
### Added
|
10
17
|
|
18
|
+
- Support for chained exceptions ([#488](https://github.com/elastic/apm-agent-ruby/pull/488))
|
11
19
|
- Add Ruby specific metrics ([#437](https://github.com/elastic/apm-agent-ruby/pull/437))
|
12
20
|
- Support for APM Agent Configuration via Kibana ([#464](https://github.com/elastic/apm-agent-ruby/pull/464))
|
13
21
|
- Change span name format and add command to context's db.statement for `MongoSpy` ([#488](https://github.com/elastic/apm-agent-ruby/pull/490))
|
data/lib/elastic_apm/agent.rb
CHANGED
@@ -79,8 +79,16 @@ module ElasticAPM
|
|
79
79
|
end
|
80
80
|
# rubocop:enable Metrics/MethodLength
|
81
81
|
|
82
|
-
attr_reader
|
83
|
-
:
|
82
|
+
attr_reader(
|
83
|
+
:central_config,
|
84
|
+
:config,
|
85
|
+
:context_builder,
|
86
|
+
:error_builder,
|
87
|
+
:instrumenter,
|
88
|
+
:metrics,
|
89
|
+
:stacktrace_builder,
|
90
|
+
:transport
|
91
|
+
)
|
84
92
|
|
85
93
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
86
94
|
def start
|
@@ -88,6 +96,7 @@ module ElasticAPM
|
|
88
96
|
info '[%s] Starting agent, reporting to %s', VERSION, config.server_url
|
89
97
|
end
|
90
98
|
|
99
|
+
central_config.start
|
91
100
|
transport.start
|
92
101
|
instrumenter.start
|
93
102
|
metrics.start
|
@@ -104,6 +113,7 @@ module ElasticAPM
|
|
104
113
|
def stop
|
105
114
|
debug 'Stopping agent'
|
106
115
|
|
116
|
+
central_config.stop
|
107
117
|
metrics.stop
|
108
118
|
instrumenter.stop
|
109
119
|
transport.stop
|
data/lib/elastic_apm/config.rb
CHANGED
@@ -30,9 +30,9 @@ module ElasticAPM
|
|
30
30
|
].freeze
|
31
31
|
|
32
32
|
# rubocop:disable Metrics/LineLength, Layout/ExtraSpacing
|
33
|
-
option :config_file, default: 'config/elastic_apm.yml'
|
34
|
-
option :server_url, default: 'http://localhost:8200'
|
35
|
-
option :secret_token
|
33
|
+
option :config_file, type: :string, default: 'config/elastic_apm.yml'
|
34
|
+
option :server_url, type: :string, default: 'http://localhost:8200'
|
35
|
+
option :secret_token, type: :string
|
36
36
|
|
37
37
|
option :active, type: :bool, default: true
|
38
38
|
option :api_buffer_size, type: :int, default: 256
|
@@ -83,14 +83,23 @@ module ElasticAPM
|
|
83
83
|
option :verify_server_cert, type: :bool, default: true
|
84
84
|
# rubocop:enable Metrics/LineLength, Layout/ExtraSpacing
|
85
85
|
|
86
|
+
# rubocop:disable Metrics/MethodLength
|
86
87
|
def initialize(options = {})
|
87
88
|
@options = load_schema
|
88
89
|
|
89
90
|
custom_logger = options.delete(:logger)
|
90
91
|
|
91
92
|
assign(options)
|
93
|
+
|
94
|
+
# Pick out config_file specifically as we need it now to load it,
|
95
|
+
# but still need the other env vars to have precedence
|
96
|
+
env = load_env
|
97
|
+
if (env_config_file = env.delete(:config_file))
|
98
|
+
self.config_file = env_config_file
|
99
|
+
end
|
100
|
+
|
92
101
|
assign(load_config_file)
|
93
|
-
assign(
|
102
|
+
assign(env)
|
94
103
|
|
95
104
|
yield self if block_given?
|
96
105
|
|
@@ -99,6 +108,7 @@ module ElasticAPM
|
|
99
108
|
@__view_paths = []
|
100
109
|
@__root_path = Dir.pwd
|
101
110
|
end
|
111
|
+
# rubocop:enable Metrics/MethodLength
|
102
112
|
|
103
113
|
attr_accessor :__view_paths, :__root_path
|
104
114
|
attr_accessor :logger
|
@@ -205,8 +215,9 @@ module ElasticAPM
|
|
205
215
|
def load_config_file
|
206
216
|
return unless File.exist?(config_file)
|
207
217
|
|
208
|
-
|
209
|
-
|
218
|
+
read = File.read(config_file)
|
219
|
+
evaled = ERB.new(read).result
|
220
|
+
YAML.safe_load(evaled)
|
210
221
|
end
|
211
222
|
|
212
223
|
def load_env
|
@@ -11,6 +11,7 @@ module ElasticAPM
|
|
11
11
|
"#{exception.class}: #{exception.message}"
|
12
12
|
@type = exception.class.to_s
|
13
13
|
@module = format_module exception
|
14
|
+
@cause = exception.cause && Exception.new(exception.cause)
|
14
15
|
|
15
16
|
attrs.each do |key, val|
|
16
17
|
send(:"#{key}=", val)
|
@@ -24,7 +25,8 @@ module ElasticAPM
|
|
24
25
|
:message,
|
25
26
|
:module,
|
26
27
|
:stacktrace,
|
27
|
-
:type
|
28
|
+
:type,
|
29
|
+
:cause
|
28
30
|
)
|
29
31
|
|
30
32
|
private
|
@@ -7,6 +7,7 @@ module ElasticAPM
|
|
7
7
|
include Logging
|
8
8
|
|
9
9
|
def initialize(config)
|
10
|
+
@config = config
|
10
11
|
@total_time = 0
|
11
12
|
@disabled = false
|
12
13
|
end
|
@@ -15,6 +16,7 @@ module ElasticAPM
|
|
15
16
|
attr_writer :disabled
|
16
17
|
|
17
18
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
19
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
18
20
|
def collect
|
19
21
|
return if disabled?
|
20
22
|
|
@@ -47,6 +49,7 @@ module ElasticAPM
|
|
47
49
|
@disabled = true
|
48
50
|
nil
|
49
51
|
end
|
52
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
50
53
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
51
54
|
|
52
55
|
def disabled?
|
@@ -48,7 +48,8 @@ module ElasticAPM
|
|
48
48
|
code: keyword_field(exception.code),
|
49
49
|
attributes: exception.attributes,
|
50
50
|
stacktrace: exception.stacktrace.to_a,
|
51
|
-
handled: exception.handled
|
51
|
+
handled: exception.handled,
|
52
|
+
cause: exception.cause && [build_exception(exception.cause)]
|
52
53
|
}
|
53
54
|
end
|
54
55
|
|
data/lib/elastic_apm/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elastic-apm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.10.
|
4
|
+
version: 2.10.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikkel Malmberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -54,9 +54,11 @@ files:
|
|
54
54
|
- ".ci/bin/check_paths_for_matches.py"
|
55
55
|
- ".ci/downstreamTests.groovy"
|
56
56
|
- ".ci/jobs/apm-agent-ruby-downstream.yml"
|
57
|
+
- ".ci/jobs/apm-agent-ruby-linting-mbp.yml"
|
57
58
|
- ".ci/jobs/apm-agent-ruby-mbp.yml"
|
58
59
|
- ".ci/jobs/apm-agent-ruby.yml"
|
59
60
|
- ".ci/jobs/defaults.yml"
|
61
|
+
- ".ci/linting.groovy"
|
60
62
|
- ".gitignore"
|
61
63
|
- ".hound.yml"
|
62
64
|
- ".pre-commit-config.yaml"
|
@@ -204,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
204
206
|
- !ruby/object:Gem::Version
|
205
207
|
version: '0'
|
206
208
|
requirements: []
|
207
|
-
rubygems_version: 3.0.
|
209
|
+
rubygems_version: 3.0.6
|
208
210
|
signing_key:
|
209
211
|
specification_version: 4
|
210
212
|
summary: The official Elastic APM agent for Ruby
|