appsignal 5.0.0 → 5.0.2
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/CHANGELOG.md +26 -0
- data/README.md +1 -1
- data/ext/agent.rb +27 -27
- data/lib/appsignal/config.rb +6 -8
- data/lib/appsignal/opentelemetry.rb +4 -5
- data/lib/appsignal/rack/event_handler.rb +8 -4
- data/lib/appsignal/transaction/opentelemetry_backend.rb +6 -2
- data/lib/appsignal/version.rb +1 -1
- data/sig/appsignal.rbi +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9c73f2ecdc63058c7961981d8fc044c0b2b0801d4cd2887dd1295ffd356975e5
|
|
4
|
+
data.tar.gz: d28d7b78d58597f8e4ce6f37111110405acd0cdcdc38efc290b6131c57501c86
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 63f7e6922357cb88e8b52623278deb0bc1037087f8df262798a53af3a3ac5e66f0340959ca5b9858d391ac50f7ebc8923b91381331f09b62b2d39a9401af18fe
|
|
7
|
+
data.tar.gz: 1dcb25bc71bed601aac8cf9a499182227f8f8b36c2550a203780b57a80f8758a061fb6a7c7b9427ec39b46828abfb6a6c47225aa602f89516d0d6142aa36878c
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# AppSignal for Ruby gem Changelog
|
|
2
2
|
|
|
3
|
+
## 5.0.2
|
|
4
|
+
|
|
5
|
+
_Published on 2026-10-06._
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Use the revision set by Heroku, Render, Kamal or Scalingo when the application also has a `REVISION` file. Since version 4.6.0, a `REVISION` file took precedence over the `HEROKU_SLUG_COMMIT`, `RENDER_GIT_COMMIT`, `KAMAL_VERSION` and `CONTAINER_VERSION` environment variables, so an application that kept a placeholder `REVISION` file in source control reported that placeholder as its revision. The `revision` config option and the `APP_REVISION` environment variable still take precedence over both.
|
|
10
|
+
|
|
11
|
+
Thanks to @rmm5t for their contribution!
|
|
12
|
+
|
|
13
|
+
(patch [bc14ef9c](https://github.com/appsignal/appsignal-ruby/commit/bc14ef9c6db3de71bf2ca8f23ad088f29294c0ff))
|
|
14
|
+
|
|
15
|
+
## 5.0.1
|
|
16
|
+
|
|
17
|
+
_Published on 2026-10-02._
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- In collector mode, also report the `response_status` counter with a `service` tag. Response statuses can then be graphed per service when several services report to one app. (patch [51981add](https://github.com/appsignal/appsignal-ruby/commit/51981add4c006403b0afddab78cfb608a32ec2c3))
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- Improve handling of the extension internal queue when full. (patch [78123581](https://github.com/appsignal/appsignal-ruby/commit/7812358175fc1e591e7f29026cd16df6db70e589))
|
|
26
|
+
- Fix issues in the extension that lead to gaps in data reporting. (patch [f3c72857](https://github.com/appsignal/appsignal-ruby/commit/f3c72857a00e3fb4ad8b9760f53d14a85fb32ed2))
|
|
27
|
+
- In collector mode, report allocation counts and queue durations per service and namespace. This fixes an issue where these metrics were reported by namespace alone, causing the "Performance" > "Allocations" page to link to performance pages that did not exist. (patch [51981add](https://github.com/appsignal/appsignal-ruby/commit/51981add4c006403b0afddab78cfb608a32ec2c3))
|
|
28
|
+
|
|
3
29
|
## 5.0.0
|
|
4
30
|
|
|
5
31
|
_Published on 2026-09-28._
|
data/README.md
CHANGED
|
@@ -318,7 +318,7 @@ Also see our [SUPPORT.md file](SUPPORT.md).
|
|
|
318
318
|
[custom-instrumentation]: https://docs.appsignal.com/ruby/instrumentation.html
|
|
319
319
|
[front-end-monitoring]: https://docs.appsignal.com/front-end.html
|
|
320
320
|
[exception-handling]: https://docs.appsignal.com/ruby/instrumentation/exception-handling.html
|
|
321
|
-
[tagging]: https://docs.appsignal.com/guides/
|
|
321
|
+
[tagging]: https://docs.appsignal.com/guides/tagging#ruby
|
|
322
322
|
[host-metrics]: https://docs.appsignal.com/metrics/host.html
|
|
323
323
|
[custom-metrics]: https://docs.appsignal.com/metrics/custom.html
|
|
324
324
|
|
data/ext/agent.rb
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
# Modifications to this file will be overwritten with the next agent release.
|
|
7
7
|
|
|
8
8
|
APPSIGNAL_AGENT_CONFIG = {
|
|
9
|
-
"version" => "0.37.
|
|
9
|
+
"version" => "0.37.3",
|
|
10
10
|
"mirrors" => [
|
|
11
11
|
"https://d135dj0rjqvssy.cloudfront.net",
|
|
12
12
|
"https://appsignal-agent-releases.global.ssl.fastly.net"
|
|
@@ -14,131 +14,131 @@ APPSIGNAL_AGENT_CONFIG = {
|
|
|
14
14
|
"triples" => {
|
|
15
15
|
"x86_64-darwin" => {
|
|
16
16
|
"static" => {
|
|
17
|
-
"checksum" => "
|
|
17
|
+
"checksum" => "283afa4ec2222108c994cf3c943357f649a9e09a200c0b3b06d33b9fefa8487f",
|
|
18
18
|
"filename" => "appsignal-x86_64-darwin-all-static.tar.gz"
|
|
19
19
|
},
|
|
20
20
|
"dynamic" => {
|
|
21
|
-
"checksum" => "
|
|
21
|
+
"checksum" => "a8738c9de75f751a3ed09fbe8129d163002ad1c036a37f47089629289a60ae3b",
|
|
22
22
|
"filename" => "appsignal-x86_64-darwin-all-dynamic.tar.gz"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
25
|
"universal-darwin" => {
|
|
26
26
|
"static" => {
|
|
27
|
-
"checksum" => "
|
|
27
|
+
"checksum" => "283afa4ec2222108c994cf3c943357f649a9e09a200c0b3b06d33b9fefa8487f",
|
|
28
28
|
"filename" => "appsignal-x86_64-darwin-all-static.tar.gz"
|
|
29
29
|
},
|
|
30
30
|
"dynamic" => {
|
|
31
|
-
"checksum" => "
|
|
31
|
+
"checksum" => "a8738c9de75f751a3ed09fbe8129d163002ad1c036a37f47089629289a60ae3b",
|
|
32
32
|
"filename" => "appsignal-x86_64-darwin-all-dynamic.tar.gz"
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"aarch64-darwin" => {
|
|
36
36
|
"static" => {
|
|
37
|
-
"checksum" => "
|
|
37
|
+
"checksum" => "201b0d402c8685492899ba5cbd4d1ff3d6389d0b5fe2cc5ff62cd9a1f4a57f19",
|
|
38
38
|
"filename" => "appsignal-aarch64-darwin-all-static.tar.gz"
|
|
39
39
|
},
|
|
40
40
|
"dynamic" => {
|
|
41
|
-
"checksum" => "
|
|
41
|
+
"checksum" => "85f471e3da1fe69b9a900ed0a907aaf8bffdc4ada978809c8427704e7b40276c",
|
|
42
42
|
"filename" => "appsignal-aarch64-darwin-all-dynamic.tar.gz"
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"arm64-darwin" => {
|
|
46
46
|
"static" => {
|
|
47
|
-
"checksum" => "
|
|
47
|
+
"checksum" => "201b0d402c8685492899ba5cbd4d1ff3d6389d0b5fe2cc5ff62cd9a1f4a57f19",
|
|
48
48
|
"filename" => "appsignal-aarch64-darwin-all-static.tar.gz"
|
|
49
49
|
},
|
|
50
50
|
"dynamic" => {
|
|
51
|
-
"checksum" => "
|
|
51
|
+
"checksum" => "85f471e3da1fe69b9a900ed0a907aaf8bffdc4ada978809c8427704e7b40276c",
|
|
52
52
|
"filename" => "appsignal-aarch64-darwin-all-dynamic.tar.gz"
|
|
53
53
|
}
|
|
54
54
|
},
|
|
55
55
|
"arm-darwin" => {
|
|
56
56
|
"static" => {
|
|
57
|
-
"checksum" => "
|
|
57
|
+
"checksum" => "201b0d402c8685492899ba5cbd4d1ff3d6389d0b5fe2cc5ff62cd9a1f4a57f19",
|
|
58
58
|
"filename" => "appsignal-aarch64-darwin-all-static.tar.gz"
|
|
59
59
|
},
|
|
60
60
|
"dynamic" => {
|
|
61
|
-
"checksum" => "
|
|
61
|
+
"checksum" => "85f471e3da1fe69b9a900ed0a907aaf8bffdc4ada978809c8427704e7b40276c",
|
|
62
62
|
"filename" => "appsignal-aarch64-darwin-all-dynamic.tar.gz"
|
|
63
63
|
}
|
|
64
64
|
},
|
|
65
65
|
"aarch64-linux" => {
|
|
66
66
|
"static" => {
|
|
67
|
-
"checksum" => "
|
|
67
|
+
"checksum" => "f8e67ca70c013908d0d5b1b0a78aa67be59f5bb885590ab6c70b0f2bc4d9148c",
|
|
68
68
|
"filename" => "appsignal-aarch64-linux-all-static.tar.gz"
|
|
69
69
|
},
|
|
70
70
|
"dynamic" => {
|
|
71
|
-
"checksum" => "
|
|
71
|
+
"checksum" => "5cf0739c2a1f836973d903ea7b8232b867ded08f4e4fdc2d1ace1191c5848516",
|
|
72
72
|
"filename" => "appsignal-aarch64-linux-all-dynamic.tar.gz"
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
75
|
"i686-linux" => {
|
|
76
76
|
"static" => {
|
|
77
|
-
"checksum" => "
|
|
77
|
+
"checksum" => "c52333b87c6da6b2b979097c07d13925104b5d535e6287babc71566c3fdcf321",
|
|
78
78
|
"filename" => "appsignal-i686-linux-all-static.tar.gz"
|
|
79
79
|
},
|
|
80
80
|
"dynamic" => {
|
|
81
|
-
"checksum" => "
|
|
81
|
+
"checksum" => "4831ad90d246eef552d567d3a3f429aa191b9b3c6d80ab4b4dcc1bcc69eccfd5",
|
|
82
82
|
"filename" => "appsignal-i686-linux-all-dynamic.tar.gz"
|
|
83
83
|
}
|
|
84
84
|
},
|
|
85
85
|
"x86-linux" => {
|
|
86
86
|
"static" => {
|
|
87
|
-
"checksum" => "
|
|
87
|
+
"checksum" => "c52333b87c6da6b2b979097c07d13925104b5d535e6287babc71566c3fdcf321",
|
|
88
88
|
"filename" => "appsignal-i686-linux-all-static.tar.gz"
|
|
89
89
|
},
|
|
90
90
|
"dynamic" => {
|
|
91
|
-
"checksum" => "
|
|
91
|
+
"checksum" => "4831ad90d246eef552d567d3a3f429aa191b9b3c6d80ab4b4dcc1bcc69eccfd5",
|
|
92
92
|
"filename" => "appsignal-i686-linux-all-dynamic.tar.gz"
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
"x86_64-linux" => {
|
|
96
96
|
"static" => {
|
|
97
|
-
"checksum" => "
|
|
97
|
+
"checksum" => "5d2816036d1025eecc7005114780120788c0a76ff899740ebaa54f063aff7a18",
|
|
98
98
|
"filename" => "appsignal-x86_64-linux-all-static.tar.gz"
|
|
99
99
|
},
|
|
100
100
|
"dynamic" => {
|
|
101
|
-
"checksum" => "
|
|
101
|
+
"checksum" => "2e1849c946a58a2c1dce772949b28b88eb7656eee43211b0e9c3cb64103df278",
|
|
102
102
|
"filename" => "appsignal-x86_64-linux-all-dynamic.tar.gz"
|
|
103
103
|
}
|
|
104
104
|
},
|
|
105
105
|
"x86_64-linux-musl" => {
|
|
106
106
|
"static" => {
|
|
107
|
-
"checksum" => "
|
|
107
|
+
"checksum" => "937e4517d435898518a0b529196160682172c1eec32e6ab31ad9b4e7220705fe",
|
|
108
108
|
"filename" => "appsignal-x86_64-linux-musl-all-static.tar.gz"
|
|
109
109
|
},
|
|
110
110
|
"dynamic" => {
|
|
111
|
-
"checksum" => "
|
|
111
|
+
"checksum" => "b3d7730f4112b376f4aceb8197c262c446cf056787a7971046b76a42a9f326e6",
|
|
112
112
|
"filename" => "appsignal-x86_64-linux-musl-all-dynamic.tar.gz"
|
|
113
113
|
}
|
|
114
114
|
},
|
|
115
115
|
"aarch64-linux-musl" => {
|
|
116
116
|
"static" => {
|
|
117
|
-
"checksum" => "
|
|
117
|
+
"checksum" => "fd9abfd9320bf893aed80d9487aab2e5da0af33c48e6c54a284f87c1a00c9af3",
|
|
118
118
|
"filename" => "appsignal-aarch64-linux-musl-all-static.tar.gz"
|
|
119
119
|
},
|
|
120
120
|
"dynamic" => {
|
|
121
|
-
"checksum" => "
|
|
121
|
+
"checksum" => "75642949d2fff2b3878e9d8a229ada0560bf6d273cc27e694868ad85f2ce2843",
|
|
122
122
|
"filename" => "appsignal-aarch64-linux-musl-all-dynamic.tar.gz"
|
|
123
123
|
}
|
|
124
124
|
},
|
|
125
125
|
"x86_64-freebsd" => {
|
|
126
126
|
"static" => {
|
|
127
|
-
"checksum" => "
|
|
127
|
+
"checksum" => "e79ecb04aabb439e1b0aaa829dddec01886758843f3e29a46d8922688719af26",
|
|
128
128
|
"filename" => "appsignal-x86_64-freebsd-all-static.tar.gz"
|
|
129
129
|
},
|
|
130
130
|
"dynamic" => {
|
|
131
|
-
"checksum" => "
|
|
131
|
+
"checksum" => "3aa2dfe2c22f42c0d97b93bb21917180e0399359cc3d86786c62aeb6fcaa96c6",
|
|
132
132
|
"filename" => "appsignal-x86_64-freebsd-all-dynamic.tar.gz"
|
|
133
133
|
}
|
|
134
134
|
},
|
|
135
135
|
"amd64-freebsd" => {
|
|
136
136
|
"static" => {
|
|
137
|
-
"checksum" => "
|
|
137
|
+
"checksum" => "e79ecb04aabb439e1b0aaa829dddec01886758843f3e29a46d8922688719af26",
|
|
138
138
|
"filename" => "appsignal-x86_64-freebsd-all-static.tar.gz"
|
|
139
139
|
},
|
|
140
140
|
"dynamic" => {
|
|
141
|
-
"checksum" => "
|
|
141
|
+
"checksum" => "3aa2dfe2c22f42c0d97b93bb21917180e0399359cc3d86786c62aeb6fcaa96c6",
|
|
142
142
|
"filename" => "appsignal-x86_64-freebsd-all-dynamic.tar.gz"
|
|
143
143
|
}
|
|
144
144
|
}
|
data/lib/appsignal/config.rb
CHANGED
|
@@ -156,7 +156,7 @@ module Appsignal
|
|
|
156
156
|
:send_request_payload => true,
|
|
157
157
|
:send_request_query_parameters => true,
|
|
158
158
|
:send_session_data => true,
|
|
159
|
-
:service_name =>
|
|
159
|
+
:service_name => "app",
|
|
160
160
|
:sidekiq_report_errors => "all",
|
|
161
161
|
:default_tags => {}
|
|
162
162
|
}.freeze
|
|
@@ -177,9 +177,7 @@ module Appsignal
|
|
|
177
177
|
}.freeze
|
|
178
178
|
|
|
179
179
|
# Environment variables set by deployment platforms that name the
|
|
180
|
-
# revision that is being deployed, in the order
|
|
181
|
-
# The agent detects the revision this way as well, but only for the data
|
|
182
|
-
# it sends itself, so the gem has to do it for collector mode.
|
|
180
|
+
# revision that is being deployed, in the order they are read.
|
|
183
181
|
# @!visibility private
|
|
184
182
|
PLATFORM_REVISION_ENV_VARS = [
|
|
185
183
|
"HEROKU_SLUG_COMMIT",
|
|
@@ -812,10 +810,10 @@ module Appsignal
|
|
|
812
810
|
|
|
813
811
|
hash[:enable_at_exit_hook] = "always" if Appsignal::Extension.running_in_container?
|
|
814
812
|
|
|
815
|
-
# Set the revision from
|
|
816
|
-
#
|
|
817
|
-
#
|
|
818
|
-
revision =
|
|
813
|
+
# Set the revision from the environment variable the deployment
|
|
814
|
+
# platform sets, or from a REVISION file in the project root, which
|
|
815
|
+
# helps with Capistrano and Hatchbox.io deployments.
|
|
816
|
+
revision = detect_revision_from_platform || detect_revision_from_file
|
|
819
817
|
hash[:revision] = revision if revision
|
|
820
818
|
|
|
821
819
|
hostname = detect_hostname
|
|
@@ -324,12 +324,11 @@ module Appsignal
|
|
|
324
324
|
|
|
325
325
|
# Build the OpenTelemetry Resource that carries AppSignal config to the
|
|
326
326
|
# collector. Attributes whose underlying option is nil or an empty array
|
|
327
|
-
# are omitted so the collector applies its own defaults. The revision
|
|
328
|
-
#
|
|
329
|
-
#
|
|
327
|
+
# are omitted so the collector applies its own defaults. The revision and
|
|
328
|
+
# host name are the exception: they fall back to a value here, so they
|
|
329
|
+
# are always sent.
|
|
330
330
|
def build_resource(config)
|
|
331
331
|
revision = config[:revision].to_s.empty? ? "unknown" : config[:revision]
|
|
332
|
-
service_name = config[:service_name].to_s.empty? ? "app" : config[:service_name]
|
|
333
332
|
host_name = config[:hostname].to_s.empty? ? "unknown" : config[:hostname]
|
|
334
333
|
|
|
335
334
|
attrs = {
|
|
@@ -340,7 +339,7 @@ module Appsignal
|
|
|
340
339
|
"appsignal.config.app_path" => config.root_path&.to_s,
|
|
341
340
|
"appsignal.config.platform" => config[:platform],
|
|
342
341
|
"appsignal.config.language_integration" => "ruby",
|
|
343
|
-
"service.name" => service_name,
|
|
342
|
+
"service.name" => config[:service_name],
|
|
344
343
|
"host.name" => host_name,
|
|
345
344
|
"appsignal.config.filter_attributes" => config[:filter_attributes],
|
|
346
345
|
"appsignal.config.filter_function_parameters" => config[:filter_function_parameters],
|
|
@@ -173,12 +173,16 @@ module Appsignal
|
|
|
173
173
|
end
|
|
174
174
|
if response_status
|
|
175
175
|
transaction.add_tags(:response_status => response_status)
|
|
176
|
-
|
|
177
|
-
:response_status,
|
|
178
|
-
1,
|
|
176
|
+
tags = {
|
|
179
177
|
:status => response_status,
|
|
180
178
|
:namespace => format_namespace(transaction.namespace)
|
|
181
|
-
|
|
179
|
+
}
|
|
180
|
+
Appsignal.increment_counter(:response_status, 1, **tags)
|
|
181
|
+
Appsignal::OpenTelemetry.if_started do
|
|
182
|
+
Appsignal.increment_counter(
|
|
183
|
+
:response_status, 1, **tags, :service => Appsignal.config[:service_name]
|
|
184
|
+
)
|
|
185
|
+
end
|
|
182
186
|
end
|
|
183
187
|
end
|
|
184
188
|
|
|
@@ -540,7 +540,7 @@ module Appsignal
|
|
|
540
540
|
duration_ms = (@start_time.to_f * 1000) - @queue_start
|
|
541
541
|
return if duration_ms.negative?
|
|
542
542
|
|
|
543
|
-
namespace =
|
|
543
|
+
namespace = service_namespace
|
|
544
544
|
Appsignal::Metrics::OpenTelemetryBackend.add_distribution_value(
|
|
545
545
|
"transaction_queue_duration", duration_ms, :namespace => namespace
|
|
546
546
|
)
|
|
@@ -577,7 +577,7 @@ module Appsignal
|
|
|
577
577
|
|
|
578
578
|
return unless should_report? && count.positive?
|
|
579
579
|
|
|
580
|
-
namespace =
|
|
580
|
+
namespace = service_namespace
|
|
581
581
|
Appsignal::Metrics::OpenTelemetryBackend.increment_counter(
|
|
582
582
|
"transaction_allocation_count", count, :namespace => namespace
|
|
583
583
|
)
|
|
@@ -756,6 +756,10 @@ module Appsignal
|
|
|
756
756
|
DISPLAY_NAMESPACE.fetch(namespace, namespace)
|
|
757
757
|
end
|
|
758
758
|
|
|
759
|
+
def service_namespace
|
|
760
|
+
"#{Appsignal.config&.[](:service_name)}/#{display_namespace(@namespace)}"
|
|
761
|
+
end
|
|
762
|
+
|
|
759
763
|
def write_request_headers(headers)
|
|
760
764
|
headers.each do |name, value|
|
|
761
765
|
@span.set_attribute("http.request.header.#{name}", value.to_s)
|
data/lib/appsignal/version.rb
CHANGED
data/sig/appsignal.rbi
CHANGED