Skip to content
Draft
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Prev Previous commit
Next Next commit
Merge branch 'develop' into update-actions-catalog
  • Loading branch information
adutta-newrelic committed Dec 4, 2025
commit e8caae1fbeec7284a7356eac25dd363d40a07e71
36 changes: 36 additions & 0 deletions scripts/actions/utils/handlers.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -427,6 +427,42 @@ export default {
identifyComponent: false,
}),
},
p: {
deserialize: deserializeComponent,
serialize: (state, node) =>
serializeComponent(state, node, {
tagName: 'p',
wrapChildren: false,
identifyComponent: false,
}),
},
ul: {
deserialize: deserializeComponent,
serialize: (state, node) =>
serializeComponent(state, node, {
tagName: 'ul',
wrapChildren: false,
identifyComponent: false,
}),
},
ol: {
deserialize: deserializeComponent,
serialize: (state, node) =>
serializeComponent(state, node, {
tagName: 'ol',
wrapChildren: false,
identifyComponent: false,
}),
},
li: {
deserialize: deserializeComponent,
serialize: (state, node) =>
serializeComponent(state, node, {
tagName: 'li',
wrapChildren: false,
identifyComponent: false,
}),
},
var: {
deserialize: (state, node) =>
deserializeComponent(state, node, { type: 'mdxJsxTextElement' }),
Expand Down
21 changes: 11 additions & 10 deletions scripts/listMdxFreshness.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ function daysBetween(iso) {
return (now - then) / (1000 * 60 * 60 * 24);
}

function yearsBetween(iso) {
return daysBetween(iso) / 365;
function monthsBetween(iso) {
return daysBetween(iso) / 30;
}

function main() {
Expand All @@ -53,8 +53,8 @@ function main() {
if (processed % 500 === 0) console.log(`Processed ${processed} files...`);
if (!iso) continue; // skip if no commit
const ageDays = daysBetween(iso);
const ageYears = yearsBetween(iso);
rows.push({ path: f, lastCommit: iso, ageDays, ageYears });
const ageMonths = monthsBetween(iso);
rows.push({ path: f, lastCommit: iso, ageDays, ageMonths });
}
console.log(`Collected commit data for ${rows.length} files`);

Expand All @@ -64,21 +64,22 @@ function main() {

// Grouping buckets
const buckets = [
{ label: '3+ years', filter: r => r.ageYears >= 3 },
{ label: '2-3 years', filter: r => r.ageYears >= 2 && r.ageYears < 3 },
{ label: '1-2 years', filter: r => r.ageYears >= 1 && r.ageYears < 2 },
{ label: '0-1 year', filter: r => r.ageYears < 1 },
{ label: '24+ months', filter: r => r.ageMonths >= 24 },
{ label: '18-24 months', filter: r => r.ageMonths >= 18 && r.ageMonths < 24 },
{ label: '12-18 months', filter: r => r.ageMonths >= 12 && r.ageMonths < 18 },
{ label: '6-12 months', filter: r => r.ageMonths >= 6 && r.ageMonths < 12 },
{ label: '0-6 months', filter: r => r.ageMonths < 6 },
];

function renderTable(sectionRows) {
if (sectionRows.length === 0) return '_No files_';
const header = ['Path','Last Commit','Age (years)','Age (days)'];
const header = ['Path','Last Commit','Age (months)','Age (days)'];
const lines = [
`| ${header.join(' | ')} |`,
`| ${header.map(()=> '---').join(' | ')} |`
];
for (const r of sectionRows) {
lines.push(`| ${r.path} | ${r.lastCommit} | ${r.ageYears.toFixed(2)} | ${r.ageDays.toFixed(0)} |`);
lines.push(`| ${r.path} | ${r.lastCommit} | ${r.ageMonths.toFixed(1)} | ${r.ageDays.toFixed(0)} |`);
}
return lines.join('\n');
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ The tool provides actionable insights to help you manage compute spend and impl

<Callout variant="tip">

Compute Optimizer is available to all customers on New Relic Compute Public Preview or Core Compute plans within your New Relic account.
Compute Optimizer is available to customers on Legacy Compute (CCU) or Core Compute plans only. It is not available to customers on Data + User + Advanced Compute plans.

</Callout>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ To manage users, refer to the [User management](/docs/accounts/accounts-billing/
</Collapser>

<Collapser id="advance-compute-capacity-unit" title="Advanced Compute">
Advanced Compute is consumption-based pricing for Intelligent Observability features with unlimited users. This is a bundle-style add-on offering and is measured in Advanced [Compute Capacity Units](/docs/licenses/license-information/product-definitions/new-relic-one-pricing-definitions/#compute-capacity-unit) (aCCUs). You're billed based on your usage of Advanced CCUs.
Advanced Compute is an add-on to your Data + User or Data + Core Compute plan that provides consumption-based pricing for Intelligent Observability features. This add-on is measured in Advanced [Compute Capacity Units](/docs/licenses/license-information/product-definitions/new-relic-one-pricing-definitions/#compute-capacity-unit) (aCCUs). You're billed based on your usage of Advanced CCUs.

If full-stack observability capabilities are combined with any Intelligent Observability features, you'll be charged the appropriate Advanced Compute Capacity Units.

Expand All @@ -155,13 +155,16 @@ To manage users, refer to the [User management](/docs/accounts/accounts-billing/
</Collapser>
</CollapserGroup>

The following table compares capabilities supported by two alternative pricing models (**Data + User** and **Data + Core Compute ***) and shows capabilities that require the **Advanced Compute** add-on, which you can purchase with either model.


<table>
<thead>
<tr>
<th style={{textAlign:"left"}}>Existing product capability</th>
<th style={{textAlign:"center"}}>Data + User</th>
<th style={{textAlign:"center"}}>Data + Core Compute *</th>
<th style={{textAlign:"center"}}>Advanced Compute</th>
<th style={{textAlign:"center"}}>&#43; Advanced Compute</th>
</tr>
</thead>
<tbody>
Expand Down Expand Up @@ -329,8 +332,8 @@ To manage users, refer to the [User management](/docs/accounts/accounts-billing/

In addition to the primary billing factors of data and billable users, you can also use optional billable add-ons to enrich your experience with New Relic.

* **Advanced Compute**: This add-on to your Data + User or Data + Core Compute plan enables access to Intelligent Observability features.
* **EU Data Center for Original Data or Data Plus**: This add-on applies to your data option (Original Data or Data Plus) when you select the European Union as your data region, as available.
* **Extended Retention for Original Data or Data Plus**: This add-on applies if you exceed the default length of time your data is retained. This applies to all your data—not just logs—and is a good option if you need to make a lot of small queries or make queries on large volumes of data.
* **Live Archives**: Extend your log storage duration up to seven years. Live Archives also requires Advanced Compute.
* **New Relic Synthetic Checks**: This add-on applies if your Checks exceed the default number of synthetic monitor checks.
* **Security RX**: This feature is included with Data Plus, but the add-on applies if you use the Security RX feature without Data Plus.
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,15 @@ We recommend that you consider implementing [domain capture](/docs/accounts/acco

## Overview [#overview]

This tutorial walks you through:
This tutorial walks you through the logical RBAC setup workflow:

1. [Organization creation](#create-organization)
2. [How to add accounts](#add-accounts)
3. [How to set up an authentication domain](#auth-domains)
4. [How to set up custom roles](#roles)
5. [How to manage group access](#group-access)
6. [How to add users](#add-users)
4. [How to create groups](#create-groups)
5. [How to create custom roles](#roles)
6. [How to create access grants](#access-grants)
7. [How to add users](#add-users)


<Steps>
Expand Down Expand Up @@ -113,76 +114,121 @@ This tutorial walks you through:
</Step>

<Step>
## Create custom roles (optional) [#roles]

We have several default-available roles, which we call [standard roles](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles). Some of these are assigned to the <DNT>**Admin**</DNT> and <DNT>**User**</DNT> groups that are available by default.
## Create groups [#create-groups]

If you have Pro or Enterprise edition, you can create your own custom roles. Creating custom roles is optional. If you don't have a need for custom roles, you can skip this section.
Groups are containers for users that determine what access those users have through access grants. You can use the default <DNT>**Admin**</DNT> and <DNT>**User**</DNT> groups, or create custom groups for more specific access patterns.

Some tips to help you understand what roles are:
To create and manage groups:

* Users are assigned to groups (for example, the default <DNT>**Admin**</DNT> and <DNT>**User**</DNT> groups), and those groups are assigned various roles and accounts. Put another way: it's not the group that gives users access to New Relic permissions: it's the roles.
* A role contains various permissions. For example: the permission to create and modify alert conditions, or the permission to delete data ingest license keys (for more information, see [Permissions](/docs/accounts/accounts-billing/new-relic-one-user-management/user-permissions)).
* Unlike groups and users, roles are not contained in an authentication domain: they're available across the entire organization.
1. From the [user menu](/docs/accounts/accounts-billing/general-account-settings/intro-account-settings), click <DNT>**Administration > Access Management**</DNT>.
2. Click the <DNT>**Groups**</DNT> tab.
3. You'll see the default groups (<DNT>**Admin**</DNT> and <DNT>**User**</DNT>) that are automatically created with your organization.
4. To create a new group, click <DNT>**+ Add a group**</DNT>.
5. In the <DNT>**Create a group**</DNT> modal:
- Enter a <DNT>**Group name**</DNT>
- From the <DNT>**Authentication domain**</DNT> dropdown, select the authentication domain for this group
- Optionally add users to the group using the <DNT>**Add users**</DNT> dropdown

To view existing roles: from the [user menu](/docs/accounts/accounts-billing/general-account-settings/intro-account-settings), click <DNT>**Administration**</DNT>, then click <DNT>**Access management**</DNT>, and then click <DNT>**Roles**</DNT>.
<Callout variant="tip">
You don't need to configure group access here - that happens later through access grants. The groups you create are containers for users.
</Callout>

To create a custom role, click <DNT>**Add new custom role**</DNT>. Review the list of available permissions and decide which ones your custom role needs.
Consider creating groups based on:
- **Team structure** (Engineering, Marketing, Sales)
- **Access levels** (ReadOnly, Developers, Admins)
- **Geographic regions** (US-East, Europe, APAC)
- **Project teams** (Project-Alpha, Project-Beta)

Here's a short video showing how to create a custom role (4:07 minutes):
### Manage groups via API [#groups-api]

<Video
id="CBa0jWINQiw"
type="youtube"
/>
You can also manage groups programmatically using our NerdGraph API. For how to create and manage groups via the API, refer to [NerdGraph user management](/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt#concepts).
</Step>

<Step>
## Create groups and assign access [#group-access]

Groups are used to group your users and manage what your users are able to do in New Relic. You assign groups one or more roles on one or more accounts.
## Create custom roles (optional) [#roles]

To set up groups optimally, you'll need to think about what groups you'll need, what roles those groups should have, and what account access those groups should have.
We have several default-available roles, which we call [standard roles](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles). Some of these are assigned to the <DNT>**Admin**</DNT> and <DNT>**User**</DNT> groups that are available by default.

If you have a relatively flat organizational structure, and are okay with all or many of your users having wide administrative access and access to all accounts, you'll probably only need at most a few extra group configurations. For example, you might decide to add more accounts to the existing default <DNT>**Admin**</DNT> or <DNT>**User**</DNT> groups. Or, if you need more granular definition over roles and permissions, you'd create new groups with access to specific roles (either our standard roles or custom-defined roles).
If you have Pro or Enterprise edition, you can create your own custom roles. Creating custom roles is optional. If you don't have a need for custom roles, you can skip this section.

For an example user access planning spreadsheet, see our [group access planning spreadsheet](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing).
Some tips to help you understand what roles are:

To view existing groups: from the [user menu](/docs/accounts/accounts-billing/general-account-settings/intro-account-settings), click <DNT>**Administration**</DNT>, and then click <DNT>**Access management**</DNT>. Under the <DNT>**Groups**</DNT> tab, you'll see the existing groups and what access they've been assigned.
* Roles contain the actual permissions. Groups are just containers for users—the roles assigned to those groups determine what users can access.
* A role contains various permissions. For example: the permission to create and modify alert conditions, or the permission to delete data ingest license keys (for more information, see [Permissions](/docs/accounts/accounts-billing/new-relic-one-user-management/user-permissions)).

You can manage groups via either the UI or via API:
To create and manage custom roles:

<CollapserGroup>
<Collapser
id="grants-ui"
title="Manage group access via the UI"
>
Before adding access to groups, ensure you have a good understanding of the [user management concepts](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts) and the access your users should have.
1. From the [user menu](/docs/accounts/accounts-billing/general-account-settings/intro-account-settings), click <DNT>**Administration > Access Management**</DNT>.
2. Click the <DNT>**Roles**</DNT> tab.
3. You'll see the existing standard roles available in your organization.
4. To create a custom role, click <DNT>**+Add a role**</DNT>.
5. In the <DNT>**Set role scope**</DNT> step, select your role scope:
- <DNT>**Organization**</DNT> for organization-wide administrative functions
- <DNT>**Accounts**</DNT> for platform features within specific accounts
- <DNT>**Single item or entity**</DNT> for fine-grained access to specific resources
6. Click <DNT>**Next**</DNT> to proceed to the <DNT>**Role details**</DNT> step and configure based on your selected scope:

To add access to groups in the UI:
**Organization-scoped roles:**
- Enter a role name.
- Select permissions from organization-level categories (Identity and Access Management, New Relic One, Alerts, Fleet Control, Security, API Keys, Applied Intelligence, Workflow Automation, API Catalog, etc.).

1. From the <DNT>**Access management**</DNT> UI, click <DNT>**Groups**</DNT>.
2. You can create a new group or edit an existing one:
* To create a new group, click <DNT>**Create new group**</DNT> and follow the instructions.
* To edit an existing one, click the <Icon name="fe-more-horizontal"/> icon for the group you want to edit. Click <DNT>**View group details**</DNT> and edit the group's access.
**Account-scoped roles:**
- Enter a role name.
- Select permissions from platform feature categories (Alerts, APM, Browser, Infrastructure, etc.).

When you're done, if users are already assigned to the group you created or edited, those users will have the new access within a few minutes (although for [EU region organizations](/docs/using-new-relic/welcome-new-relic/get-started/our-eu-us-region-data-centers), this may take up to twenty minutes or so). If your users are not yet in that group (which would be true for a newly created group), the next step will show you how to add users.
**Entity-scoped roles:**
- Select the entity type from the dropdown.
- Enter a role name.
- Select permissions specific to that entity type.

Some tips for using this UI:
7. Click <DNT>**Save**</DNT> to create the role.

* Want to understand the roles and administration settings better? See [Roles](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#roles).
* When selecting from amongst our [standard roles](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles), it's important to understand the difference between <DNT>**All product admin**</DNT> and <DNT>**Standard user**</DNT>. <DNT>**All product admin**</DNT> is a more popular choice because it gives the ability to configure platform features. If you wanted to have your users be able to use platform features but not configure the settings for those features, you'd choose <DNT>**Standard user**</DNT>.
</Collapser>
<Callout variant="important">
Choose your role scope carefully, as this determines what type of access grants you can create with this role.
</Callout>
</Step>

<Collapser
id="grants-api"
title="Manage group access via API"
>
For how to manage group access via the API, see [NerdGraph user management](/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt#concepts).
</Collapser>
</CollapserGroup>
<Step>
## Create access grants [#access-grants]

Access grants connect your groups to roles over specific targets. You create access grants to give users in a group the permissions defined in a role.

To create access grants:

1. From the [user menu](/docs/accounts/accounts-billing/general-account-settings/intro-account-settings), click <DNT>**Administration > Access Management**</DNT>.
2. Click the <DNT>**Access Grants**</DNT> tab.
3. To create a new access grant, click <DNT>**+Create new grant**</DNT>.
4. Select your authentication domain from the dropdown.
5. Choose your grant type:
- <DNT>**Organization**</DNT> for organization-scoped roles
- <DNT>**Account**</DNT> for account-scoped roles
- <DNT>**Group**</DNT> for group management roles
6. Configure the grant components:

**Organization grants:**
- Select the group that will receive access.
- Select the organization-scoped role.
- Target is automatically your entire organization.

**Account grants:**
- Select the group that will receive access.
- Select the account-scoped role.
- Select the specific accounts this role applies to.
- Optionally select a data access policy.

**Group grants:**
- Select the assignee group.
- Select the group-scoped role.
- Select target groups that can be managed.

7. Click <DNT>**Create grant**</DNT> to save the access grant.

<Callout variant="tip">
Group grants allow you to delegate group membership management to non-admin users. The Group Admin role gives users the ability to add and remove users from specified target groups.
</Callout>
</Step>


<Step>
## Add users [#add-users]

Expand Down
Loading
Loading
You are viewing a condensed version of this merge commit. You can view the full changes here.