New Features
Support for Real Time Streaming
- Event data is now sent to New Relic every five seconds, instead of every minute. As a result, transaction, error, and custom events will now be available in New Relic dashboards in near real time. For more information on how to view your events with a five-second refresh, see the real time streaming documentation.
- Note that the overall limits on how many events can be sent per minute have not changed. Also, span events, metrics, and trace data is unaffected, and will still be sent every minute.
Bug Fixes
A default configuration created with
newrelic_create_app_config()
will now work as expected with license keys for non-US accounts.For inbound distributed tracing payloads with invalid or missing values for
pr
(priority) and/orsa
(sampled) the agent used to assign a default priority of -1 and/or a default sampled value offalse
to the transaction.This has been fixed: the agent now keeps initial priority and sampled values if the respective values in the inbound distributed tracing payload are missing or invalid.
New Features
More flexibility for container deployments
- The daemon and the instrumented application no longer have to reside on the same host and can now communicate over an IPv4 or IPv6 TCP socket. For the instrumented application this can be configured via the
daemon_socket
argument of thenewrelic_init
function. For the daemon this can be configured via the--address
command line option. - When terminating the daemon via the
SIGTERM
signal (and/or theSIGINT
signal if started with the-f
,--foreground
flag), the daemon will now send all buffered data to New Relic prior to exiting. - The daemon has introduced a new configuration
--watchdog-foreground
. This keeps the daemon watchdog process in the foreground, whereas the--foreground
configuration keeps the daemon worker process in the foreground. The new configuration makes it possible to use the daemon in a blocking way, without losing the additional stability provided by the watchdog process. - The C SDK now offers
newrelic_set_transaction_name
with which users may change the name of an already started transaction.
Bug Fixes
- The daemon now synchronously handles critical code paths related to harvesting and merging transaction data. This prevents crashes caused by race conditions.
Upgrade Notices
The daemon has introduced a new configuration
--address
which serves as an alias to--port
. Customers may use either to specify the location of the daemon. If both values are set,--address
takes precedence.When starting the daemon, it will now wait for up to three seconds for the listening port to be ready to receive connections before forking into the background. This usually occurs in (much) less than a second, and most users with this configuration will notice no difference in practice.
The time that the daemon will wait can be controlled by setting the
--wait-for-port
setting with a duration. This duration may be 0 to prevent any blocking. If the option is omitted, the default value is3s
.Daemons started in foreground mode (with the
--foreground
flag) are unaffected, and will behave as before.
New Features
Support for Distributed tracing
Distributed tracing lets you see the path that a request takes as it travels through your distributed system. By showing the distributed activity through a unified view, you can troubleshoot and understand a complex system better than ever before.
Distributed tracing is available with an APM Pro or equivalent subscription. To see a complete distributed trace, you need to enable the feature on a set of neighboring services.
Refer to the New Relic C SDK documentation for more information on enabling distributed tracing for the C SDK.
End of Life Notice
- The
log_filename
andlog_level
fields ofnewrelic_app_config_t
are currently deprecated. Future versions of the C SDK will permanently remove these fields. To specify the log file and log level to use with the C SDK, usenewrelic_configure_log()
.
New Features
This is the first release of the New Relic C SDK! If your application does not use other New Relic APM agent languages, you can use the C SDK to take advantage of New Relic's monitoring capabilities and features to instrument a wide range of applications.
For more information, see:
- Documentation: How to get started with the C SDK, install and configure it, instrument transactions, segments, and errors, use the C SDK API, and do some basic troubleshooting.
- GitHub: SDK files, data structure, field definitions and parameters, code examples, functions, variables.
End of Life Notice
The previous APM Agent SDK is deprecated beta software. If you were previously using the Agent SDK, you can switch to the C SDK. Check the compatibility and requirements, and then instrument, compile and link your application's code to use the C SDK. The C SDK currently does not support New Relic's HSM feature; this may impact how you schedule your transition away from the Agent SDK.