diff --git a/gatsby-config.js b/gatsby-config.js index e37936f457b..9bb56cc7487 100644 --- a/gatsby-config.js +++ b/gatsby-config.js @@ -69,6 +69,7 @@ module.exports = { 'java', 'md', 'php', + 'graphql', 'phpdoc', 'csharp', 'shell', diff --git a/src/components/SubNavigation.js b/src/components/SubNavigation.js index 2dbab1104cc..09477bb4765 100644 --- a/src/components/SubNavigation.js +++ b/src/components/SubNavigation.js @@ -1,43 +1,10 @@ import React from 'react'; import PropTypes from 'prop-types'; -import { css } from '@emotion/react'; -import { - Link, - NavItem, - Icon, - useTranslation, -} from '@newrelic/gatsby-theme-newrelic'; +import { NavItem } from '@newrelic/gatsby-theme-newrelic'; const SubNavigation = ({ nav }) => { - const { t } = useTranslation(); - return ( <> - - - {t('subNav.homeLink')} - {nav && ( <>

{nav.title}

diff --git a/src/content/docs/accounts/accounts-billing/account-setup/create-your-new-relic-account.mdx b/src/content/docs/accounts/accounts-billing/account-setup/create-your-new-relic-account.mdx index 1caab1a2195..dcfe1dcdf46 100644 --- a/src/content/docs/accounts/accounts-billing/account-setup/create-your-new-relic-account.mdx +++ b/src/content/docs/accounts/accounts-billing/account-setup/create-your-new-relic-account.mdx @@ -54,7 +54,7 @@ Here are some next steps after signing up: ## Add accounts to an existing New Relic organization [#existing] -If you already have an existing New Relic organization and want to add accounts to it, see [Account structure](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure). +If you already have an existing New Relic organization and want to add accounts to it, see [Add accounts](/docs/accounts/accounts-billing/account-structure/add-accounts). ## Login problems? [#troubleshooting] diff --git a/src/content/docs/accounts/accounts-billing/account-structure/add-accounts.mdx b/src/content/docs/accounts/accounts-billing/account-structure/add-accounts.mdx index 58ee3da21ae..a452a7dd89d 100644 --- a/src/content/docs/accounts/accounts-billing/account-structure/add-accounts.mdx +++ b/src/content/docs/accounts/accounts-billing/account-structure/add-accounts.mdx @@ -7,9 +7,9 @@ metaDescription: How to add accounts to your New Relic organization. How you add accounts to your New Relic organization depends on the type of [user model](/docs/accounts/original-accounts-billing/original-product-based-pricing/overview-user-models) your users are on: -* New Relic One user model: if you're on our newer user model, related docs: - * To learn about organization and account structure, see [Organization structure](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure). +* New Relic One user model: here are some relevant docs: * [Add and rename accounts via our NerdGraph API.](/docs/apis/nerdgraph/examples/manage-accounts-nerdgraph) + * To learn about the structure of your New Relic organization, see [Organization structure](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure). * Original user model: see [Add accounts](/docs/accounts/original-accounts-billing/original-users-roles/parent-child-account-structure/#creating). diff --git a/src/content/docs/accounts/accounts-billing/account-structure/factors-affecting-access-features-data.mdx b/src/content/docs/accounts/accounts-billing/account-structure/factors-affecting-access-features-data.mdx index 4ac04a6291a..96cc6a9db96 100644 --- a/src/content/docs/accounts/accounts-billing/account-structure/factors-affecting-access-features-data.mdx +++ b/src/content/docs/accounts/accounts-billing/account-structure/factors-affecting-access-features-data.mdx @@ -65,12 +65,12 @@ Other related docs: * [Login and password troubleshooting](/docs/accounts/install-new-relic/account-setup/troubleshoot-password-email-address-login-problems) * [Organization and account structure](/docs/accounts/accounts-billing/new-relic-one-pricing-users/account-user-structure) -## Entity not found [#entity-not-found] +## Error messages for lacking access [#entity-not-found] -Sometimes you may have a link to a New Relic UI page that results in a message like "The entity you’re looking for either doesn’t exist or isn’t associated with your account." This may be for one of a few reasons: +You might encounter an error screen in the New Relic UI for one of several reasons, including: -* The [entity](/docs/new-relic-one/use-new-relic-one/core-concepts/what-entity-new-relic) associated with that New Relic view is no longer being monitored. -* You don't have permission to see that UI page (for example, due to [not being assigned to that account](#account-access)). +* You don't have [permissions](#user-permissions) to view that account or that UI page (for example, due to [not being assigned to an account](#account-access) or a specific capability). +* A monitored entity wasn't found. This might result in an error like "The entity you're looking for either doesn't exist or isn't associated with your account". ## Data retention diff --git a/src/content/docs/accounts/accounts-billing/account-structure/new-relic-account-structure.mdx b/src/content/docs/accounts/accounts-billing/account-structure/new-relic-account-structure.mdx index 98055f80085..6291a3787e3 100644 --- a/src/content/docs/accounts/accounts-billing/account-structure/new-relic-account-structure.mdx +++ b/src/content/docs/accounts/accounts-billing/account-structure/new-relic-account-structure.mdx @@ -6,7 +6,7 @@ metaDescription: An explanation of New Relic organization and account structure. redirects: - /docs/new-relic-account-structure - /docs/accounts/accounts-billing/new-relic-one-pricing-users/account-user-structure - - /docs/accounts/accounts-billing/new-relic-one-pricing-users/new-relic-account-structure + - /docs/accounts/accounts-billing/new-relic-one-pricing-users/new-relic-account-structure --- Depending on your [user model](/docs/accounts/original-accounts-billing/original-users-roles/overview-user-models), you have different options for adding and managing accounts and assigning users to them. We have two user models: @@ -20,15 +20,19 @@ This section is for organizations whose users are on the newer [New Relic One us At New Relic, an "organization" represents a New Relic customer. The organization contains everything relevant to a New Relic customer: its accounts, its users, and its data. -A New Relic "account" can be considered a workspace. For example, you might have an account for a specific app, or a set of related hosts and services for a specific initiative or project, or you might have an account for a specific team. Each account has its own [account ID](/docs/accounts/accounts-billing/account-setup/account-id), and that ID is used for some account-specific tasks, like making API calls. +When a New Relic organization is created, it contains a single account. A Standard edition organization can only have a single account, but Pro and Enterprise edition organizations can add more accounts. -Our [Standard edition](https://newrelic.com/pricing) allows for a single account per organization. [Pro and Enterprise editions](https://newrelic.com/pricing) allow for multiple accounts per organization. To add and rename accounts, you can [use our NerdGraph API](/docs/apis/nerdgraph/examples/manage-accounts-nerdgraph) (UI features coming soon). +Why an organization creates new accounts depends on their goals and structure. There's nothing preventing even quite large companies from having a single account, or a handful of accounts. The fewer accounts you have, the easier it is to see how all your monitored entities relate to each other using our platform. But there can be several reasons to add accounts, such as creating separate accounts for production and non-production environments, or if you want to establish firmer boundaries between different sets of data for any reason. If you're in doubt about why to create accounts, talk to your account representative. + +Each account in an organization has its own [account ID](/docs/accounts/accounts-billing/account-setup/account-id), and that ID is used for some account-specific tasks, like making API calls. + +To add and rename accounts, you can [use our NerdGraph API](/docs/apis/nerdgraph/examples/manage-accounts-nerdgraph) (UI features coming soon). ### How users access accounts [#account-access] -In your organization, your New Relic users are granted access to specific accounts that are relevant to their duties and responsibilities. To manage users’ access to accounts, you create [access grants](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts), which assign a group of users to a specific role on a specific account. For example, you might assign a group the ability to manage billing on some accounts using the [**Billing manager** role](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles), and assign some users as non-admin full platform users on some accounts, and assign some users as basic users on some accounts. Our user management system allows you to create the user access you need, whether that’s a relatively simple setup with just a few roles across a few accounts, or a complex one with many roles across many accounts. [Learn more about user management.](/docs/accounts/accounts-billing/new-relic-one-user-management/) +In your organization, your New Relic users are granted access to specific accounts that are relevant to their duties and responsibilities. To manage users' access to accounts, you create [access grants](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts), which assign a group of users to a specific role on a specific account. For example, you might assign a group the ability to manage billing on some accounts using the [**Billing manager** role](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles), and assign some users as non-admin full platform users on some accounts, and assign some users as basic users on some accounts. Our user management system allows you to create the user access you need, whether that's a relatively simple setup with just a few roles across a few accounts, or a complex one with many roles across many accounts. [Learn more about user management.](/docs/accounts/accounts-billing/new-relic-one-user-management/) -Note that some features, like dashboards and workloads, can display data from across different accounts in an organization. This means that if a user isn’t granted access to all relevant accounts, they may experience missing data. +Note that some features, like dashboards and workloads, can display data from across different accounts in an organization. This means that if a user isn't granted access to all relevant accounts, they may experience missing data. To learn more about access issues, see [Factors affecting access](/docs/accounts/accounts-billing/account-structure/factors-affecting-access-features-data/). diff --git a/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/new-relic-one-pricing-billing.mdx b/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/new-relic-one-pricing-billing.mdx index 2e7f971f9de..21b534a20fd 100644 --- a/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/new-relic-one-pricing-billing.mdx +++ b/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/new-relic-one-pricing-billing.mdx @@ -51,7 +51,7 @@ To learn how billable users are calculated, see [User count calculation](/docs/a ## Announcement: removal of estimated cost in May of 2022 [#estimated-cost-removal] -In May, 2022, we'll be removing calculations and displays of estimated cost from the usage UI and from usage-related events. We're doing this to avoid confusion in cases where the estimated cost differs from the actual cost. Details on this change: +In May of 2022, we removed the current month's estimated cost from the usage UI and from usage-related events. We're doing this to avoid confusion in cases where the estimated cost differs from the actual cost. Details on this change: * **Removal of estimated cost from the [usage UI](/docs/accounts/accounts-billing/new-relic-one-pricing-billing/billing-ui).** The usage UI will show your usage and show invoices, as always, but there won't be an estimated cost for the current month. * **Removal of `estimatedCost` attribute.** This attribute is being removed from the events `NrMTDConsumption` and `NrConsumption`. diff --git a/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/usage-queries-alerts.mdx b/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/usage-queries-alerts.mdx index 33c1932b880..bab6cbc55e5 100644 --- a/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/usage-queries-alerts.mdx +++ b/src/content/docs/accounts/accounts-billing/new-relic-one-pricing-billing/usage-queries-alerts.mdx @@ -204,16 +204,16 @@ For how to determine an estimate of the cost for your billable users, see [Estim ## Cost-related queries [#estimated-cost] -In May of 2022, we're deprecating the `estimatedCost` attribute from usage events and removing the estimated cost for the current month from the UI ([learn more](/docs/accounts/accounts-billing/new-relic-one-pricing-billing/new-relic-one-pricing-billing#estimated-cost-removal)). If you currently use the `estimatedCost` attribute in your queries or alert conditions, you should remove them, or replace them with the recommended queries below. +In May of 2022, we deprecated the `estimatedCost` attribute from usage events and removed the current month's estimated cost from the UI ([learn more](/docs/accounts/accounts-billing/new-relic-one-pricing-billing/new-relic-one-pricing-billing#estimated-cost-removal)). If you currently use the `estimatedCost` attribute in your queries or alert conditions, you should remove them, or replace them with the recommended queries below. -In May of 2022 we're deprecating the `estimatedCost` attribute. See [the note above for more about the estimated cost change](#estimated-cost). +In May of 2022 we deprecated the `estimatedCost` attribute. See the note above for more about the estimated cost change. -Here's a query for arriving at an estimate of your data ingest cost for the current month. To run this query that you'll need to know your organization's per-GB ingested data cost. +Here's a query for arriving at an estimate of your data ingest cost for the current month. To run this query, you'll need to know your organization's per-GB ingested data cost. ``` FROM NrMTDConsumption SELECT latest(GigabytesIngestedBillable)*YOUR_PER_GB_COST diff --git a/src/content/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial.mdx b/src/content/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial.mdx new file mode 100644 index 00000000000..3759e25fac2 --- /dev/null +++ b/src/content/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial.mdx @@ -0,0 +1,207 @@ +--- +title: 'A tutorial on setting up accounts, access grants, and users' +metaDescription: A tutorial that will walk you through creating and managing New Relic accounts and users. +redirects: + - /docs/accounts/accounts-billing/new-relic-one-user-management/tutorial-add-new-user-groups-roles-new-relic-one-user-model +--- + +import groupAccessUi from 'images/group-access-ui.png' + +import orgAccessUI from 'images/organization-and-access-ui-default-groups.png' + +This tutorial will walk you through adding and managing accounts and users. + +## Before you start [#requirements] + +Before you start this tutorial, some things to understand: +* Pro or Enterprise edition is required (Standard edition can't add accounts or access grants) +* This tutorial is for managing users who are on our [New Relic One user model](/docs/accounts/original-accounts-billing/original-users-roles/overview-user-models). +* This tutorial will be easier if you first have a basic understanding of: + * [Organization and account concepts](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure#new-model) + * [User management concepts](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts) +* This tutorial won't show you all user management functionality. For more complete docs, review the [user management docs](/docs/accounts/accounts-billing/new-relic-one-user-management/introduction-managing-users). +* This tutorial presents one recommended workflow but there are many ways to do these steps and no particular order of steps is necessary. +* For an example spreadsheet showing how one might plan out your users' roles and account access, see the [Access grant planning spreadsheet](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing). + + +## Overview [#overview] + +This tutorial will walk you through: + +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 set up access grants](#group-access) (give groups access to roles and accounts) +6. [How to add users](#add-users) + +## Step 1: Organization creation [#create-organization] + +If you're reading this, you likely already have a New Relic organization. When you [sign up for New Relic](https://newrelic.com/signup), your New Relic organization is created. The organization structure represents a New Relic customer: it's what contains everything relevant to a customer's use of New Relic: their accounts, their users, and their data. + +When a New Relic organization is created, it contains a single account. A Standard edition organization can only have a single account, but Pro and Enterprise edition organizations can add more accounts. An account can be considered a workspace. For example, you might have an account for a specific app, or a set of related hosts and services for a specific initiative or project. Each account has its own [account ID](/docs/accounts/accounts-billing/account-structure/account-id), and that ID is used for some account-specific tasks, like making API calls. + +When your organization is created, it has several default "access grants," which grant the two available default groups access to specific roles, and a specific scope of accounts. When you add users via the UI, there are two default groups that you can assign your users to: + +* **Admin**: can use and configure observability features for that initial account, and the ability to view and configure organization-level settings (like adding accounts or managing users). +* **User**: can use and configure observability features, without the higher level organization capabilities. + +You can see the default access grants created for these groups by going to the **Organization and access** UI: + +New Relic organization and access UI - default access grants + +You can see how the **User** group has the **All product admin** role and access to that initially created account. And you can see how the **Admin** group has four access grants, reflecting its greater capabilities. The "Default" next to those group names refers to them being in the original, default authentication domain (we'll talk more about that later). + +Pro and Enterprise edition organizations are able to add custom groups, or bring in groups from their identity provider. + +## Step 2: Add accounts [#add-accounts] + +Before adding your users in New Relic, you might want to set up some accounts and [get some data reporting](/docs/using-new-relic/welcome-new-relic/get-started/get-started-full-stack-observability) to them. All of that isn't required at this point (you can always add more accounts later and grant users access to them later) but for the purposes of this tutorial, we'll walk you through adding accounts. + +As covered in Step #1, an account is meant to represent a workspace of some sort. It's a useful way to separate your use of New Relic by business-relevant boundaries. An account can have a large amount and variety of data reporting to it. There's nothing preventing even quite large companies from having a single account or just a handful of accounts. It's all really a matter of what your organization's goals are and how useful you find it to create the account boundaries. + +To manage accounts: [use our NerdGraph API to view, add, and rename accounts](/docs/apis/nerdgraph/examples/manage-accounts-nerdgraph). The ability to add accounts via the UI is coming soon. When you're done adding accounts, return to continue this tutorial. + +## Step 3: Set up authentication domains [#auth-domains] + +When your organization is first created, the groups and users are located in a default authentication domain, named "Default." An "authentication domain" is a grouping of New Relic users governed by the same user management settings, like how they're provisioned (added and updated), how they're authenticated (logged in), session settings, and how user upgrades are handled. + +The default authentication settings are: +* Users are manually added and managed via the New Relic UI +* Users manually log in to New Relic using their email and password + +Having that one authentication domain might be fine for many organizations, but some organizations want one or both of the following: +* Single sign-on (SAML SSO) +* Managing their users from their identity provider via SCIM provisioning + +And if they want those things, they'll have to create an additional authentication domain. Note that groups and users are contained within authentication domains, and you can't easily change an authentication domain's provisioning setting or authentication setting once the domain is created: this means you should spend some time thinking about what your authentication domain settings should be before you add users to them. + +If you're okay with the default authentication domain (managing your users from New Relic, with your users logging in with their email and password), you can skip to [Step #4](#roles). If you want to use SAML SSO or SCIM provisioning, see these options: + + + +For how to set up SCIM provisioning and SAML SSO, see our [automated user management docs](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign#how-to). When you're done: + +* Ensure you can see the groups from your identity provider in New Relic's **Organization and access** UI. +* Return here to continue this tutorial. + + + +For how to set up SAML SSO, see the [SSO docs](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more#authentication). When you're done, return here to continue this tutorial. + + + + +## Step 4. Create custom roles (optional) [#roles] + +We have default-available roles ([standard roles](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#roles)), so creating custom roles is optional. If you don't have a need for custom roles, you can skip this step. + +Some tips to help you understand what roles are: +* Users are assigned to groups (for example, the default **Admin** and **User** groups), and those groups are assigned various roles and accounts via what we call "access grants." Put another way: it's not the group that gives users access to New Relic capabilities: it's the roles. +* A role contains various capabilities. For example: the capability to create and modify alert conditions, or the capability to delete data ingest license keys (to see the capabilities in the UI, see [Capabilities](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#capabilities).) +* Unlike groups and users, roles are not contained in an authentication domain: they're available across the entire organization. +* 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 **Admin** and **User** groups that are available by default. If your organization is Pro or Enterprise edition, you can create your own custom roles. + +For an example spreadsheet showing how one might plan out roles and groups and access grants, see this [Access grant planning spreadsheet](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing). + +To view existing roles: from the [account dropdown](/docs/using-new-relic/welcome-new-relic/get-started/glossary#account-dropdown), click **Administration**, then click **Organization and access**, and then click **Roles**. + +To create a custom role, click **Add new custom role**. Review the list of available capabilities and decide which ones your custom role needs. + +Here's a short NerdByte video showing how to create a custom role (4:07 minutes): + + +## Use our API [#api] + +To use our API to manage accounts and users, see our [NerdGraph tutorials](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/#tutorials). + ## Track changes [#track-changes] To see an audit log of changes to your account, including user management actions, you can query the [`NrAuditEvent`](/docs/insights/insights-data-sources/default-data/nrauditevent-event-data-query-examples). diff --git a/src/content/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx b/src/content/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx index 35471a6751c..aee9a69cdd4 100644 --- a/src/content/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx +++ b/src/content/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx @@ -45,8 +45,8 @@ For an explanation of how your identity provider groups map over to New Relic gr To use automated user management to import users from your identity provider: -1. It's important to first review the [requirements](#requirements). -2. In the [authentication domain UI](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more/#ui), create a new authentication domain. +1. Recommended: first review the [requirements](#requirements). +2. In the [authentication domain UI](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more/#ui), create a new authentication domain. Assuming you want both SCIM and SAML SSO, enable both of those for the authentication domain. You'll do more configuring of those settings later but for now just create . 3. If you use Azure AD, Okta, or OneLogin, use the applicable guide: [Azure AD](/docs/azure-scimsso-application-configuration) \| [Okta](/docs/okta-scimsso-application-configuration) \| [OneLogin](/docs/onelogin-scimsso-application-configuration). 4. If you **don't** use one of the above services, you'll need to: diff --git a/src/content/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx b/src/content/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx index e906897968b..b29ddd4379c 100644 --- a/src/content/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx +++ b/src/content/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx @@ -839,3 +839,7 @@ Once your users are in New Relic, you need to grant them access to specific New * [How access grants work](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts) * The [user management tutorial](/docs/accounts/accounts-billing/new-relic-one-user-management/tutorial-add-new-user-groups-roles-new-relic-one-user-model/) + +### Set up SAML SSO + +If you want to set up SAML SSO, which most SCIM users do, see the [SAML SSO docs](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more#authentication). \ No newline at end of file diff --git a/src/content/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx b/src/content/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx index 225643957a9..af76ff19422 100644 --- a/src/content/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx +++ b/src/content/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx @@ -27,7 +27,7 @@ Starting April 12, 2021, we're allowing some customers who have users on our ori On July 30, 2020, we released a new, improved user model called the New Relic One user model. This newer model offers a simpler, more efficient way to manage users and their access to roles and accounts. -At first, this new model was available mainly to new customers, while users in pre-existing New Relic organizations remained on our original user model. But now some original-user-model organizations that meet some [requirements](#requirements) can use a migration wizard to migrate their users to the new model. When that migration process is complete, your users are on the New Relic One user model and you’ll have [new procedures for managing your users and their access to accounts](/docs/accounts/accounts-billing/new-relic-one-user-management/introduction-managing-users/). +At first, this new model was available mainly to new customers, while users in pre-existing New Relic organizations remained on our original user model. But now some original-user-model organizations that meet some [requirements](#requirements) can use a migration wizard to migrate their users to the new model. When that migration process is complete, your users are on the New Relic One user model and you'll have [new procedures for managing your users and their access to accounts](/docs/accounts/accounts-billing/new-relic-one-user-management/introduction-managing-users/). ## Benefits [#benefits] @@ -78,13 +78,15 @@ To learn more: * Review the [user management concepts](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts). * Plan out your groups and access grants with this [example planning spreadsheet](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing). -## Step 1: Start the user migration process and create admins [#page1] +## Step 0: Find and start the migration wizard [#start-migration] Before you start, be sure you've read [the requirements](#requirements) and the other recommendations above. To start using the wizard: 1. From [one.newrelic.com](https://one.newrelic.com), click **Apps** in the top navigation. 2. In the table of apps, click the **User migration walkthrough** app. -3. Optional: If you want more help and context, see the sections below for tips and recommendations for specific migration wizard pages. +3. If you want more help and context, see the sections below for tips about specific migration wizard pages. If you find something in this doc confusing, please send us feedback using the **Create issue** button on this page. + +## Step 1: Create admins [#page1] -Here are some tips about using the first page: -* Check the **Accounts included** dropdown. Note that the user migration will only apply to the account selected. This means if your organization has multiple accounts, you should do the migration process for each of them. -* You can either a) import all current admins for your account or b) specify the admins that should have access to user management capabilities. Note that you can add more admin users and edit permissions after you complete the migration process. -* If you've already used the wizard to set up an admin on the new user model, have the admin sign in using their new user record to access the migration tool. The user migration wizard, when completed, destroys the old user record, but if you've started the user migration process without completing it, you may have users with access to both the original and new record, as shown below: +On this page, you'll select the admins you want to migrate. This step will create user records on the new model for the chosen admins and assign them to the **Admin** group. Once done, the chosen admins will have a new user record available upon logging in to New Relic (see image below), and will have access to both the old and new user records until the migration wizard process is completed. The admins you choose here will have the ability to use the migration wizard from their new user record: this may be helpful if you want to choose other team members to finish the migration for you. + +Note that you can always add more admins, or remove and edit existing admins, after you complete the migration process. This may be a reason to bring over many or all your admins now and adjust settings later. + +Here are some tips about using the **Add admins** page: +* You should ensure you understand the accounts that the migration is being done for. The user migration will only apply to the parent account selected (visible in the **Accounts included** dropdown) and its children accounts (visible using the **View all associated accounts** button). If you don't see all accounts you expect, it may be because your organization has multiple parent/child account structures, and that would mean you'd have to do the migration process more than once. +* If you plan on migrating only a portion of your users to the new user model to start, we recommend leaving some original user model admins so that you have an admin to manage your original user model users. + A screenshot of what is shown when you have an email address associated with multiple New Relic logins
If a user on the new model has been created and the migration process hasn't been completed, they may have access to both the original user record and the new user records.
-* If you plan on migrating only a portion of your users to the new user model to start, we recommend leaving some original user model admins so that you have an admin to manage your original user model users. ## Step 2: Set up organization [#page2] @@ -131,7 +136,7 @@ Name your organization something descriptive and easily recognizable. src={userMigrationPage4} /> -This section controls how users are provisioned (added to New Relic) and how they authenticate (log in). Note that choosing SAML SSO or SCIM setup will require you to exit the migration wizard and configure things elsewhere in the New Relic UI and in your identity provider and then return to the wizard. +This section controls how users are provisioned (added to New Relic) and how they authenticate (log in). Note that choosing SAML SSO or SCIM setup will require you to leave the migration wizard and configure things elsewhere in the New Relic UI and in your identity provider and then return to the wizard. Here's more detail about the two authentication domain sections: @@ -194,9 +199,11 @@ There are two methods for adding and managing your New Relic users. Select the m id="aum" title="Add and manage users from your identity provider (SCIM)" > - **Recommended**: We recommend downloading the list of your existing original user model users. This can be a useful resource and serve as a backup, if needed. You can also use this list to help you figure out which users have access to which accounts, and also help you create groups and access grants during a later step. + **If you're using SCIM provisioning, you won't need to import your users for this step.** + + **Recommended**: We recommend you download the list of your existing original user model users. This can be a useful resource and serve as a backup, if needed. You can also use this list to help you figure out which users have access to which accounts, and also help you create groups and access grants during a later step. - In a previous step (step #4), you should have completed [the steps for syncing your identity provider with New Relic](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign/#how-to) so that you can see the groups and users from your identity provider in New Relic. If you haven't already done that, do that now. Becasue your groups and users are synced between your identity provider and New Relic, you don't need to upload your users for this step. + In a previous step (step #4), you should have completed [the steps for syncing your identity provider with New Relic](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign/#how-to) so that you can see those groups and users in the New Relic authentication domain UI and user management UI. If you haven't already done that, do that now. Because your groups and users are synced between your identity provider and New Relic, you don't need to upload your users for this step. diff --git a/src/content/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx b/src/content/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx index bf029cdf6a7..b9197f7be90 100644 --- a/src/content/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx +++ b/src/content/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx @@ -124,24 +124,22 @@ Here are instructions and considerations for some common user management tasks a * If you're on the [New Relic One pricing model](/docs/accounts/original-accounts-billing/original-product-based-pricing/overview-pricing-models), your users' [user type](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type) is a billing factor. * If you upgrade a user to a higher user type (either via the UI or via an upgrade request email), their user type is changed across all accounts in the organization. - To update your users' user type: + To update your users' user type: 1. Go to: **[account dropdown](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#account-dropdown) > Account settings > Users and roles > Users**. + 2. Select a user and edit their type, or [bulk update the type for multiple users](#bulk). Note that if your organization has multiple accounts, you can't see all your users in a single UI location: to manage users across in different accounts, you'll have to go to the **Users and roles** UI for each account. - 2. Either select a user and edit their type or [bulk update the type for multiple users](#bulk). Note that if your organization has multiple accounts, you won't be able to see all your users in a single UI location but will have to go to the **Users and roles** UI for each account. + To view and approve users who have requested an upgrade: - To view and approve users who have requested an upgrade: + 1. Go to: **[account dropdown](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#account-dropdown) > Account settings > Users and roles**. + 2. Click **Upgrade requests**. Note that if your organization has multiple accounts, you can't see all your users in a single UI location: to manage users across in different accounts, you'll have to go to the **Users and roles** UI for each account. - 3. Go to: **[account dropdown](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#account-dropdown) > Account settings > Users and roles**. - - 4. Click **Upgrade requests**. Note that if your organization has multiple accounts, you won't be able to see all your users in a single UI location but will have to go to the **Users and roles** UI for each account. - - To control how users upgrade, from the **Users and roles** UI, you can select **Access requests**. You have two options: + To control how users upgrade, from the **Users and roles** UI, you can select **Access requests**. You have two options: * **Automatic approval**: With this option, users can automatically and immediately upgrade their user type. This option allows your users to more easily troubleshoot problems. * **Require review**: With this option, your admins get a notification email when users request an upgrade and the admins must upgrade them first. They can be approved either from the notification email or from the user's record in the **Users and roles** UI. - For more about user type, see [User type](#user-type). + For more about user type, see [User type](#user-type). + Note that root cause analysis is dependent on other New Relic data sources and features. This is why root cause analysis information may not always be present for every issue. + A screenshot of the Issue page and its different sections: Issue details, suggested responders, label sets, and impacted entities. -The **Issue page** includes the following sections: - -1. **Issue details:** This section has two machine learning modules, the golden signals and the related components. -2. **Suggested responders:** This section will tell you who to potentially reach out to on your team to solve a specific problem. -3. **Label sets:** Label sets are focused on incidents that come from 3rd party sources, such as AWS Cloudwatch, REST APIs, etc., as well as for NRQL queries. They come in the form of key:value pairs. -4. **Impacted entities:** An entity is anything that has data you can monitor. Specifically, these are focused on incidents from New Relic sources, extracting the entities and providing a summary. Each entity is unique. You can see your entities in a list or on a map. - -Depending on the data in an issue, all four of these sections can show up together for each issue or separately. +
+ When you select an issue, you may see **Root cause analysis** information. +
-A screenshot of the impacted entities list of actions. +Root cause analysis includes three main UI sections: -* **Relevant dashboards** helps users in your account look at and interact with [dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/) you've created that are related to an entity. The queries you've run to power the various widgets are automatically mapped to entities whenever possible and are presented back to you here for quick access and discovery. -* **Anomaly overview** will open the application's anomalies page. This is only available for applications that are set up for proactive detection. -* There are two types of **deployment events**: deployments and related deployments. Click **[Show all deployments](/whats-new/applied-intelligence-deployment-events-issue-feed)** to see all your deployment events when they arrive, or click a specific deployment to see its APM deployments page. The [APM deployment page](/docs/apm/apm-ui-pages/events/deployments-page-view-impact-your-app-users) lists recent deployments and their impact on your end user and app server's Apdex scores, response times, throughput, and errors. This section will only show up if New Relic has identified applications under the impacted entities that have deployments. +* **Deployment events**: When you set up deployments, we provide the deployment nearest to the issue creation. Changes, such as deployments, account for a high percentage of the root causes of incidents and having that information at hand can help diagnose and resolve issues. +* **Error logs**: You can explore millions of log messages with a single click and use manual querying to help you find anomalous patterns and hard-to-find problems. +* **Attributes to investigate**: We scan the distribution of attributes and surface possible causes by finding significant changes in the distribution. This section also shows changes in database and external metrics. You can also [query interesting attributes](/docs/query-your-data/nrql-new-relic-query-language/get-started/introduction-nrql-new-relics-query-language). -## Impacted entities issue map +## Impacted entities and issue map - This feature doesn't account for on-call availability at the time of incident. - - -## Root cause analysis [#root-cause-analysis] +**Impacted entities:** An entity is anything that has data you can monitor. Specifically, these are focused on incidents from New Relic sources, extracting the entities and providing a summary. Each entity is unique. You can see your entities in a list or on a map. -Root cause analysis automatically finds potential causes for an issue and its impacted entities. It shows you why open issues occurred, which deployments contributed, and relevant error logs and attributes. With this, you can investigate the problem and reduce your mean time to resolution (MTTR). - - - Note that root cause analysis is dependent on other New Relic data sources and features. This is why root cause analysis information may not always be present for every issue. - +Depending on the data in an issue, all four of these sections can show up together for each issue or separately. A screenshot example root cause analysis -
- When you select an issue, you may see **Root cause analysis** information. -
- -Root cause analysis includes three main UI sections: +* **Relevant dashboards** helps users in your account look at and interact with [dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/) you've created that are related to an entity. The queries you've run to power the various widgets are automatically mapped to entities whenever possible and are presented back to you here for quick access and discovery. +* **Anomaly overview** will open the application's anomalies page. This is only available for applications that are set up for proactive detection. +* There are two types of **deployment events**: deployments and related deployments. Click **[Show all deployments](/whats-new/applied-intelligence-deployment-events-issue-feed)** to see all your deployment events when they arrive, or click a specific deployment to see its APM deployments page. The [APM deployment page](/docs/apm/apm-ui-pages/events/deployments-page-view-impact-your-app-users) lists recent deployments and their impact on your end user and app server's Apdex scores, response times, throughput, and errors. This section will only show up if New Relic has identified applications under the impacted entities that have deployments. -* **Deployment events**: When you set up deployments, we provide the deployment nearest to the issue creation. Changes, such as deployments, account for a high percentage of the root causes of incidents and having that information at hand can help diagnose and resolve issues. -* **Error logs**: You can explore millions of log messages with a single click and use manual querying to help you find anomalous patterns and hard-to-find problems. -* **Attributes to investigate**: We scan the distribution of attributes and surface possible causes by finding significant changes in the distribution. This section also shows changes in database and external metrics. You can also [query interesting attributes](/docs/query-your-data/nrql-new-relic-query-language/get-started/introduction-nrql-new-relics-query-language). ## Issue timeline [#visual-timeline] @@ -175,6 +149,21 @@ Finally, mouse over the incident to see information on the location, timing, and To view the issues in a text format, in the right hand corner, click **Switch to issue log view.** +## Issue details [#issue-summary] + +The **Issue page** is built to provide you with bottom line insights first to understand the problem, and then to minimize the time you need to resolve it. + +A screenshot of the Issue page and its different sections: Issue details, suggested responders, label sets, and impacted entities. + +The **Issue page** includes the following sections: + +1. **Issue details:** This section has two machine learning modules, the golden signals and the related components. +2. **Label sets:** Label sets are focused on incidents that come from 3rd party sources, such as AWS Cloudwatch, REST APIs, etc., as well as for NRQL queries. They come in the form of key:value pairs. + ## Use decisions [#decisions] To further reduce noise or get improved incident correlation, you can change or customize your decisions. Decisions determine how incident intelligence groups incidents together. diff --git a/src/content/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx b/src/content/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx index b05e56091ac..1b339d2f42b 100644 --- a/src/content/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx +++ b/src/content/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx @@ -23,8 +23,8 @@ Instead of creating your alert conditions manually, you can simply tell us what To get started with expanded anomaly detection: -1. From [one.newrelic.com](https://one.newrelic.com), go to **Alerts & AI > Proactive detection > Settings**. -2. Click the **Custom** tab, and then click **+ Add a configuration**. +1. From [one.newrelic.com](https://one.newrelic.com), go to **Alerts & AI > Anomaly detection**. +2. Click **+ Add a configuration**. 3. Select the account you want to use to record anomaly data, then select the workload or entities you’d like to monitor. 4. Select the detection sensitivity. We recommend **Low** sensitivity so that you don’t see too many anomalies. 5. Finally, name your configuration and save. @@ -33,8 +33,8 @@ To get started with expanded anomaly detection: To detect anomalies with a faceted NRQL query: -1. From [one.newrelic.com](https://one.newrelic.com), go to **Alerts & AI > Proactive detection > Settings**. -2. Click the **Custom** tab, and then click **+ Add a configuration**. +1. From [one.newrelic.com](https://one.newrelic.com), go to **Alerts & AI > Anomaly detection**. +2. Click **+ Add a configuration**. 3. Click **Use a query instead**. You may need to select an account, if you have more than one. 4. Add one or more queries with a FACET clause. Name the query and confirm the facets you want to monitor for anomalies. 5. Select the detection sensitivity. We recommend **Low** sensitivity so that you don’t see too many anomalies. @@ -64,8 +64,8 @@ If it’s already set to **Low**, you can define specific thresholds to distingu To define custom thresholds: -1. From [one.newrelic.com](https://one.newrelic.com), go to **Alerts & AI > Proactive detection > Settings**. -2. Click the **Custom** tab and the configuration you want to modify. +1. From [one.newrelic.com](https://one.newrelic.com), go to **Alerts & AI > Anomaly detection > Settings**. +2. Click the configuration you want to modify. 3. Select an entity or workload, and then change the sensitivity level. You can use custom sensitivity to define specific thresholds for different entity types. diff --git a/src/content/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/rest-api-alerts/alerts-conditions-api-field-names.mdx b/src/content/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/rest-api-alerts/alerts-conditions-api-field-names.mdx index 0641437fa5c..0cdcb298bca 100644 --- a/src/content/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/rest-api-alerts/alerts-conditions-api-field-names.mdx +++ b/src/content/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/rest-api-alerts/alerts-conditions-api-field-names.mdx @@ -515,10 +515,16 @@ Not every field listed in this glossary is required for every condition type. Th * above + * above_or_equals (NRQL conditions only) + * below + * below_or_equals (NRQL conditions only) + * equal + * not_equals (NRQL conditions only) + Used for: * Conditions diff --git a/src/content/docs/alerts-applied-intelligence/new-relic-alerts/alert-policies/specify-when-alerts-create-incidents.mdx b/src/content/docs/alerts-applied-intelligence/new-relic-alerts/alert-policies/specify-when-alerts-create-incidents.mdx index 2ade1ba7e2f..d0acd33a83c 100644 --- a/src/content/docs/alerts-applied-intelligence/new-relic-alerts/alert-policies/specify-when-alerts-create-incidents.mdx +++ b/src/content/docs/alerts-applied-intelligence/new-relic-alerts/alert-policies/specify-when-alerts-create-incidents.mdx @@ -25,13 +25,17 @@ import byCondition from 'images/by-condition.svg' import bySignal from 'images/by-signal.svg' -An incident is a collection of one or more violations. + + In this document, we use the new terms "issue" and "incident." Please see [this article](https://discuss.newrelic.com/t/new-terminology-coming-for-alerts/163727) for a full explanation of these new terms. + -Incidents determine when you are notified about violations disrupting your business. These violations occur when your given alert conditions (like CPU overage, synthetic monitoring crashes, or slow web app response times) are met. +An issue is a collection of one or more incidents. -Control which policy conditions create incidents. This ensures that you are notified about important ongoing or recurring issues and not bombarded by unnecessary notifications. +Issues determine when you are notified about incidents disrupting your business. These incidents occur when your given alert conditions (like CPU overage, synthetic monitoring crashes, or slow web app response times) are met. -Learn how to set incident preferences by your policy, condition, or condition and signal combination. +Control which policy conditions create issues. This ensures that you are notified about important ongoing or recurring problems and not bombarded by unnecessary notifications. + +Learn how to set issue preferences by your policy, condition, or condition and signal combination. ## Critical and warning violations [#incident-types] @@ -40,19 +44,19 @@ Choose from two threshold types when a policy condition is met: * Critical (red) * Warning (yellow) -When a policy condition violates a critical threshold, an incident record can be created with detailed information to help you respond efficiently. The incident record will also include any warning violations occurred after the opening critical threshold violation. +When a policy condition violates a critical threshold, an issue record can be created with detailed information to help you respond efficiently. The issue record will also include any warning incidents occurred after the opening critical threshold incident. -Notifications are sent to every notification channel on the policy when an incident opens, if and when an incident is acknowledged, and when an incident closes. +Notifications are sent to every notification channel on the policy as well as all destinations on any workflow that is properly configured when an issue opens, if and when an issue is acknowledged, and when an issue closes. -## Incident preference options [#preference-options] +## Issue preference options [#preference-options] -Each incident preference option has its own advantages. You can select any preference for any policy. +Each issue preference option has its own advantages. You can select any preference for any policy. @@ -81,7 +85,7 @@ Each incident preference option has its own advantages. You can select any prefe @@ -105,79 +109,79 @@ Each incident preference option has its own advantages. You can select any prefe ## Select your incident preference [#preference-procedures] -By default, a single incident record will be created for each policy. +By default, a single issue record will be created for each policy. -To change the incident preference for the selected policy: +To change the issue preference for the selected policy: 1. In the **[one.newrelic.com](https://one.newrelic.com/ "Link opens in a new window.")** top nav, click **Alerts & AI**, then click **Alert conditions (Policies)**, and then (**select a policy)**. -2. Click **Incident preference**, select your choice of available [options](#preference-options), and then save. +2. Click **Issue creation preference**, select your choice of available [options](#preference-options), and then save. Repeat these steps for each policy as needed. A screenshot showing where the incident preference button is inside the alerts user interface.A screenshot showing how to change your incident preferences on the alerts user interface.
- **[one.newrelic.com](https://one.newrelic.com) > Alerts & AI > Alert conditions (Policies) > (select a policy):** The selected policy page shows how alerts rolls up incidents for alert notifications and UI details. (Default is **By policy**). To choose a different option for this policy, click **Incident preference**. + **[one.newrelic.com](https://one.newrelic.com) > Alerts & AI > Alert conditions (Policies) > (select a policy):** The selected policy page shows how alerts rolls up issues for alert notifications and UI details. (Default is **By policy**). To choose a different option for this policy, click **Issue creation preference**.
## By policy (default) [#preference-policy] A diagram showing how the By policy incident preference works
- When you select the default (**By policy**) as your incident preference, it will group all condition violations into the same incident. + When you select the default (**By policy**) as your issue preference, it will group all condition incidents into the same issue.
-If additional conditions are violated after the incident opens, the violations are added to the same incident. Only one incident appears on your Incidents indexes for the selected policy. +If additional conditions open incidents after the issue opens, the incidents are added to the same issue. Only one issue appears on your issues & activity page for the selected policy. -Choose the **By policy** preference if your policy and its conditions have a focused scope (like monitoring one entity). Learn more about [incident preference best practices](/docs/new-relic-solutions/best-practices-guides/alerts-applied-intelligence/alerts-best-practices/#incident-practices). +Choose the **By policy** preference if your policy and its conditions have a focused scope (like monitoring one entity). Learn more about [issue preference best practices](/docs/new-relic-solutions/best-practices-guides/alerts-applied-intelligence/alerts-best-practices/#incident-practices). ## By condition [#preference-condition] A diagram showing how the By condition incident preference works
- When you select **By condition** as your incident preference, it will group all violations by any target for a specific condition into separate incidents. + When you select **By condition** as your issue preference, it will group all incidents by any target for a specific condition into separate issues.
-Choose the **By condition** option when you want an individual incident record to focus on a specific condition. If the policy has multiple conditions, separate incident records for each condition will appear on your incidents indexes. +Choose the **By condition** option when you want an individual issue record to focus on a specific condition. If the policy has multiple conditions, separate issue records for each condition will appear on your issues & activity page. -* If a target violates a condition for the alert policy, an incident record will be created. -* If the same target violates another condition for the alert policy, another incident record will be created. -* If additional targets violate the same condition after the incident opens, these violations will be added to the incident record already open for that condition. +* If a target violates a condition for the alert policy, an incident will open and an issue record will be created. +* If the same target violates another condition for the alert policy, another incident will open and another issue record will be created. +* If additional targets open incidents on the same condition after the issue opens, these incidents will be added to the issue record already open for that condition. -Learn more about [incident preference best practices](/docs/new-relic-solutions/best-practices-guides/alerts-applied-intelligence/alerts-best-practices/#incident-practices). +Learn more about [issue preference best practices](/docs/new-relic-solutions/best-practices-guides/alerts-applied-intelligence/alerts-best-practices/#incident-practices). ## By condition and signal [#preference-target] Alert policy incident preferences
- When you select **By condition and signal** as your incident preference, it will not group violations at all. A new incident will be created for every violation that occurs in your policy. + When you select **By condition and signal** as your issue preference, it will not group incidents at all. A new issue will be created for every incident that occurs in your policy.
-The **By condition and signal** option is the most granular level for creating incident records. Choose this incident preference when you want to closely monitor anything that is occurring anywhere across your infrastructure. +The **By condition and signal** option is the most granular level for creating issue records. Choose this issue preference when you want to closely monitor anything that is occurring anywhere across your infrastructure. -Learn more about [incident preference best practices](/docs/new-relic-solutions/best-practices-guides/alerts-applied-intelligence/alerts-best-practices/#incident-practices). +Learn more about [issue preference best practices](/docs/new-relic-solutions/best-practices-guides/alerts-applied-intelligence/alerts-best-practices/#incident-practices). diff --git a/src/content/docs/alerts-applied-intelligence/notifications/destinations.mdx b/src/content/docs/alerts-applied-intelligence/notifications/destinations.mdx index af72bb05768..225f3e2ad5e 100644 --- a/src/content/docs/alerts-applied-intelligence/notifications/destinations.mdx +++ b/src/content/docs/alerts-applied-intelligence/notifications/destinations.mdx @@ -23,6 +23,7 @@ The supported destination platforms include: * Slack: Available in [workflows](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/) and [errors inbox](/docs/errors-inbox/). * Webhook: Available in [workflows](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/). * Email: Available in [workflows](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/). +* AWS EventBridge: Available in [workflows](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/). * PagerDuty: Available in [workflows](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/). For more on these and other destinations, see [notification integrations](/docs/alerts-applied-intelligence/notifications/notification-integrations). diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBrdige-channel_create_rule.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBrdige-channel_create_rule.png new file mode 100644 index 00000000000..9dd82242339 Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBrdige-channel_create_rule.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_associate-event-source.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_associate-event-source.png new file mode 100644 index 00000000000..3ef9eaabea0 Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_associate-event-source.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_event-template.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_event-template.png new file mode 100644 index 00000000000..3467d7ccaff Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_event-template.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_guide.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_guide.png new file mode 100644 index 00000000000..755d9565fed Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_guide.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_rule_detail.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_rule_detail.png new file mode 100644 index 00000000000..35c21afce9f Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_rule_detail.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_rule_pattern.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_rule_pattern.png new file mode 100644 index 00000000000..e870ea203ac Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_rule_pattern.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_select-event-source.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_select-event-source.png new file mode 100644 index 00000000000..676ccbc99d7 Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventBridge-channel_select-event-source.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventbridge-channel_select-destination.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventbridge-channel_select-destination.png new file mode 100644 index 00000000000..f6399b72110 Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventbridge-channel_select-destination.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/images/eventbridge-destination.png b/src/content/docs/alerts-applied-intelligence/notifications/images/eventbridge-destination.png new file mode 100644 index 00000000000..7943a74ec80 Binary files /dev/null and b/src/content/docs/alerts-applied-intelligence/notifications/images/eventbridge-destination.png differ diff --git a/src/content/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx b/src/content/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx index 6486a17bfb1..e4c48772779 100644 --- a/src/content/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx +++ b/src/content/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx @@ -12,6 +12,8 @@ import jiraDestination from 'images/jira_destination.png' import jiraTemplate from 'images/jira-template.png' +import eventBridgEventPattern from 'images/eventBridge-event-pattern.png' + import serviceNowDestination from 'images/serviceNow_destination.png' import serviceNowMessageTemplate from 'images/serviceNow_message-template.png' @@ -148,7 +150,7 @@ Read more about each of our specific notification integrations. As part of the integrations, we fetch fields from the your ServiceNow incident table, and other optional values. We require the following permissions: - * Read permissions for the tables `sys_dictionary`, `sys_choice`, `sys_user`, and `task`. + * Full read permissions for the tables `sys_dictionary`, `sys_choice`, `sys_user`, and `task`. * Read/write permission to `incident`. @@ -190,7 +192,7 @@ Read more about each of our specific notification integrations. 4. Click the menu icon in one of the column headers, select **Import XML** and upload the XML file you downloaded. - Once the destination is saved, a New Relic API key is kept in the `api_key_credentials`. The key is sent in a header as part of the callback REST call to New Relic. + Once the destination is saved, a New Relic API key is kept in `api_key_credentials`. The key is sent in a header as part of the callback REST call to New Relic #### Sync with workflows[#two-way-sync-snow-workflows] @@ -236,7 +238,9 @@ Read more about each of our specific notification integrations. ## Prerequisites [#slack-prereqs] - Your Slack workspace needs to have the [New Relic application](https://newrelic.slack.com/apps/AP92KQJS3-new-relic?tab=more_info) installed. The application must be approved by a workspace admin before it can be individually installed by users. + - Your Slack workspace needs to have the [New Relic application](https://newrelic.slack.com/apps/AP92KQJS3-new-relic?tab=more_info) installed. The application must be approved by a workspace administrator before it can be individually installed by users. + + - Private channels need an invitation to install the New Relic application. ## Set up a Slack destination [#set-slack-destination] @@ -338,7 +342,7 @@ Read more about each of our specific notification integrations. src={webhookPreviewError} /> - If the webhook payload conforms a valid JSON, you can send a test notification to your defined webhook destination. + If the webhook payload conforms to a valid JSON, you can send a test notification to your defined webhook destination. + + +Use New Relic and [AWS EventBridge](https://aws.amazon.com/eventbridge/) to customize and deliver notifications to targets like AWS Lambda, Amazon simple notification service (SNS) queues, CloudWatch Logs, and others. + +## Set up an EventBridge destination [#set-up-eventbridge] + +To create an EventBridge destination, go to **Destinations** and click the **AWS EventBridge**, then enter the following information: + +* **Name**: The destination name. +* **AWS region**: This is your AWS regional endpoint. Select the region where your event source is hosted. +* **AWS account ID**: Your AWS account ID. This is a 12-digit number. + +## Choose your event source [#eventbridge-source] + +Once you've configured your EventBridge destination with your AWS account ID, when you create a new event source, it's available in EventBridge. + +1. Select or create a destination name. + +2. Select or create an event source. + +When you create a new event source, it's created in your AWS EventBridge account as an integration partner event source. + +## Associate the event-source in your AWS account, and create a rule [#eventbridge-rule] + +1. **Associate the event source with an event bus**. +In the AWS EventBridge console, choose Partner event sources in the navigation pane. + +Select the button next to the partner event source and then choose Associate with event bus. + +The status of the event source changes from Pending to Active, and the name of the event bus updates to match your event source name. You can now start creating rules that match events from New Relic. + + +2. **Create a rule for the event bus**. +To react to notifications sent from New Relic, you need to create rules with an event-pattern that filters-in New-Relic events. + A screenshot of rule Event pattern. + +Use this AWS doc on how to [create an event source rule](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html#eb-create-rule-partner-events) for more detailed instructions. + +## Configure the message event template [#message-eventbridge] + +When you send notifications from New Relic to EventBridge, you can use a message template to customize that notification. Follow the steps to configure a message template for an EventBridge destination: + +1. You can use the default template or customize your own. + +If you want a customized template, choose variables from the [variables menu](/docs/alerts-applied-intelligence/notifications/message-templates/#variables-menu) and apply [handlebars syntax](/docs/alerts-applied-intelligence/notifications/message-templates/#handlebars-syntax) to enrich your events. + +The EventBridge API requires JSON. See our [JSON usage examples](/docs/alerts-applied-intelligence/notifications/message-templates/#usage-examples). The template preview shows the rendered JSON. + +Once the event template conforms to a valid JSON, you can send a test notification to AWS EventBridge. + YOUR_AUTH_DOMAIN", displayName: "GROUP_DISPLAY_NAME"}) { + group { + displayName + id + } + } +} +``` + +Successful response: +```graphql +{ + "data": { + "userManagementCreateGroup": { + "group": { + "displayName": "GROUP_DISPLAY_NAME" + "id": "GROUP_ID" + } + } + } +} +``` + +## Update user group [#update-group] + +Here's an example of updating a [group](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#groups). + +```graphql +mutation { + userManagementUpdateGroup(updateGroupOptions: {displayName: "YOUR_UPDATED_GROUP_NAME", id: "GROUP_ID"}) { + group { + id + displayName + } + } +} +``` + +Response for success: +```graphql +{ + "data": { + "userManagementUpdateGroup": { + "group": { + "displayName": "YOUR_UPDATED_GROUP_NAME", + "id": "GROUP_ID" + } + } + } +} +``` + +Response for failure: +```graphql +{ + "data": { + "userManagementUpdateGroup": null + }, + "errors": [ + { + "extensions": { + "errorClass": "SERVER_ERROR" + }, + "locations": [ + { + "column": 3, + "line": 2 + } + ], + "message": "Group could not be found", + "path": [ + "userManagementUpdateGroup" + ] + } + ] +} +``` + +## Delete a group [#delete-group] + +Here's an example of deleting a [group](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#groups): + +```graphql +mutation { + userManagementDeleteGroup(groupOptions: {id: "GROUP_ID"}) { + group { + id + } + } +} +``` + +Response for success: +```graphql +{ + "data": { + "userManagementDeleteGroup": { + "group": { + "id": "GROUP_ID" + } + } + } +} +``` + +Response for failure: +```graphql +{ + "data": { + "userManagementDeleteGroup": null + }, + "errors": [ + { + "extensions": { + "errorClass": "SERVER_ERROR" + }, + "locations": [ + { + "column": 3, + "line": 2 + } + ], + "message": "Couldn't find Group with 'id'='ENTERED_GROUP_ID", + "path": [ + "userManagementDeleteGroup" + ] + } + ] +} +``` + +## Add users to groups [#add-users] + +Here's an example of adding users to groups: + +```graphql +mutation { + userManagementAddUsersToGroups(addUsersToGroupsOptions: {groupIds: [GROUP_ID_1, GROUP_ID_2], userIds: [YOUR_USERS_IDS]}) { + groups { + displayName + id + } + } +} +``` + +Response for success: + +```graphql +{ + "data": { + "userManagementAddUsersToGroups": { + "groups": [ + { + "displayName": "GROUP_1_NAME", + "id": "GROUP_ID_1" + }, + { + "displayName": "GROUP_NAME_2", + "id": "GROUP_ID_2" + } + ] + } + } +} +``` + +Response for failure: +```graphql +{ + "data": { + "userManagementAddUsersToGroups": null + }, + "errors": [ + { + "extensions": { + "errorClass": "SERVER_ERROR" + }, + "locations": [ + { + "column": 3, + "line": 2 + } + ], + "message": "The following ids were not found: group_ids: 'NON_EXISTENT_GROUP_ID'", + "path": [ + "userManagementAddUsersToGroups" + ] + } + ] +} +``` + +## Remove users from groups [#remove-users] + +Here's an example of removing users from groups: + +```graphql +mutation { + userManagementRemoveUsersFromGroups(removeUsersFromGroupsOptions: {groupIds: [YOUR_GROUP_IDS], userIds: [YOUR_USER_IDS]}) { + groups { + displayName + id + } + } +} +``` + +Response for success: + +```graphql +{ + "data": { + "userManagementRemoveUsersFromGroups": { + "groups": [ + { + "displayName": "YOUR_GROUP_NAME", + "id": "YOUR_GROUP_ID" + } + ] + } + } +} +``` + +Response for failure: +```graphql +{ + "data": { + "userManagementRemoveUsersFromGroups": null + }, + "errors": [ + { + "extensions": { + "errorClass": "SERVER_ERROR" + }, + "locations": [ + { + "column": 3, + "line": 2 + } + ], + "message": "The following ids were not found: user_ids: 'NON-EXISTENT_USER_ID'", + "path": [ + "userManagementRemoveUsersFromGroups" + ] + } + ] +} +``` + +## Grant access to group [#grant-access] + +Here's an example of creating an access grant (access to a role and an account) for a group: + +```graphql +mutation { + authorizationManagementGrantAccess(grantAccessOptions: {groupId: "YOUR_GROUP_ID", accountAccessGrants: {accountId: "ACCOUNT_ID", roleId: "ROLE_ID"}}) { + roles { + displayName + accountId + } + } +} +``` + +Response for success: + +```graphql +{ + "data": { + "authorizationManagementGrantAccess": { + "roles": [ + { + "displayName": "ROLE_NAME_1", + "id": "ROLE_ID_1" + }, + { + "displayName": "ROLE_NAME_2", + "id": "ROLE_ID_2" + }, + { + "displayName": "ROLE_NAME_3", + "id": "ROLE_ID_3" + }, + { + "displayName": "ROLE_NAME_4", + "id": "ROLE_ID_4" + } + ] + } + } +} +``` + +Response for failure: +```graphql +{ + "data": { + "authorizationManagementGrantAccess": null + }, + "errors": [ + { + "extensions": { + "errorClass": "SERVER_ERROR" + }, + "locations": [ + { + "column": 3, + "line": 2 + } + ], + "message": "Validation failed: Role must exist, Role can't be blank, Role scope does not match granted_on type", + "path": [ + "authorizationManagementGrantAccess" + ] + } + ] +} +``` + +## Revoke grants from group [#revoke-grants] + +Here's an example of revoking access grants from groups: + +```graphql +mutation { + authorizationManagementRevokeAccess(revokeAccessOptions: {accountAccessGrants: {accountId: "ACCOUNT_ID", roleId: "ROLE_ID"}, groupId: "GROUP_ID"}) { + roles { + accountId + displayName + } + } +} +``` + +Response for success: +```graphql +{ + "data": { + "authorizationManagementRevokeAccess": { + "roles": [ + { + "displayName": "ROLE_NAME_1", + "id": "ROLE_ID_1" + }, + { + "displayName": "ROLE_NAME_2", + "id": "ROLE_ID_2" + }, + { + "displayName": "ROLE_NAME_3", + "id": "ROLE_ID_3" + } + ] + } + } +} +``` + diff --git a/src/content/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph.mdx b/src/content/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph.mdx index 792329552dc..eaa386897a9 100644 --- a/src/content/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph.mdx +++ b/src/content/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph.mdx @@ -111,6 +111,7 @@ Account management diff --git a/src/content/docs/apm/agents/c-sdk/get-started/introduction-c-sdk.mdx b/src/content/docs/apm/agents/c-sdk/get-started/introduction-c-sdk.mdx index 566d99624ff..f4fe26bd40e 100644 --- a/src/content/docs/apm/agents/c-sdk/get-started/introduction-c-sdk.mdx +++ b/src/content/docs/apm/agents/c-sdk/get-started/introduction-c-sdk.mdx @@ -47,7 +47,7 @@ import cSdkDaemonArchitecture0430 from 'images/c-sdk-daemon-architecture0430.png variant="important" title="EOL NOTICE" > - As of April 2022, we're discontinuing support for several capabilities, including the C SDK. For more details, including how you can easily prepare for this transition, see our [Explorers Hub post](https://discuss.newrelic.com/t/q1-bulk-eol-announcement-fy23/181744). + As of April 2022, we're discontinuing support for several capabilities, including the C SDK. Please explore the [option to use OpenTelemetry](/docs/apm/agents/c-sdk/get-started/otel_cpp_example) as an alternative to send C++ telemetry data to New Relic. For more details about the EOL, see our [Explorers Hub post](https://discuss.newrelic.com/t/q1-bulk-eol-announcement-fy23/181744). The C SDK is designed to support the often complex, multi-threaded nature of C/C++ applications. You can gain a new level of visibility to help you identify and solve performance issues. You can also collect and analyze data to help you improve the customer experience and make data-driven business decisions. diff --git a/src/content/docs/apm/agents/c-sdk/get-started/otel_cpp_example.mdx b/src/content/docs/apm/agents/c-sdk/get-started/otel_cpp_example.mdx new file mode 100644 index 00000000000..9e9b33ba683 --- /dev/null +++ b/src/content/docs/apm/agents/c-sdk/get-started/otel_cpp_example.mdx @@ -0,0 +1,186 @@ +--- +title: 'C SDK OpenTelemetry alternative' +tags: + - Agents + - C SDK + - Get started + - OpenTelemetry +metaDescription: 'Explore OpenTelemetry to send your C++ instrumentation data to New Relic.' +--- + +OpenTelemetry C++ is an exciting observability [solution](https://github.com/open-telemetry/opentelemetry-cpp) with stable functionality and a wide base of contributors in an active codebase. New Relic is [compatible](/docs/integrations/open-source-telemetry-integrations/opentelemetry/introduction-opentelemetry-new-relic/) with OpenTelemetry and the [benefits](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction/) it can provide, such as future proofing code by putting end-point agnostic instrumentation calls versus adhering to vendor-specific formats. + +Please see the [New Relic OpenTelemetry setup](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/) for detailed instructions on how to use OpenTelemetry to work with the language of your choice to send data to New Relic. + +The OpenTelemetry C++ repository has many fine [examples in GitHub](https://github.com/open-telemetry/opentelemetry-cpp/tree/main/examples). See its [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-cpp/blob/main/CONTRIBUTING.md) for further instructions on building and using the OpenTelemetry C++ SDK as well as building and running the examples. + +## Quick start example [#quick-start] + +Want to get started right away and see what New Relic can do without having to instrument your code? Follow the steps below for an example that will have you sending data to New Relic in no time. + +When you're ready to start instrumenting, please refer to the [New Relic OpenTelemetry setup instructions](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/) and the OpenTelemetry C++ repository [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-cpp/blob/main/CONTRIBUTING.md) for further details on integrating with your code. + +### 1. Set up your environment [#environment] + +Ensure you have the prerequisites outlined in the [New Relic OpenTelemetry documentation](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#prereqs). + +1. Run `git clone https://github.com/open-telemetry/opentelemetry-cpp`. +2. Copy the `Dockerfile.ubuntu`, `docker-compose-collector.yaml`, and the `config.dev.yaml` example files to the root of the directory cloned in step 1. +3. Edit `config.dev.yaml` with your [license key](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key) and [endpoint](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#review-settings). +4. Run `docker-compose -f docker-compose-collector.yaml up`. +5. Verify the two containers are running, one for the collector and one for the C++ application. + +### 2. Run the C++ application [#run-app] + +Open a terminal in the C++ container and run the following commands: + +1. `cd /usr/src/myapp` +2. `mkdir build` +3. `cd build` +4. `rm -rf *` +5. +``` +cmake -DCMAKE_BUILD_TYPE=Debug \ +-DWITH_METRICS_PREVIEW=ON \ +-DWITH_LOGS_PREVIEW=ON \ +-DCMAKE_CXX_FLAGS="-Wno-error=deprecated-declarations" \ +-DWITH_OTLP=ON \ +.. +``` +6. `cd examples` +7. `make` +8. `cd otlp` +9. `./example_otlp_http` + +### 3. View your data [#view-data] + +Verify data has arrived by querying your New Relic account at [one.newrelic.com](https://one.newrelic.com): + +1. To see span data: In the New Relic UI, click **Query your data**, and run the following query: + +``` +FROM Span SELECT * where telemetry.sdk.name = 'opentelemetry' +``` + +2. View the [OpenTelemetry service](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-view-your-data#explorer) by searching for `unknown_service` for more details. + +## Sample files [#sample-files] + +### docker-compose-collector.yaml + +``` +version: '3.7' +services: + cpp: + build: + context: . + dockerfile: Dockerfile.ubuntu + stdin_open: true + environment: + - OTEL_EXPORTER_OTLP_ENDPOINT=otel-collector:4318 + volumes: + - ./:/usr/src/myapp + otel-collector: + image: otel/opentelemetry-collector-contrib + stdin_open: true + command: ["--config=/etc/otel-collector-config.yml"] + volumes: + - ./config.dev.yaml:/etc/otel-collector-config.yml + ports: + - "1888:1888" # pprof extension + - "8888:8888" # Prometheus metrics exposed by the collector + - "8889:8889" # Prometheus exporter metrics + - "13133:13133" # health_check extension + - "9411" # Zipkin receiver + - "4317:4317" # OTLP gRPC receiver + - "4318:4318" # OTLP http receiver + - "55680:55679" # zpages extension + depends_on: + - cpp +``` + +### Dockerfile.ubuntu + +``` +FROM ubuntu:20.04 +ENV DEBIAN_FRONTEND noninteractive + +## Update cache and upgrade image +RUN apt-get -y update && apt-get -y upgrade && apt-get -y dist-upgrade + +## Build environment packages +RUN apt-get install -qq -y --ignore-missing \ + apt-utils \ + automake \ + bc \ + build-essential \ + bzip2 \ + cmake \ + curl \ + git \ + libcurl4-openssl-dev \ + libssl-dev \ + libtool-bin \ + make \ + pkg-config \ + protobuf-compiler \ + libprotobuf-dev \ + python \ + sudo \ + tar \ + zip \ + unzip \ + wget \ + zlib1g-dev + +WORKDIR /setup-tools + +ADD ci/setup_ci_environment.sh /setup-tools +ADD ci/setup_cmake.sh /setup-tools +ADD ci/install_protobuf.sh /setup-tools + +RUN /setup-tools/setup_ci_environment.sh \ + && /setup-tools/setup_cmake.sh \ + && /setup-tools/install_protobuf.sh + +WORKDIR /usr/src/myapp + + +# ENTRYPOINT bash +CMD /bin/bash +``` + +### config.dev.yaml + +``` +exporters: + newrelic: + apikey: 'EDIT_TO_ADD_YOUR_KEY_HERE' + timeout: 30s + host_override: "otlp.nr-data.net" + logging: + loglevel: DEBUG +receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + http: + endpoint: 0.0.0.0:4318 + cors: + allowed_origins: + - '*' +service: + pipelines: + traces: + receivers: + - otlp + exporters: + - logging + - newrelic + logs: + receivers: + - otlp + exporters: + - logging +``` diff --git a/src/content/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration.mdx b/src/content/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration.mdx index 40716eebfab..d4d6726e0bb 100644 --- a/src/content/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration.mdx +++ b/src/content/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration.mdx @@ -3729,3 +3729,212 @@ To turn on Infinite Tracing, enable distributed tracing (set `distributed_tracin For help getting a valid Infinite Tracing trace observer host entry, see [Find or create a trace observer endpoint](/docs/understand-dependencies/distributed-tracing/enable-configure/language-agents-enable-distributed-tracing#provision-trace-observer). + +## Application Logging + + + +
- **Incident preference** + **Issue preference** @@ -68,10 +72,10 @@ Each incident preference option has its own advantages. You can select any prefe - Only one incident will be open at a time for the entire policy. + Only one issue will be open at a time for the entire policy. * Fewest number of notifications - * Requires immediate action and closing the incidents to be effective + * Requires immediate action and closing the issues to be effective
- One incident will be open at a time for each condition in your policy. + One issue will be open at a time for each condition in your policy. * More notifications * Useful for policies containing conditions that focus on [entities](/docs/apm/new-relic-apm/getting-started/glossary#alert-target) that perform the same job; for example, hosts that all serve the same application(s) @@ -94,10 +98,10 @@ Each incident preference option has its own advantages. You can select any prefe - An incident will be created for every violation in your policy. + An issue will be created for every incident in your policy. * The most notifications - * Useful if you need to be notified of every violation or if you have an external system where you want to send alert notifications + * Useful if you need to be notified of every incident or if you have an external system where you want to send alert notifications
* [Manage accounts](/docs/apis/nerdgraph/examples/manage-accounts-nerdgraph) +* [Manage user groups and access grants](/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt) * [Create and manage API keys](/docs/apis/nerdgraph/examples/use-nerdgraph-manage-license-keys-user-keys) (data ingest keys, and user keys)
+ + + + + + + + + + + + + + + + + + + +
+ Type + + Boolean +
+ Default + + `true` +
+ [Environ variable](#environment-variables) + + `NEW_RELIC_APPLICATION_LOGGING_ENABLED` +
+ + Enables automatically generating [logs in context](https://docs.newrelic.com/docs/logs/logs-context/configure-logs-context-nodejs/). +
+ + + + + + + + + + + + + + + + + + + + + + +
+ Type + + Boolean +
+ Default + + `true` +
+ [Environ variable](#environment-variables) + + `NEW_RELIC_APPLICATION_LOGGING_METRICS_ENABLED` +
+ + Toggles whether the agent gathers Logging Metrics used in the Logs chart on the APM Summary page. +
+ + + + + + + + + + + + + + + + + + + + + + +
+ Type + + Boolean +
+ Default + + `false` +
+ [Environ variable](#environment-variables) + + `NEW_RELIC_APPLICATION_LOGGING_FORWARDING_ENABLED` +
+ + Toggles whether the agent gathers log records for sending to New Relic. +
+ + + + + + + + + + + + + + + + + + + + + + +
+ Type + + Number +
+ Default + + `10000` +
+ [Environ variable](#environment-variables) + + `NEW_RELIC_APPLICATION_LOGGING_FORWARDING_MAX_SAMPLES_STORED` +
+ + Number of log records to send per minute to New Relic. Controls the overall memory consumption when using log forwarding. +
+ + + + + + + + + + + + + + + + + + + + + + +
+ Type + + Boolean +
+ Default + + `false` +
+ [Environ variable](#environment-variables) + + `NEW_RELIC_APPLICATION_LOGGING_LOCAL_DECORATING_ENABLED` +
+ + Toggles whether the agent performs Local Log Decoration on standard log output. +
+ diff --git a/src/content/docs/apm/transactions/transaction-traces/introduction-transaction-traces.mdx b/src/content/docs/apm/transactions/transaction-traces/introduction-transaction-traces.mdx index 3394f12c80c..a7dfe14650a 100644 --- a/src/content/docs/apm/transactions/transaction-traces/introduction-transaction-traces.mdx +++ b/src/content/docs/apm/transactions/transaction-traces/introduction-transaction-traces.mdx @@ -64,7 +64,7 @@ These are the general rules, but there are some agent-specific differences. For If you [don't see traces in your account](/docs/apm/transactions/transaction-traces/troubleshooting-not-seeing-transaction-traces), it's possible that no transactions meet the necessary criteria. In this situation, you can adjust [transaction trace settings](/docs/apm/transactions/transaction-traces/configure-transaction-traces) to ensure some transactions will be traced. -If you use [Synthetic](/docs/synthetics/new-relic-synthetics/getting-started/new-relic-synthetics), you will likely have [Synthetic monitor traces](/docs/synthetics/new-relic-synthetics/using-monitors/collect-synthetic-transaction-traces). Synthetic traces can happen more frequently than APM traces, potentially several per minute. +If you use [synthetic monitoring](/docs/synthetics/new-relic-synthetics/getting-started/new-relic-synthetics), you will likely have [synthetic monitor traces](/docs/synthetics/new-relic-synthetics/using-monitors/collect-synthetic-transaction-traces). Synthetic traces can happen more frequently than APM traces, potentially several per minute. ## Configure transaction traces [#configure] diff --git a/src/content/docs/browser/browser-monitoring/browser-pro-features/ajax-page-identify-time-consuming-calls.mdx b/src/content/docs/browser/browser-monitoring/browser-pro-features/ajax-page-identify-time-consuming-calls.mdx index ecfcee34d29..12f7a8dc3b7 100644 --- a/src/content/docs/browser/browser-monitoring/browser-pro-features/ajax-page-identify-time-consuming-calls.mdx +++ b/src/content/docs/browser/browser-monitoring/browser-pro-features/ajax-page-identify-time-consuming-calls.mdx @@ -13,7 +13,7 @@ import nrOneAjaxBrowser from 'images/nr-one-ajax-browser.png' import nrOneAjaxDetails from 'images/nr-one-ajax-details.png' -Our browser monitoring's **AJAX** UI shows recent AJAX requests from browsers to external endpoints, such as HTTP or HTTPS domains. This information helps identify problems with the end user experience when you have time-consuming or failing AJAX calls that update parts of a webpage on your site. +Our browser monitoring's **AJAX** UI shows recent AJAX requests from browsers to external endpoints, such as HTTP or HTTPS domains. This information helps identify problems with the end user experience when you have time-consuming or failing AJAX calls that update parts of a webpage on your site. You can review issues by device type, including desktop browsers, mobile devices, and tablets. ## What to troubleshoot [#troubleshooting] @@ -84,14 +84,13 @@ Here are some troubleshooting tips for identifying performance problems with you To troubleshoot problems with AJAX requests for your app: -* Go to **[one.newrelic.com](https://one.newrelic.com) > Browser > (select an app) > AJAX**. - - OR -* Go directly to the selected app's [**Browser summary** page](/docs/browser/browser-monitoring/getting-started/browser-summary-page), then click the **AJAX response time** chart's title. +1. Go to **[one.newrelic.com](https://one.newrelic.com) > Browser > (select an app) > AJAX**. +2. Select the type of device: desktop (default), mobile, and tablet. +3. To review details for a specific AJAX call by performance or by page view, click the link. NR One browser monitoring: AJAX summary @@ -126,9 +125,7 @@ To troubleshoot problems with AJAX requests for your app: - Use any of the available **Sort by** or filter options in the UI. All AJAX requests that take longer than two minutes are filtered out automatically. - - You can also [group your browser metrics by URLs](/docs/browser/new-relic-browser/configuration/group-browser-metrics-urls). For example, this is useful with allow lists and deny lists. + Use any of the available **Sort by** options in the UI. All AJAX requests that take longer than two minutes are filtered out automatically @@ -169,13 +166,13 @@ To troubleshoot problems with AJAX requests for your app: id="ajax-performancex" title="Get details by calls or page views" > - After selecting a specific call from the **AJAX** summary page, you can drill down into detailed information with the **AJAX performance** tab. This includes a direct link to [session trace details](/docs/browser/browser-monitoring/browser-pro-features/session-traces-explore-webpages-life-cycle). + After selecting a specific call from the **AJAX** summary page, you can drill down into detailed information with the **AJAX performance** link. This includes a direct link to [session trace details](/docs/browser/browser-monitoring/browser-pro-features/session-traces-explore-webpages-life-cycle). From here you can also select the tab to get performance data by page views. (If your app server requests greatly outnumber your browser `PageView` transactions, this is because some requests to your back end are made through AJAX. For more information, see our [troubleshooting procedures](/docs/browser/new-relic-browser/troubleshooting/app-server-requests-greatly-outnumber-browser-pageview-transactions).) NR One browser monitoring: AJAX details diff --git a/src/content/docs/browser/new-relic-browser/configuration/group-browser-metrics-urls.mdx b/src/content/docs/browser/new-relic-browser/configuration/group-browser-metrics-urls.mdx index 5b6e7eb8bc3..e0652c162e9 100644 --- a/src/content/docs/browser/new-relic-browser/configuration/group-browser-metrics-urls.mdx +++ b/src/content/docs/browser/new-relic-browser/configuration/group-browser-metrics-urls.mdx @@ -1,17 +1,17 @@ --- -title: Group browser metrics by URLs +title: Group browser data by URLs tags: - Browser - Browser monitoring - Configuration -metaDescription: 'To override the default URL patterns New Relic uses to group metrics, add URLs to your allow list in browser monitoring settings.' +metaDescription: 'To override the default URL patterns New Relic uses to group event data, add URLs to your allow list in browser monitoring settings.' redirects: - /docs/browser/new-relic-browser/getting-started/url-whitelists-grouping-browser-metrics - /docs/browser/new-relic-browser/installation-configuration/url-whitelists-grouping-browser-metrics - /docs/browser/new-relic-browser/configuration/url-whitelists-grouping-browser-metrics --- -Browser monitoring uses URL patterns for metrics that appear on the [**Page views** page](/docs/browser/new-relic-browser/additional-standard-features/page-views-insights-your-sites-popularity) and [**AJAX** page](/docs/browser/new-relic-browser/browser-pro-features/ajax-dashboard-identifying-time-consuming-calls). Benefits of using URL patterns include: +Browser monitoring uses URL patterns for data on the [**Page views** page](/docs/browser/new-relic-browser/additional-standard-features/page-views-insights-your-sites-popularity) and [**AJAX** page](/docs/browser/new-relic-browser/browser-pro-features/ajax-dashboard-identifying-time-consuming-calls). Benefits of using URL patterns include: * Present timings for page views and AJAX calls by using helpful groupings of similar pages. * Use a format that is intuitive based on the site's URLs. @@ -35,7 +35,7 @@ After the URL has been filtered, New Relic analyzes requests and splits URLs int ## Add URL groupings [#adding] -You can modify how browser groups your metrics by adding to your application's URL allow list. Adding segments makes these terms always appear in your URL groups for new data reported to New Relic. They will never be rolled up to `*`. +You can modify how browser groups your data by adding to your application's URL allow list. Adding segments makes these terms always appear in your URL groups for new data reported to New Relic. They will never be rolled up to `*`. Order is not important when listing multiple segments. However, make sure the segments you add **exactly match** the way the segments appear in your URLs. If a URL path segment ends in `.html` or `.jsp`, the extension must be included in the segment. Segments are case-sensitive. @@ -107,4 +107,4 @@ The automated grouping algorithm aims to group URLs usefully, but occasionally y ## Controller names [#controller] -Browser uses URL patterns for metric grouping instead of server-side controller action names, such as `ApplicationsController#show`. Browser continues to include links to related backend APM metrics as applicable. However, they are not the primary grouping strategy for browser as a standalone product. +Browser monitoring uses URL patterns for data grouping instead of server-side controller action names, such as `ApplicationsController#show`. It includes links to related backend APM events as applicable. However, this is not the primary grouping strategy for browser as a standalone service. diff --git a/src/content/docs/codestream/how-use-codestream/discuss-code.mdx b/src/content/docs/codestream/how-use-codestream/discuss-code.mdx index 9199a0847fa..780c5689828 100644 --- a/src/content/docs/codestream/how-use-codestream/discuss-code.mdx +++ b/src/content/docs/codestream/how-use-codestream/discuss-code.mdx @@ -191,7 +191,7 @@ When something needs to get done there’s a better chance of it happening if it src={codemarkIssue7} /> -If your team uses Asana, Azure DevOps, Bitbucket (cloud), Clubhouse, GitHub (cloud or Enterprise), GitLab (cloud or Self-Managed), Jira (cloud or Server), Linear, Trello, or YouTrack (cloud) for tracking issues, you can create an issue on one of those services directly from CodeStream. Select the service you use from the dropdown at the top of the codemark form. +If your team uses Asana, Azure DevOps, Bitbucket (cloud), GitHub (cloud or Enterprise), GitLab (cloud or Self-Managed), Jira (cloud or Server), Linear, Shortcut, Trello, or YouTrack (cloud) for tracking issues, you can create an issue on one of those services directly from CodeStream. Select the service you use from the dropdown at the top of the codemark form. A screenshot of the unconnected observability section where you add your New Relic user key.
- Before you can start seeing errors in your IDE and take advantage of other New Relic and CodeStream features, you'll need to enter your New Relic user key. + Connect CodeStream to New Relic with a user key in order to bring observability into your IDE.
-Go here to get or create your [New Relic user key](https://one.newrelic.com/launcher/api-keys-ui.api-keys-launcher). +Once you have your user key, click **Connect to New Relic** in the +**Observability** section of CodeStream, then paste your user key and click +**Connect to New Relic**. If you signed up for CodeStream using your New Relic +user key then you'll already be connected. -Once you have your user key, in **Observability** click **Connect to New Relic One**, then paste your user key and click **Connect**. +Note that you must have a New Relic user type of [core user or full platform +user](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type#user-type-capabilities) +in order to use the observability features in CodeStream. -## Monitor code-level metrics [#code-level] +## Associate repositories with New Relic entities [#repo-association] -CodeStream's code-level metrics give you detailed insight into how your code is performing. +The telemetry data available in CodeStream is contextual, meaning that it's all +related to the code you have open in your IDE. In order to do this CodeStream +needs to know what entities on New Relic are built by the repositories you have +open, and there are a number of ways to make these associations. + +There are instances where CodeStream will prompt you to make an association if +one doesn't exist. For example, if you try to view an error from New Relic in +CodeStream, and the entity the error belongs to isn't associated with a +repository, CodeStream will ask you to identify the appropriate repository. The +Observability section of the the CodeStream pane will also prompt you take make +associations for all of the repositories you have open in your IDE. A screenshot of a Python method with average duration, throughput, and error rate telemetry. -
When relevant, CodeStream's code-level metrics are shown in text directly above your Python methods, called a CodeLens.
+Making these associations on the fly when prompted is a great way to get +started, however we recommend one of the following methods since they require +less ongoing manual effort and eliminate the possibility of end-user mistakes, +such as misconfigured remote URLs. These methods have the additional benefit of +allowing you to associate a repository with multiple entities. For example you +might have different entities that represent different environments (e.g., +production, staging) and they may all be associated with the same repository. + + + + Set the environment variable `NEW_RELIC_METADATA_REPOSITORY_URL`. New Relic APM agents create the repository entity and associate it with your application entity automatically. + + This requires the SSH or HTTPS remote URL format. We recommend that this be set as part of your build pipeline. + + + + Once you've started sending data to New Relic, use the UI to connect your related repository. Go to the APM Summary page via **[one.newrelic.com](https://one.newrelic.com) > Explorer > Services - APM > (select an app)**, then look for the **Repositories** section at the bottom-right. + + A screenshot of the connect repository button. + + Click **Connect repository** to find an existing repository or add a new one. + + + + Use New Relic's [NerdGraph APIs](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/) to create a repository and associate it with your application entities. + + **Step 1: Create a repository entity** + + To create a repository entity, use the `referenceEntityCreateOrUpdateRepository` API and make sure to save the GUID that's produced. The API takes the following parameters: + + * `accountId` - the integer account ID for the account you want to add the repository to + + * `url` - example `https://github.com/newrelic/beta-docs-site.git` + + * `name` - example: `newrelic/beta-docs-site` + + ``` + mutation { + referenceEntityCreateOrUpdateRepository(repositories: [{accountId: [YOUR_ACCOUNT_ID], name: "[REPO_NAME]", url: "[REPO_URL]"}]) { + created + failures { + guid + message + type + } + } + } + ``` + + In order to find the entity you create, you can use a query like the following. Note that the URL you provided to `referenceEntityCreateOrUpdateRepository` gets saved as an entity tag. + + ``` + { + actor { + entitySearch(query: "name = 'a name' OR tags.url = 'a url'") { + count + query + results { + entities { + guid + name + tags { + key + values + } + } + } + } + } + } + + ``` + + **Step 2: Associate the repository entity to your application entity** + + First, find the GUID for the application you want to associate your repository to. + + Parameters: + + * `sourceEntityGuid` - the entity GUID of the application + + * `targetEntityGuid` - the entity GUID of your repository + + * `type` - always `BUILT_FROM` + + ``` + mutation { + entityRelationshipUserDefinedCreateOrReplace(sourceEntityGuid: "", targetEntityGuid: "", type: BUILT_FROM) { + errors { + message + type + } + } + } + ``` + + To see all entities related to your repository you can do a query like this: + + ``` + { + actor { + entity(guid: "[YOUR_REPOSITORY_GUID]]") { + relatedEntities(filter: {direction: BOTH, relationshipTypes: {include: BUILT_FROM}}) { + results { + target { + entity { + name + guid + type + } + } + type + } + } + name + type + tags { + values + key + } + } + } + } + ``` + + **Step 3: Cleanup (if needed)** + + Delete a repository with the following query: + + ``` + mutation DeleteRepository { + entityDelete(guids: "[ENTITY_GUID_HERE]]") { + deletedEntities + failures { + message + guid + } + } + } + ``` + + + +With any of these methods you can specify the remote URL in either the SSH or HTTPS format: + +* `git@github.com:newrelic/beta-docs-site.git` +* `https://github.com/newrelic/beta-docs-site.git` -Code-level metrics are only available for Python code and [supported Python frameworks](/docs/apm/agents/python-agent/getting-started/instrumented-python-packages). These metrics are shown via CodeLens text, a line of text inserted above your instrumented method. + It's possible to add the same GitHub repository more than once, if you're using different protocols to do so. The UI warns you about this, but won't prevent you from doing so. -Your Python application code also needs to be monitored by the [Python APM agent](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python) and your repository associated with a New Relic service. + For example, `https://github.com/tuna/repo` and `git@github.com:tuna/repo` are the same repo, with different protocols. -Click the CodeLens text to see related charts. +## Observability in the IDE [#observability-in-IDE] + +The **Observability section** of CodeStream allows developers to discover errors +related to code that they're responsible for, right from their IDE. In addition +to errors assigned to you, recent errors will be listed for each repository you +have open in your IDE. A screenshot of an expanded code-level metrics CodeLens that shows related charts. + +
+ See recent errors related to repositories open in your IDE. +
+ +Click on any error to view the details and [start collaborating](#collaborate). + +It's possible that you may have a repository associated with mutliple entities +on New Relic. In these cases a dropdown list is displayed to the right of the +repository name so that you easily switch between entities. + +A screenshot of the selection of the entity for which you'd like to see errors. -
Click the entity name at the top of the charts to jump to this data in New Relic One.
+
+ Select the entity for which you'd like to see errors. +
-Code-level metrics focus on your "golden metrics" for the last 30 minutes. These metrics are: latency, traffic, errors, and saturation. + +If your project isn't monitored by New Relic, you can +set up monitoring by clicking on the gear icon in the heading of the +**Observability section** and then selecting **Instrument my App**. CodeStream +has setup wizards available for Node JS, Java, and .NET projects. + -The related charts include some standard fields: +## Code-level metrics [#code-level] -* The name of the method being monitored. -* **Entity**: A dropdown that switches between what's being monitored, for example methods in development or production repositories. -* **Repo**: Your current repository. -* **File**: The file that contains the method. +Code-level metrics give you detailed insight into how your code is performing at +the method level. For each method automatically instrumented by New Relic's +Python APM agent, you'll see golden signals displayed via a line of text +inserted above each method called a CodeLens. Response time, throughput and +error rate are shown for the last 30 minutes. -### Enable code-level metrics [#enable] +A screenshot of a Python method with response time, throughput, and error rate metrics. -If you've enabled CodeStream and are monitoring entities in New Relic, but you haven't associated your current repository with New Relic, your IDE shows a CodeLens at the top of your open file. +
Code-level metrics are displayed above each instrumented method in your Python project.
-Follow these steps to add code-level metrics to your repository: + +Code-level metrics are only available for projects monitored by the [Python APM agent](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python) implemented with a [supported Python framework](/docs/apm/agents/python-agent/getting-started/instrumented-python-packages). + -1. Click the CodeLens at the top of your file. -2. In the CodeStream pane, click the **Select entity** dropdown, and then select the appropriate entity. -3. Click **Associate**. +Click the CodeLens to see charts visualizing each of the golden signals. If +the repository is associated with mutliple entities on New Relic you can easily +switch between them. This will change the entity upon which the golden signals +displayed in the editor are based. -If you don't want to be prompted for this in future, click the **Don't show** checkbox. +A screenshot of an expanded code-level metrics CodeLens that shows related charts. -### Change your CodeLens format [#format] +
Click the entity name at the top of the charts to see more detailed service-level data on New Relic.
-You can use your IDE's settings to change how your CodeLens messages are shown: +### CodeLens options [#codelens-options] + +You can change how CodeLenses are displayed via the CodeStream section of your IDE's settings: * In VS Code, go to Settings, and search for "codestream". * In JetBrains, go to **Preferences/Settings > Tools > CodeStream** @@ -108,14 +339,15 @@ The default CodeLens format is: avg duration: ${averageDuration} | throughput: ${throughput} | error rate: ${errorsPerMinute} - since ${since} ``` -### Disable CodeLens [#disable] - -In your IDE settings, you can turn CodeLens off altogether or only for code-level metrics. To do this, uncheck the **CodeStream: Show Golden Signals In Editor** setting. - +You can also turn CodeLenses off altogether by unchecking the **CodeStream: Show Golden Signals In Editor** setting. -## Discover errors on New Relic One [#discover-on-NR1] +## Investigating errors [#investigating-errors] -Once you've [connected CodeStream to your New Relic One account](/docs/codestream/start-here/codestream-new-relic), and you've created one or more workloads with [errors inbox](/docs/errors-inbox/errors-inbox/) on New Relic One, use **Open in IDE** to see APM errors with stack traces directly in your IDE. +CodeStream will show you recent errors happening in the code you have open in +your IDE, but you can see a more comprehensive list of APM errors via the +[errors inbox](/docs/errors-inbox/errors-inbox/) on New Relic. When you're ready +to dig into the root cause of a specific error with a stack trace, click **Open +in IDE** to go directly to the code in your IDE. -Once connected, all of your collaboration work in CodeStream (such as the discussion, assignee, and error status) syncs with New Relic One, where you can continue to collaborate. +### Collaborate on resolution [#collaborate] -Error on New Relic One +A typical collaboration session could include developers commenting on code in +their IDEs, a DevOps engineer assigning errors in errors inbox, and a +development manager following along in Slack. By meeting people in the tools +they're already using, CodeStream shortens the amount of time between error +discovery and error resolution. -A typical collaboration session could include developers commenting on code in their IDEs, a DevOps engineer assigning errors in errors inbox, and a development manager following along in Slack. By meeting people in the tools they're already using, New Relic CodeStream shortens the amount of time between error discovery and error resolution. - -For a look at using CodeStream to discover errors, watch this short YouTube video (approx. 2:27 minutes). +Watch this short YouTube video (approx. 2:27 minutes) to see this in action.