-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Feat: GA Change Tracking feature #21697
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Hi @WriteMayur 👋 Thanks for your pull request! Your PR is in a queue, and a writer will take a look soon. We generally publish small edits within one business day, and larger edits within three days. Please ensure the propsed changes look good by building it first in your local environment. Refer to this contribution guide to get the site up and running in your local. If you really require a preview url, reach out to one of the writers and they will generate one for you. |
netlify build |
🚀 Netlify Preview Building!If the build is successful, the preview for this pull request will be available at the following URL (usually takes 10-20 minutes): |
netlify build |
netlify build |
netlify build |
netlify build |
netlify build |
netlify build |
--- | ||
|
||
|
||
Modern applications change frequently through deployments, feature flags, configuration updates, and operational modifications. When performance issues occur, teams struggle to identify which recent changes caused the problem. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it should be "which recent change" or "which of the recent changes"
* **Flexible integration**: Configure via APIs, CLI, or CI/CD pipeline integrations such as GitHub Actions and Jenkins | ||
|
||
<Video | ||
id="ikRUKJf7hyU" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This video is three years old and is quite outdated. The UI and functionality has changed significantly since then.
|
||
<Step> | ||
|
||
### Configure the change tracking [#setup] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
### Configure the change tracking [#setup] | |
### Configure change tracking [#setup] |
|
||
* Use [NRQL](/docs/change-tracking/query-data#use-nrql) and [NerdGraph](/docs/change-tracking/query-data#use-graphql) to build custom analysis and dashboards. | ||
|
||
* You can use the [webhooks to send or receive change event](/docs/change-tracking/change-tracking-webhooks) notifications to your teams. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
* You can use the [webhooks to send or receive change event](/docs/change-tracking/change-tracking-webhooks) notifications to your teams. | |
* You can use [webhooks to send change event](/docs/change-tracking/change-tracking-webhooks) notifications to your teams. |
|
||
The change tracking feature allows you to track the effect of various changes on your customers and systems. For example, if you make some deployments, you can use the change tracking feature to monitor the results in New Relic UI charts. You'll also get access to features that help you understand the effects of those changes. | ||
|
||
Instead of designating which changes you want to monitor by using our CLI or a CI/CD integration, you can do the same thing using GraphQL mutations and queries via our NerdGraph API. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Queries aren't used for creation.
Instead of designating which changes you want to monitor by using our CLI or a CI/CD integration, you can do the same thing using GraphQL mutations and queries via our NerdGraph API. | |
Instead of designating which changes you want to monitor by using our CLI or a CI/CD integration, you can do the same thing using GraphQL mutations via our NerdGraph API. |
The `timestamp` attribute shows when a NerdGraph call was received. You can modify it by specifying the number of milliseconds since the Unix epoch. For example: `timestamp: 1032480000000`. | ||
|
||
<Callout variant="important"> | ||
Timestamps must applied within +/- 24 hours of the current time when the NerdGraph call is made, or the payload will be rejected. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Timestamps must applied within +/- 24 hours of the current time when the NerdGraph call is made, or the payload will be rejected. | |
Provided timestamps must be within +/- 24 hours of the current time when the NerdGraph call is made, or the payload will be rejected. |
String | ||
</td> | ||
<td> | ||
The `changeTrackingId` is a unique identifier generated when a change is recorded. You can use this ID in NerdGraph and NRQL queries to identify specific changes. For example: `changeTrackingId: "8a3a594c-e726-4bc2-8078-26dffec9a3d8"`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The `changeTrackingId` is a unique identifier generated when a change is recorded. You can use this ID in NerdGraph and NRQL queries to identify specific changes. For example: `changeTrackingId: "8a3a594c-e726-4bc2-8078-26dffec9a3d8"`. | |
The `changeTrackingId` is a unique identifier generated when a change is recorded. You can use this ID in NerdGraph and NRQL queries to identify specific changes. For example: `changeTrackingId = '8a3a594c-e726-4bc2-8078-26dffec9a3d8'`. |
id="optional-mutation-example" | ||
title="Mutation with optional fields" | ||
> | ||
```graphql |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While you can designate which changes you want to monitor by using GraphQL or a CI/CD integration, you can also use our CLI to do the same thing. If you use the CLI to designate the changes you want to monitor, you can run either a [GraphQL query](#list-with-graphql) or execute an [NRQL query](/docs/change-tracking/change-tracking-graphql#key-signals) against the New Relic database to retrieve a list of those changes. | ||
While you can designate which changes you want to monitor by using GraphQL or a CI/CD integration, you can also use our CLI to do the same thing. If you use the CLI to designate the changes you want to monitor, you can run either a [GraphQL query](#list-with-graphql) or execute an [NRQL query](/docs/change-tracking/query-data#use-nrql) against the New Relic database to retrieve a list of those changes. | ||
|
||
Here's a two-minute overview video, or you can jump right to the steps below. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This video is out of date.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also, below, we should probably tell them the minimum version they need for the CLI (which is 0.104.5) rather than telling them they need to upgrade. Also, "upgrade" might make some folks think they are updating to a paid version or something, which they are not.
- NerdGraph | ||
metaDescription: "Here's how to use the New Relic CLI to designate what you want to capture with change tracking." | ||
redirects: | ||
- /docs/change-tracking/change-tracking-cli |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the new CLI commands, here's the output of the --help command:
Usage:
newrelic changeTracking create [flags]
Examples:
# Deployment event example with complex entity search (shows nested quotes pattern)
newrelic changeTracking create \
--entitySearch "name = 'MyService' AND type = 'SERVICE'" \
--category Deployment \
--type Basic \
--description "Deployed version 1.2.3 to production" \
--version "1.2.3" \
--changelog "https://github.com/myorg/myservice/releases/tag/v1.2.3" \
--commit "abc123def456" \
--user "ci-cd-bot"
# Feature Flag event example (shows both nested quote patterns)
newrelic changeTracking create \
--entitySearch "name = 'MyApp'" \
--category "Feature Flag" \
--type Basic \
--description "Enabled new checkout flow feature flag" \
--featureFlagId "checkout-flow-v2" \
--validationFlags FAIL_ON_FIELD_LENGTH \
--user "product-team"
# Custom category/type example with custom attributes and multiple validation flags (comma-separated style)
newrelic changeTracking create \
--entitySearch "id = '<Entity GUID>'" \
--category Operational \
--type "Maintenance Window" \
--description "Database maintenance completed" \
--customAttributes '{cloud_vendor: "vendor_name", region: "us-east-1", isProd: true, instances: 2}' \
--validationFlags ALLOW_CUSTOM_CATEGORY_OR_TYPE,FAIL_ON_FIELD_LENGTH,FAIL_ON_REST_API_FAILURES \
--user "ops-team"
# Custom category/type example using repeated --validationFlags style (each flag separately)
newrelic changeTracking create \
--entitySearch "id = '<Entity GUID>'" \
--category Operational \
--type "Maintenance Window" \
--description "Database maintenance completed" \
--customAttributes '{cloud_vendor: "vendor_name", region: "us-east-1", isProd: true, instances: 2}' \
--validationFlags ALLOW_CUSTOM_CATEGORY_OR_TYPE \
--validationFlags FAIL_ON_FIELD_LENGTH \
--validationFlags FAIL_ON_REST_API_FAILURES \
--user "ops-team"
Flags:
--category string category of event, e.g., DEPLOYMENT, CONFIG_CHANGE, etc. category is required.
--changelog string changelog for the deployment
--commit string commit hash for the deployment
--customAttributes string custom attributes: use '-' for STDIN, '{...}' for inline JS object, or provide a file path
--deepLink string deep link URL for the deployment
--description string a description of the event
--entitySearch string the NRQL entity search query for this event. Example: name = 'MyService' AND type = 'SERVICE' (required)
--featureFlagId string ID of the feature flag
--groupId string string that can be used to correlate two or more events
-h, --help help for create
--shortDescription string short description for the event
-t, --timestamp int the time of the event, the number of milliseconds since the Unix epoch, defaults to now
--type string type of event, e.g., BASIC, ROLLBACK, etc. type is required.
--user string username of the actor or bot
--validationFlags strings comma-separated list of validation flags, e.g. ALLOW_CUSTOM_CATEGORY_OR_TYPE,FAIL_ON_FIELD_LENGTH,FAIL_ON_REST_API_FAILURES
--version string version of the deployment
Global Flags:
-a, --accountId int the account ID to use. Can be overridden by setting NEW_RELIC_ACCOUNT_ID
--debug debug level logging
--format string output text format [JSON, Text, YAML] (default "JSON")
--plain output compact text
--profile string the authentication profile to use
--trace trace level logging
|
||
* Time range selector for filtering events | ||
* Table sorting and filtering options | ||
* Up to 2,000 changes loaded (adjust time range if needed) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe this should be 1,000 changes.
<Collapser | ||
id="entity-pages" | ||
title="In entity pages" | ||
> | ||
|
||
|
||
Access the change tracking table from any entity by clicking **Change tracking** in the entity sidebar. This view provides: | ||
|
||
* Time range selector for filtering events | ||
* Table sorting and filtering options | ||
* Up to 2,000 changes loaded (adjust time range if needed) | ||
|
||
|
||
</Collapser> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this not repeating the same information as "Entity-specific view" above?
</tr> | ||
<tr> | ||
<td>Change tracking tables</td> | ||
<td>2,000 events loaded by default</td> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As above, I think this is 1,000?
<Collapser | ||
id="deployment-query-3" | ||
title="List transaction details from the past week" | ||
> | ||
```sql | ||
SELECT count(*) | ||
FROM Transaction | ||
WHERE appName = 'INSERT_YOUR_APP_NAME' | ||
FACET name | ||
LIMIT MAX | ||
SINCE 1 week ago TIMESERIES | ||
``` | ||
</Collapser> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
At a glance, it is unclear to me how this relates to change tracking. I realize it's because it will show the markers, but that's not clear to me from this documentation alone. Maybe we want to mention something that indicates that?
</tr> | ||
<tr> | ||
<td>Change tracking tables</td> | ||
<td>2,000 events loaded by default</td> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As elsewhere, I believe this number should be 1,000
This PR restructure and updates the change tracking documentation for its GA release.