appsignal 3.0.4 → 3.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +49 -19
- data/README.md +9 -3
- data/ext/agent.yml +24 -17
- data/ext/base.rb +19 -6
- data/lib/appsignal/cli/diagnose.rb +2 -1
- data/lib/appsignal/config.rb +1 -0
- data/lib/appsignal/hooks.rb +1 -0
- data/lib/appsignal/hooks/excon.rb +19 -0
- data/lib/appsignal/hooks/puma.rb +1 -16
- data/lib/appsignal/integrations/excon.rb +20 -0
- data/lib/appsignal/integrations/redis.rb +8 -5
- data/lib/appsignal/probes.rb +0 -1
- data/lib/appsignal/system.rb +30 -3
- data/lib/appsignal/transaction.rb +1 -1
- data/lib/appsignal/version.rb +1 -1
- data/lib/puma/plugin/appsignal.rb +146 -17
- data/spec/lib/appsignal/cli/diagnose_spec.rb +4 -2
- data/spec/lib/appsignal/hooks/excon_spec.rb +74 -0
- data/spec/lib/appsignal/hooks/puma_spec.rb +0 -46
- data/spec/lib/appsignal/hooks/redis_spec.rb +34 -10
- data/spec/lib/appsignal/system_spec.rb +30 -0
- data/spec/lib/appsignal/transaction_spec.rb +7 -0
- data/spec/lib/puma/appsignal_spec.rb +246 -66
- data/spec/support/helpers/wait_for_helper.rb +16 -4
- metadata +6 -5
- data/lib/appsignal/probes/puma.rb +0 -61
- data/spec/lib/appsignal/probes/puma_spec.rb +0 -180
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 40235bf15979f6db3bea6f7e6258f36f1b7a00d19231d3f9a8a10a24aa55d89b
|
4
|
+
data.tar.gz: d71d1a3fbfc1f04a67e28f372aefba58151eef1b4ff1faa16a968cb07b9ea4a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f7b4e86ae1edaad2f534b1370aab274ce7b2c89b1f98705b4bfbafe6d553df98a1a264878a7f1a027187b50d5851dfecbaab99168388f04fc4f093ccb50827d
|
7
|
+
data.tar.gz: 149b5769caba01d5411ed4933c905eafb3b4e0c84e2797a36b1a82ee6f8cf6f1adfc068726eee5bc435a3005c98b0c6a1e780bd6bdcd3f99d6d2cb199f24097b
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,34 @@
|
|
1
|
-
# Changelog
|
1
|
+
# AppSignal for Ruby gem Changelog
|
2
|
+
|
3
|
+
## 3.0.9
|
4
|
+
|
5
|
+
- [44dd4bdc](https://github.com/appsignal/appsignal-ruby/commit/44dd4bdc824ec88337b75791c1870358a4aa274f) patch - Check Rails.backtrace_cleaner method before calling the method. This prevents a NoMethodError from being raised in some edge cases.
|
6
|
+
|
7
|
+
## 3.0.8
|
8
|
+
|
9
|
+
- [5f94712d](https://github.com/appsignal/appsignal-ruby/commit/5f94712d3406898f58bea133b8bf3578d6fbbe22) patch - Add the `APPSIGNAL_BUILD_FOR_LINUX_ARM` flag to allow users to enable the experimental Linux ARM build for 64-bit hosts. Usage: `export APPSIGNAL_BUILD_FOR_LINUX_ARM=1 bundle install`. Please be aware this is an experimental build. Please report any issue you may encounter at our [support email](mailto:support@appsignal.com).
|
10
|
+
|
11
|
+
## 3.0.7
|
12
|
+
|
13
|
+
- [27f9b178](https://github.com/appsignal/appsignal-ruby/commit/27f9b178c20006ee15e69bdf878f3a0c9975b1f4) patch - Bump agent to 6caf6d0. Replaces curl HTTP client and includes various other maintenance updates.
|
14
|
+
- [665d883a](https://github.com/appsignal/appsignal-ruby/commit/665d883a529e5c14b28e73eeb3ae6410deb3e182) patch - Improve Puma plugin stats collection. Instead of starting the AppSignal gem in the main process we send the stats to the AppSignal agent directly using StatsD. This should improve compatibility with phased restarts. If you use `prune_bundler`, you will need to add AppSignal to the extra `extra_runtime_dependencies` list.
|
15
|
+
|
16
|
+
```
|
17
|
+
# config/puma.rb
|
18
|
+
plugin :appsignal
|
19
|
+
extra_runtime_dependencies ["appsignal"]
|
20
|
+
```
|
21
|
+
|
22
|
+
## 3.0.6
|
23
|
+
|
24
|
+
- [d354d79b](https://github.com/appsignal/appsignal-ruby/commit/d354d79b293fd549e66cae60d805d1b1e9e9d2d8) patch - Add Excon integration. Track requests and responses from the Excon gem.
|
25
|
+
- [4c32e818](https://github.com/appsignal/appsignal-ruby/commit/4c32e8180b797d7987c67b68720c6a5d22935333) patch - Support Redis eval statements better by showing the actual script that was performed. Instead of showing `eval ? ? ?` (for a script with 2 arguments), show `<script> ? ?`, where `<script>` is whatever script was sent to `Redis.new.eval("<script>")`.
|
26
|
+
|
27
|
+
## 3.0.5
|
28
|
+
|
29
|
+
- [4bddac36](https://github.com/appsignal/appsignal-ruby/commit/4bddac3618ccea03c165eec53cee90e222b68cd6) patch - Skip empty HTTP proxy config. When any of the HTTP proxy config returns an
|
30
|
+
empty string, skip this config. This fixes installation issues where an empty
|
31
|
+
String is used as a HTTP proxy, causing a RuntimeError upon installation.
|
2
32
|
|
3
33
|
## 3.0.4
|
4
34
|
|
@@ -6,22 +36,22 @@
|
|
6
36
|
these messages in debug mode. This should reduce the noise for users running
|
7
37
|
AppSignal with the STDOUT logger, such as is the default on Heroku.
|
8
38
|
|
9
|
-
|
39
|
+
## 3.0.3
|
10
40
|
- Fix deprecation message for set_error namespace argument. PR #712
|
11
41
|
- Fix example code for Transaction#set_namespace method. PR #713
|
12
42
|
- Fix extension fallbacks on extension installation failure, that caused
|
13
43
|
- NoMethodErrors. PR #720
|
14
44
|
- Bump agent to v-75e76ad. PR #721
|
15
45
|
|
16
|
-
|
46
|
+
## 3.0.2
|
17
47
|
- Fix error on Rails boot when `enable_frontend_error_catching` is `true`.
|
18
48
|
PR #711
|
19
49
|
|
20
|
-
|
50
|
+
## 3.0.1
|
21
51
|
- Fix error occurring on APPSIGNAL_DNS_SERVER environment variable option
|
22
52
|
parsing. PR #709
|
23
53
|
|
24
|
-
|
54
|
+
## 3.0.0
|
25
55
|
|
26
56
|
Please read our [upgrade from version 2 to 3 guide][upgrade3] before upgrading.
|
27
57
|
|
@@ -37,46 +67,46 @@ Please read our [upgrade from version 2 to 3 guide][upgrade3] before upgrading.
|
|
37
67
|
- Add Sidekiq error handler. Report more Sidekiq errors that happen around job
|
38
68
|
execution. PR #699
|
39
69
|
|
40
|
-
|
70
|
+
## 2.11.9
|
41
71
|
- Fix and simplify Ruby method delegation for object method instrumentation in
|
42
72
|
the different Ruby versions. PR #706
|
43
73
|
|
44
|
-
|
74
|
+
## 2.11.8
|
45
75
|
- Mark minutely probe thread as fork-safe by @pixeltrix. PR #704
|
46
76
|
|
47
|
-
|
77
|
+
## 2.11.7
|
48
78
|
- Fix ActionCable integration in test environment using `stub_connection`.
|
49
79
|
PR #705
|
50
80
|
|
51
|
-
|
81
|
+
## 2.11.6
|
52
82
|
- Prepend Sidekiq middleware to wrap all Sidekiq middleware. Catches more
|
53
83
|
errors and provide more complete performance measurements. PR #698
|
54
84
|
|
55
|
-
|
85
|
+
## 2.11.5
|
56
86
|
- Add more detailed logging to finish_event calls when the event is unknown, so
|
57
87
|
we know what event is being tried to finish. Commit
|
58
88
|
c888a04d1b9ac947652b29c111c650fb5a5cf71c
|
59
89
|
|
60
|
-
|
90
|
+
## 2.11.4
|
61
91
|
- Support Ruby 3.0 for Object method instrumentation with keyword arguments
|
62
92
|
(https://docs.appsignal.com/ruby/instrumentation/method-instrumentation.html)
|
63
93
|
PR #693
|
64
94
|
|
65
|
-
|
95
|
+
## 2.11.3
|
66
96
|
- Support Shoryuken batch workers. PR #687
|
67
97
|
|
68
|
-
|
98
|
+
## 2.11.2
|
69
99
|
- Support Ruby 3.0. PR #681
|
70
100
|
- Support breadcrumbs. PR #666
|
71
101
|
- Log Ruby errors on extension download. PR #679
|
72
102
|
- Fix Ruby 1.9 build. PR #680
|
73
103
|
|
74
|
-
|
104
|
+
## 2.11.1
|
75
105
|
- Support AS notifications instrumenters that use `start` and `finish`.
|
76
106
|
- Updated agent with better logging and an IO stats fix.
|
77
107
|
- ActionMailer magic dashboard
|
78
108
|
|
79
|
-
|
109
|
+
## 2.11.0
|
80
110
|
- Track queue time regardless of namespace. Support custom namespaces. PR #602
|
81
111
|
- Improve deprecation message from frontend error middleware. PR #620
|
82
112
|
- Report Ruby environment metadata. PR #621, #627, #619, #618
|
@@ -103,20 +133,20 @@ Please read our [upgrade from version 2 to 3 guide][upgrade3] before upgrading.
|
|
103
133
|
- Update AuthCheck class to use DeprecationMessage helper. PR #649
|
104
134
|
- Print extension load error when AppSignal is loaded. PR #651
|
105
135
|
|
106
|
-
|
136
|
+
## 2.10.12
|
107
137
|
- Fix `working_directory_path` config option loaded from environment variables.
|
108
138
|
PR #653
|
109
139
|
|
110
|
-
|
140
|
+
## 2.10.11
|
111
141
|
- Fix extension install report status output in `appsignal diagnose`. PR #636
|
112
142
|
- Support setting a specific configuration file to load with the
|
113
143
|
`Appsignal::Config` initializer. PR #638
|
114
144
|
|
115
|
-
|
145
|
+
## 2.10.10
|
116
146
|
- Bump agent to v-4548c88. PR #634
|
117
147
|
- Fix issue with host metrics values being reported as "Infinity".
|
118
148
|
|
119
|
-
|
149
|
+
## 2.10.9
|
120
150
|
- Use http proxy if configured when downloading agent. PR #606
|
121
151
|
- Clear event details cache every 48 hours.
|
122
152
|
Commit eb5e899db69fcd7cfa221567bfd6ac04f2654c9c
|
data/README.md
CHANGED
@@ -161,9 +161,13 @@ systems][supported-systems] page.
|
|
161
161
|
|
162
162
|
Following the process below to release a new version of the Ruby gem.
|
163
163
|
|
164
|
-
1.
|
165
|
-
|
166
|
-
|
164
|
+
1. Make sure [mono](https://github.com/appsignal/mono/) is installed by
|
165
|
+
following the installation instructions.
|
166
|
+
1. Run: `mono publish`
|
167
|
+
- Mono will automatically bump the version number based on the
|
168
|
+
`.changesets/`.
|
169
|
+
- Mono will automatically update the `CHANGELOG.md` file based on the
|
170
|
+
`.changesets/`.
|
167
171
|
1. Confirm with your two-factor authentication token for Rubygems.org, _twice_.
|
168
172
|
|
169
173
|
## Development
|
@@ -176,6 +180,8 @@ install all possible dependencies.
|
|
176
180
|
```bash
|
177
181
|
# Install Bundler
|
178
182
|
gem install bundler
|
183
|
+
# Bootstrap the project
|
184
|
+
mono bootstrap
|
179
185
|
# Install the AppSignal extension and _all_ gems we support.
|
180
186
|
bundle exec rake install
|
181
187
|
# Only install the AppSignal extension.
|
data/ext/agent.yml
CHANGED
@@ -1,62 +1,69 @@
|
|
1
1
|
---
|
2
|
-
version:
|
2
|
+
version: 9f282f3
|
3
3
|
mirrors:
|
4
4
|
- https://appsignal-agent-releases.global.ssl.fastly.net
|
5
5
|
- https://d135dj0rjqvssy.cloudfront.net
|
6
6
|
triples:
|
7
7
|
x86_64-darwin:
|
8
8
|
static:
|
9
|
-
checksum:
|
9
|
+
checksum: c279d061ac04b53c8e2ea21b7714d4d54964495124ddc7e794ba998366f9c195
|
10
10
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
11
11
|
dynamic:
|
12
|
-
checksum:
|
12
|
+
checksum: 52284dd2e073e5252363f18f8668cf17d82befe65bfa4376f8d4f61f6e08ece9
|
13
13
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
14
14
|
universal-darwin:
|
15
15
|
static:
|
16
|
-
checksum:
|
16
|
+
checksum: c279d061ac04b53c8e2ea21b7714d4d54964495124ddc7e794ba998366f9c195
|
17
17
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
18
18
|
dynamic:
|
19
|
-
checksum:
|
19
|
+
checksum: 52284dd2e073e5252363f18f8668cf17d82befe65bfa4376f8d4f61f6e08ece9
|
20
20
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
21
|
+
aarch64-linux:
|
22
|
+
static:
|
23
|
+
checksum: 3054b6e3bcab8c8959d4e87eb6fd9fc7a5821e0986c8e733154c2b76251c9e70
|
24
|
+
filename: appsignal-aarch64-linux-all-static.tar.gz
|
25
|
+
dynamic:
|
26
|
+
checksum: 50f96493c1d81dbb0910581598e0d97a8567a3bc6b27a17dbb14d01c97bf7b7c
|
27
|
+
filename: appsignal-aarch64-linux-all-dynamic.tar.gz
|
21
28
|
i686-linux:
|
22
29
|
static:
|
23
|
-
checksum:
|
30
|
+
checksum: 30554989a59632cdaf8fdf5d15024b866d32930e91c080425955842e8078952b
|
24
31
|
filename: appsignal-i686-linux-all-static.tar.gz
|
25
32
|
dynamic:
|
26
|
-
checksum:
|
33
|
+
checksum: 437e24a97738995375c18559220fc30b6b9599cfc9339d5a410225e7fdfeb875
|
27
34
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
28
35
|
x86-linux:
|
29
36
|
static:
|
30
|
-
checksum:
|
37
|
+
checksum: 30554989a59632cdaf8fdf5d15024b866d32930e91c080425955842e8078952b
|
31
38
|
filename: appsignal-i686-linux-all-static.tar.gz
|
32
39
|
dynamic:
|
33
|
-
checksum:
|
40
|
+
checksum: 437e24a97738995375c18559220fc30b6b9599cfc9339d5a410225e7fdfeb875
|
34
41
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
35
42
|
x86_64-linux:
|
36
43
|
static:
|
37
|
-
checksum:
|
44
|
+
checksum: f11fa7ec493c3668e965ef4cff077d44fe55101197a5eeaf50ccacf7314eba2b
|
38
45
|
filename: appsignal-x86_64-linux-all-static.tar.gz
|
39
46
|
dynamic:
|
40
|
-
checksum:
|
47
|
+
checksum: bc7991b388eb541eddc26d8272738b4d9befa594f4b73a222b425e0ee7b6157d
|
41
48
|
filename: appsignal-x86_64-linux-all-dynamic.tar.gz
|
42
49
|
x86_64-linux-musl:
|
43
50
|
static:
|
44
|
-
checksum:
|
51
|
+
checksum: 0dae02e77e244275b69bb8332e79bdcb0e0fa3b6b6f84744780ce0baffa9784f
|
45
52
|
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
46
53
|
dynamic:
|
47
|
-
checksum:
|
54
|
+
checksum: a56f3e3cb6e30e638f91f14ba69ae1b5086bb566dedb6f0c630be24834a8fd4f
|
48
55
|
filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
|
49
56
|
x86_64-freebsd:
|
50
57
|
static:
|
51
|
-
checksum:
|
58
|
+
checksum: d9146a04bbbb85dccf22c84cacfa924ee8b7e2ff8ed79402aba14ac4333e440f
|
52
59
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
53
60
|
dynamic:
|
54
|
-
checksum:
|
61
|
+
checksum: e231e106695160525e3f920e781c37f9d5875a3eacc18c38a0264c4b7f9c69bf
|
55
62
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
56
63
|
amd64-freebsd:
|
57
64
|
static:
|
58
|
-
checksum:
|
65
|
+
checksum: d9146a04bbbb85dccf22c84cacfa924ee8b7e2ff8ed79402aba14ac4333e440f
|
59
66
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
60
67
|
dynamic:
|
61
|
-
checksum:
|
68
|
+
checksum: e231e106695160525e3f920e781c37f9d5875a3eacc18c38a0264c4b7f9c69bf
|
62
69
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
data/ext/base.rb
CHANGED
@@ -11,8 +11,9 @@ EXT_PATH = File.expand_path("..", __FILE__).freeze
|
|
11
11
|
AGENT_CONFIG = YAML.load(File.read(File.join(EXT_PATH, "agent.yml"))).freeze
|
12
12
|
|
13
13
|
AGENT_PLATFORM = Appsignal::System.agent_platform
|
14
|
-
|
15
|
-
|
14
|
+
AGENT_ARCHITECTURE = Appsignal::System.agent_architecture
|
15
|
+
TARGET_TRIPLE = "#{AGENT_ARCHITECTURE}-#{AGENT_PLATFORM}".freeze
|
16
|
+
ARCH_CONFIG = AGENT_CONFIG["triples"][TARGET_TRIPLE].freeze
|
16
17
|
CA_CERT_PATH = File.join(EXT_PATH, "../resources/cacert.pem").freeze
|
17
18
|
|
18
19
|
def ext_path(path)
|
@@ -38,9 +39,10 @@ def report
|
|
38
39
|
"build" => {
|
39
40
|
"time" => Time.now.utc,
|
40
41
|
"package_path" => File.dirname(EXT_PATH),
|
41
|
-
"architecture" =>
|
42
|
+
"architecture" => AGENT_ARCHITECTURE,
|
42
43
|
"target" => AGENT_PLATFORM,
|
43
44
|
"musl_override" => Appsignal::System.force_musl_build?,
|
45
|
+
"linux_arm_override" => Appsignal::System.force_linux_arm_build?,
|
44
46
|
"dependencies" => {},
|
45
47
|
"flags" => {}
|
46
48
|
},
|
@@ -94,11 +96,11 @@ def installation_succeeded?
|
|
94
96
|
end
|
95
97
|
|
96
98
|
def check_architecture
|
97
|
-
if AGENT_CONFIG["triples"].key?(
|
99
|
+
if AGENT_CONFIG["triples"].key?(TARGET_TRIPLE)
|
98
100
|
true
|
99
101
|
else
|
100
102
|
abort_installation(
|
101
|
-
"AppSignal currently does not support your system architecture (#{
|
103
|
+
"AppSignal currently does not support your system architecture (#{TARGET_TRIPLE})." \
|
102
104
|
"Please let us know at support@appsignal.com, we aim to support everything our customers run."
|
103
105
|
)
|
104
106
|
end
|
@@ -184,7 +186,18 @@ def store_download_version_on_report
|
|
184
186
|
end
|
185
187
|
|
186
188
|
def http_proxy
|
187
|
-
Gem.configuration[:http_proxy]
|
189
|
+
proxy = try_http_proxy_value(Gem.configuration[:http_proxy])
|
190
|
+
return proxy if proxy
|
191
|
+
|
192
|
+
proxy = try_http_proxy_value(ENV["http_proxy"])
|
193
|
+
return proxy if proxy
|
194
|
+
|
195
|
+
proxy = try_http_proxy_value(ENV["HTTP_PROXY"])
|
196
|
+
return proxy if proxy
|
197
|
+
end
|
198
|
+
|
199
|
+
def try_http_proxy_value(value)
|
200
|
+
value if value.respond_to?(:empty?) && !value.strip.empty?
|
188
201
|
end
|
189
202
|
|
190
203
|
# Fail the installation on purpose in a specific test environment.
|
@@ -399,6 +399,7 @@ module Appsignal
|
|
399
399
|
puts " Architecture: #{report["architecture"]}"
|
400
400
|
puts " Target: #{report["target"]}"
|
401
401
|
puts " Musl override: #{report["musl_override"]}"
|
402
|
+
puts " Linux ARM override: #{report["linux_arm_override"]}"
|
402
403
|
puts " Library type: #{report["library_type"]}"
|
403
404
|
puts " Source: #{report["source"]}" if report["source"] != "remote"
|
404
405
|
puts " Dependencies: #{report["dependencies"]}"
|
@@ -416,7 +417,7 @@ module Appsignal
|
|
416
417
|
rbconfig = RbConfig::CONFIG
|
417
418
|
puts "Host information"
|
418
419
|
data_section :host do
|
419
|
-
puts_and_save :architecture, "Architecture",
|
420
|
+
puts_and_save :architecture, "Architecture", Appsignal::System.agent_architecture
|
420
421
|
|
421
422
|
os_label = os = rbconfig["host_os"]
|
422
423
|
os_label = "#{os} (Microsoft Windows is not supported.)" if Gem.win_platform?
|
data/lib/appsignal/config.rb
CHANGED
@@ -290,6 +290,7 @@ module Appsignal
|
|
290
290
|
ENV["_APPSIGNAL_FILES_WORLD_ACCESSIBLE"] = config_hash[:files_world_accessible].to_s
|
291
291
|
ENV["_APPSIGNAL_TRANSACTION_DEBUG_MODE"] = config_hash[:transaction_debug_mode].to_s
|
292
292
|
ENV["_APPSIGNAL_SEND_ENVIRONMENT_METADATA"] = config_hash[:send_environment_metadata].to_s
|
293
|
+
ENV["_APPSIGNAL_ENABLE_STATSD"] = "true"
|
293
294
|
ENV["_APP_REVISION"] = config_hash[:revision].to_s
|
294
295
|
end
|
295
296
|
|
data/lib/appsignal/hooks.rb
CHANGED
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Appsignal
|
4
|
+
class Hooks
|
5
|
+
# @api private
|
6
|
+
class ExconHook < Appsignal::Hooks::Hook
|
7
|
+
register :excon
|
8
|
+
|
9
|
+
def dependencies_present?
|
10
|
+
Appsignal.config && defined?(::Excon)
|
11
|
+
end
|
12
|
+
|
13
|
+
def install
|
14
|
+
require "appsignal/integrations/excon"
|
15
|
+
::Excon.defaults[:instrumentor] = Appsignal::Integrations::ExconIntegration
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/appsignal/hooks/puma.rb
CHANGED
@@ -11,23 +11,8 @@ module Appsignal
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def install
|
14
|
-
if ::Puma.respond_to?(:stats) && !defined?(APPSIGNAL_PUMA_PLUGIN_LOADED)
|
15
|
-
# Only install the minutely probe if a user isn't using our Puma
|
16
|
-
# plugin, which lives in `lib/puma/appsignal.rb`. This plugin defines
|
17
|
-
# the {APPSIGNAL_PUMA_PLUGIN_LOADED} constant.
|
18
|
-
#
|
19
|
-
# We prefer people use the AppSignal Puma plugin. This fallback is
|
20
|
-
# only there when users relied on our *magic* integration.
|
21
|
-
#
|
22
|
-
# Using the Puma plugin, the minutely probe thread will still run in
|
23
|
-
# Puma workers, for other non-Puma probes, but the Puma probe only
|
24
|
-
# runs in the Puma main process.
|
25
|
-
# For more information:
|
26
|
-
# https://docs.appsignal.com/ruby/integrations/puma.html
|
27
|
-
Appsignal::Minutely.probes.register :puma, ::Appsignal::Probes::PumaProbe
|
28
|
-
end
|
29
|
-
|
30
14
|
return unless defined?(::Puma::Cluster)
|
15
|
+
|
31
16
|
# For clustered mode with multiple workers
|
32
17
|
::Puma::Cluster.send(:prepend, Module.new do
|
33
18
|
def stop_workers
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Appsignal
|
4
|
+
module Integrations
|
5
|
+
module ExconIntegration
|
6
|
+
def self.instrument(name, data, &block)
|
7
|
+
namespace, *event = name.split(".")
|
8
|
+
rails_name = [event, namespace].flatten.join(".")
|
9
|
+
|
10
|
+
title =
|
11
|
+
if rails_name == "response.excon"
|
12
|
+
data[:host]
|
13
|
+
else
|
14
|
+
"#{data[:method].to_s.upcase} #{data[:scheme]}://#{data[:host]}"
|
15
|
+
end
|
16
|
+
Appsignal.instrument(rails_name, title, &block)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -3,12 +3,15 @@
|
|
3
3
|
module Appsignal
|
4
4
|
module Integrations
|
5
5
|
module RedisIntegration
|
6
|
-
def
|
7
|
-
|
8
|
-
|
9
|
-
|
6
|
+
def write(command)
|
7
|
+
sanitized_command =
|
8
|
+
if command[0] == :eval
|
9
|
+
"#{command[1]}#{" ?" * (command.size - 3)}"
|
10
|
+
else
|
11
|
+
"#{command[0]}#{" ?" * (command.size - 1)}"
|
12
|
+
end
|
10
13
|
|
11
|
-
Appsignal.instrument "query.redis", id,
|
14
|
+
Appsignal.instrument "query.redis", id, sanitized_command do
|
12
15
|
super
|
13
16
|
end
|
14
17
|
end
|