Querying Split Impressions in New Relic for More Insight into Your Metrics

Increased competition in the market is challenging organizations to build product features faster in incremental chunks and use data to measure the efficacy of feature releases and help guide investment decisions.

With the widespread adoption of feature flags as one of the primary mechanisms to release features faster, reporting success and operational metrics must adapt to have feature level context – both in terms of engineering and business performance.

New Relic and Split enable customers to make data-driven decisions, with a shared fundamental belief that you can’t improve what you can’t measure. New Relic and Split tools allow you to move faster and safer, so you can focus on building more valuable products.

“Split’s integration with New Relic’s performance and transaction level data empowers engineering, product, and DevOps teams to fix issues faster and accelerate innovation. Through this integration, New Relic provides a unified approach to observe and measure all contextual changes to customers’ applications at a feature level.”

Mark Weitzel, Vice President and General Manager, Developer Ecosystem at New Relic.

Find and fix problems faster, build high-performing teams, and accelerate your digital transformation with Split impressions in New Relic. 

Configure the New Relic integration in Split’s SDK

Split’s existing New Relic integration can be configured within your accounts admin settings. Learn more in our documentation.  The existing integration annotates New Relic transactions with Split feature flags information that can be used to correlate application metrics with feature flag changes.

Learn more below about how to enrich Split’s existing integration by using real-time impressions to filter your New Relic transaction data. 

Using Split’s Java SDK, implement the integration as a synchronous impression listener and it can be enabled as shown below or in our documentation.

SplitClientConfig config = SplitClientConfig.builder() .integrations( IntegrationsConfig.builder() .newRelicImpressionListener() .build()) .build(); SplitFactoryBuilder.build("<API_TOKEN>").client();
Code language: Arduino (arduino)

This integration is only enabled if the Split SDK detects the New Relic agent in the classpath. If the agent is not detected, the following error will be displayed in the logs (if logging is enabled):

WARN [main] (IntegrationsConfig.java:72) - New Relic agent not found. Continuing without it
Code language: CSS (css)

If you’re not using Java and would like us to add this integration to Split’s additional supported languages please contact your Split account manager or email support@split.io.

View transaction data in New Relic by treatment

For demonstration, we have an application in New Relic called Origami Portal where we are running Split’s Java SDK with the integration configured and New Relic’s Java agent.

With each transaction, new columns will be automatically captured for each split evaluated with the value captured as the treatment shown.

Column headerColumn valueDescription
split.<split_name>TreatmentSplit name and treatment received.
split_keykeyKey used in the evaluation of the splits.

With the below basic query, you can see all transactions where the split_key is not null.

SELECT * FROM Transaction WHERE appName = 'Origami Portal' AND split_key IS NOT NULL since 1 hour ago
Code language: SQL (Structured Query Language) (sql)

With our Split impressions added to the transaction level data in New Relic, we can easily query our New Relic data to understand changes in performance for users with different treatments.

Below we are querying for the response time faceting by the split treatment for a particular split.

Interested in learning more?  We’re looking to make this experience even simpler and we’d love your feedback.  Contact your Split account manager or email support@split.io to discover our projects and provide feedback directly from the teams that are building the products!