elastic-apm 2.10.0 → 2.10.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|