Note
|
Release notes are best read in our documentation at elastic.co |
[[release-notes-4.7.3] ==== 4.7.3
-
Address a bug where if
capture_headers
is false,ContextBuilder
will raise"undefined method 'has_key?' for nil:NilClass"
{pull}1449[#1449]
[[release-notes-4.7.2] ==== 4.7.2
-
Address machineType not being returned in GCP metadata {pull}1435[#1435]
[[release-notes-4.7.1] ==== 4.7.1
-
Skip capturing cookie header when it’s set separately {pull}1405[#1405]
-
Changes/fixes to metadata.cloud.* fields collected for GCP {pull}1415[#1415]
-
Pin version of bigdecimal for ruby 2.4 {pull}1417[#1417]
-
Use response method on Faraday error for older versions of the library {pull}1419[#1419]
-
Fix ActionDispatchSpy#render_exception for Rails 7.1 {pull}1423[#1423]
-
Use graphql < 2.1 when Ruby < 2.7 {pull}1425[#1425]
-
Guard against various Faraday exception response formats {pull}1428[#1428]
-
Handle Faraday response being nil {pull}1382[#1382]
-
Fix error with invalid %-encoding {pull}1400[#1400]
-
Add keyword args for span_method helper {pull}1395[#1395]
-
Fix growing number of open file descriptors when HTTP request to APM is never sent {pull}1351[#1351]
-
Fix setting span http status code when Faraday Middleware is used {pull}1368[#1368]
-
Handle whitespace when splitting tracestate entries {pull}1353[#1353]
-
Added transaction_name to reported error to allow grouping by transaction name {pull}1267[#1267]
-
Added ability to query server for version (useful in the future) {pull}1278[#1278]
-
Added instrumentation for https://github.com/zendesk/racecar/ Racecar Kafka library {pull}1284[#1284]
-
Expanded filtering to sanitize any key that contains the string 'auth' {pull}1266[#1266]
-
Rename
log_ecs_formatting
option tolog_ecs_reformatting
, deprecate old option name {pull}1248[#1248] -
When the configuration value for
log_path
is set, override thelogger
to point to that path instead of using e.g. Rails logger {pull}1247[#1247] -
Only send tracestate header for distributed tracing when it has content {pull}1277[#1277]
-
Use the hostname as the Kubernetes pod name in the Container Info metadata if the pod id is parsed from cgroup {pull}1314[#1314]
-
Update elasticsearch spy to use new transport gem name {pull}1257[#1257]
-
Standardize placeholder for phone numbers as [PHONENUMBER] per https://github.com/elastic/apm/blob/main/specs/agents/tracing-instrumentation-aws.md {pull}1246[#1246]
-
Stop collecting the field
http.request.socket.encrypted
{pull}1181[#1181]
-
Fixed MongoDB spy thread safety {pull}1202[#1202]
-
Fixed span context fields for DynamoDB instrumentation {pull}1178[#1178]
-
Fixed span context fields for S3 instrumentation {pull}1179[#1179]
-
Update user agent info to match spec {pull}1182[#1182]
-
Optional span to be ended instead of current span {pull}1039[#1039]
-
Config option
log_ecs_formatting
{pull}1053[#1053]
-
Fixed detecting Linux on Alpine for CPU/MEM metrics {pull}1057[#1057]
-
Add support for AWS Storage Table/CosmosDB {pull}999[#999]
-
Align HTTP span types/subtypes with spec {pull}1014[#1014]
-
Passing a full URL as a path to
Net::HTTP
{pull}1029[#1029] -
Fix growing number of open file descriptors {pull}1033[#1033]
-
Azure App Services instance metadata {pull}1007[#1007]
-
hostname
is now reported split byconfigured_hostname
anddetected_hostname
{pull}1009[#1009]
-
service_node_name
is now correctly reported asservice.node.configured_name
{pull}1009[#1009] -
Fix JSON parsing when using yajl-ruby {pull}1012[#1012]
-
Fix SpanHelpers when methods take blocks {pull}1013[#1013]
-
Fix missing
environment
param when fetching from Central Config {pull}1014[#1014]
Be aware that this release changes the agent’s general approach to instrumenting third
party libraries.
It now uses Module#prepend
over alias method chaining.
This doesn’t necessarily impact your application but it could if you are using other gems that use the old approach to patch the same method. Mixing the two approaches can lead to infinite recursion.
-
Removed support for Ruby 2.3 and JRuby 9.1 {pull}901[#901]
-
Config option
active
, seeenabled
{pull}900[#900] -
Config option
custom_key_filters
, seesanitize_field_names
{pull}900[#900] -
Config option
default_tags
, seeglobal_labels
{pull}900[#900] -
Config option
default_labels
, seeglobal_labels
{pull}900[#900] -
Config option
ignore_url_patterns
, seetransaction_ignore_urls
{pull}900[#900] -
Config option
use_legacy_sql_parser
, legacy parser no longer included {pull}900[#900]
-
Integrations (Spies) use Module#prepend over class_eval {pull}890[#890]
-
The secrets filter no longer filters based on values, see
sanitize_field_names
{pull}900[#900] -
The secrets filter is aligned with other agents, see
sanitize_field_names
{pull}900[#900]
-
Added
set_service
API {pull}1006[#1006]
-
AWS S3 spy accepts symbol bucket names {pull}998[#998]
-
AWS S3 spy passing on blocks {pull}998[#998]
-
SQL scanner now recognizes CQL style comments {pull}1004[#1004]
-
Changed DynamoDB instrumentation to match spec. Span names now follow the format
DynamoDB Operation [table]
{pull}976[#976]
-
Support for AWS S3 {pull}977[#977]
-
Support for AWS SQS {pull}978[#978]
-
Support for AWS SNS {pull}978[#978]
-
Expanded support for extracting ActiveRecord adapter name from notification payload when using ActiveRecord versions before 6.0 {pull}953[#953]
-
Fixed setting outcome in Mongo spy when not traced {pull}937[#937]
-
Fixed missing container metadata in payloads {pull}942[#942]
-
Fixed outgoing HTTP request spans with no Host {pull}962[#962]
-
Handle invalid utf-8 byte sequences in sql summarizer and DB statement {pull}896[#896]
-
Expand Kubernetes metadata discovery {pull}916[#916]
-
Fix fetching cloud info on Http.rb 3.x versions {pull}919[#919]
-
Support both integer and string log levels, and extra central config values {pull}902[#902]
-
Rename server_ca_cert to server_ca_cert_file {pull}908[#908]
-
capture_elasticsearch_queries
no longer modifies the original query {pull}894[#894]
-
Fix reporting from Kubernetes based deploys to APM Server 7.9.x {pull}885[#885]
-
Add and read sampling info from Tracestate headers {pull}858[#858]
-
Add information about cloud hosting environment if available {pull}871[#871]
-
Align the default value of
sanitize_field_names
with other agents {pull}867[#867] -
Ensure max 4 digits of precision for
sample_rate
as per agent spec {pull}880[#880]
-
Fix Delayed::Job class names when used through ActiveJob {pull}869[#869]
-
Fix Delayed::Job when run without the agent running {pull}874[#874]
-
Fix Kubernetes related metadata {pull}882[#882]
-
Remove secrets from cookies in errors {pull}863[#863]
-
Silence deprecation warning when setting
ignore_url_patterns
to default {pull}865[#865]
-
Config option
transaction_ignore_urls
to replaceignore_url_patterns
{pull}844[#844] -
Prepend
(?-i)
to patterns to make them case-sensitive {pull}846[#846]
-
Reverted {pull}839[#839]
-
Improved Kubernetes pod ID detection {pull}859[#859]
-
Scrub request body of illegal UTF-8 characters {pull}832[#832]
-
Support for DynamoDB {pull}827[#827]
-
Fix Rails Engine views' paths being reported as absolute {pull}839[#839]
-
Fix an issue when using Elasticsearch spy without a running agent {pull}830[#830]
-
Add the option
capture_elasticsearch_queries
{pull}789[#789] -
Add option to skip patching Kernal#require {pull}812[#812]
-
Add option
service_node_name
{pull}820[#820]
-
Allow underscores in hostnames in Net::HTTP spy {pull}804[#804]
-
Don’t change log level on logger object via remote config {pull}809[#809]
-
Update and fix the Opentracing bridge {pull}791[#791]
-
Make config values dynamic so they can be changed via the remote config {pull}747[#747]
-
Log the updated options from central config in addition to cumulative modifications {pull}758[#758]
-
Ensure that the log level is updated for the config’s logger when value is changed {pull}755[#755]
-
Set config
false
values tofalse
, notnil
{pull}761[#761] -
Ensure that the previously running agent’s config is used in
ElasticAPM.restart
{pull}763[#763] -
Handle the Resque spy’s payload class value being a String or Class and update docs {pull}768[#768]
-
Add finalizer on ProxyPipe::Write so Zlib::GzipWriter is properly closed {pull}787[#787]
-
Add enabled config option, replacing active {pull}669[#669]
-
Add recording config option {pull}765[#765]
-
Add support for
SuckerPunch
{pull}775[#775] -
Support forking: Detect forking and restart agent tasks and background threads {pull}783[#783]
-
Support for gRPC using the
grpc
gem (Experimental) {pull}669[#669] -
GraphQL support (experimental) {pull}721[#721]
-
Add
span.context.destination.address
andspan.context.destination.port
when available. {pull}722[#722] -
Add support for Resque. {pull}729[#729]
-
The new SQL parser is used by default {pull}730[#730]
-
Pass along tracestate headers and add prefixless Traceparent header {pull}694[#694]
-
Add sanitize_field_names to replace custom_key_filters {pull}708[#708]
-
Add
rows_affected
to database related spans (Sequel only for now) {pull}668[#668]
-
Rename disabled_instrumentations to disable_instrumentations {pull}695[#695]
-
Fix thread race condition in metrics collection (JRuby) {pull}669[#669]
-
Add
span.context.destination
fields {pull}647[#647] -
Add more precise (experimental) SQL summarizer {pull}640[#640]
-
Add support for Shoryuken (AWS SQS) {pull}674[#674]
-
Add support for Sneakers (Experimental) {pull}676[#676]
-
Add option
api_key
(experimental) to specify an Api key to use with the apm server {pull}655[#655]
-
Allow action dispatch spy to be disabled via
disabled_instrumentations
{pull}657[#657]
-
Fix Rails Console detection when top-level
Console
constant defined {pull}664[#664] -
Fix Ruby 2.7 related deprecation warnings {pull}667[#667]
-
Fix HTTP response header values not being converted to strings {pull}675[#675]
-
Add option
disable_metrics
{pull}625[#625]
-
Make Filters thread-safe {pull}624[#624]
-
Omit passwords in outgoing urls {pull}629[#629]
-
Add missing mutex to Counter metrics {pull}636[#636]
-
Correct span context collection name for Mongo getMore commands {pull}637[#637]
-
Add Grape support. {pull}562[#562]
-
Add Breakdown Metrics {pull}526[#526]
-
Set remote_addr to immediate socket {pull}615[#615]
-
Fixed pulling config from Kibana {pull}594[#594]
-
Fixed a bug where the agent would alter the original cookies hash {pull}616[#616]
-
Add
ElasticAPM::Sinatra.start
API. {pull}556[#566]
-
Log 404s from CentralConfig on debug level {pull}553[#553]
-
Fix Central Config url path {pull}578[#578]
The following changes are breaking, as they may change the way data is grouped or shown in Kibana or how your app defines agent settings.
-
Decrease stack_trace_limit to 50 {pull}515[#515]
-
Errors'
message
no longer include theirtype
{pull}323[#323] -
External request spans now have type
external.http.{library}
{pull}514[#514] -
Durations are measured using monotonic time {pull}550[#550]
-
Rename set_tag to set_label {pull}543[#543]
-
Rename disabled_spies to disabled_instrumentations {pull}539[#539]
-
disabled_spies
renamed todisabled_instrumentations
with fallback {pull}539[#539] -
Rename
set_tag
toset_label
and deprecateset_tag
{pull}543[#543] -
Allow non-String label values {pull}543[#543]
-
Handles a case where stacktrace frames are empty {pull}538[#538]
-
Deprecate
set_tag
{pull}543[#543]
-
Add
Rails
module with#start
method to run Rails setup explicitly {pull}522[#522] -
Support for log/trace correlation {pull}527[#527]
-
Split dot-separated
span.type
into.type
,.subtype
and.action
(auto-upgrades dot style) {pull}531[#531]
-
Fixed loading options from a config file specified by
ELASTIC_APM_CONFIG_FILE
{pull}518[#518] -
Fixed an issue with CentralConfig polling not starting {pull}525[#525]
-
Support for chained exceptions {pull}488[#488]
-
Add Ruby specific metrics {pull}437[#437]
-
Support for APM Agent Configuration via Kibana {pull}464[#464]
-
Change span name format and add command to context’s db.statement for
MongoSpy
{pull}488[#488]
-
ElasticAPM.report
andElasticAPM.report_message
return the string ID of the generatedError
objects {pull}507[#507]
-
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.
-
Add
transaction.type
to errors {pull}434[#434] -
Add cookies to
request.cookies
{pull}448[#448]
-
Fix support for older versions of Http.rb {pull}438[#438]
-
Strip
Cookie
andSet-Cookie
from headers {pull}448[#448] -
Fix disabling SSL verification {pull}449[#449]
-
The option
stack_trace_limit
{pull}424[#424]
-
Use standardized User-Agent {pull}419[#419]
-
error.culprit
is properly truncated to 1024 characters {pull}418[#418] -
Force convert
transaction.context.response.status_code
to integer {pull}423[#423]
-
Added
disable_start_message
for those wanting complete silence on boot {pull}397[#397]
-
Attempt to strip secrets from
request.env
{pull}410[#410]
-
Rewritten most of the internal transport code, streaming events to APM Server {pull}372[#372]
-
Re-added
default_tags
{pull}395[#395] -
A bug in the Faraday spy when disabling the Net::HTTP spy {pull}396[#396]
-
Fix disabling the ActionDispatch spy {pull}399[#399]
-
Setting
config_file
viaELASTIC_APM_CONFIG_FILE
{pull}363[#363] -
Stopping the Metrics collector when it is disabled {pull}357[#357]
-
HTTP proxy settings can now be set by ENV variable {pull}367[#367]
Both APIs are backwards compatible with fallbacks and deprecation warnings, scheduled for removal in next major release.
-
Configuration options to use an HTTP proxy {pull}352[#352]
-
Errors get their own contexts, perhaps leading to slightly different (but more correct) results. {pull}335[#335]
-
The agent no longer starts automatically inside Rails' console {pull}343[#343]
-
Fixed reading available memory on older Linux kernels {pull}351[#351]
-
Don’t apply filters to original response headers {pull}354[#354]
-
Added the option
active
that will prevent the agent from starting if set tofalse
{pull}338[#338]
-
Fix error with
capture_body
and nested request bodies {pull}339[#339]
-
Added option to specify a custom server CA certificate {pull}315[#315]
-
NB: Default value of option
capture_body
flipped tofalse
to align with other agents. Setcapture_body: true
in your configuration to get them back. {pull}324[#324]
-
Reading CPU stats from
/proc/stat
on RHEL {pull}312[#312] -
Change TraceContext to differentiate between
id
andparent_id
{pull}326[#326] -
capture_body
will now force encode text bodies to utf-8 when possible {pull}332[#332]
-
Read container info from Docker or Kupernetes {pull}303[#303]
-
Fix logging exceptions when booting via Railtie {pull}306[#306]
-
Support for OpenTracing {pull}273[#273]
-
Add capture\_\* options {pull}279[#279]
-
Evaluate the config file as ERB {pull}288[#288]
-
Rename
Traceparent
object toTraceContext
{pull}271[#271]
-
An issue where Spans would not get Stacktraces attached {pull}282[#282]
-
Skip
caller
unless needed {pull}287[#287]
-
Fix truncation of
transaction.request.url
values {pull}267[#267] -
Fix Faraday calls with
url_prefix
{pull}263[#263] -
Force
span.context.http.status_code
to be an integer
-
Set traceparent span.id to transaction id when span is missing {pull}261[#261]
-
Support for Faraday {pull}249[#249]
-
Truncate keyword fields to 1024 chars {pull}240[#240]
-
Lazy boot worker threads on first event. Fixes apps using Puma’s
preload_app!
{pull}239[#239] -
Fix missing
disable_send
implementation {pull}257[#257] -
Add warnings for invalid config options {pull}254[#254]
Version adds support for APM Server 6.5 and needs at least that.
-
Support for APM Server 6.5 (Intake v2)
-
Support for Distributed Tracing (beta)
-
Support for RUM Agent correlation (Distributed Tracing)
-
Support for HTTP.rb (Instrumentation + Distributed Tracing)
-
Custom instrumentation APIs {pull}209[#209]
-
Tag keys will convert disallowed chars to
_
-
Default log level changed to
info
-
Laxed version requirement of concurrent-ruby
-
Change
log_level
to only concern agent log
APIs:
-
ElasticAPM.transaction
-
ElasticAPM.span
Options:
-
compression_level
-
compression_minimum_size
-
debug_http
-
debug_transactions
-
flush_interval
-
http_open_timeout
-
http_read_timeout
-
enabled_environments
-
disable_environment_warning
Some options that used to take a certain unit for granted now expects explicit units – but will fall back to old default.
-
Support for APM Server versions prior to 6.5.
-
Support for Ruby 2.2 (eol)
-
Rake task instrumentation {pull}192[#192]
-
default_tags
option {pull}183[#183]
-
Fallback from missing JRUBY_VERSION {pull}180[#180]
-
Added an option to disable metrics collection {pull}145[#145]
-
Filters can cancel the entire payload by returning
nil
{pull}148[#148] -
Added
ENV
version of the logging options {pull}146[#146] -
Added
config.ignore_url_patterns
{pull}151[#151]
-
Use concurrent-ruby’s TimerTask instead of
Thread#sleep
. Adds dependency onconcurrent-ruby
. {pull}141[#141]
-
Remove newline on
hostname
-
Fixed ActionMailer spans renaming their transaction