`-browser-url STRING`
diff --git a/src/content/docs/query-your-data/explore-query-data/query-builder/nrql-console.mdx b/src/content/docs/query-your-data/explore-query-data/query-builder/nrql-console.mdx
index f51096acfbe..f2b1fecca72 100644
--- a/src/content/docs/query-your-data/explore-query-data/query-builder/nrql-console.mdx
+++ b/src/content/docs/query-your-data/explore-query-data/query-builder/nrql-console.mdx
@@ -8,10 +8,6 @@ tags:
metaDescription: Read about how to use the NRQL console to get data and build charts.
---
-
- The NRQL console is only available through an [Early Access Program](https://docs.google.com/forms/d/e/1FAIpQLSc5uh-huobLBAsO_Lmqx03eGqgmfQDTdmbHM6vh-C6aqQJt0w/viewform).
-
-
The NRQL console is a quick way to query your data anywhere in [New Relic One](https://one.newrelic.com/) while keeping context of what you're doing. Whether you're monitoring your services, troubleshooting an issue, or just browsing your platform, with the NRQL console you can explore your data to understand more about what you are seeing in just a click, without leaving your current view. Be faster at querying your data!
@@ -20,6 +16,10 @@ The NRQL console is a quick way to query your data anywhere in [New Relic One](h
## Use the NRQL console [#use-nrql-console]
+
+ The NRQL console isn't visible by default. If you want to enable or disable it, go to your user preferences, by clicking the avatar at the top right corner of the UI.
+
+
The NRQL console is a thin, elegant bar available everywhere for data exploration. Using it is very simple:
1. Find the NRQL console at the bottom of the UI **anywhere in New Relic One**. It's omnipresent!
@@ -30,7 +30,3 @@ The NRQL console is a thin, elegant bar available everywhere for data exploratio
4. Save the results to your dashboards.
5. For advanced customizations, open your query in the query builder. You'll be able to complete the query, change the visualization type, configure the y-axis, format data, etc.
6. Once you are done with your query you can minimize the console to keep the query on it in case you need it later, or you can clear it by pressing **x**.
-
-
- The NRQL console is always available and visible by default, but you can turn it off (and back on!) in your user preferences clicking the avatar at the top right corner of the UI.
-
diff --git a/src/content/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions.mdx b/src/content/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions.mdx
index 0f3b188fa6f..5127d78f079 100644
--- a/src/content/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions.mdx
+++ b/src/content/docs/query-your-data/nrql-new-relic-query-language/get-started/nrql-syntax-clauses-functions.mdx
@@ -596,7 +596,7 @@ Every NRQL query will begin with a `SELECT` statement or a `FROM` clause. All ot
`TIMESERIES` can be combined with arguments such as `MAX`, `AUTO`, and `SLIDE BY` to further tailor query results, as shown in the examples below.
- For functions such as `average( )` or `percentile( )`, a large aggregation window can have a significant smoothing effect on outliers. This is true whether or not the query makes use of sliding windows.
+ For functions such as `average()` or `percentile()`, a large aggregation window can have a significant smoothing effect on outliers. This is true whether or not the query makes use of sliding windows.
@@ -1369,7 +1369,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
>
Use the `apdex` function to return an [Apdex score](/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction#score) for a single transaction or for all your transactions. The [attribute](/docs/insights/new-relic-insights/decorating-events/insights-attributes) can be any attribute based on response time, such as [`duration`](/docs/insights/insights-data-sources/default-events-attributes/apm-default-event-attributes#txn-duration) or [`backendDuration`](/docs/insights/insights-data-sources/default-events-attributes/browser-default-events-attributes-insights#backend-duration). The `t:` argument defines an [Apdex T](/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction) threshold in the same unit of time as the chosen attribute. For instance, if the attribute is measured in seconds, `t` will be a threshold in seconds.
- The Apdex score returned by the `apdex( )` function is based only on execution time. It does not account for APM errors. If a transaction includes an error but completes in [Apdex T](/docs/apm/new-relic-apm/getting-started/glossary#apdex_t) or less, that transaction will be rated [satisfying](/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction#bullet-satisfied) by the `apdex ( )` function.
+ The Apdex score returned by the `apdex()` function is based only on execution time. It does not account for APM errors. If a transaction includes an error but completes in [Apdex T](/docs/apm/new-relic-apm/getting-started/glossary#apdex_t) or less, that transaction will be rated [satisfying](/docs/apm/new-relic-apm/apdex/apdex-measuring-user-satisfaction#bullet-satisfied) by the `apdex ()` function.
average(attribute)}
>
- Use the `average( )` function to return the average value for an attribute. It takes a single attribute name as an argument. If a value of the attribute is not numeric, it will be ignored when aggregating. If data matching the query's conditions is not found, or there are no numeric values returned by the query, it will return a value of null.
+ Use the `average()` function to return the average value for an attribute. It takes a single attribute name as an argument. If a value of the attribute is not numeric, it will be ignored when aggregating. If data matching the query's conditions is not found, or there are no numeric values returned by the query, it will return a value of null.
bucketPercentile(attribute)}
>
- The `bucketPercentile( )` function is the NRQL equivalent of the [`histogram_quantile`](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile) function in Prometheus. It is intended to be used with dimensional metric data. Instead of the quantile, New Relic returns the percentile, which is the quantile \* 100.
+ The `bucketPercentile()` function is the NRQL equivalent of the [`histogram_quantile`](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram_quantile) function in Prometheus. It is intended to be used with dimensional metric data. Instead of the quantile, New Relic returns the percentile, which is the quantile \* 100.
- Use the `bucketPercentile( )` function to calculate the quantile from the histogram data in a Prometheus format.
+ Use the `bucketPercentile()` function to calculate the quantile from the histogram data in a Prometheus format.
It takes the bucket name as an argument and reports percentiles along the bucket's boundaries:
@@ -1473,11 +1473,11 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-cardinality"
title={cardinality(attribute)}
>
- Use the `cardinality( )` function to obtain the number of combinations of all the dimensions (attributes) on a [metric](/docs/using-new-relic/data/understand-data/new-relic-data-types#metrics).
+ Use the `cardinality()` function to obtain the number of combinations of all the dimensions (attributes) on a [metric](/docs/using-new-relic/data/understand-data/new-relic-data-types#metrics).
It takes three arguments, all optional:
- * Metric name: if present, `cardinality( )` only computes the metric specified.
+ * Metric name: if present, `cardinality()` only computes the metric specified.
* Include: if present, the include list restricts the cardinality computation to those attributes.
* Exclude: if present, the exclude list causes those attributes to be ignored in the cardinality computation.
@@ -1491,7 +1491,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-count"
title={count(*)}
>
- Use the `count( )` function to return a count of available records. It takes a single argument; either `*`, an attribute, or a constant value. Currently, it follows typical SQL behavior and counts all records that have values for its argument.
+ Use the `count()` function to return a count of available records. It takes a single argument; either `*`, an attribute, or a constant value. Currently, it follows typical SQL behavior and counts all records that have values for its argument.
Since `count(*)` does not name a specific attribute, the results will be formatted in the default ["humanize"](/docs/insights/new-relic-insights/managing-dashboards-data/data-formatter-setting-default-formats-numeric-values#format) format.
@@ -1511,18 +1511,18 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-dimensions"
title={{'dimensions(include: {attributes}, exclude: {attributes})'}}
>
- Use the `dimensions( )` function to return all the dimensional values on a data type.
+ Use the `dimensions()` function to return all the dimensional values on a data type.
You can explicitly include or exclude specific attributes using the optional arguments:
- * Include: if present, the include list limits `dimensions( )` to those attributes.
- * Exclude: if present, the `dimensions( )` calculation ignores those attributes.
+ * Include: if present, the include list limits `dimensions()` to those attributes.
+ * Exclude: if present, the `dimensions()` calculation ignores those attributes.
```
FROM Metric SELECT count(node_filesystem_size) TIMESERIES FACET dimensions()
```
- When used with a `FACET` clause, `dimensions( )` produces a unique timeseries for all facets available on the event type, similar to how Prometheus behaves with non-aggregated queries.
+ When used with a `FACET` clause, `dimensions()` produces a unique timeseries for all facets available on the event type, similar to how Prometheus behaves with non-aggregated queries.
latestrate(attribute, time interval)}
>
- Use the `latestrate( )` function to return the rate of change of a value based on the last 2 data points. It takes the attribute in question as the first argument and the unit of time for the resulting rate as the second argument. The function returns a result in units of `change in attribute/time interval`.
+ Use the `latestrate()` function to return the rate of change of a value based on the last 2 data points. It takes the attribute in question as the first argument and the unit of time for the resulting rate as the second argument. The function returns a result in units of `change in attribute/time interval`.
This function can be useful to provide the most recent rate of change for an attribute in order to see leading-edge trends.
@@ -1550,7 +1550,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-max"
title={max(attribute)}
>
- Use the `max( )` function to return the maximum recorded value of a numeric attribute over the time range specified. It takes a single attribute name as an argument. If a value of the attribute is not numeric, it will be ignored when aggregating. If data matching the query's conditions is not found, or there are no numeric values returned by the query, it will return a value of null.
+ Use the `max()` function to return the maximum recorded value of a numeric attribute over the time range specified. It takes a single attribute name as an argument. If a value of the attribute is not numeric, it will be ignored when aggregating. If data matching the query's conditions is not found, or there are no numeric values returned by the query, it will return a value of null.
median(attribute)}
>
- Use the `median( )` function to return an attribute's median, or 50th percentile. For more information about percentile queries, see [percentile()](#func-percentile).
+ Use the `median()` function to return an attribute's median, or 50th percentile. For more information about percentile queries, see [percentile()](#func-percentile).
- The `median( )` query is only available when using the [query builder](/docs/chart-builder/use-chart-builder/get-started/introduction-chart-builder).
+ The `median()` query is only available when using the [query builder](/docs/chart-builder/use-chart-builder/get-started/introduction-chart-builder).
@@ -1580,7 +1580,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-min"
title={min(attribute)}
>
- Use the `min( )` function to return the minimum recorded value of a numeric attribute over the time range specified. It takes a single attribute name as an argument. If a value of the attribute is not numeric, it will be ignored when aggregating. If data matching the query's conditions is not found, or there are no numeric values returned by the query, it will return a value of null.
+ Use the `min()` function to return the minimum recorded value of a numeric attribute over the time range specified. It takes a single attribute name as an argument. If a value of the attribute is not numeric, it will be ignored when aggregating. If data matching the query's conditions is not found, or there are no numeric values returned by the query, it will return a value of null.
minuteOf(attribute)}
>
- Use the minuteOf() function to extract only the minute portion (that is, seconds 0 to 59) of an attribute holding a valid timestamp value.
+ Use the `minuteOf()` function to extract only the minute portion (that is, seconds 0 to 59) of an attribute holding a valid timestamp value.
mod(attribute, divisor)}
>
- Use the `mod( )` function to return the floor modulus after dividing the value of the provided numeric attribute (the first argument, or dividend) by a numeric value (the second argument, or divisor). This modulo operation can be used within a WHERE clause condition to filter to an arbitrary subset of results or within a FACET clause as a way to subdivide the result set.
+ Use the `mod()` function to return the floor modulus after dividing the value of the provided numeric attribute (the first argument, or dividend) by a numeric value (the second argument, or divisor). This modulo operation can be used within a WHERE clause condition to filter to an arbitrary subset of results or within a FACET clause as a way to subdivide the result set.
mod() within a WHERE clause condition>}>
@@ -1620,7 +1620,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-percentage"
title={percentage(function(attribute), WHERE condition)}
>
- Use the `percentage( )` function to return the percentage of a target data set that matches some condition.
+ Use the `percentage()` function to return the percentage of a target data set that matches some condition.
The first argument requires an [aggregator function](#functions) against the desired attribute. Use exactly two arguments (arguments after the first two will be ignored). If the attribute is not numeric, this function returns a value of 100%.
@@ -1634,7 +1634,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-percentile"
title={percentile(attribute [, percentile [, ...]])}
>
- Use the `percentile( )` function to return an attribute's approximate value at a given percentile. It requires an attribute and can take any number of arguments representing percentile points. The `percentile()` function enables percentiles to displays with up to three digits after the decimal point, providing greater precision. Percentile thresholds may be specified as decimal values, but be aware that for most data sets, percentiles closer than 0.1 from each other will not be resolved.
+ Use the `percentile()` function to return an attribute's approximate value at a given percentile. It requires an attribute and can take any number of arguments representing percentile points. The `percentile()` function enables percentiles to displays with up to three digits after the decimal point, providing greater precision. Percentile thresholds may be specified as decimal values, but be aware that for most data sets, percentiles closer than 0.1 from each other will not be resolved.
rate(function(attribute) [,time interval])}
>
- Use the `rate( )` function to visualize the frequency or rate of a given query per time interval. For example, you might want to know the number of pageviews per minute over an hour-long period or the count of unique sessions on your site per hour over a day-long period.
+ Use the `rate()` function to visualize the frequency or rate of a given query per time interval. For example, you might want to know the number of pageviews per minute over an hour-long period or the count of unique sessions on your site per hour over a day-long period.
* Use [`TIMESERIES`](#sel-timeseries) to generate a line chart with rates mapped over time.
* Omit [`TIMESERIES`](#sel-timeseries) to generate a billboard showing a single rate value averaged over time.
@@ -1707,9 +1707,9 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="round"
title={round(attribute)}
>
- Use the `round( )` function to return the rounded value of an attribute.
+ Use the `round()` function to return the rounded value of an attribute.
- Optionally `round( )` can take a second argument, `to_nearest`, to round the first argument to the closest multiple of the second one. `to_nearest` can be fractional.
+ Optionally `round()` can take a second argument, `to_nearest`, to round the first argument to the closest multiple of the second one. `to_nearest` can be fractional.
```
SELECT round(n [, to_nearest])
@@ -1721,7 +1721,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="stddev"
title={stddev(attribute)}
>
- Use the `stddev( )` function to return one [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation) for a numeric attribute over the time range specified. It takes a single argument. If the attribute is not numeric, it will return a value of zero.
+ Use the `stddev()` function to return one [standard deviation](https://en.wikipedia.org/wiki/Standard_deviation) for a numeric attribute over the time range specified. It takes a single argument. If the attribute is not numeric, it will return a value of zero.
stdvar(attribute)}
>
- Use the `stdvar( )` function to return the [standard variance](https://en.wikipedia.org/wiki/Variance) for a numeric attribute over the time range specified.
+ Use the `stdvar()` function to return the [standard variance](https://en.wikipedia.org/wiki/Variance) for a numeric attribute over the time range specified.
It takes a single argument. If the attribute is not numeric, it will return a value of zero.
@@ -1739,7 +1739,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-sum"
title={sum(attribute)}
>
- Use the `sum( )` function to return the sum recorded values of a numeric attribute over the time range specified.
+ Use the `sum()` function to return the sum recorded values of a numeric attribute over the time range specified.
It takes a single argument. Arguments after the first will be ignored. If the attribute is not numeric, it will return a value of zero.
@@ -1749,7 +1749,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-uniqueCount"
title={uniqueCount(attribute)}
>
- Use the `uniqueCount( )` function to return the number of unique values recorded for an attribute over the time range specified.
+ Use the `uniqueCount()` function to return the number of unique values recorded for an attribute over the time range specified.
To optimize query performance, this function returns approximate results for queries that inspect more than 256 unique values.
@@ -1761,11 +1761,11 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
id="func-uniques"
title={<>uniques(attribute [,limit])>}
>
- Use the `uniques( )` function to return a list of unique values recorded for an attribute over the time range specified. When used along with the `facet` clause, a list of unique attribute values will be returned per each facet value.
+ Use the `uniques()` function to return a list of unique values recorded for an attribute over the time range specified. When used along with the `facet` clause, a list of unique attribute values will be returned per each facet value.
- The `limit` parameter is optional. When it is not provided, the default limit of 1,000 unique attribute values per facet is applied. You may specify a different `limit` value, up to a maximum of 10,000. The `uniques( )` function will return the first set of unique attribute values discovered, until the limit is reached. Therefore, if you have 5,000 unique attribute values in your data set, and the limit is set to 1,000, the operator will return the first 1,000 unique values that it discovers, regardless of their frequency.
+ The `limit` parameter is optional. When it is not provided, the default limit of 1,000 unique attribute values per facet is applied. You may specify a different `limit` value, up to a maximum of 10,000. The `uniques()` function will return the first set of unique attribute values discovered, until the limit is reached. Therefore, if you have 5,000 unique attribute values in your data set, and the limit is set to 1,000, the operator will return the first 1,000 unique values that it discovers, regardless of their frequency.
- The maximum number of values that can be returned in a query result is the product of the `uniques( )` limit times the `facet` limit. In the following query, the theoretical maximum number of values that can be returned is 5 million (5,000 x 1,000).
+ The maximum number of values that can be returned in a query result is the product of the `uniques()` limit times the `facet` limit. In the following query, the theoretical maximum number of values that can be returned is 5 million (5,000 x 1,000).
Depending on the data set being queried, and the complexity of the query, memory protection limits may prevent a very large query from being executed.
@@ -1812,7 +1812,7 @@ SELECT histogram(duration, 10, 20) FROM PageView SINCE 1 week ago
capture() within a SELECT clause condition>}>
- The following will select the domain name of the website, removing https:// and any paths following the .com
+ The following will select the domain name of the website, removing `https://` and any paths following the `.com`
```
SELECT capture(pageUrl, r'https://(?P.*.com)/.+') FROM PageView SINCE 1 day ago
@@ -1903,7 +1903,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
className="freq-link"
title={earliest(attribute)}
>
- Use the `earliest( )` function to return the earliest value for an attribute over the specified time range.
+ Use the `earliest()` function to return the earliest value for an attribute over the specified time range.
It takes a single argument. Arguments after the first will be ignored.
@@ -1978,7 +1978,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
/>
- Use the `filter( )` function to limit the results for one of the aggregator functions in your SELECT statement.
+ Use the `filter()` function to limit the results for one of the aggregator functions in your SELECT statement.
@@ -2085,7 +2085,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
id="func-histogram"
title={histogram(attribute, ceiling [,number of buckets])}
>
- Use the `histogram( )` function to generate histograms. It takes three arguments:
+ Use the `histogram()` function to generate histograms. It takes three arguments:
* Attribute name
* Maximum value of the sample range
@@ -2107,7 +2107,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
id="histogram-prometheus"
title="Prometheus histogram buckets"
>
- `histogram( )` accepts Prometheus histogram buckets:
+ `histogram()` accepts Prometheus histogram buckets:
```
SELECT histogram(duration_bucket, 10, 20) FROM Metric SINCE 1 week ago
@@ -2118,7 +2118,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
id="distribution-metric"
title="New Relic distribution metric"
>
- `histogram( )` accepts [Distribution metric](/docs/data-ingest-apis/get-data-new-relic/metric-api/events-metrics-service-create-metrics#limits-rules) as an input:
+ `histogram()` accepts [Distribution metric](/docs/data-ingest-apis/get-data-new-relic/metric-api/events-metrics-service-create-metrics#limits-rules) as an input:
```
SELECT histogram(myDistributionMetric, 10, 20) FROM Metric SINCE 1 week ago
@@ -2129,7 +2129,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
id="histogram-facet-heatmap"
title="Histogram with a FACET clause"
>
- Use `histogram( )` with a FACET clause to generate a heatmap chart:
+ Use `histogram()` with a FACET clause to generate a heatmap chart:
```
SELECT histogram(duration) FROM PageView FACET appName SINCE 1 week ago
@@ -2161,7 +2161,7 @@ Use the `accountId()` function to return the [account ID](/docs/accounts/account
id="latest"
title={latest(attribute)}
>
- Use the `latest( )` function to return the most recent value for an attribute over a specified time range.
+ Use the `latest()` function to return the most recent value for an attribute over a specified time range.
It takes a single argument. Arguments after the first will be ignored.
diff --git a/src/content/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-8-10-0.mdx b/src/content/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-8-10-0.mdx
new file mode 100644
index 00000000000..5fe19b43206
--- /dev/null
+++ b/src/content/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-8-10-0.mdx
@@ -0,0 +1,24 @@
+---
+subject: Node.js agent
+releaseDate: '2022-04-18'
+version: 8.10.0
+downloadLink: 'https://www.npmjs.com/package/newrelic'
+---
+
+## Notes
+
+* Added instrumentation for `mysql2/promise`.
+ * This previously only existed in our standalone `@newrelic/mysql`, but now gives feature partiy between the two.
+
+* Removed unused native CPU metric sampler. This logic was no longer getting touched when running Node.js versions higher than 6.1.0.
+
+* Fixed promise interceptor from re-throwing errors.
+
+* Added transaction naming documentation ported from a discussion forum post: https://discuss.newrelic.com/t/relic-solution-the-philosophy-of-naming-your-node-agent-transactions/.
+
+* Added `promises.tap.js` to mysql2 versioned tests.
+
+* Updated @newrelic/test-utilities to latest.
+ * Removed unused test file in restify versioned tests.
+ * Added `--strict` flag to versioned test runner to properly fail CI runs when test files are not included.
+
diff --git a/src/content/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-8-11-0.mdx b/src/content/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-8-11-0.mdx
new file mode 100644
index 00000000000..932e5c49096
--- /dev/null
+++ b/src/content/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-8-11-0.mdx
@@ -0,0 +1,52 @@
+---
+subject: Node.js agent
+releaseDate: '2022-05-11'
+version: 8.11.0
+downloadLink: 'https://www.npmjs.com/package/newrelic'
+---
+
+## Notes
+
+* Added application logging for Winston in the Node.js agent
+
+ * Ability to forward logs, send log metrics, and perform local log decoration
+
+ * Added application log aggregator to collect logs with adaptive sampling and appropriate max samples stored.
+
+ * Added `application_logging` configuration and env vars with appropriate defaults.
+
+ * Added `application_logging.enabled` configuration value, defaulting to true.
+
+ * Set `application_logging.forwarding.enabled` to false when High Security Mode (HSM) is set.
+
+ * Enabled log forwarding by default in the example config.
+
+ * Added sent, seen, and dropped metrics that collected on every harvest cycle around log lines.
+
+
+ * Added supportability metrics for some popular logging frameworks.
+
+ * Added supportability metrics to record if the logging features are enabled.
+
+ * Added a storage mechanism to transactions to keep logs until transaction ends.
+
+
+* Removed distributed tracing setting from example config.
+
+
+* Fixed a typo in `lib/instrumentation/core/child_process.js`.
+
+ Thanks to Eito Katagiri (@eitoball) for the contribution.
+
+
+* Support automatic instrumentation of Redis v4.
+
+
+* Bumped [moment](https://github.com/moment/moment) from v2.29.1 to v2.29.2.
+
+
+* Bumped `tap` to v16.x.
+
+
+* Updated `ansi-regex` to resolve a dev dependency audit warning.
+
diff --git a/src/content/docs/release-notes/diagnostics-release-notes/diagnostics-cli-release-notes/diagnostics-cli-210.mdx b/src/content/docs/release-notes/diagnostics-release-notes/diagnostics-cli-release-notes/diagnostics-cli-210.mdx
new file mode 100644
index 00000000000..9fc6ad4eec4
--- /dev/null
+++ b/src/content/docs/release-notes/diagnostics-release-notes/diagnostics-cli-release-notes/diagnostics-cli-210.mdx
@@ -0,0 +1,17 @@
+---
+subject: Diagnostics CLI (nrdiag)
+releaseDate: '2022-05-10'
+version: 2.1.0
+downloadLink: 'https://download.newrelic.com/nrdiag/nrdiag_2.1.0.zip'
+redirects:
+ - /docs/release-notes/platform-release-notes/diagnostics-release-notes/diagnostics-cli-210
+---
+
+## Changes
+
+**Attachments**
+
+* Deprecated command line flag `-attachment-key` for automatic upload to a support ticket. Please use the `-attach` flag to upload to your New Relic account instead.
+Data uploaded with `-attach` can be viewed here: https://one.newrelic.com/diagnostics-cli-output
+
+
diff --git a/src/content/docs/release-notes/org-user-mgmt-release-notes/org-users-22-05-11.mdx b/src/content/docs/release-notes/org-user-mgmt-release-notes/org-users-22-05-11.mdx
new file mode 100644
index 00000000000..0757b34a07d
--- /dev/null
+++ b/src/content/docs/release-notes/org-user-mgmt-release-notes/org-users-22-05-11.mdx
@@ -0,0 +1,7 @@
+---
+subject: Organization and user management
+releaseDate: '2022-05-11'
+version: '220511'
+---
+
+We released NerdGraph capabilities for managing user groups and access grants. For more details, see [Manage user access with NerdGraph](/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt).
diff --git a/src/content/docs/style-guide/images/embed-images.mdx b/src/content/docs/style-guide/images/embed-images.mdx
index 9a80a538d2f..50c35b65ce9 100644
--- a/src/content/docs/style-guide/images/embed-images.mdx
+++ b/src/content/docs/style-guide/images/embed-images.mdx
@@ -69,7 +69,7 @@ To add or edit an image:
title: 'Example MDX file'
---
- import syntheticsUiOverview from 'images/synthetics-ui-overview.png';
+ import syntheticsUiOverview from 'images/synthetics-ui-overview.png'
@@ -148,7 +148,7 @@ To use an inline image:
* Add any optional height/width in the `style` property.
```
-import exampleImage from 'images/example.png';
+import exampleImage from 'images/example.png'
The UI includes a multiple app names indicator .
```
@@ -160,7 +160,7 @@ If the inline image is being used as an icon, always describe it first. When you
title: Abbreviated example of a file
---
-import exampleImage from 'images/example.png';
+import exampleImage from 'images/example.png'
Select your app's settings icon.
```
diff --git a/src/content/docs/synthetics/synthetic-monitoring/private-locations/monitor-private-locations.mdx b/src/content/docs/synthetics/synthetic-monitoring/private-locations/monitor-private-locations.mdx
index 9c38826fdac..6866577b2b6 100644
--- a/src/content/docs/synthetics/synthetic-monitoring/private-locations/monitor-private-locations.mdx
+++ b/src/content/docs/synthetics/synthetic-monitoring/private-locations/monitor-private-locations.mdx
@@ -45,19 +45,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"pages": [
{
"name": "SyntheticsPrivateLocationStatus",
- "description": "Details on the private location queue.",
+ "description": "Private location queues.",
"widgets": [
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "pending checks by location",
"layout": {
"column": 1,
"row": 1,
- "height": 5,
- "width": 3
+ "width": 3,
+ "height": 5
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.bar"
},
- "title": "pending checks by location",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -68,20 +69,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"query": "FROM SyntheticsPrivateLocationStatus SELECT latest(checksPending) FACET name"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "private location queue",
"layout": {
"column": 4,
"row": 1,
- "height": 4,
- "width": 9
+ "width": 9,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "private location queue",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -98,20 +99,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "rate of queue growth",
"layout": {
"column": 4,
"row": 5,
- "height": 4,
- "width": 9
+ "width": 9,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "rate of queue growth",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -128,20 +129,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.billboard"
- },
+ "title": "Checks Pending",
"layout": {
"column": 1,
"row": 6,
- "height": 3,
- "width": 3
+ "width": 3,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.billboard"
},
- "title": "Checks Pending",
"rawConfiguration": {
"dataFormatters": [],
"nrqlQueries": [
@@ -160,20 +161,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"value": 5
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "audit events for private locations",
"layout": {
"column": 1,
"row": 9,
- "height": 4,
- "width": 12
+ "width": 12,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "audit events for private locations",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -185,26 +186,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"query": "FROM NrAuditEvent SELECT * WHERE targetType = 'PRIVATE_LOCATION' SINCE 2 days ago LIMIT MAX"
}
]
- },
- "linkedEntityGuids": null
+ }
}
]
},
{
"name": "SyntheticsPrivateMinion",
- "description": null,
+ "description": "Minion health.",
"widgets": [
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "private locations",
"layout": {
"column": 1,
"row": 1,
- "height": 3,
- "width": 3
+ "width": 3,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "private locations",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -213,23 +214,23 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT uniqueCount(minionId) - 1 AS 'restarts',latest(timestamp) WHERE minionLocation NOT LIKE 'AWS_%' FACET minionLocation"
+ "query": "FROM SyntheticsPrivateMinion SELECT uniqueCount(minionId) - 1 AS 'restarts',latest(timestamp) FACET minionLocation"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "minion details",
"layout": {
"column": 4,
"row": 1,
- "height": 3,
- "width": 9
+ "width": 9,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "minion details",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -238,23 +239,23 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT latest(minionId),latest(timestamp) AS 'last seen',latest(minionStartTimestamp) AS 'started',uniqueCount(minionId) - 1 AS 'restarts',latest(minionIpv4),latest(minionJobsQueued),latest(minionJobsFinished),100*latest(minionJobsFailed)/latest(minionJobsQueued) AS 'job failure rate',latest(minionJobsRunning),latest(minionJobsTimedout),latest(minionJobsSkipped),latest(minionJobsInternalEngineError),latest(minionWorkers),latest(minionProcessors),latest(minionPhysicalMemoryUsedBytes/(1024*1024*1024)) AS 'used memory (GiB)',latest(minionPhysicalMemoryTotalBytes/(1024*1024*1024)) AS 'total memory (GiB)',latest(minionPhysicalMemoryTotalBytes/(1024*1024*1024))/latest(minionWorkers) AS 'memory (GiB) per heavy worker' WHERE minionLocation NOT LIKE 'AWS_%' FACET minionBuildNumber,minionLocation,minionOsVersion,minionContainerSystemVersion,minionHostname LIMIT 100 SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT latest(minionId),latest(timestamp) AS 'last seen',latest(minionStartTimestamp) AS 'started',uniqueCount(minionId) - 1 AS 'restarts',latest(minionIpv4),latest(minionJobsQueued),latest(minionJobsFinished),100*latest(minionJobsFailed)/latest(minionJobsQueued) AS 'job failure rate',latest(minionJobsRunning),latest(minionJobsTimedout),latest(minionJobsSkipped),latest(minionJobsInternalEngineError),latest(minionWorkers),latest(minionProcessors),latest(minionPhysicalMemoryUsedBytes/(1024*1024*1024)) AS 'used memory (GiB)',latest(minionPhysicalMemoryTotalBytes/(1024*1024*1024)) AS 'total memory (GiB)',latest(minionPhysicalMemoryTotalBytes/(1024*1024*1024))/latest(minionWorkers) AS 'memory (GiB) per heavy worker' FACET minionBuildNumber,minionLocation,minionOsVersion,minionContainerSystemVersion,minionHostname LIMIT 100 SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.area"
- },
+ "title": "minion instances over time",
"layout": {
"column": 1,
"row": 4,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.area"
},
- "title": "minion instances over time",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -265,26 +266,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT uniqueCount(minionId) AS 'minions' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT uniqueCount(minionId) AS 'minions' TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "CPU utilization (%)",
"layout": {
"column": 3,
"row": 4,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "CPU utilization (%)",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -295,26 +296,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT average(minionProcessorsUsagePercentage) AS 'avg',max(minionProcessorsUsagePercentage) AS 'max' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT average(minionProcessorsUsagePercentage) AS 'avg',max(minionProcessorsUsagePercentage) AS 'max' TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "memory utilization (%)",
"layout": {
"column": 7,
"row": 4,
- "height": 3,
- "width": 6
+ "width": 6,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "memory utilization (%)",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -325,26 +326,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT average(minionPhysicalMemoryUsedPercentage) AS 'average',max(minionPhysicalMemoryUsedPercentage) AS 'max' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT average(minionPhysicalMemoryUsedPercentage) AS 'average',max(minionPhysicalMemoryUsedPercentage) AS 'max' TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "swap (GiB)",
"layout": {
"column": 1,
"row": 7,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "swap (GiB)",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -355,26 +356,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT average(minionSwapMemoryUsedBytes) AS 'avg',max(minionSwapMemoryUsedBytes) AS 'max' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT average(minionSwapMemoryUsedBytes) AS 'avg',max(minionSwapMemoryUsedBytes) AS 'max' TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.area"
- },
+ "title": "used vs free memory (GiB)",
"layout": {
"column": 5,
"row": 7,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.area"
},
- "title": "used vs free memory (GiB)",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -385,26 +386,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT max(minionPhysicalMemoryUsedBytes) / (1024*1024*1024) AS 'used',(max(minionPhysicalMemoryTotalBytes)-max(minionPhysicalMemoryUsedBytes)) / (1024*1024*1024) AS 'free' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT max(minionPhysicalMemoryUsedBytes) / (1024*1024*1024) AS 'used',(max(minionPhysicalMemoryTotalBytes)-max(minionPhysicalMemoryUsedBytes)) / (1024*1024*1024) AS 'free' TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "count of Internal Engine Errors (IEE) vs failed jobs",
"layout": {
"column": 9,
"row": 7,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "count of Internal Engine Errors (IEE) vs failed jobs",
"rawConfiguration": {
"legend": {
"enabled": true
@@ -412,26 +413,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT max(minionJobsInternalEngineError) AS 'IEE',max(minionJobsFailed) AS 'failed jobs' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT max(minionJobsInternalEngineError) AS 'IEE',max(minionJobsFailed) AS 'failed jobs' TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": false
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "jobs running",
"layout": {
"column": 1,
"row": 10,
- "height": 6,
- "width": 4
+ "width": 4,
+ "height": 6
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "jobs running",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -448,20 +449,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "jobs finished",
"layout": {
"column": 5,
"row": 10,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "jobs finished",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -478,20 +479,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.stacked-bar"
- },
+ "title": "job failure rates",
"layout": {
"column": 9,
"row": 10,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.stacked-bar"
},
- "title": "job failure rates",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -502,23 +503,23 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT (max(minionJobsFailed/minionJobsReceived))*100 AS 'failed rate',(max(minionJobsInternalEngineError/minionJobsReceived))*100 AS 'IEE rate' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT (max(minionJobsFailed/minionJobsReceived))*100 AS 'failed rate',(max(minionJobsInternalEngineError/minionJobsReceived))*100 AS 'IEE rate' TIMESERIES AUTO SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "skipped jobs",
"layout": {
"column": 5,
"row": 13,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "skipped jobs",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -529,26 +530,53 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT max(minionJobsSkipped) - min(minionJobsSkipped) AS 'skipped jobs' WHERE minionLocation NOT LIKE 'AWS_%' FACET minionHostname TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT max(minionJobsSkipped) - min(minionJobsSkipped) AS 'skipped jobs' FACET minionHostname TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": false
}
- },
- "linkedEntityGuids": null
+ }
},
{
+ "title": "IEE as a percentage of failed jobs",
+ "layout": {
+ "column": 9,
+ "row": 13,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.stacked-bar"
},
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticsPrivateMinion SELECT average(minionJobsInternalEngineError/minionJobsFailed)*100 AS 'IEE',(average((minionJobsFailed-minionJobsInternalEngineError)/minionJobsFailed))*100 AS 'failed jobs' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ]
+ }
+ },
+ {
+ "title": "job timeout rates",
"layout": {
"column": 9,
- "row": 13,
- "height": 3,
- "width": 4
+ "row": 16,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.stacked-bar"
},
- "title": "IEE as a percentage of failed jobs",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -559,11 +587,10 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT average(minionJobsInternalEngineError/minionJobsFailed)*100 AS 'IEE',(average((minionJobsFailed-minionJobsInternalEngineError)/minionJobsFailed))*100 AS 'failed jobs' WHERE minionLocation NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT 100*latest(minionJobsTimedout)/latest(minionJobsReceived) AS 'job timeout rate' TIMESERIES AUTO SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
}
]
},
@@ -572,16 +599,17 @@ The following Private Minion dashboard example JSON can be imported to your acco
"description": null,
"widgets": [
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "minion IDs by location",
"layout": {
"column": 1,
"row": 1,
- "height": 3,
- "width": 4
+ "width": 6,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "minion IDs by location",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -593,20 +621,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"query": "FROM SyntheticCheck SELECT latest(minion) WHERE location NOT LIKE 'AWS_%' FACET location,minionId LIMIT MAX"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "minion count",
"layout": {
- "column": 5,
+ "column": 7,
"row": 1,
- "height": 3,
- "width": 4
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "minion count",
"rawConfiguration": {
"legend": {
"enabled": true
@@ -620,20 +648,20 @@ The following Private Minion dashboard example JSON can be imported to your acco
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "Internal Engine Errors by minion",
"layout": {
"column": 9,
"row": 1,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "IEE by minion",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -642,48 +670,25 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT count(error) AS 'count',latest(timestamp) WHERE location NOT LIKE 'AWS_%' AND error LIKE '%code:%' FACET error,minion LIMIT 100 SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT count(error) AS 'count',latest(timestamp) WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode IN ('PRIVATE_MINION_CONTAINER_DOCKER','PRIVATE_MINION_POD_KUBERNETES') AND error LIKE 'INTERNAL ENGINE ERROR - code: %' FACET error,minion LIMIT 100 SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "avg monitor frequency by type (m)",
"layout": {
"column": 1,
"row": 4,
- "height": 3,
- "width": 2
- },
- "title": "monitors by account",
- "rawConfiguration": {
- "facet": {
- "showOtherSeries": false
- },
- "nrqlQueries": [
- {
- "accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' SINCE 2 days ago"
- }
- ]
+ "width": 4,
+ "height": 3
},
- "linkedEntityGuids": null
- },
- {
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.line"
},
- "layout": {
- "column": 3,
- "row": 4,
- "height": 3,
- "width": 2
- },
- "title": "monitors by account",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
@@ -693,51 +698,57 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg frequency (m)' WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "avg monitor frequency by location (m)",
"layout": {
"column": 5,
"row": 4,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "avg monitor frequency by type (m)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
"showOtherSeries": false
},
+ "legend": {
+ "enabled": true
+ },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg frequency (m)' WHERE location NOT LIKE 'AWS_%' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg frequency (m)' WHERE location NOT LIKE 'AWS_%' FACET location TIMESERIES AUTO SINCE 2 days ago"
}
- ]
- },
- "linkedEntityGuids": null
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "avg monitor frequency by status (m)",
"layout": {
"column": 7,
"row": 4,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "avg monitor frequency by type (m)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -749,80 +760,50 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg frequency (m)' WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg frequency (m)' WHERE location NOT LIKE 'AWS_%' FACET result TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "Internal Engine Errors",
"layout": {
"column": 9,
"row": 4,
- "height": 3,
- "width": 2
- },
- "title": "Internal Engine Errors",
- "rawConfiguration": {
- "facet": {
- "showOtherSeries": false
- },
- "nrqlQueries": [
- {
- "accountId": 1,
- "query": "FROM SyntheticCheck SELECT count(error) AS 'IEE count' WHERE error LIKE '%code:%' AND location NOT LIKE 'AWS_%' FACET error SINCE 2 days ago"
- }
- ]
+ "width": 4,
+ "height": 3
},
- "linkedEntityGuids": null
- },
- {
+ "linkedEntityGuids": null,
"visualization": {
- "id": "viz.line"
- },
- "layout": {
- "column": 11,
- "row": 4,
- "height": 3,
- "width": 2
+ "id": "viz.pie"
},
- "title": "Internal Engine Errors",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
},
- "legend": {
- "enabled": true
- },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT count(error) AS 'IEE count' WHERE error LIKE '%code:%' AND location NOT LIKE 'AWS_%' FACET error TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT count(*) AS 'comparing IEE' WHERE error LIKE 'INTERNAL ENGINE ERROR - code: %' AND location NOT LIKE 'AWS_%' AND minionDeploymentMode IN ('PRIVATE_MINION_CONTAINER_DOCKER','PRIVATE_MINION_POD_KUBERNETES') FACET error SINCE 2 days ago"
}
- ],
- "yAxisLeft": {
- "zero": true
- }
- },
- "linkedEntityGuids": null
+ ]
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "monitors by location",
"layout": {
"column": 1,
"row": 7,
- "height": 3,
- "width": 2
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "monitors by status",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -830,23 +811,23 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET result SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET location SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "monitors by location",
"layout": {
- "column": 3,
+ "column": 5,
"row": 7,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "monitors by status",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -857,53 +838,58 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET result TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET location TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "job duration by location (s)",
"layout": {
- "column": 5,
+ "column": 7,
"row": 7,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "job duration by status (s)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
"showOtherSeries": false
},
+ "legend": {
+ "enabled": true
+ },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET result SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET location TIMESERIES AUTO SINCE 2 days ago"
}
- ]
- },
- "linkedEntityGuids": null
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "Internal Engine Errors",
"layout": {
- "column": 7,
+ "column": 9,
"row": 7,
- "height": 3,
- "width": 2
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "job duration by status (s)",
"rawConfiguration": {
- "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
@@ -913,76 +899,82 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET result TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT count(*) AS 'IEE count' WHERE error LIKE 'INTERNAL ENGINE ERROR - code: %' AND location NOT LIKE 'AWS_%' AND minionDeploymentMode IN ('PRIVATE_MINION_CONTAINER_DOCKER','PRIVATE_MINION_POD_KUBERNETES') FACET error TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "monitors by runtime type version",
"layout": {
- "column": 9,
- "row": 7,
- "height": 12,
- "width": 4
+ "column": 1,
+ "row": 10,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "monitor details",
"rawConfiguration": {
- "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(id) AS 'results',uniqueCount(location)/rate(uniqueCount(id), 1 minute) AS 'avg job frequency (m)',average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg duration (s)' WHERE location NOT LIKE 'AWS_%' FACET monitorName,monitorId,type LIMIT 20"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET runtimeTypeVersion SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "monitors by runtime type version",
"layout": {
- "column": 1,
+ "column": 5,
"row": 10,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "monitors by type",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
},
+ "legend": {
+ "enabled": true
+ },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET runtimeTypeVersion TIMESERIES AUTO SINCE 2 days ago"
}
- ]
- },
- "linkedEntityGuids": null
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "job duration by runtime type version (s)",
"layout": {
- "column": 3,
+ "column": 7,
"row": 10,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "monitors by type",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
@@ -992,26 +984,26 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET runtimeTypeVersion TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "PLs impacted by IEE",
"layout": {
- "column": 5,
+ "column": 9,
"row": 10,
- "height": 3,
- "width": 2
+ "width": 1,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "job duration by type (s)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1020,133 +1012,127 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(location) AS 'IEE vs private locations' WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode IN ('PRIVATE_MINION_CONTAINER_DOCKER','PRIVATE_MINION_POD_KUBERNETES') FACET cases(WHERE error LIKE 'INTERNAL ENGINE ERROR - code: %' AS 'IEE',WHERE error NOT LIKE 'INTERNAL ENGINE ERROR - code: %' AS 'not IEE') SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "Monitors impacted by IEE",
"layout": {
- "column": 7,
+ "column": 10,
"row": 10,
- "height": 3,
- "width": 2
+ "width": 1,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "job duration by type (s)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
"showOtherSeries": false
},
- "legend": {
- "enabled": true
- },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'IEE vs monitors' WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode IN ('PRIVATE_MINION_CONTAINER_DOCKER','PRIVATE_MINION_POD_KUBERNETES') FACET cases(WHERE error LIKE 'INTERNAL ENGINE ERROR - code: %' AS 'IEE',WHERE error NOT LIKE 'INTERNAL ENGINE ERROR - code: %' AS 'not IEE') SINCE 2 days ago"
}
- ],
- "yAxisLeft": {
- "zero": true
- }
- },
- "linkedEntityGuids": null
+ ]
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "Jobs impacted by IEE",
"layout": {
- "column": 1,
- "row": 13,
- "height": 3,
- "width": 2
+ "column": 11,
+ "row": 10,
+ "width": 1,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "successful monitors by type",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT count(*) AS 'IEE vs all jobs' WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode IN ('PRIVATE_MINION_CONTAINER_DOCKER','PRIVATE_MINION_POD_KUBERNETES') FACET cases(WHERE error LIKE 'INTERNAL ENGINE ERROR - code: %' AS 'IEE',WHERE error NOT LIKE 'INTERNAL ENGINE ERROR - code: %' AS 'not IEE') SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "monitors by type",
"layout": {
- "column": 3,
+ "column": 1,
"row": 13,
- "height": 3,
- "width": 2
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "successful monitors by type",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
},
- "legend": {
- "enabled": true
- },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET type SINCE 2 days ago"
}
- ],
- "yAxisLeft": {
- "zero": true
- }
- },
- "linkedEntityGuids": null
+ ]
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "monitors by type",
"layout": {
"column": 5,
"row": 13,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "successful job duration by type (s)",
"rawConfiguration": {
- "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
+ "legend": {
+ "enabled": true
+ },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
}
- ]
- },
- "linkedEntityGuids": null
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "job duration by type (s)",
"layout": {
"column": 7,
"row": 13,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "successful job duration by type (s)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1158,80 +1144,76 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "PLs impacted by code: 31 for Docker CPM",
"layout": {
- "column": 1,
- "row": 16,
- "height": 3,
- "width": 2
+ "column": 9,
+ "row": 14,
+ "width": 1,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "failed monitors by type",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(location) AS 'private locations' WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode = 'PRIVATE_MINION_CONTAINER_DOCKER' FACET cases(WHERE error = 'INTERNAL ENGINE ERROR - code: 31' AS 'impacted by code: 31',WHERE error !='INTERNAL ENGINE ERROR - code: 31' AS 'not impacted by code: 31') SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "PLs impacted by code: 3 for Docker CPM",
"layout": {
- "column": 3,
- "row": 16,
- "height": 3,
- "width": 2
+ "column": 10,
+ "row": 14,
+ "width": 1,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "failed monitors by type",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
- "legend": {
- "enabled": true
- },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(location) AS 'private locations' WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode = 'PRIVATE_MINION_CONTAINER_DOCKER' FACET cases(WHERE error = 'INTERNAL ENGINE ERROR - code: 3' AS 'impacted by code: 3',WHERE error !='INTERNAL ENGINE ERROR - code: 3' AS 'not impacted by code: 3') SINCE 2 days ago"
}
- ],
- "yAxisLeft": {
- "zero": true
- }
- },
- "linkedEntityGuids": null
+ ]
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "PLs impacted by code: 39 for K8s CPM",
"layout": {
- "column": 5,
- "row": 16,
- "height": 3,
- "width": 2
+ "column": 11,
+ "row": 14,
+ "width": 1,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "failed job duration by type (s)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1240,23 +1222,77 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(location) AS 'private locations' WHERE location NOT LIKE 'AWS_%' AND minionDeploymentMode = 'PRIVATE_MINION_POD_KUBERNETES' FACET cases(WHERE error = 'INTERNAL ENGINE ERROR - code: 39' AS 'impacted by code: 39',WHERE error !='INTERNAL ENGINE ERROR - code: 39' AS 'not impacted by code: 39') SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
+ "title": "monitors by status",
+ "layout": {
+ "column": 1,
+ "row": 16,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET result SINCE 2 days ago"
+ }
+ ]
+ }
+ },
+ {
+ "title": "monitors by status",
+ "layout": {
+ "column": 5,
+ "row": 16,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.line"
},
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' FACET result TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "job duration by status (s)",
"layout": {
"column": 7,
"row": 16,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "failed job duration by type (s)",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1268,78 +1304,221 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' FACET result TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
+ "title": "monitor details",
+ "layout": {
+ "column": 9,
+ "row": 18,
+ "width": 4,
+ "height": 7
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.table"
},
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(id) AS 'results',uniqueCount(location)/rate(uniqueCount(id), 1 minute) AS 'avg job frequency (m)',average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg duration (s)' WHERE location NOT LIKE 'AWS_%' FACET monitorId,type,apiVersion LIMIT 50"
+ }
+ ]
+ }
+ },
+ {
+ "title": "successful monitors by type",
"layout": {
"column": 1,
"row": 19,
- "height": 3,
- "width": 4
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "ping monitors by location",
"rawConfiguration": {
- "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'monitors with results',uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg job frequency (m)',average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg duration (s)' WHERE location NOT LIKE 'AWS_%' AND type = 'SIMPLE' FACET location SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
+ "title": "successful monitors by type",
+ "layout": {
+ "column": 5,
+ "row": 19,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.line"
},
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "successful job duration by type (s)",
"layout": {
- "column": 5,
+ "column": 7,
"row": 19,
- "height": 3,
- "width": 2
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "ping duration with monitor count",
"rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
"legend": {
"enabled": true
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)',uniqueCount(monitorId) AS 'monitor count' WHERE type = 'SIMPLE' AND location NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET type TIMESERIES AUTO SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
+ }
+ },
+ {
+ "title": "failed monitors by type",
+ "layout": {
+ "column": 1,
+ "row": 22,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "linkedEntityGuids": null
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type SINCE 2 days ago"
+ }
+ ]
+ }
},
{
+ "title": "failed monitors by type",
+ "layout": {
+ "column": 5,
+ "row": 22,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
- "id": "viz.table"
+ "id": "viz.line"
},
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "failed job duration by type (s)",
"layout": {
"column": 7,
- "row": 19,
- "height": 3,
- "width": 6
+ "row": 22,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)' WHERE location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "ping monitors by location",
+ "layout": {
+ "column": 1,
+ "row": 25,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "top 5 ping errors",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1348,23 +1527,459 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT latest(monitorId) AS 'latest monitor id',latest(type),average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)',count(*),max(timestamp) AS 'last occurred' WHERE type = 'SIMPLE' AND result = 'FAILED' AND location NOT LIKE 'AWS_%' FACET error LIMIT 5 SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'monitors with results',uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg job frequency (m)',average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg duration (s)' WHERE location NOT LIKE 'AWS_%' AND type = 'SIMPLE' FACET location SINCE 2 days ago"
}
]
+ }
+ },
+ {
+ "title": "ping duration with monitor count",
+ "layout": {
+ "column": 5,
+ "row": 25,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration) AS 'avg job duration (ms)',uniqueCount(monitorId) AS 'monitor count' WHERE type = 'SIMPLE' AND location NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "ping timeout vs other error durations",
+ "layout": {
+ "column": 7,
+ "row": 25,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT average((nr.internalQueueDuration+nr.executionDuration)/1e3) WHERE type = 'SIMPLE' AND location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET cases(WHERE error NOT LIKE '%timeout%' AS 'other error duration (s)', WHERE error LIKE '%timeout%' AS 'timeout duration (s)') SINCE 2 days ago TIMESERIES AUTO"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "ping jobs per minute",
+ "layout": {
+ "column": 9,
+ "row": 25,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' AND type = 'SIMPLE' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "ping timeout rate",
+ "layout": {
+ "column": 11,
+ "row": 25,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT percentage(count(*), WHERE error LIKE '%timeout%' OR error LIKE '%timed-out%') WHERE location NOT LIKE 'AWS_%' AND type = 'SIMPLE' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "non-ping monitors by location",
+ "layout": {
+ "column": 1,
+ "row": 28,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
+ },
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'monitors with results',uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg job frequency (m)',average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg duration (s)' WHERE location NOT LIKE 'AWS_%' AND type != 'SIMPLE' FACET location SINCE 2 days ago"
+ }
+ ]
+ }
+ },
+ {
+ "title": "non-ping duration with monitor count",
+ "layout": {
+ "column": 5,
+ "row": 28,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration) AS 'avg job duration (ms)',uniqueCount(monitorId) AS 'monitor count' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "non-ping timeout vs other error durations",
+ "layout": {
+ "column": 7,
+ "row": 28,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT average((nr.internalQueueDuration+nr.executionDuration)/1e3) WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET cases(WHERE error NOT LIKE '%timeout%' AS 'other error duration (s)', WHERE error LIKE '%timeout%' AS 'timeout duration (s)') SINCE 2 days ago TIMESERIES AUTO"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "non-ping jobs per minute",
+ "layout": {
+ "column": 9,
+ "row": 28,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' AND type != 'SIMPLE' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "non-ping timeout rate",
+ "layout": {
+ "column": 11,
+ "row": 28,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT percentage(count(*), WHERE error LIKE '%timeout%' OR error LIKE '%timed-out%') WHERE location NOT LIKE 'AWS_%' AND type != 'SIMPLE' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "top 5 ping errors",
+ "layout": {
+ "column": 1,
+ "row": 31,
+ "width": 6,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
+ },
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT count(*),latest(monitorId) AS 'latest monitor id',latest(type),average((nr.internalQueueDuration+nr.executionDuration)/1e3) AS 'avg job duration (s)',max(timestamp) AS 'last occurred' WHERE type = 'SIMPLE' AND result = 'FAILED' AND location NOT LIKE 'AWS_%' FACET error LIMIT 5 SINCE 2 days ago"
+ }
+ ]
+ }
+ },
+ {
+ "title": "top 5 non-ping errors",
+ "layout": {
+ "column": 7,
+ "row": 31,
+ "width": 6,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
+ },
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT count(*),latest(monitorId) AS 'latest monitor id',latest(type),average((nr.internalQueueDuration+nr.executionDuration)/1e3) AS 'avg job duration (s)',max(timestamp) AS 'last occurred' WHERE type != 'SIMPLE' AND result = 'FAILED' AND location NOT LIKE 'AWS_%' FACET error LIMIT 5 SINCE 2 days ago"
+ }
+ ]
+ }
+ },
+ {
+ "title": "jobs per minute by minion",
+ "layout": {
+ "column": 1,
+ "row": 34,
+ "width": 6,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' FACET minion TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "errors per minute by type",
+ "layout": {
+ "column": 7,
+ "row": 34,
+ "width": 6,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' AND error != '' AND error IS NOT NULL FACET type,result TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "jobs per minute by type",
+ "layout": {
+ "column": 1,
+ "row": 38,
+ "width": 6,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ },
+ {
+ "title": "error counts by class",
+ "layout": {
+ "column": 7,
+ "row": 38,
+ "width": 6,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
+ },
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "legend": {
+ "enabled": true
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT count(*) WHERE location NOT LIKE 'AWS_%' AND result != 'SUCCESS' AND error NOT LIKE 'INTERNAL ENGINE ERROR - code: %' FACET capture(error, r'(?P\\S+)\\s.+') AS 'error class' TIMESERIES AUTO SINCE 2 days ago"
+ }
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "SyntheticRequest",
+ "description": null,
+ "widgets": [
+ {
+ "title": "jobs per minion",
+ "layout": {
+ "column": 1,
+ "row": 1,
+ "width": 5,
+ "height": 3
},
- "linkedEntityGuids": null
- },
- {
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.table"
},
- "layout": {
- "column": 1,
- "row": 22,
- "height": 3,
- "width": 4
- },
- "title": "non-ping monitors by location",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1373,50 +1988,54 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'monitors with results',uniqueCount(monitorId)/rate(uniqueCount(id), 1 minute) AS 'avg job frequency (m)',average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg duration (s)' WHERE location NOT LIKE 'AWS_%' AND type != 'SIMPLE' FACET location SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT uniqueCount(id) AS 'jobs' WHERE location NOT LIKE 'AWS_%' FACET location,minion,minionId"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "top 5 error response codes",
"layout": {
- "column": 5,
- "row": 22,
- "height": 3,
- "width": 2
+ "column": 6,
+ "row": 1,
+ "width": 7,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.stacked-bar"
},
- "title": "non-ping duration with monitor count",
"rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
"legend": {
"enabled": true
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)',uniqueCount(monitorId) AS 'monitor count' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT count(responseCode) AS 'responses' WHERE responseCode NOT IN (200,201,202,203,204,300,301,302,303,304) AND responseCode IS NOT NULL AND location NOT LIKE 'AWS_%' FACET responseCode,responseStatus TIMESERIES AUTO LIMIT 5"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
+ "title": "incomplete jobs",
+ "layout": {
+ "column": 1,
+ "row": 4,
+ "width": 5,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.table"
},
- "layout": {
- "column": 7,
- "row": 22,
- "height": 3,
- "width": 6
- },
- "title": "top 5 non-ping errors",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1425,54 +2044,56 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT latest(monitorId) AS 'latest monitor id',latest(type),average(nr.internalQueueDuration+nr.executionDuration)/1e3 AS 'avg job duration (s)',count(*),max(timestamp) AS 'last occurred' WHERE type != 'SIMPLE' AND result = 'FAILED' AND location NOT LIKE 'AWS_%' FACET error LIMIT 5 SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT percentage(uniqueCount(id),WHERE domComplete IS NULL) AS 'percent incomplete',uniqueCount(id) AS 'jobs' WHERE isNavigationRoot IS true AND location NOT LIKE 'AWS_%' FACET monitorName,monitorId,runtimeTypeVersion LIMIT 20 SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
+ "title": "request rate",
+ "layout": {
+ "column": 6,
+ "row": 4,
+ "width": 3,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.line"
},
- "layout": {
- "column": 1,
- "row": 25,
- "height": 4,
- "width": 6
- },
- "title": "jobs per minute by minion",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"legend": {
- "enabled": true
+ "enabled": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' FACET minion TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT rate(uniqueCount(id), 1 minute) AS 'request rate' WHERE location NOT LIKE 'AWS_%' TIMESERIES AUTO"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "request rate by job",
"layout": {
- "column": 7,
- "row": 25,
- "height": 4,
- "width": 6
+ "column": 9,
+ "row": 4,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.stacked-bar"
},
- "title": "errors per minute by type",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
@@ -1482,93 +2103,76 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' AND error != '' AND error IS NOT NULL FACET type,result TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT rate(uniqueCount(id), 1 minute) AS 'request rate' WHERE location NOT LIKE 'AWS_%' FACET jobId TIMESERIES AUTO"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "percent of incomplete requests",
"layout": {
"column": 1,
- "row": 29,
- "height": 4,
- "width": 6
+ "row": 7,
+ "width": 5,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "jobs per minute by type",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
- "legend": {
- "enabled": true
- },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) WHERE location NOT LIKE 'AWS_%' FACET type TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT percentage(count(*),WHERE domComplete IS NULL) AS 'percent incomplete',count(*) AS 'requests',latest(responseCode),latest(responseStatus) WHERE isNavigationRoot IS true AND location NOT LIKE 'AWS_%' FACET domain SINCE 2 days ago"
}
- ],
- "yAxisLeft": {
- "zero": true
- }
- },
- "linkedEntityGuids": null
+ ]
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "top 5 domains for incomplete jobs",
"layout": {
- "column": 7,
- "row": 29,
- "height": 4,
- "width": 6
+ "column": 6,
+ "row": 7,
+ "width": 3,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "error counts by class",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
"showOtherSeries": false
},
- "legend": {
- "enabled": true
- },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT count(*) WHERE location NOT LIKE 'AWS_%' AND result != 'SUCCESS' AND error NOT LIKE '%case:%' FACET capture(error, r'(?P\\S+)\\s.+') AS 'error class' TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticRequest SELECT count(*) AS 'requests',latest(URL) WHERE domComplete IS NULL AND isNavigationRoot IS true AND location NOT LIKE 'AWS_%' FACET domain LIMIT 5 SINCE 2 days ago"
}
- ],
- "yAxisLeft": {
- "zero": true
- }
- },
- "linkedEntityGuids": null
- }
- ]
- },
- {
- "name": "SyntheticRequest",
- "description": "Details on responses.",
- "widgets": [
+ ]
+ }
+ },
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "complete vs incomplete jobs",
"layout": {
- "column": 1,
- "row": 1,
- "height": 6,
- "width": 5
+ "column": 9,
+ "row": 7,
+ "width": 4,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.pie"
},
- "title": "jobs per minion",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1577,23 +2181,23 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticRequest SELECT uniqueCount(id) AS 'jobs' WHERE location NOT LIKE 'AWS%' FACET location,minion,minionId"
+ "query": "FROM SyntheticRequest SELECT uniqueCount(id) AS 'number of jobs' WHERE isNavigationRoot IS true AND location NOT LIKE 'AWS_%' FACET cases(WHERE domComplete IS NULL AS 'incomplete',WHERE domComplete IS NOT NULL AS 'complete') SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.area"
- },
+ "title": "page load duration for complete vs incomplete jobs",
"layout": {
- "column": 6,
- "row": 1,
- "height": 6,
- "width": 4
+ "column": 1,
+ "row": 10,
+ "width": 3,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "top 5 error response codes",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1605,54 +2209,57 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticRequest SELECT count(responseCode) AS 'responses' WHERE responseCode NOT IN (200,201,202,203,204,300,301,302,303,304) AND responseCode IS NOT NULL AND location NOT LIKE 'AWS%' FACET responseCode,responseStatus TIMESERIES AUTO LIMIT 5"
+ "query": "FROM SyntheticRequest SELECT max(onPageLoad/1e3) WHERE isNavigationRoot IS true AND location NOT LIKE 'AWS_%' FACET cases(WHERE domComplete IS NULL AS 'incomplete',WHERE domComplete IS NOT NULL AS 'complete') SINCE 2 days ago TIMESERIES AUTO"
}
- ]
- },
- "linkedEntityGuids": null
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
},
{
+ "title": "page load duration for complete vs incomplete jobs by monitor",
+ "layout": {
+ "column": 4,
+ "row": 10,
+ "width": 9,
+ "height": 4
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.line"
},
- "layout": {
- "column": 10,
- "row": 1,
- "height": 6,
- "width": 3
- },
- "title": "job rate",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"legend": {
- "enabled": false
+ "enabled": true
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticRequest SELECT rate(uniqueCount(id), 1 minute) AS 'job rate' WHERE location NOT LIKE 'AWS%' TIMESERIES AUTO"
+ "query": "FROM SyntheticRequest SELECT max(onPageLoad/1e3) WHERE isNavigationRoot IS true AND location NOT LIKE 'AWS_%' FACET cases(WHERE domComplete IS NULL AS 'incomplete',WHERE domComplete IS NOT NULL AS 'complete'),monitorName SINCE 2 days ago TIMESERIES MAX LIMIT MAX"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "audit events for monitors",
"layout": {
"column": 1,
- "row": 7,
- "height": 4,
- "width": 12
+ "row": 14,
+ "width": 12,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "audit events for monitors",
"rawConfiguration": {
"dataFormatters": [],
"facet": {
@@ -1664,116 +2271,140 @@ The following Private Minion dashboard example JSON can be imported to your acco
"query": "FROM NrAuditEvent SELECT * WHERE targetType = 'MONITOR' SINCE 2 days ago LIMIT MAX"
}
]
- },
- "linkedEntityGuids": null
+ }
}
]
},
{
"name": "Performance Analysis",
- "description": "Determine if there are enough heavy worker threads.",
+ "description": "Assess how the minion is performing given the current job demand. Should we scale up by adding more heavy workers and a bigger VM, or should we scale out by adding more VMs?",
"widgets": [
{
+ "title": "",
+ "layout": {
+ "column": 1,
+ "row": 1,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
- "id": "viz.bar"
+ "id": "viz.markdown"
},
+ "rawConfiguration": {
+ "text": "See [this Google sheet](https://docs.google.com/spreadsheets/d/1k2Aw11r6-S8pIpXQUINQZ0T5qlxS8iSwSo9t9GKDvzc/edit?usp=sharing) to assist in calculating how many workers will be needed based on the values on this page. This will help you to assess the required size of each host (scaling up) and how many hosts you need (scaling out).\n\nFor more info: \nhttps://discuss.newrelic.com/t/relic-solution-scaling-and-rightsizing-for-the-cpm/123999"
+ }
+ },
+ {
+ "title": "count of heavy worker threads and cpu cores",
"layout": {
- "column": 1,
+ "column": 3,
"row": 1,
- "height": 3,
- "width": 4
+ "width": 6,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.table"
},
- "title": "minions (hosts) by location",
"rawConfiguration": {
+ "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT uniqueCount(minionId) AS 'minions' FACET minionLocation SINCE 5 minutes ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT latest(minionWorkers),latest(minionProcessors) FACET minionId,minionLocation SINCE 5 minutes ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.table"
- },
+ "title": "number of minions (1 per host)",
"layout": {
- "column": 5,
+ "column": 9,
"row": 1,
- "height": 3,
- "width": 6
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.bar"
},
- "title": "count of heavy worker threads and cpu cores",
"rawConfiguration": {
- "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT latest(minionWorkers),latest(minionProcessors) FACET minionHostname,minionLocation SINCE 5 minutes ago"
+ "query": "FROM SyntheticsPrivateMinion SELECT uniqueCount(minionId) AS 'number of minions' FACET minionLocation SINCE 5 minutes ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.markdown"
- },
+ "title": "non-ping monitors",
"layout": {
"column": 11,
"row": 1,
- "height": 3,
- "width": 2
- },
- "title": "",
- "rawConfiguration": {
- "text": "See [this Google sheet](https://docs.google.com/spreadsheets/d/1k2Aw11r6-S8pIpXQUINQZ0T5qlxS8iSwSo9t9GKDvzc/edit?usp=sharing) to assist in calculating how many workers will be needed based on the values on this page. This will help you to assess the required size of each host (scaling up) and how many hosts you need (scaling out).\n\nFor more info: \nhttps://discuss.newrelic.com/t/relic-solution-scaling-and-rightsizing-for-the-cpm/123999"
+ "width": 2,
+ "height": 3
},
- "linkedEntityGuids": null
- },
- {
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.bar"
},
+ "rawConfiguration": {
+ "dataFormatters": [],
+ "facet": {
+ "showOtherSeries": false
+ },
+ "nrqlQueries": [
+ {
+ "accountId": 1,
+ "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'non-ping monitors' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' FACET location SINCE 2 days ago"
+ }
+ ]
+ }
+ },
+ {
+ "title": "non-ping jobs per minute",
"layout": {
"column": 1,
"row": 4,
- "height": 3,
- "width": 4
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.bar"
},
- "title": "non-ping monitors",
"rawConfiguration": {
- "dataFormatters": [],
"facet": {
"showOtherSeries": false
},
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT uniqueCount(monitorId) AS 'non-ping monitors' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS%' FACET location SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) AS 'jobs per minute' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' FACET location SINCE 2 days ago"
}
]
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.line"
- },
+ "title": "non-ping avg success duration",
"layout": {
- "column": 5,
+ "column": 3,
"row": 4,
- "height": 3,
- "width": 6
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "non-ping avg job duration and timeout",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -1784,50 +2415,56 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT average(nr.internalQueueDuration+nr.executionDuration)/1e3 WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS%' AND result = 'FAILED' FACET location,cases(WHERE error NOT LIKE '%timeout%' AS 'job duration (s)', WHERE error LIKE '%timeout%' AS 'job timeout (s)') SINCE 2 days ago TIMESERIES AUTO"
+ "query": "FROM SyntheticCheck SELECT average(nr.nr.nr.internalQueueDuration+nr.nr.nr.executionDuration)/1e3 AS 'avg success duration (s)' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' AND result = 'SUCCESS' FACET location SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
},
{
- "visualization": {
- "id": "viz.bar"
- },
+ "title": "non-ping avg timeout duration",
"layout": {
- "column": 1,
- "row": 7,
- "height": 3,
- "width": 4
+ "column": 5,
+ "row": 4,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
+ "visualization": {
+ "id": "viz.line"
},
- "title": "non-ping jobs per minute",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
},
+ "legend": {
+ "enabled": true
+ },
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticCheck SELECT rate(uniqueCount(id), 1 minute) AS 'job rate' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS%' FACET location SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT average(nr.nr.nr.internalQueueDuration+nr.nr.nr.executionDuration)/1e3 AS 'error duration (s)' WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' AND result = 'FAILED' FACET location,cases(WHERE error NOT LIKE '%timeout%' AS 'other error duration (s), just FYI', WHERE error LIKE '%timeout%' AS 'avg timeout duration (s)') SINCE 2 days ago"
}
- ]
- },
- "linkedEntityGuids": null
+ ],
+ "yAxisLeft": {
+ "zero": true
+ }
+ }
},
{
+ "title": "non-ping job timeout rate",
+ "layout": {
+ "column": 7,
+ "row": 4,
+ "width": 2,
+ "height": 3
+ },
+ "linkedEntityGuids": null,
"visualization": {
"id": "viz.line"
},
- "layout": {
- "column": 5,
- "row": 7,
- "height": 3,
- "width": 6
- },
- "title": "job timeout rate by location",
"rawConfiguration": {
"facet": {
"showOtherSeries": false
@@ -1838,14 +2475,13 @@ The following Private Minion dashboard example JSON can be imported to your acco
"nrqlQueries": [
{
"accountId": 1,
- "query": "FROM SyntheticsPrivateMinion SELECT 100*latest(minionJobsTimedout)/latest(minionJobsReceived) AS 'job timeout rate' FACET minionLocation TIMESERIES AUTO SINCE 2 days ago"
+ "query": "FROM SyntheticCheck SELECT percentage(count(*), WHERE error LIKE '%timeout%' OR error LIKE '%timed-out%') WHERE type != 'SIMPLE' AND location NOT LIKE 'AWS_%' FACET location SINCE 2 days ago"
}
],
"yAxisLeft": {
"zero": true
}
- },
- "linkedEntityGuids": null
+ }
}
]
}
diff --git a/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests-legacy.mdx b/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests-legacy.mdx
new file mode 100644
index 00000000000..c38271f1a67
--- /dev/null
+++ b/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests-legacy.mdx
@@ -0,0 +1,262 @@
+---
+title: Write synthetic API tests (legacy runtime - Node 10 and lower)
+tags:
+ - Synthetics
+ - Synthetic monitoring
+ - Scripting monitors
+translate:
+ - jp
+metaDescription: Use API test scripts to ensure your API endpoint is functioning correctly.
+redirects:
+---
+
+import apiTestSnap0 from 'images/api-test-snap_0.png'
+
+Use synthetic monitoring's [API tests](/docs/synthetics/new-relic-synthetics/getting-started/types-synthetics-monitors) to monitor your API endpoint to ensure it is functioning correctly. New Relic uses the [http-request](https://github.com/request/request) module internally to make HTTP calls to your endpoint and validate the results.
+
+Here we present some example functions showing how to use the `$http` object to submit your request. For detailed documentation on the options available for this object, see the [http-request readme](https://github.com/request/request). (Note that Request is deprecated, but these options still apply.)
+
+
+ To view and share other API test examples, visit the [synthetics scripts](https://discuss.newrelic.com/tags/c/full-stack-observability/synthetic/81/script) section in Explorers Hub or the [Synthetic Monitoring Quickstarts Library](https://newrelic.github.io/quickstarts-synthetics-library/#/).
+
+
+## Use API http-request module [#overview]
+
+API tests are powered by the [http-request](https://github.com/request/request) module, which is available through the `$http` object. Once each frequency interval, New Relic queries your endpoint from each of your selected locations. For instructions on creating a monitor, see [Adding monitors](/docs/synthetics/new-relic-synthetics/using-monitors/adding-editing-monitors#adding-monitors).
+
+Read on to learn how to [define metadata for your request](#request-options), [make a GET request](#get), [make a POST request](#post), and how to [validate the results](#validating).
+
+
+ After a maximum run time of three minutes, New Relic manually stops the script.
+
+
+
+
+
+ [**one.newrelic.com**](http://one.newrelic.com/) **> Synthetics > Create monitor**: The script editor suggests functions, selectors, and other elements to simplify [scripting commands (available in GitHub)](https://github.com/request/request).
+
+
+## Configure request options [#request-options]
+
+To start your script:
+
+* Declare a variable (such as `options`) to store your [request options object](http://github.com/request/request#requestoptions-callback).
+* Define request options such as the URL endpoint, and custom headers.
+* If you're setting SSL or agent options, see [SSL and agentOptions requirements](#use-agentOptions). We recommend using SSL to avoid exposing plain text credentials in your headers.
+
+
+ For a full list of supported request options, see [request(options, callback)](https://github.com/request/request#requestoptions-callback) in the `http-request` documentation on GitHub.
+
+
+Here's an example of optional metadata in the options object:
+
+
+
+ ```
+ //Declare optional metadata
+ var options = {
+ //Specify the endpoint URL
+ url: 'https://api-endpoint.example.com',
+ //Specify optional headers
+ headers: {
+ 'Endpoint-Key': 'uqNTC57Phe72pnnB8JuJmwAr7b09nKSKSz',
+ 'Additional-Header': 'Additional-Header-Data'
+ }
+ };
+ ```
+
+
+
+**For SSL and agentOptions:** If you are setting SSL options or providing an [`agentOptions`](https://github.com/request/request#using-optionsagentoptions) object, the `agent` property in the request `options` object will need to be set to `$globalAgents.https` or `$globalAgents.http` to ensure your HTTP requests use the instrumented global agent.
+
+Here's an example of using a SSL option or `agentOptions`:
+
+
+
+ This example uses `agentOptions`:
+
+ ```
+ //Declare optional metadata
+ var options = {
+ //Specify the endpoint URL
+ url: 'https://api-endpoint.example.com',
+ //Specify optional headers
+ headers: {
+ 'Endpoint-Key': 'uqNTC57Phe72pnnB8JuJmwAr7b09nKSKSz',
+ 'Additional-Header': 'Additional-Header-Data'
+ }
+ //Specify global agent as the http agent
+ agent: $globalAgents.https,
+ //Set SSL option
+ strictSSL: true,
+ //Specify http agent options
+ agentOptions: {
+ maxVersion: 'TLSv1.1'
+ },
+ };
+ ```
+
+
+
+## Send a GET request [#get]
+
+To make a GET request, use the [`$http.get`](https://github.com/request/request#requestget) method to submit your request. Define your [request options](#request-options), make your request using `$http.get`, then [validate](#validating) the response to ensure your endpoint is returning the correct results.
+
+## Send a POST request [#post]
+
+To make a POST request, use the [`$http.post`](https://github.com/request/request#requestpost) method to submit your request. Define your [request options](#request-options), make your request using `$http.post`, then [validate](#validating) the response to ensure your endpoint is returning the correct results.
+
+
+
+ This example queries our [NerdGraph API](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph):
+
+ ```
+ // Define your authentication credentials
+ const myAccountId = '{YOUR_ACCOUNT_ID}';
+ const myAPIKey = '{YOUR_LICENSE_KEY}';
+
+ const options = {
+ // Define endpoint URI, https://api.eu.newrelic.com/graphql for EU accounts
+ uri: 'https://api.newrelic.com/graphql',
+ headers: {
+ 'API-key': myAPIKey,
+ 'Content-Type': 'application/json',
+ },
+ body: JSON.stringify({
+ query: `
+ query getNrqlResults($accountId: Int!, $nrql: Nrql!) {
+ actor {
+ account(id: $accountId) {
+ nrql(query: $nrql) {
+ results
+ }
+ }
+ }
+ }
+ `,
+ variables: {
+ accountId: Number(myAccountId),
+ nrql: 'SELECT average(duration) FROM Transaction',
+ },
+ }),
+ };
+
+ // Define expected results using callback function
+ function callback(err, response, body) {
+ // Log JSON results from endpoint to Synthetics console
+ console.log(JSON.parse(body));
+ console.log('Script execution completed');
+ }
+
+ // Make POST request, passing in options and callback
+ $http.post(options, callback);
+ ```
+
+
+
+ This example POSTs a custom event containing static integers to the [Event API](/docs/insights/new-relic-insights/adding-querying-data/inserting-custom-events):
+
+ ```
+ //Define your authentication credentials.
+ var myAccountID = '{YOUR_ACCOUNT_ID}';
+ var myLicenseKey = '{YOUR_LICENSE_KEY}';
+ //Import the 'assert' module to validate results.
+ var assert = require('assert');
+
+ var options = {
+ //Define endpoint URL.
+ url: "https://insights-collector.newrelic.com/v1/accounts/"+myAccountID+"/events",
+ //Define body of POST request.
+ body: '[{"eventType":"SyntheticsEvent","integer1":1000,"integer2":2000}]',
+ //Define New Relic license key and expected data type.
+ headers: {
+ 'Api-Key': myLicenseKey,
+ 'Content-Type': 'application/json'
+ }
+ };
+
+ //Define expected results using callback function.
+ function callback(error, response, body) {
+ //Log status code to Synthetics console.
+ console.log(response.statusCode + " status code")
+ //Verify endpoint returns 200 (OK) response code.
+ assert.ok(response.statusCode == 200, 'Expected 200 OK response');
+ //Parse JSON into variable.
+ var info = JSON.parse(body);
+ //Verify that `info` contains element named `success` with a value of `true`.
+ assert.ok(info.success == true, 'Expected True results in Response Body, result was ' + info.success);
+ //Log end of script.
+ console.log("End reached");
+ }
+
+ //Make POST request, passing in options and callback.
+ $http.post(options, callback);
+ ```
+
+
+
+## Validate results [#validating]
+
+To validate your results, import the `assert` module to define your test case. Call an `assert` method to validate your endpoint's response. If any `assert` functions fail, the entire monitor will be considered a failed check. This may trigger [alert notifications](/docs/synthetics/new-relic-synthetics/using-monitors/alerting-synthetics#alerts) and affect your metrics.
+
+
+ Synthetic monitoring does not allow thrown exceptions. Thrown exceptions result in script failure. Use the `assert` module to validate your results, and use `console.log()` to [log results to the synthetic's console](/docs/synthetics/new-relic-synthetics/scripting-monitors/writing-scripted-browsers#logging).
+
+
+
+
+ This example POSTs to the Event API, then validates that the response is `{"success":true}`:
+
+ ```
+ //Define your authentication credentials.
+ var myAccountID = '{YOUR_ACCOUNT_ID}';
+ var myLicenseKey = '{YOUR_LICENSE_KEY}';
+ //Import the `assert` module to validate results.
+ var assert = require('assert');
+
+ var options = {
+ //Define endpoint URL.
+ url: "https://insights-collector.newrelic.com/v1/accounts/"+myAccountID+"/events",
+ //Define body of POST request.
+ body: '[{"eventType":"SyntheticsEvent","integer1":1000,"integer2":2000}]',
+ //Define New Relic license key and expected data type.
+ headers: {
+ 'Api-Key': myLicenseKey,
+ 'Content-Type': 'application/json'
+ }
+ };
+
+ $http.post(options, function(error, response, body) {
+ //Log status code to Synthetics console. The status code is logged before the `assert` function,
+ //because a failed assert function ends the script.
+ console.log(response.statusCode + " status code")
+ //Call `assert` method, expecting a `200` response code.
+ //If assertion fails, log `Expected 200 OK response` as error message to Synthetics console.
+ assert.ok(response.statusCode == 200, 'Expected 200 OK response');
+ var info = JSON.parse(body);
+ //Call `assert` method, expecting body to return `{"success":true}`.
+ //If assertion fails, log `Expected True results in Response Body,` plus results as error message to Synthetics console.
+ assert.ok(info.success == true, 'Expected True results in Response Body, result was ' + info.success);
+ });
+ ```
+
+
diff --git a/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx b/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx
index 2419b1cf04e..69e535a020a 100644
--- a/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx
+++ b/src/content/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx
@@ -15,20 +15,26 @@ redirects:
import apiTestSnap0 from 'images/api-test-snap_0.png'
-Use synthetic monitoring's [API tests](/docs/synthetics/new-relic-synthetics/getting-started/types-synthetics-monitors) to monitor your API endpoint to ensure it is functioning correctly. New Relic uses the [http-request](https://github.com/request/request) module internally to make HTTP calls to your endpoint and validate the results.
+
+ This document is targeted to the Node 16.10 scripted API runtime and newer. [Details for the `http-request` based Node 10 and older runtimes](/docs/synthetics/new-relic-synthetics/scripting-moitors/write-synthetic-api-tests-legacy.mdx)
+
+
+Use synthetic monitoring's [API tests](/docs/synthetics/new-relic-synthetics/getting-started/types-synthetics-monitors) to monitor your API endpoint to ensure it is functioning correctly. New Relic uses the [got module](https://github.com/sindresorhus/got) internally to make HTTP calls to your endpoint and validate the results.
-Here we present some example functions showing how to use the `$http` object to submit your request. For detailed documentation on the options available for this object, see the [http-request readme](https://github.com/request/request). (Note that Request is deprecated, but these options still apply.)
+Here we present some example functions showing how to use the `$http` object to submit your request. For detailed documentation on the options available for this object, see the [got module readme](https://github.com/sindresorhus/got). The `got` module documentation includes [a migration guide](https://github.com/sindresorhus/got/blob/main/documentation/migration-guides/request.md) highlighting changes to expect from the `request` module used in previous scripted API runtimes.
- To view and share other API test examples, visit the [synthetics scripts](https://discuss.newrelic.com/tags/c/full-stack-observability/synthetic/81/script) section in Explorers Hub.
+ To view and share other API test examples, visit the [synthetics scripts](https://discuss.newrelic.com/tags/c/full-stack-observability/synthetic/81/script) section in Explorers Hub or the [Synthetic Monitoring Quickstarts Library](https://newrelic.github.io/quickstarts-synthetics-library/#/).
-## Use API http-request module [#overview]
+## Use API got module [#overview]
-API tests are powered by the [http-request](https://github.com/request/request) module, which is available through the `$http` object. Once each frequency interval, New Relic queries your endpoint from each of your selected locations. For instructions on creating a monitor, see [Adding monitors](/docs/synthetics/new-relic-synthetics/using-monitors/adding-editing-monitors#adding-monitors).
+API tests are powered by the [got module](https://github.com/sindresorhus/got), which is available through the `$http` object. Once each frequency interval, New Relic queries your endpoint from each of your selected locations. For instructions on creating a monitor, see [Adding monitors](/docs/synthetics/new-relic-synthetics/using-monitors/adding-editing-monitors#adding-monitors).
Read on to learn how to [define metadata for your request](#request-options), [make a GET request](#get), [make a POST request](#post), and how to [validate the results](#validating).
+Result timing details will be provided as long as you use the `$http` object. For scripted API use cases not covered by the `$http` object, you can use the `$har` object to [report custom timing details](/docs/synthetics/synthetic-monitoring/scripting-monitors/custom-timing-details/).
+
After a maximum run time of three minutes, New Relic manually stops the script.
@@ -47,12 +53,11 @@ Read on to learn how to [define metadata for your request](#request-options), [m
To start your script:
-* Declare a variable (such as `options`) to store your [request options object](http://github.com/request/request#requestoptions-callback).
-* Define request options such as the URL endpoint, and custom headers.
-* If you're setting SSL or agent options, see [SSL and agentOptions requirements](#use-agentOptions). We recommend using SSL to avoid exposing plain text credentials in your headers.
+* Declare a variable (such as `options`) to store your [got options object](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md).
+* Define request options such as the URL endpoint and custom headers.
- For a full list of supported request options, see [request(options, callback)](https://github.com/request/request#requestoptions-callback) in the `http-request` documentation on GitHub.
+ For a full list of supported options, see [got options](https://github.com/sindresorhus/got/blob/main/documentation/2-options.md) in the `got` documentation on GitHub.
Here's an example of optional metadata in the options object:
@@ -77,40 +82,6 @@ Here's an example of optional metadata in the options object:
-**For SSL and agentOptions:** If you are setting SSL options or providing an [`agentOptions`](https://github.com/request/request#using-optionsagentoptions) object, the `agent` property in the request `options` object will need to be set to `$globalAgents.https` or `$globalAgents.http` to ensure your HTTP requests use the instrumented global agent.
-
-Here's an example of using a SSL option or `agentOptions`:
-
-
-
- This example uses `agentOptions`:
-
- ```
- //Declare optional metadata
- var options = {
- //Specify the endpoint URL
- url: 'https://api-endpoint.example.com',
- //Specify optional headers
- headers: {
- 'Endpoint-Key': 'uqNTC57Phe72pnnB8JuJmwAr7b09nKSKSz',
- 'Additional-Header': 'Additional-Header-Data'
- }
- //Specify global agent as the http agent
- agent: $globalAgents.https,
- //Set SSL option
- strictSSL: true,
- //Specify http agent options
- agentOptions: {
- maxVersion: 'TLSv1.1'
- },
- };
- ```
-
-
-
## Send a GET request [#get]
To make a GET request, use the [`$http.get`](https://github.com/request/request#requestget) method to submit your request. Define your [request options](#request-options), make your request using `$http.get`, then [validate](#validating) the response to ensure your endpoint is returning the correct results.
@@ -160,7 +131,7 @@ To make a POST request, use the [`$http.post`](https://github.com/request/reques
// Define expected results using callback function
function callback(err, response, body) {
// Log JSON results from endpoint to Synthetics console
- console.log(JSON.parse(body));
+ console.log(body);
console.log('Script execution completed');
}
@@ -200,10 +171,8 @@ To make a POST request, use the [`$http.post`](https://github.com/request/reques
console.log(response.statusCode + " status code")
//Verify endpoint returns 200 (OK) response code.
assert.ok(response.statusCode == 200, 'Expected 200 OK response');
- //Parse JSON into variable.
- var info = JSON.parse(body);
- //Verify that `info` contains element named `success` with a value of `true`.
- assert.ok(info.success == true, 'Expected True results in Response Body, result was ' + info.success);
+ //Verify that `body` contains element named `success` with a value of `true`.
+ assert.ok(body.success == true, 'Expected True results in Response Body, result was ' + body.success);
//Log end of script.
console.log("End reached");
}
@@ -255,10 +224,9 @@ To validate your results, import the `assert` module to define your test case. C
//Call `assert` method, expecting a `200` response code.
//If assertion fails, log `Expected 200 OK response` as error message to Synthetics console.
assert.ok(response.statusCode == 200, 'Expected 200 OK response');
- var info = JSON.parse(body);
//Call `assert` method, expecting body to return `{"success":true}`.
//If assertion fails, log `Expected True results in Response Body,` plus results as error message to Synthetics console.
- assert.ok(info.success == true, 'Expected True results in Response Body, result was ' + info.success);
+ assert.ok(body.success == true, 'Expected True results in Response Body, result was ' + body.success);
});
```
diff --git a/src/content/whats-new/2022/03/images/obfuscation_ui.png b/src/content/whats-new/2022/03/images/obfuscation_ui.png
deleted file mode 100644
index eb27c63aab3..00000000000
Binary files a/src/content/whats-new/2022/03/images/obfuscation_ui.png and /dev/null differ
diff --git a/src/content/whats-new/2022/03/whats-new-3-31-obfuscation-iu.md b/src/content/whats-new/2022/03/whats-new-3-31-obfuscation-iu.md
deleted file mode 100644
index 2232439c5d1..00000000000
--- a/src/content/whats-new/2022/03/whats-new-3-31-obfuscation-iu.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: 'New obfuscation features now available in log management'
-summary: 'The new functionality makes it easy to keep sensitive data out of logs'
-releaseDate: '2022-03-30'
-learnMoreLink: 'https://docs.newrelic.com/docs/logs/ui-data/obfuscation-ui/'
-getStartedLink: 'https://one.newrelic.com/launcher/logger.log-launcher'
----
-
-New Relic makes it easy for you to ensure data privacy and follow your organization's logs security guidelines with new obfuscation options now available in Logs.
-
-Define regular expressions to mask or hash data you want to protect and easily create custom rules before sensitive information is being stored, all directly available in the Logs user interface without the need for lengthy manual configurations.
-
-Try it out:
-
-1. Go to [**Logs**](https://one.newrelic.com/launcher/logger.log-launcher) in New Relic One and from the left nav, select **Obfuscation**.
-
-2. Select **Create expression** or **Create obfuscation rule** to get started.
-
-!["Logs obfuscation UI"](./images/obfuscation_ui.png "Logs obfuscation UI")
-
-New Relic's log management already helps you troubleshoot issues faster with simplified navigation, dashboard visualizations, the best logs in context, and now, a simple way to control what log data you may be required to protect.
-
-To know more, see our documentation about [log management security and privacy](https://docs.newrelic.com/docs/logs/get-started/new-relics-log-management-security-privacy).
diff --git a/src/content/whats-new/2022/04/images/data_plus_comparison.png b/src/content/whats-new/2022/04/images/data_plus_comparison.png
index 81e98a9df77..2bbb524446a 100644
Binary files a/src/content/whats-new/2022/04/images/data_plus_comparison.png and b/src/content/whats-new/2022/04/images/data_plus_comparison.png differ
diff --git a/src/content/whats-new/2022/04/whats-new-4-14-data-updates.md b/src/content/whats-new/2022/04/whats-new-4-14-data-updates.md
index 5ff1e8cd741..d7aedf89b04 100644
--- a/src/content/whats-new/2022/04/whats-new-4-14-data-updates.md
+++ b/src/content/whats-new/2022/04/whats-new-4-14-data-updates.md
@@ -11,7 +11,7 @@ Starting June 1, 2022, customers on our [New Relic One pricing model](https://do
Data Plus combines at-scale performance and governance capabilities in one simple, predictable, and affordable price per gigabyte which is 56%+ more cost effective than paying for each capability individually. The Data Plus offering includes:
* **90 days extended retention over current defaults:** Instead of paying individual premiums for data indexing and retention of each data source, customers will be able to choose which data they want stored longer in New Relic without increasing their monthly costs.
-* **3x the max query limit and 10x the max duration per query:** Engineers can analyze large data volumes faster, with the ability to inspect up to one trillion data points per 30 minutes and 150 billion data points per minute, compared to 300 billion data points per 30 minutes and 50 billion data points per minute in the current data offering. In addition, New Relic Data Plus customers benefit from an increased max query duration of up to 10 minutes, versus 60 seconds in the existing data plan.
+* **3x the max query limit and 10x the max duration per query:** Engineers can analyze large data volumes faster, with the ability to inspect up to one trillion data points per 30 minutes and 100 billion data points per minute, compared to 300 billion data points per 30 minutes and 10 billion data points per minute in the current data offering. In addition, New Relic Data Plus customers benefit from an increased max query duration of up to 10 minutes, versus 60 seconds in the existing data plan.
* **FedRAMP and HIPAA compliance:** New Relic Data Plus provides options for customers in highly regulated sectors to enable security configurations required for FedRAMP and HIPAA compliance. (Requires Enterprise edition.)
* **Logs obfuscation:** Engineers can track logs obfuscation rules directly in the log management UI and create anonymous identifiers for sensitive log data such as personally identifiable information (PII), access tokens, and other private or regulated data.
* **Enhanced streaming and historical data export** (coming soon): Ability to export New Relic data to external destinations for historical analysis and modeling, long-term storage, and integration with other data analytics platforms.
diff --git a/src/content/whats-new/2022/05/images/network_monitoring.png b/src/content/whats-new/2022/05/images/network_monitoring.png
new file mode 100644
index 00000000000..71de2632b65
Binary files /dev/null and b/src/content/whats-new/2022/05/images/network_monitoring.png differ
diff --git a/src/content/whats-new/2022/05/whats-new-5-10-ei-otel.md b/src/content/whats-new/2022/05/whats-new-5-10-ei-otel.md
new file mode 100644
index 00000000000..659dd5ccd82
--- /dev/null
+++ b/src/content/whats-new/2022/05/whats-new-5-10-ei-otel.md
@@ -0,0 +1,10 @@
+---
+title: 'View your OpenTelemetry data in errors inbox'
+summary: 'Track, prioritize, and resolve OTel errors faster'
+releaseDate: '2022-05-10'
+learnMoreLink: 'https://newrelic.com/blog/nerdlog/errors-inbox-and-opentelemetry'
+getStartedLink: 'https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-view-your-data/#explorer'
+---
+Errors inbox now supports OpenTelemetry-based tracing span data—an innovation unique to the New Relic platform.
+
+Now, you can triage error groups inside errors inbox in your services instrumented with OpenTelemetry tracing. You can immediately view details including the stack trace, span event, and span attribute data needed to pinpoint the cause of an error.
diff --git a/src/content/whats-new/2022/05/whats-new-5-12-network-monitoring.md b/src/content/whats-new/2022/05/whats-new-5-12-network-monitoring.md
new file mode 100644
index 00000000000..6d802f09fe1
--- /dev/null
+++ b/src/content/whats-new/2022/05/whats-new-5-12-network-monitoring.md
@@ -0,0 +1,19 @@
+---
+title: 'Identify network performance problems faster'
+summary: 'With a guided setup process and curated UIs'
+releaseDate: '2022-05-11'
+learnMoreLink: 'newrelic.com/blog/nerdlog/curated-npm-ui'
+getStartedLink: 'https://www.npmjs.com/package/@newrelic/newrelic-eks-blueprints-addon'
+---
+
+Welcome to an entirely new network monitoring onboarding experience, landing pages, and curated UIs, helping you understand and analyze your network monitoring telemetry. These new capabilities help you get started quickly by identifying the network-related use cases that are important to your business, onboarding the right network telemetry to address your use cases, and giving you a curated landing page that helps you analyze and understand this newly-ingested telemetry. With these new capabilities, you get:
+
+* Guided, prescriptive onboarding experiences aligned to solving real problems.
+* Purpose-built landing pages that highlight key network performance metrics.
+* Curated visualizations for analyzing network performance (no network engineering experience required).
+
+# Get started
+
+To learn more, read the [blog](https://newrelic.com/blog/nerdlog/curated-npm-ui).
+
+![New network monitoring curated UI.](./images/network_monitoring.png "New network monitoring curated UI.")
diff --git a/src/data-dictionary/events/AjaxRequest/AjaxRequest.event-definition.md b/src/data-dictionary/events/AjaxRequest/AjaxRequest.event-definition.md
index 2b45fc53a42..017ad2e4d3c 100644
--- a/src/data-dictionary/events/AjaxRequest/AjaxRequest.event-definition.md
+++ b/src/data-dictionary/events/AjaxRequest/AjaxRequest.event-definition.md
@@ -5,4 +5,4 @@ dataSources:
- Browser agent
---
-AjaxRequest events occur for any Ajax request, including during a BrowserInteraction event. The event attribute tracks geographic and browser info. Use browser app settings to block specific requests.
\ No newline at end of file
+`AjaxRequest` events occur for any `Ajax` request, including during a `BrowserInteraction` event. The event attribute tracks geographic and browser info. Use browser app settings to block specific requests.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/eventId.md b/src/data-dictionary/events/AjaxRequest/eventId.md
index c49651bed70..ac925dbb3d3 100644
--- a/src/data-dictionary/events/AjaxRequest/eventId.md
+++ b/src/data-dictionary/events/AjaxRequest/eventId.md
@@ -8,4 +8,4 @@ events:
- BrowserInteraction
---
-A value that you can link to multiple BrowserInteraction events so you can view the interactions that occurred surrounding a specific event. For example, you can see the browser interactions that occurred prior to a JS error.
\ No newline at end of file
+A value that you can link to multiple `BrowserInteraction` events so you can view the interactions that occurred surrounding a specific event. For example, you can see the browser interactions that occurred prior to a JavaScript error.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/groupedPageURL.md b/src/data-dictionary/events/AjaxRequest/groupedPageURL.md
index b038c8b906a..889467e4414 100644
--- a/src/data-dictionary/events/AjaxRequest/groupedPageURL.md
+++ b/src/data-dictionary/events/AjaxRequest/groupedPageURL.md
@@ -6,4 +6,4 @@ events:
- BrowserTiming
---
-The grouped URL of the view that made the AJAX request. For example: myapp.com/acct/\*/dash.
\ No newline at end of file
+The grouped URL of the view that made the AJAX request. For example: `myapp.com/acct/\*/dash`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/groupedRequestUrl.md b/src/data-dictionary/events/AjaxRequest/groupedRequestUrl.md
index 7e1dc048add..33c5795e68c 100644
--- a/src/data-dictionary/events/AjaxRequest/groupedRequestUrl.md
+++ b/src/data-dictionary/events/AjaxRequest/groupedRequestUrl.md
@@ -6,4 +6,4 @@ events:
- Span
---
-The grouped URL of the AJAX request. For example: myapp.com/acct/\*/ajax.
\ No newline at end of file
+The grouped URL of the AJAX request. For example: `myapp.com/acct/\*/ajax`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/httpMethod.md b/src/data-dictionary/events/AjaxRequest/httpMethod.md
index 063d3ed7a51..78982b422fd 100644
--- a/src/data-dictionary/events/AjaxRequest/httpMethod.md
+++ b/src/data-dictionary/events/AjaxRequest/httpMethod.md
@@ -6,4 +6,4 @@ events:
- AjaxRequest
---
-The HTTP method of the AJAX request. Example: POST.
\ No newline at end of file
+The HTTP method of the AJAX request. Example: `POST`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/httpResponseCode.md b/src/data-dictionary/events/AjaxRequest/httpResponseCode.md
index 181bf5e7ff5..f90591e15b3 100644
--- a/src/data-dictionary/events/AjaxRequest/httpResponseCode.md
+++ b/src/data-dictionary/events/AjaxRequest/httpResponseCode.md
@@ -6,4 +6,4 @@ events:
- AjaxRequest
---
-The HTTP response code. Example: 200.
\ No newline at end of file
+The HTTP response code. Example: `200`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/requestUrl.md b/src/data-dictionary/events/AjaxRequest/requestUrl.md
index 2be91d8aae9..da728c2ca1f 100644
--- a/src/data-dictionary/events/AjaxRequest/requestUrl.md
+++ b/src/data-dictionary/events/AjaxRequest/requestUrl.md
@@ -5,4 +5,4 @@ events:
- AjaxRequest
---
-The URL of the AJAX request. For example: myapp.com/acct/1/ajax.
\ No newline at end of file
+The URL of the AJAX request. For example: `myapp.com/acct/1/ajax`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AjaxRequest/timeSinceBrowserInteractionStart.md b/src/data-dictionary/events/AjaxRequest/timeSinceBrowserInteractionStart.md
index 4ee277d6299..256ad17a69e 100644
--- a/src/data-dictionary/events/AjaxRequest/timeSinceBrowserInteractionStart.md
+++ b/src/data-dictionary/events/AjaxRequest/timeSinceBrowserInteractionStart.md
@@ -7,4 +7,4 @@ events:
- BrowserTiming
---
-The time in seconds between the start of the BrowserInteraction and the start of the request.
\ No newline at end of file
+The time in seconds between the start of the `BrowserInteraction` and the start of the request.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AwsLambdaInvocation/AwsLambdaInvocation.event-definition.md b/src/data-dictionary/events/AwsLambdaInvocation/AwsLambdaInvocation.event-definition.md
index a5a79dde8fc..d770e02ece6 100644
--- a/src/data-dictionary/events/AwsLambdaInvocation/AwsLambdaInvocation.event-definition.md
+++ b/src/data-dictionary/events/AwsLambdaInvocation/AwsLambdaInvocation.event-definition.md
@@ -5,4 +5,4 @@ dataSources:
- AWS Lambda
---
-This event is reported by New Relic monitoring for AWS Lambda. This event captures overall function timing and associated metadata. A single AwsLambdaInvocation event is generated for each invocation.
\ No newline at end of file
+This event is reported by New Relic monitoring for AWS Lambda. This event captures overall function timing and associated metadata. A single `AwsLambdaInvocation` event is generated for each invocation.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AwsLambdaInvocation/aws.lambda.coldStart.md b/src/data-dictionary/events/AwsLambdaInvocation/aws.lambda.coldStart.md
index ddc0cacae9f..857215f73b7 100644
--- a/src/data-dictionary/events/AwsLambdaInvocation/aws.lambda.coldStart.md
+++ b/src/data-dictionary/events/AwsLambdaInvocation/aws.lambda.coldStart.md
@@ -6,4 +6,4 @@ events:
- AwsLambdaInvocationError
---
-A Boolean indicating if the AWS Lambda invocation is a cold start.
\ No newline at end of file
+A boolean indicating if the AWS Lambda invocation is a cold start.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentLength.md b/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentLength.md
index eef52c620b8..85073b046c1 100644
--- a/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentLength.md
+++ b/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentLength.md
@@ -9,4 +9,4 @@ events:
- TransactionError
---
-Incoming request size in bytes as read from the Content-Length HTTP request header.
\ No newline at end of file
+Incoming request size in bytes as read from the `Content-Length` HTTP request header.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentType.md b/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentType.md
index d182ca87e0f..e6024568a82 100644
--- a/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentType.md
+++ b/src/data-dictionary/events/AwsLambdaInvocation/request.headers.contentType.md
@@ -8,4 +8,4 @@ events:
- TransactionError
---
-Incoming request content-type as read from the HTTP request header Content-Type. Example value: application/octet-stream.
\ No newline at end of file
+Incoming request content-type as read from the HTTP request header `Content-Type`. Example value: `application/octet-stream`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/AwsLambdaInvocation/type.md b/src/data-dictionary/events/AwsLambdaInvocation/type.md
index 0c6bee2b68f..72f2cd4353a 100644
--- a/src/data-dictionary/events/AwsLambdaInvocation/type.md
+++ b/src/data-dictionary/events/AwsLambdaInvocation/type.md
@@ -6,4 +6,4 @@ events:
- AwsLambdaInvocationError
---
-The New Relic event type. Example values: Transaction, Span.
\ No newline at end of file
+The New Relic event type. Example values: `Transaction`, `Span`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/BrowserInteraction.event-definition.md b/src/data-dictionary/events/BrowserInteraction/BrowserInteraction.event-definition.md
index e0a9a9261e8..ea35e12b285 100644
--- a/src/data-dictionary/events/BrowserInteraction/BrowserInteraction.event-definition.md
+++ b/src/data-dictionary/events/BrowserInteraction/BrowserInteraction.event-definition.md
@@ -5,4 +5,4 @@ dataSources:
- Browser agent
---
-A BrowserInteraction represents a unit of work in a browser session, triggered by a user interacting with the webpage. It captures information about the session, AJAX calls and custom JavaScript timing that occurred as a result of the interaction. Initial load and route changes are captured as special types of browser interactions, and are used for SPA monitoring.
\ No newline at end of file
+A `BrowserInteraction` represents a unit of work in a browser session, triggered by a user interacting with the webpage. It captures information about the session, AJAX calls and custom JavaScript timing that occurred as a result of the interaction. Initial load and route changes are captured as special types of browser interactions, and are used for SPA monitoring.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/browserInteractionName.md b/src/data-dictionary/events/BrowserInteraction/browserInteractionName.md
index 07e1cd7a1bc..63c899bfea4 100644
--- a/src/data-dictionary/events/BrowserInteraction/browserInteractionName.md
+++ b/src/data-dictionary/events/BrowserInteraction/browserInteractionName.md
@@ -7,4 +7,4 @@ events:
- BrowserTiming
---
-The name of the interaction. This is either the targetGroupedUrl or the custom name set via the API.
\ No newline at end of file
+The name of the interaction. This is either the `targetGroupedUrl` or the custom name set via the API.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/firstContentfulPaint.md b/src/data-dictionary/events/BrowserInteraction/firstContentfulPaint.md
index 693a1b16bbe..66c90536690 100644
--- a/src/data-dictionary/events/BrowserInteraction/firstContentfulPaint.md
+++ b/src/data-dictionary/events/BrowserInteraction/firstContentfulPaint.md
@@ -6,7 +6,7 @@ events:
- PageView
---
-firstContentfulPaint is the point when the browser renders the first bit of content from the DOM, which may be text, an image, SVG, or a <canvas> element.
+`firstContentfulPaint` is the point when the browser renders the first bit of content from the DOM, which may be text, an image, SVG, or a <canvas> element.
Google's [User-centric Performance Metrics](https://developers.google.com/web/fundamentals/performance/user-centric-performance-metrics "Link opens in a new window.") contains detailed information about its `Paint Timing` API and `firstContentfulPaint`.
diff --git a/src/data-dictionary/events/BrowserInteraction/firstPaint.md b/src/data-dictionary/events/BrowserInteraction/firstPaint.md
index 1fc4d22b8fd..fec181d3806 100644
--- a/src/data-dictionary/events/BrowserInteraction/firstPaint.md
+++ b/src/data-dictionary/events/BrowserInteraction/firstPaint.md
@@ -6,7 +6,7 @@ events:
- PageView
---
-firstPaint marks the point when the browser renders anything that is visually different from what was on the screen prior to navigation. This includes non-default background paint and the enclosing box of an iframe.
+`firstPaint` marks the point when the browser renders anything that is visually different from what was on the screen prior to navigation. This includes non-default background paint and the enclosing box of an iframe.
Google's [User-centric Performance Metrics](https://developers.google.com/web/fundamentals/performance/user-centric-performance-metrics) contains detailed information about its `Paint Timing` API and `firstPaint`.
diff --git a/src/data-dictionary/events/BrowserInteraction/monitorAccountId.md b/src/data-dictionary/events/BrowserInteraction/monitorAccountId.md
index 848007c3561..5989521f7bc 100644
--- a/src/data-dictionary/events/BrowserInteraction/monitorAccountId.md
+++ b/src/data-dictionary/events/BrowserInteraction/monitorAccountId.md
@@ -6,4 +6,4 @@ events:
- JavaScriptError
---
-The Synthetics account from which you are running the monitor.
\ No newline at end of file
+The synthetics account from which you are running the monitor.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/monitorJobId.md b/src/data-dictionary/events/BrowserInteraction/monitorJobId.md
index cc84f9aeb7f..2519b240cf6 100644
--- a/src/data-dictionary/events/BrowserInteraction/monitorJobId.md
+++ b/src/data-dictionary/events/BrowserInteraction/monitorJobId.md
@@ -7,4 +7,4 @@ events:
- JavaScriptError
---
-The ID of a single Synthetics monitor run, which began at a specific time and originated from a specific location.
\ No newline at end of file
+The ID of a single synthetics monitor run, which began at a specific time and originated from a specific location.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/previousRouteName.md b/src/data-dictionary/events/BrowserInteraction/previousRouteName.md
index e1cd558c9b5..909d75eb91c 100644
--- a/src/data-dictionary/events/BrowserInteraction/previousRouteName.md
+++ b/src/data-dictionary/events/BrowserInteraction/previousRouteName.md
@@ -5,4 +5,4 @@ events:
- BrowserInteraction
---
-The route name of the page at the start of the interaction. This is the last value passed by setCurrentRouteName before the start of the interaction.
\ No newline at end of file
+The route name of the page at the start of the interaction. This is the last value passed by `setCurrentRouteName` before the start of the interaction.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/targetRouteName.md b/src/data-dictionary/events/BrowserInteraction/targetRouteName.md
index 577255dde9a..6b72ccdf789 100644
--- a/src/data-dictionary/events/BrowserInteraction/targetRouteName.md
+++ b/src/data-dictionary/events/BrowserInteraction/targetRouteName.md
@@ -5,4 +5,4 @@ events:
- BrowserInteraction
---
-The route name for the page at the end of the interaction. The last value passed by setCurrentRouteName before the end of the interaction.
\ No newline at end of file
+The route name for the page at the end of the interaction. The last value passed by `setCurrentRouteName` before the end of the interaction.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToConnectEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToConnectEnd.md
index b5958752204..004e9d7268c 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToConnectEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToConnectEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the connectEnd, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `connectEnd`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToConnectStart.md b/src/data-dictionary/events/BrowserInteraction/timeToConnectStart.md
index ed53e1c98e2..73475a436ca 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToConnectStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToConnectStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the connectStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `connectStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomComplete.md b/src/data-dictionary/events/BrowserInteraction/timeToDomComplete.md
index e78472717b4..f089e14d91d 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomComplete.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomComplete.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domComplete, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domComplete`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventEnd.md
index 7f85cb29607..1cba168a7b1 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domContentLoadedEventEnd, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domContentLoadedEventEnd`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventStart.md b/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventStart.md
index 2d490da2f2c..4caf6c5b77e 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomContentLoadedEventStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domContentLoadedEventStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domContentLoadedEventStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomInteractive.md b/src/data-dictionary/events/BrowserInteraction/timeToDomInteractive.md
index c53b42ee26b..562bfeeb88d 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomInteractive.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomInteractive.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domInteractive, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domInteractive`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomLoading.md b/src/data-dictionary/events/BrowserInteraction/timeToDomLoading.md
index 1c7b7c80cd3..239d2bb7130 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomLoading.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomLoading.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domLoading, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domLoading`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupEnd.md
index f9038b45427..60c69a2332f 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domainLookupEnd, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domainLookupEnd`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupStart.md b/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupStart.md
index 7b229d22ade..3c52adea609 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToDomainLookupStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the domainLookupStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `domainLookupStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToFetchStart.md b/src/data-dictionary/events/BrowserInteraction/timeToFetchStart.md
index 59d84467591..db9dcd16154 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToFetchStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToFetchStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the fetchStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `fetchStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToLoadEventEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToLoadEventEnd.md
index 38e1c5e854d..bddcf841ea6 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToLoadEventEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToLoadEventEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the loadEventEnd, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `loadEventEnd`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToLoadEventStart.md b/src/data-dictionary/events/BrowserInteraction/timeToLoadEventStart.md
index 988378c4f70..a037bd83916 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToLoadEventStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToLoadEventStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the loadEventStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `loadEventStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information, see our documentation about [instrumentation for the Navigation Timing API](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToRedirectEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToRedirectEnd.md
index e564cf9ed5e..485e2297b33 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToRedirectEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToRedirectEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the redirectEnd, as defined by the Navigation Timing API. This attribute exists only for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `redirectEnd`, as defined by the Navigation Timing API. This attribute exists only for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToRedirectStart.md b/src/data-dictionary/events/BrowserInteraction/timeToRedirectStart.md
index cccbf880e73..c2be3564dbc 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToRedirectStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToRedirectStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the redirectStart, as defined by the Navigation Timing API. This attribute exists only for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `redirectStart`, as defined by the Navigation Timing API. This attribute exists only for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToRequestStart.md b/src/data-dictionary/events/BrowserInteraction/timeToRequestStart.md
index ed7e7c01738..106881e61e1 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToRequestStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToRequestStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the requestStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `requestStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToResponseEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToResponseEnd.md
index bf92e57e557..bb85525cc25 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToResponseEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToResponseEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the responseEnd, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `responseEnd`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToResponseStart.md b/src/data-dictionary/events/BrowserInteraction/timeToResponseStart.md
index 66a2acab082..26098230788 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToResponseStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToResponseStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the responseStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `responseStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToSecureConnectionStart.md b/src/data-dictionary/events/BrowserInteraction/timeToSecureConnectionStart.md
index 4abfda2e719..5bb92e45418 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToSecureConnectionStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToSecureConnectionStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the secureConnectionStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `secureConnectionStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventEnd.md b/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventEnd.md
index 0dc7fdaa34a..cc451cac01a 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventEnd.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventEnd.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the unloadEventEnd, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `unloadEventEnd`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventStart.md b/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventStart.md
index c5fe0546e7a..d87a3df4111 100644
--- a/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventStart.md
+++ b/src/data-dictionary/events/BrowserInteraction/timeToUnloadEventStart.md
@@ -6,6 +6,6 @@ events:
- BrowserInteraction
---
-The time, in seconds, from the start of the interaction to the unloadEventStart, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
+The time, in seconds, from the start of the interaction to the `unloadEventStart`, as defined by the Navigation Timing API. This attribute exists for initial page load events, not route changes.
For more information about the Navigation Timing API, see [Instrumentation for Browser monitoring](/docs/browser/new-relic-browser/page-load-timing-resources/instrumentation-browser-monitoring#navigation-api).
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserInteraction/trigger.md b/src/data-dictionary/events/BrowserInteraction/trigger.md
index 3576b4bb245..8242722a7e1 100644
--- a/src/data-dictionary/events/BrowserInteraction/trigger.md
+++ b/src/data-dictionary/events/BrowserInteraction/trigger.md
@@ -5,4 +5,4 @@ events:
- BrowserInteraction
---
-The cause of the route change or page load. The default values are click, submit, popstate, or initial page load. For a custom event created with the API, the default value for trigger will be api. This value can also be set via the API.
\ No newline at end of file
+The cause of the route change or page load. The default values are `click`, `submit`, `popstate`, or `initial page load`. For a custom event created with the API, the default value for trigger will be `api`. This value can also be set via the API.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserTiming/BrowserTiming.event-definition.md b/src/data-dictionary/events/BrowserTiming/BrowserTiming.event-definition.md
index 76c27dbba78..206bedd5cd7 100644
--- a/src/data-dictionary/events/BrowserTiming/BrowserTiming.event-definition.md
+++ b/src/data-dictionary/events/BrowserTiming/BrowserTiming.event-definition.md
@@ -5,4 +5,4 @@ dataSources:
- Browser agent
---
-BrowserTiming is a custom event that captures SPA timing data for browser interactions started using the custom createTracer SPA API method. BrowserTiming contains many of the same attributes used by other events, especially AjaxRequest.
\ No newline at end of file
+`BrowserTiming` is a custom event that captures SPA timing data for browser interactions started using the custom `createTracer` SPA API method. `BrowserTiming` contains many of the same attributes used by other events, especially `AjaxRequest`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserTiming/browserTimingName.md b/src/data-dictionary/events/BrowserTiming/browserTimingName.md
index 48827e02e38..fe3e639a7d8 100644
--- a/src/data-dictionary/events/BrowserTiming/browserTimingName.md
+++ b/src/data-dictionary/events/BrowserTiming/browserTimingName.md
@@ -5,4 +5,4 @@ events:
- BrowserTiming
---
-The name of the event. This is taken from the name argument of createTracer.
\ No newline at end of file
+The name of the event. This is taken from the `name` argument of `createTracer`.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserTiming/timeToTracedCallbackStart.md b/src/data-dictionary/events/BrowserTiming/timeToTracedCallbackStart.md
index 56adbc06921..23a35922efc 100644
--- a/src/data-dictionary/events/BrowserTiming/timeToTracedCallbackStart.md
+++ b/src/data-dictionary/events/BrowserTiming/timeToTracedCallbackStart.md
@@ -6,4 +6,4 @@ events:
- BrowserTiming
---
-The time in seconds from the start of the custom tracer until the start of the traced callback. This attribute is unique to the BrowserTiming event.
\ No newline at end of file
+The time in seconds from the start of the custom tracer until the start of the traced callback. This attribute is unique to the `BrowserTiming` event.
\ No newline at end of file
diff --git a/src/data-dictionary/events/BrowserTiming/tracedCallbackDuration.md b/src/data-dictionary/events/BrowserTiming/tracedCallbackDuration.md
index e13a4cf5170..000998cc5f2 100644
--- a/src/data-dictionary/events/BrowserTiming/tracedCallbackDuration.md
+++ b/src/data-dictionary/events/BrowserTiming/tracedCallbackDuration.md
@@ -6,4 +6,4 @@ events:
- BrowserTiming
---
-The duration in seconds of the traced callback. This attribute is unique to the BrowserTiming event.
\ No newline at end of file
+The duration in seconds of the traced callback. This attribute is unique to the `BrowserTiming` event.
\ No newline at end of file
diff --git a/src/data/whats-new-ids.json b/src/data/whats-new-ids.json
index 73e15b4be0d..355d4ad1205 100644
--- a/src/data/whats-new-ids.json
+++ b/src/data/whats-new-ids.json
@@ -129,7 +129,6 @@
"/whats-new/2022/03/whats- new-3-28-pagerduty-integration": "42770",
"/whats-new/2022/03/whats-new-03-28-futurestack-22": "42771",
"/whats-new/2022/03/whats-new-03-29-netlify-logdrain": "42772",
- "/whats-new/2022/03/whats-new-3-31-obfuscation-iu": "42773",
"/whats-new/2022/03/whats-new-otel-jvm": "42774",
"/whats-new/2022/04/whats-new-04-04-otel-masterclass": "42775",
"/whats-new/2022/04/whats-new-04-05-slm-now-available": "42776",
@@ -143,5 +142,7 @@
"/whats-new/2022/04/whats-new-4-21-browser": "42784",
"/whats-new/2022/04/whats-new-4-20-removal-of-estimated-costs": "42785",
"/whats-new/2022/04/whats-new-04-27-EKS-blueprints-add-on": "42786",
- "/whats-new/2022/04/whats-new-04-28-april-io-roundup": "42787"
+ "/whats-new/2022/04/whats-new-04-28-april-io-roundup": "42787",
+ "/whats-new/2022/05/whats-new-5-10-ei-otel": "42788",
+ "/whats-new/2022/05/whats-new-5-12-network-monitoring": "42789"
}
\ No newline at end of file
diff --git a/src/i18n/content/jp/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial.mdx b/src/i18n/content/jp/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial.mdx
new file mode 100644
index 00000000000..94b2e949b49
--- /dev/null
+++ b/src/i18n/content/jp/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial.mdx
@@ -0,0 +1,217 @@
+---
+title: アカウント、アクセス許可、およびユーザーの設定に関するチュートリアル
+metaDescription: A tutorial that will walk you through creating and managing New Relic accounts and users.
+translationType: machine
+---
+
+import groupAccessUi from 'images/group-access-ui.png'
+
+import orgAccessUI from 'images/organization-and-access-ui-default-groups.png'
+
+このチュートリアルでは、アカウントとユーザーの追加と管理について説明します。
+
+## 始める前に [#requirements]
+
+このチュートリアルを開始する前に、理解しておくべきことがいくつかあります。
+
+* ProまたはEnterpriseエディションが必要です(Standardエディションではアカウントを追加したり、アクセス許可を付与したりすることはできません)
+
+* このチュートリアルは、 [NewRelicOneユーザーモデル](/docs/accounts/original-accounts-billing/original-users-roles/overview-user-models)を使用しているユーザーを管理するためのものです。
+
+* このチュートリアルは、最初に次の基本を理解していると簡単になります。
+
+ * [組織とアカウントの概念](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure#new-model)
+ * [ユーザー管理の概念](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts)
+
+* このチュートリアルでは、すべてのユーザー管理機能を紹介するわけではありません。より完全なドキュメントについては、[ユーザー管理ドキュメント](/docs/accounts/accounts-billing/new-relic-one-user-management/introduction-managing-users)を確認してください。
+
+* このチュートリアルでは、推奨されるワークフローを1つ紹介しますが、これらの手順を実行する方法は多数あり、特定の手順の順序は必要ありません。
+
+* ユーザーの役割とアカウントアクセスを計画する方法を示すスプレッドシートの例については、 [アクセス許可計画スプレッドシート](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing)を参照してください。
+
+## 概要 [#overview]
+
+このチュートリアルでは、以下について説明します。
+
+1. [組織の作成](#create-organization)
+2. [アカウントを追加する方法](#add-accounts)
+3. [認証ドメインの設定方法](#auth-domains)
+4. [カスタムロールを設定する方法](#roles)
+5. [アクセス許可を設定する方法](#group-access)(グループに役割とアカウントへのアクセスを許可する)
+6. [ユーザーを追加する方法](#add-users)
+
+## ステップ1:組織の作成 [#create-organization]
+
+これを読んでいるなら、あなたはおそらくすでにNewRelic組織を持っているでしょう。 [New Relicにサインアップすると](https://newrelic.com/signup)、NewRelic組織が作成されます。組織構造は、New Relicの顧客を表しています。これには、顧客によるNew Relicの使用に関連するすべてのもの、つまり、アカウント、ユーザー、およびデータが含まれています。
+
+New Relic組織が作成されると、単一のアカウントが含まれます。 Standardエディションの組織は1つのアカウントしか持てませんが、ProおよびEnterpriseエディションの組織はさらにアカウントを追加できます。アカウントはワークスペースと見なすことができます。たとえば、特定のアプリのアカウント、または特定のイニシアチブやプロジェクトの関連するホストとサービスのセットがあるとします。各アカウントには独自の[アカウントID](/docs/accounts/accounts-billing/account-structure/account-id)があり、そのIDは、API呼び出しなどのアカウント固有のタスクに使用されます。
+
+組織が作成されると、いくつかのデフォルトの「アクセス許可」があり、2つの使用可能なデフォルトグループに特定の役割と特定の範囲のアカウントへのアクセスを許可します。 UIを介してユーザーを追加する場合、ユーザーを割り当てることができる2つのデフォルトグループがあります。
+
+* **管理者**:その初期アカウントの監視機能、および組織レベルの設定(アカウントの追加やユーザーの管理など)を表示および構成する機能を使用および構成できます。
+* **ユーザー**:より高いレベルの編成機能がなくても、可観測性機能を使用および構成できます。
+
+**組織に移動してUIにアクセス**すると、これらのグループに対して作成されたデフォルトのアクセス許可を確認できます。
+
+
+
+**ユーザー**グループが**すべての製品管理者**の役割を持ち、最初に作成されたアカウントにアクセスする方法を確認できます。また、**管理**グループがその優れた機能を反映して、4つのアクセス許可をどのように持っているかを確認できます。これらのグループ名の横にある「デフォルト」は、それらが元のデフォルトの認証ドメインにあることを示します(これについては後で詳しく説明します)。
+
+ProおよびEnterpriseエディションの組織は、カスタムグループを追加したり、IDプロバイダーからグループを取り込んだりすることができます。
+
+## ステップ2:アカウントを追加する [#add-accounts]
+
+New Relicにユーザーを追加する前に、いくつかのアカウントを設定して [、データレポートを取得する](/docs/using-new-relic/welcome-new-relic/get-started/get-started-full-stack-observability)ことをお勧めします。この時点では、これらすべては必要ありません(後でいつでもアカウントを追加して、ユーザーに後でアクセスを許可できます)が、このチュートリアルでは、アカウントの追加について説明します。
+
+手順1で説明したように、アカウントはある種のワークスペースを表すことを目的としています。これは、NewRelicの使用をビジネス関連の境界で分けるのに便利な方法です。アカウントには、大量のさまざまなデータレポートを含めることができます。非常に大規模な企業でさえ、単一のアカウントまたはほんの一握りのアカウントを持つことを妨げるものは何もありません。それはすべて、組織の目標が何であるか、そしてそれがアカウントの境界を作成するのにどれほど役立つかということです。
+
+アカウントを管理するには: [NerdGraph APIを使用して、アカウントを表示、追加、名前変更します](/docs/apis/nerdgraph/examples/manage-accounts-nerdgraph)。 UIを介してアカウントを追加する機能は間もなく登場します。アカウントの追加が完了したら、戻ってこのチュートリアルを続けてください。
+
+## ステップ3:認証ドメインを設定する [#auth-domains]
+
+組織が最初に作成されたとき、グループとユーザーは「デフォルト」という名前のデフォルトの認証ドメインに配置されています。 「認証ドメイン」とは、プロビジョニング(追加および更新)方法、認証(ログイン)方法、セッション設定、ユーザーアップグレード方法など、同じユーザー管理設定によって管理されるNewRelicユーザーのグループです。処理されます。
+
+デフォルトの認証設定は次のとおりです。
+
+* ユーザーは、NewRelicUIを介して手動で追加および管理されます
+* ユーザーは自分のメールアドレスとパスワードを使用してNewRelicに手動でログインします
+
+多くの組織にとって、その1つの認証ドメインを持つことは問題ないかもしれませんが、組織によっては、次のいずれかまたは両方が必要です。
+
+* シングルサインオン(SAML SSO)
+* SCIMプロビジョニングを介したIDプロバイダーからのユーザーの管理
+
+そして、それらが必要な場合は、追加の認証ドメインを作成する必要があります。グループとユーザーは認証ドメインに含まれていることに注意してください。ドメインが作成されると、認証ドメインのプロビジョニング設定や認証設定を簡単に変更することはできません。つまり、認証ドメイン設定を検討する前に、時間をかけて考える必要があります。それらにユーザーを追加します。
+
+デフォルトの認証ドメイン(New Relicからユーザーを管理し、ユーザーがメールアドレスとパスワードでログインしている)に問題がない場合は、[手順4](#roles)にスキップできます。 SAML SSOまたはSCIMプロビジョニングを使用する場合は、次のオプションを参照してください。
+
+
+
+ SCIMプロビジョニングとSAMLSSOの設定方法については、 [自動ユーザー管理ドキュメント](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign#how-to)をご覧ください。完了したら:
+
+ * New Relicの**OrganizationでIDプロバイダーのグループを確認し、UIにアクセス**できることを確認してください。
+ * このチュートリアルを続けるには、ここに戻ってください。
+
+
+
+ SAML SSOの設定方法については、 [SSOドキュメント](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more#authentication)を参照してください。完了したら、ここに戻ってこのチュートリアルを続けてください。
+
+
+
+## 手順4.カスタムロールを作成する(オプション) [#roles]
+
+デフォルトで使用可能なロール( [標準ロール](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#roles))があるため、カスタムロールの作成はオプションです。カスタムロールが必要ない場合は、この手順をスキップできます。
+
+役割とは何かを理解するのに役立ついくつかのヒント:
+
+* ユーザーはグループ(たとえば、デフォルトの**管理**者グループと**ユーザー**グループ)に割り当てられ、それらのグループには、「アクセス許可」と呼ばれるものを介してさまざまな役割とアカウントが割り当てられます。言い換えれば、ユーザーにNew Relicの機能へのアクセスを提供するのはグループではなく、役割です。
+* ロールにはさまざまな機能が含まれています。例:アラート条件を作成および変更する機能、またはデータ取り込みライセンスキーを削除する機能(UIの機能を確認するには、 [機能](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#capabilities)を参照してください)。
+* グループやユーザーとは異なり、役割は認証ドメインに含まれていません。組織全体で利用できます。
+* デフォルトで使用可能なロールがいくつかあり、これを[標準ロール](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles)と呼びます。これらの一部は、デフォルトで使用可能な**Admin**グループと**User**グループに割り当てられています。組織がProまたはEnterpriseエディションの場合は、独自のカスタムロールを作成できます。
+
+役割とグループ、およびアクセス許可を計画する方法を示すスプレッドシートの例については、この[アクセス許可計画スプレッドシート](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing)を参照してください。
+
+既存のロールを表示するには: [アカウントのドロップダウンから](/docs/using-new-relic/welcome-new-relic/get-started/glossary#account-dropdown) をクリックし、 **管理** をクリックし、次に **組織とアクセス** をクリックし、次に **ロール** をクリックします。
+
+カスタムロールを作成するには、 **Add new custom role** をクリックします。利用可能な機能のリストを確認し、カスタムロールに必要な機能を決定します。
+
+これは、カスタムロールを作成する方法を示す短いNerdByteビデオです(4:07分):
+
+
+
+役割と機能の仕組みの詳細については、「 [機能](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#capabilities)」を参照してください。
+
+## ステップ5.グループとアクセス許可を作成します [#group-access]
+
+グループは、ユーザーをグループ化し、ユーザーがNew Relicで実行できることを管理するために使用されます。アクセス許可を作成することにより、グループアクセスを特定の役割とアカウントスコープ(特定のアカウントまたは組織全体の役割)に割り当てます。機能)。
+
+役割とグループ、およびアクセス許可を計画する方法を示すスプレッドシートの例については、 [アクセス許可計画スプレッドシート](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing)を参照してください。
+
+既存のアクセス許可を表示するには:[アカウントのドロップダウン](/docs/using-new-relic/welcome-new-relic/get-started/glossary#account-dropdown)から、\[**管理**]をクリックし、\[**組織とアクセス**]をクリックします。アクセス許可を作成していない場合でも、デフォルトで作成されたグループとそのアクセス許可が表示されます。 (これについて詳しくは、[ステップ1](#create-organization)に戻ってください)。
+
+組織に複数のアカウントがある場合、またはSCIMプロビジョニングを使用している場合は、カスタムアクセス許可を追加する必要があります。
+
+UIまたはAPIを介して、グループを管理し、許可にアクセスできます。
+
+
+
+ アクセス許可を作成する前に、 [ユーザー管理の概念](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts)を十分に理解し、作成するアクセス許可について適切な計画を立てていることを確認してください。ユーザーがアクセスできるようにするグループ、役割、およびアカウントを事前にスプレッドシートにまとめておくと役立つ場合があります。
+
+ UIからアクセス許可を作成するには:
+
+ 1. **組織とアクセス** から、 **グループアクセス**をクリックします。
+
+
+
+ 2. 以下のいずれかを選択してください。
+
+ * **Existing**: アクセス権を追加したいグループがすでに存在する場合、これを使用することができます。たとえば、デフォルトの [**Admin** または **User** グループ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#groups) のユーザーに新しいアカウントへのアクセス権を与えたい場合、これを選択してから **Admin Default** または **Admin User** ロールを選択します。
+ * **新規**:新しいグループを作成する必要がある場合は、これを選択します。 (グループはSCIMを介して管理されているため、これはSCIMプロビジョニングには使用できません。)
+
+ 3. 次に、 **アクセス許可** で、以下のいずれかを選択します。
+
+ * **アカウント**: [アカウントスコープの役割](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles)から選択できるようにするには、これを選択します。これらは、可観測性機能の使用と構成に関係する役割です(組織やユーザーの管理についてではありません)。
+ * **組織**: これを選択すると、 [から組織の範囲内にあるロールを選択することができます](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles).組織やユーザーの管理を行うロールです。(これらのユーザーは、すでにアカウントスコープのロールに属している必要があります。これはほとんどのユーザーに当てはまりますが、そうでない場合は、そのユーザーが組織に属していないというメッセージが表示されることがあります)。
+
+ 4. 割り当てる**役割**を選択します。役割を選択するためのヒントについては、この手順の最後にあるヒントを参照してください。
+ 5. ドロップダウンから、アクセスを追加したい **Account** を選択します。予想していたアカウントが表示されない場合は、いくつかの理由が考えられます。1つは、あなた自身がそのアカウントに対して適切なパーミッションを持っていないこと。もう1つは、そのアカウントが実際には組織内に存在しないことです。詳しくは、 [Factors affecting access](/docs/accounts/accounts-billing/account-structure/factors-affecting-access-features-data/) をご覧ください。それでも問題が解決しない場合は、アカウント担当者にご相談ください。
+ 6. 同じグループのグラントを続けて追加したい場合は、下部の「 **Add another** 」を選択してから、「 **Add access** 」をクリックします。
+ 7. 完了したら、ユーザーがすでに助成金を追加したグループに属している場合、ユーザーは数分以内にアクセスできるようになります(ただし、 [EU地域の組織](/docs/using-new-relic/welcome-new-relic/get-started/our-eu-us-region-data-centers)の場合、これには最大20分ほどかかる場合があります)。ユーザーがまだそのグループに属していない場合(これは、新しいグループでアクセス許可を作成した場合に当てはまります)、次のステップでユーザーを追加する方法を示します。
+
+ このUIを使うためのヒントがあります。
+
+ * ユーザーに組織スコープの**組織マネージャー**または**認証ドメインマネージャーの**役割(デフォルトの**管理者**グループのユーザーに当てはまります)が割り当てられている場合、それらのユーザーは組織全体でそれらを持っていることに注意してください。つまり、グループ内のユーザーが組織スコープの役割を取得すると、削除されない限り、常にその組織の役割を使用できるようになります。つまり、これらのユーザーを別のアカウントに追加する場合は、組織スコープのロールではなく、アカウントスコープのロールを追加するだけで済みます。
+ * 当社の [標準的な役割](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#standard-roles) の中から選択する際には、 **All product admin** と **Standard user** の違いを理解することが重要です。つまり、 **All product admin** は、プラットフォームの機能を設定することができるため、より一般的な選択肢となっています。ユーザーにプラットフォームの機能を使用させたいが、設定はさせたくない場合は、 **Standard user** を選択します。
+
+
+
+ APIを介してグループと付与を管理する方法については、 [NerdGraphユーザー管理](/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt#concepts)を参照してください。
+
+
+
+## ステップ6.ユーザーを追加する [#add-users]
+
+SCIMプロビジョニングを使用している場合は、グループとユーザーがIDプロバイダーからインポートされるため、この時点で完了する必要があります。[検証ステップ](#verification)に進むことができます。
+
+それ以外の場合は、ユーザーを追加する必要があります。ユーザー管理UIで、ユーザーとユーザーが割り当てられているグループを確認できます。
+
+ユーザーを追加するための推奨手順:
+
+1. ユーザーとそのグループを表示するには:[アカウントのドロップダウン](/docs/using-new-relic/welcome-new-relic/get-started/glossary#account-dropdown)から、\[**管理**]をクリックし、\[**ユーザー管理**]をクリックします。
+2. オプション:左上のスイッチャーを使用して認証ドメインを選択します。 (グループは認証ドメインの境界内にあることに注意してください)。
+3. ユーザーを追加するには、\[ユーザーの**追加**]をクリックします。[ユーザータイプ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type)とグループの選択を含め、UIのプロンプトを完了します。追加したカスタムグループは、グループドロップダウンから利用できるはずです。選択したカスタムグループにアクセス許可が作成されている場合、そのグループにユーザーを追加すると、そのユーザーがアクセスできるようになります。
+
+ユーザーのグループまたはその他の詳細を編集するには:編集するユーザーをクリックして変更を加えます。一括編集およびその他の一般的なタスクのヒントについては、一般的[なユーザー管理タスク](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-ui-and-tasks#workflow)を参照してください。
+
+ユーザーが追加されたら、APIを使用してユーザーをグループに追加およびグループから削除するオプションがあることに注意してください[。NerdGraphユーザー管理](/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt#add-users)を参照してください。
+
+## ステップ7.物事が機能していることを確認する [#verify]
+
+ユーザーが正しく構成されていることを確認するためのアイデア:
+
+* **ユーザー管理**UIと**組織に移動してUIにアクセス**し、グループと助成金の割り当てが正しく、意味があるかどうかを確認します。
+* 一部のユーザーに、ログインして、期待するアカウントにアクセスできるかどうかを確認してもらいます。
+
+次のステップのアイデア:
+
+* [NewRelicの統合をさらにセットアップする](/docs/using-new-relic/welcome-new-relic/get-started/intro-new-relic#get-started-now)
+* ユーザーを追加する
\ No newline at end of file
diff --git a/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx b/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx
index 6aeb8315836..773b1b84302 100644
--- a/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx
+++ b/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign.mdx
@@ -47,8 +47,8 @@ ID プロバイダーのグループが New Relic のグループにどのよう
自動ユーザー管理を使用して、IDプロバイダーからユーザーをインポートするには。
-1. まず、 [要件](#requirements) を確認することが重要です。
-2. [認証ドメイン UI](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more/#ui) で、新しい認証ドメインを作成します。
+1. 推奨:最初に[要件を](#requirements)確認してください。
+2. [認証ドメインUI](/docs/accounts/accounts-billing/new-relic-one-user-management/authentication-domains-saml-sso-scim-more/#ui)で、新しい認証ドメインを作成します。 SCIMとSAMLSSOの両方が必要な場合は、認証ドメインで両方を有効にします。これらの設定は後でさらに構成しますが、今のところはを作成するだけです。
3. Azure AD、Okta、または OneLogin を使用している場合は、該当するガイドを使用してください。 [Azure AD](/docs/azure-scimsso-application-configuration) \| [Okta](/docs/okta-scimsso-application-configuration) \| [OneLogin](/docs/onelogin-scimsso-application-configuration).
4. 上記のサービスのいずれかを使用**しない**場合は、次のことを行う必要があります。
diff --git a/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx b/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx
index 8254f6adef7..ac639ba633e 100644
--- a/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx
+++ b/src/i18n/content/jp/docs/accounts/accounts/automated-user-management/scim-support-automated-user-management.mdx
@@ -34,13 +34,13 @@ New RelicのSCIMサービスプロバイダーは、 [RFC7643](https://tools.iet
## サポートされているリソース [#supported-resources]
-New Relic のサービスプロバイダーは以下の SCIM リソースをサポートしています。 `Group` , `User` , `Service provider config` , `Resource type` and `Schema`. `Bulk` and `Search` はサポートしていません。RFCがリソースエンドポイントをどのように記述しているかについては、 [RFC 7644 SCIM Protocol Specification](https://tools.ietf.org/html/rfc7644#section-3.2) を参照してください。
+New Relicサービスプロバイダーは、次のSCIMリソースをサポートしています: `Group` 、 `User` 、 `Service provider config` 、 `Resource type` 、 `Schema` 。 `Bulk`と`Search`はサポートされていません。 RFCがリソースエンドポイントを記述する方法の詳細については、 [RFC7644SCIMプロトコル仕様](https://tools.ietf.org/html/rfc7644#section-3.2)を参照してください。
## スキーマ [#schemas]
New Relic は、SCIM コアスキーマで利用可能なフィールドのサブセットを使用します。他の SCIM フィールドが受信リクエストに含まれていても無視されます。New Relic が使用するフィールドは次のとおりです。
-`グループ`:
+`Group`:
@@ -58,7 +58,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
- `表示名`
+ `displayName`
|
@@ -68,7 +68,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
- `構成員`
+ `members`
|
@@ -78,7 +78,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
-`ユーザー`:
+`User`:
@@ -96,7 +96,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
- `外部Id`
+ `externalId`
|
@@ -106,7 +106,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
- `ユーザー名`
+ `userName`
|
@@ -136,7 +136,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
- `メール` または `メール.バリュー`
+ `emails` または `emails.value`
|
@@ -146,7 +146,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
- `タイムゾーン`
+ `timezone`
|
@@ -156,7 +156,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
- `アクティブ`
+ `active`
|
@@ -166,7 +166,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
|
- `グループ`
+ `groups`
|
@@ -180,7 +180,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
これは、New Relic 固有のユーザー属性のための、オプションの [スキーマ拡張](https://datatracker.ietf.org/doc/html/rfc7643#section-3.3) です。現在は、ユーザーの [ユーザータイプ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type) に対してのみ制御を行います。使い方のチュートリアルは、 [SCIM API tutorial](/docs/accounts/accounts/automated-user-management/tutorial-manage-users-groups-scim/#manage-user-type) をご覧ください。
-`urn:ietf:params:scim:schemas:extension:newrelic:2.0:User`:
+`urn:ietf:params:scim:schemas:extension:newrelic:2.0:User`:
@@ -202,7 +202,7 @@ New Relic は、SCIM コアスキーマで利用可能なフィールドのサ
- [ユーザータイプ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type): `フルユーザー`, `コアユーザー`, または `ベーシックユーザー` を指定します。
+ [ユーザータイプ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type): `full user` 、 `core user` 、または`basic user` 。
|
@@ -214,8 +214,8 @@ SCIMには、グループやユーザーを操作するためのいくつかの
設定する際には、以下の点に注意してください。
-* 単純なフィルタリングのみサポートしています。 `eq` 演算子は、基本的なフィルター式と一緒に使うことができます。例えば、 `"displayName eq"Example Group 1"` 。その他の演算子はサポートされていません。
-* `PUT` アップデートでは、すべてのフィールドが含まれている必要はありません。含まれていないフィールドは変更されません。 `PUT` を行う際に、必須フィールドがすでに適切な値を持っている場合は、そのフィールドを含める必要はありません。
+* 単純なフィルタリングのみがサポートされています。 `eq`演算子は、基本的なフィルター式で使用できます。たとえば、 `“displayName eq "Example Group 1”` 。他の演算子はサポートされていません。
+* `PUT` 更新では、すべてのフィールドを含める必要はありません。含まれていないフィールドは変更されません。 `PUT`を実行するときに、必須フィールドにすでに適切な値がある場合は、フィールドを含める必要はありません。
サポートされているアクションは
@@ -331,7 +331,7 @@ SCIMには、グループやユーザーを操作するためのいくつかの
id="update-group-put"
title="PUTによるグループの更新"
>
- リクエストには、変更したいフィールドを含めます。 `members` フィールドを含めると、グループのユーザーはmembersフィールドの内容に合わせて調整されます。リクエストの例。
+ リクエストには、変更するフィールドを含めます。 `members`フィールドを含めると、グループのユーザーはメンバーフィールドの内容と一致するように調整されます。リクエストの例:
```
PUT /Groups/YOUR_GROUP_ID
@@ -625,7 +625,7 @@ SCIMには、グループやユーザーを操作するためのいくつかの
id="update-user-put"
title="PUTによるユーザーの更新"
>
- リクエストには、変更したいフィールドを含めます。 `groups` フィールドを含めると、ユーザーのグループは groups フィールドの内容に合わせて調整されます。リクエストの例。
+ リクエストには、変更するフィールドを含めます。 `groups`フィールドを含めると、ユーザーのグループはグループフィールドの内容と一致するように調整されます。リクエストの例:
```
PUT /Users/YOUR_USER_ID
@@ -753,7 +753,7 @@ SCIMには、グループやユーザーを操作するためのいくつかの
- * `meta.location` フィールドが設定されていません。
+ * `meta.location`フィールドが設定されていません。
|
@@ -767,16 +767,16 @@ SCIMには、グループやユーザーを操作するためのいくつかの
- * 現在サポートされている唯一の演算子は `eq` です。
+ * 現在サポートされている演算子は`eq`のみです。
* フィールド名は大文字と小文字を区別します。
* 文字列属性は、大文字と小文字を区別して比較されます。
- * フィールド名の前にスキーマを付けることはサポートされていません。たとえば、 `filter=urn:ietf:params:scim:schemas:core:2.0:User:userName eq"johnsmith"` は動作しません。
+ * フィールド名の前にスキーマを付けることはサポートされていません。たとえば、 `filter=urn:ietf:params:scim:schemas:core:2.0:User:userName eq "johnsmith"`は機能しません。
|
- `/Me` 認証されたサブジェクトのエイリアス
+ `/Me` 認証されたサブジェクトエイリアス
|
@@ -784,7 +784,7 @@ SCIMには、グループやユーザーを操作するためのいくつかの
|
- * `GET` を `/Me` リソースと一緒に使用すると、 `404 Not Found` が返されます。
+ * `GET` `/Me`リソースを使用すると`404 Not Found`が返されます。
|
@@ -836,4 +836,8 @@ SCIMを介してNewRelicにユーザーを追加しているが、 [SCIMを介
ユーザーがNew Relicに参加したら、特定のNew Relicアカウント、特定のグループ、特定のロールへのアクセス権を付与する必要があります。これを行わないと、ユーザーは New Relic アカウントへのアクセスができません。この方法については、以下を参照してください。
* [アクセスグラントの仕組み](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts)
-* [ユーザー管理のチュートリアル](/docs/accounts/accounts-billing/new-relic-one-user-management/tutorial-add-new-user-groups-roles-new-relic-one-user-model/)
\ No newline at end of file
+* [ユーザー管理のチュートリアル](/docs/accounts/accounts-billing/new-relic-one-user-management/tutorial-add-new-user-groups-roles-new-relic-one-user-model/)
+
+### SAML SSOの設定
+
+ほとんどのSCIMユーザーが行うSAMLSSOを設定する場合は、 [SAMLSSOのドキュメント](/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/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx b/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx
index a90e266a883..0c179574fed 100644
--- a/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx
+++ b/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/user-migration.mdx
@@ -28,7 +28,7 @@ import userMigrationPage8 from 'images/user-migration-page-8.png'
2020年7月30日、NewRelicOneユーザーモデルと呼ばれる新しい改良されたユーザーモデルをリリースしました。この新しいモデルは、ユーザーとその役割およびアカウントへのアクセスを管理するための、よりシンプルで効率的な方法を提供します。
-当初、この新しいモデルは主に新規のお客様に提供され、既存のニューレリック組織のユーザーはオリジナルのユーザーモデルのままでした。しかし、現在では、いくつかの [要件](#requirements) を満たした元のユーザーモデルの組織では、移行ウィザードを使ってユーザーを新モデルに移行することができます。この移行プロセスが完了すると、ユーザーは New Relic One のユーザーモデルになり、 [ユーザーやアカウントへのアクセスを管理するための新しい手順が必要になります](/docs/accounts/accounts-billing/new-relic-one-user-management/introduction-managing-users/) 。
+当初、この新しいモデルは主に新規顧客が利用できましたが、既存のNewRelic組織のユーザーは元のユーザーモデルのままでした。ただし、一部の[要件](#requirements)を満たす元のユーザーモデルの組織では、移行ウィザードを使用してユーザーを新しいモデルに移行できます。その移行プロセスが完了すると、ユーザーはNew Relic Oneユーザーモデルを[使用し、ユーザーとアカウントへのアクセスを管理するための新しい手順を実行できるようになります](/docs/accounts/accounts-billing/new-relic-one-user-management/introduction-managing-users/)。
## 利点 [#benefits]
@@ -47,7 +47,7 @@ import userMigrationPage8 from 'images/user-migration-page-8.png'
要件は、以下のとおりです。
* あなたとあなたのユーザーは、 [元のユーザーモデル](/docs/accounts/original-accounts-billing/original-product-based-pricing/overview-user-models)を使用している必要があります。自分がどちらであるかわからない場合は、「 [ユーザーモデルの決定](/docs/accounts/original-accounts-billing/original-users-roles/overview-user-models/#determine-user-model)」を参照してください。
-* ユーザー移行ウィザードを使用するには、 [オーナーロール](/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model/#roles) が必要です。
+* ユーザー移行ウィザードを使用するには、 [所有者の役割](/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model/#roles)があり、完全なプラットフォームユーザーである必要があります。
## ユーザーを移行すべきかどうかの判断 [#recommendations]
@@ -56,7 +56,6 @@ import userMigrationPage8 from 'images/user-migration-page-8.png'
このような状況では、ユーザー移行ウィザードを**使用しない**ことをお勧めします。
* 組織に30を超えるアカウントがある場合(New Relicの担当者からサポートを受けている場合を除く)。これは、ユーザーで**はなく**、30以上の[アカウント](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure)を持つことを意味することに注意してください。
-* 頻繁に [アカウントを追加する場合](/docs/accounts/accounts-billing/account-structure/mastersub-account-structure/#creating) 。現在、新ユーザーモデルのユーザーがアカウントを追加するには、New Relic のサポートが必要です。
* [新しいユーザーモデルの影響と制限](/docs/accounts/original-accounts-billing/original-product-based-pricing/overview-user-models/#differences) のいずれかが自分にマイナスの影響を与える可能性があると考える場合。
* ユーザー管理機能にアカウントレベルのロールを必要とする場合。ユーザー管理に関連するロール(ユーザーの追加と更新、ユーザータイプの変更、アクセス許可の作成)は、現在、組織全体に適用され、特定のアカウントに割り当てることはできません。
@@ -81,13 +80,15 @@ import userMigrationPage8 from 'images/user-migration-page-8.png'
* [ユーザー管理の概念を](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts)確認します。
* この[計画スプレッドシートの例](https://docs.google.com/spreadsheets/d/1FnguDXRUX9FGY14oV4Gx6O08v4vNC2Pv0GGCsU7Pxuw/edit?usp=sharing)を使用して、グループを計画し、助成金にアクセスします。
-## ステップ1:ユーザー移行プロセスを開始し、管理者を作成します [#page1]
+## ステップ0:移行ウィザードを見つけて開始します [#start-migration]
始める前に、 [要件](#requirements) および上記のその他の推奨事項を確認してください。ウィザードの使用を開始するには
1. [one.newrelic.com](https://one.newrelic.com) から、トップナビゲーションの **Apps** をクリックします。
2. アプリのテーブルで、 **User migration walkthrough** アプリをクリックします。
-3. オプション:さらに詳しい情報が必要な場合は、以下のセクションで特定の移行ウィザードページに関するヒントや推奨事項をご覧ください。
+3. さらにヘルプとコンテキストが必要な場合は、特定の移行ウィザードページに関するヒントについて、以下のセクションを参照してください。このドキュメントでわかりにくい点がある場合は、このページの\[**問題の作成**]ボタンを使用してフィードバックを送信してください。
+
+## ステップ1:アドミンの作成 [#page1]
-最初のページを使用するためのヒントを次に示します。
+このページでは、移行する管理者を選択します。この手順では、選択した管理者の新しいモデルにユーザーレコードを作成し、それらを**管理者**グループに割り当てます。完了すると、選択した管理者はNew Relicにログインすると新しいユーザーレコードを利用できるようになり(下の画像を参照)、移行ウィザードのプロセスが完了するまで、古いユーザーレコードと新しいユーザーレコードの両方にアクセスできます。ここで選択した管理者は、新しいユーザーレコードから移行ウィザードを使用できます。これは、他のチームメンバーを選択して移行を完了する場合に役立つことがあります。
-* **Accounts included** ドロップダウンにチェックを入れます。ユーザーの移行は、選択したアカウントにのみ適用されることに注意してください。つまり、組織に複数のアカウントがある場合は、それぞれのアカウントに対して移行処理を行う必要があります。
+移行プロセスが完了した後は、いつでも管理者を追加したり、既存の管理者を削除して編集したりできることに注意してください。これは、今すぐ多くまたはすべての管理者を引き継ぎ、後で設定を調整する理由になる場合があります。
-* a) アカウントの現在の管理者をすべてインポートするか、b) ユーザー管理機能へのアクセス権を持つべき管理者を指定することができます。なお、管理者ユーザーの追加や権限の編集は、移行プロセスが完了した後に行うことができます。
+\[**管理者の追加**]ページの使用に関するヒントを次に示します。
-* ウィザードを使用して新しいユーザーモデルで管理者を設定したことがある場合は、管理者に新しいユーザーレコードを使用してサインインさせ、移行ツールにアクセスしてもらいます。ユーザー移行ウィザードが完了すると、古いユーザーレコードが破棄されますが、ユーザー移行プロセスを完了せずに開始した場合は、以下に示すように、元のレコードと新しいレコードの両方にアクセスできるユーザーがいる可能性があります
+* 移行が行われているアカウントを確実に理解する必要があります。ユーザーの移行は、選択した親アカウント(\[**含まれるアカウント**]ドロップダウンに表示)とその子アカウント( **\[関連するすべてのアカウント**を表示]ボタンを使用して表示)にのみ適用されます。期待するすべてのアカウントが表示されない場合は、組織に複数の親/子アカウント構造があることが原因である可能性があります。これは、移行プロセスを複数回実行する必要があることを意味します。
-
+* もし、一部のユーザーだけを新しいユーザーモデルに移行して開始する予定であれば、元のユーザーモデルのユーザーを管理するための管理者がいるように、元のユーザーモデルの管理者をいくつか残しておくことをお勧めします。
- 新しいモデルのユーザーが作成され、移行プロセスが完了していない場合、ユーザーは元のユーザーレコードと新しいユーザーレコードの両方にアクセスできる可能性があります。
+
-* もし、一部のユーザーだけを新しいユーザーモデルに移行して開始する予定であれば、元のユーザーモデルのユーザーを管理するための管理者がいるように、元のユーザーモデルの管理者をいくつか残しておくことをお勧めします。
+
+ 新しいモデルのユーザーが作成され、移行プロセスが完了していない場合、ユーザーは元のユーザーレコードと新しいユーザーレコードの両方にアクセスできる可能性があります。
+
## ステップ2:組織の設定 [#page2]
@@ -204,9 +211,11 @@ NewRelicユーザーを追加および管理するには2つの方法があり
id="aum"
title="IDプロバイダー(SCIM)からのユーザーの追加と管理"
>
- **推奨**:既存の元のユーザーモデルユーザーのリストをダウンロードすることをお勧めします。これは有用なリソースであり、必要に応じてバックアップとして機能します。このリストを使用して、どのユーザーがどのアカウントにアクセスできるかを把握したり、後のステップでグループを作成して許可にアクセスしたりすることもできます。
+ **SCIMプロビジョニングを使用している場合は、この手順でユーザーをインポートする必要はありません。**
+
+ **推奨**:既存の元のユーザーモデルユーザーのリストをダウンロードすることをお勧めします。これは便利なリソースであり、必要に応じてバックアップとして機能します。このリストを使用して、どのユーザーがどのアカウントにアクセスできるかを把握したり、後のステップでグループを作成して許可にアクセスしたりすることもできます。
- 前のステップ(ステップ#4)で、 [IDプロバイダーをNew Relicと同期するためのステップを](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign/#how-to)完了して、NewRelicでIDプロバイダーのグループとユーザーを確認できるようにする必要があります。まだ行っていない場合は、今すぐ行ってください。グループとユーザーはIDプロバイダーとNewRelicの間で同期されるため、このステップでユーザーをアップロードする必要はありません。
+ 前のステップ(ステップ#4)で、 [IDプロバイダーをNew Relicと同期するためのステップを](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign/#how-to)完了して、NewRelic認証ドメインUIとユーザー管理UIでそれらのグループとユーザーを表示できるようにする必要があります。まだ行っていない場合は、今すぐ行ってください。グループとユーザーはIDプロバイダーとNewRelicの間で同期されるため、このステップでユーザーをアップロードする必要はありません。
diff --git a/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx b/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx
index b22195d8b4e..44cdfc2541d 100644
--- a/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx
+++ b/src/i18n/content/jp/docs/accounts/original-accounts-billing/original-users-roles/users-roles-original-user-model.mdx
@@ -107,13 +107,13 @@ New Relic One の価格モデルをご利用の場合は、 [重要な検討事
1. に移動します。 **[アカウントのドロップダウン](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#account-dropdown) > アカウントの設定> ユーザーとロール> ユーザー**.
- 2. ユーザーを選択してタイプを編集するか、 [複数のユーザーのタイプを一括更新します。](#bulk).組織が複数のアカウントを持っている場合、1つのUIですべてのユーザーを確認することはできませんが、各アカウントの **Users and roles** UIに移動する必要があることに注意してください。
+ 2. ユーザーを選択してタイプを編集するか[、複数のユーザーのタイプを一括更新します](#bulk)。組織に複数のアカウントがある場合、単一のUIの場所にすべてのユーザーを表示することはできないことに注意してください。異なるアカウントのユーザーを管理するには、各アカウントの**ユーザーとロール**のUIに移動する必要があります。
アップグレードを要求したユーザーを表示し、承認する。
3. **[アカウントドロップダウン](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#account-dropdown) > アカウント設定> ユーザーと役割**.
- 4. **アップグレードリクエスト** をクリックします。組織で複数のアカウントを使用している場合、1つのUIですべてのユーザーを確認することはできませんが、各アカウントの **Users and roles** UIに移動する必要があることに注意してください。
+ 4. \[**アップグレードリクエスト]を**クリックします。組織に複数のアカウントがある場合、単一のUIの場所にすべてのユーザーを表示することはできないことに注意してください。異なるアカウントのユーザーを管理するには、各アカウントの**ユーザーとロール**のUIに移動する必要があります。
ユーザーのアップグレード方法を制御するには、 **Users and roles** UIから、 **Access requests** を選択します。2つのオプションがあります。
diff --git a/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/incident-intelligence/get-started-incident-intelligence.mdx b/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/incident-intelligence/get-started-incident-intelligence.mdx
index b99f85ac8a6..1fb9a6f0f24 100644
--- a/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/incident-intelligence/get-started-incident-intelligence.mdx
+++ b/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/incident-intelligence/get-started-incident-intelligence.mdx
@@ -8,6 +8,14 @@ metaDescription: Read about how to configure and set up incident intelligence de
translationType: machine
---
+import crossAccountDiagram from 'images/incident-intelligence-cross-account-diagram.png'
+
+import accountTeam from 'images/incident-intelligence-account-team.png'
+
+import environment from 'images/incident-intelligence-environment.png'
+
+import nerdgraph from 'images/incident-intelligence-nerdgraph.png'
+
[適用されるインテリジェンス](/docs/introduction-new-relic-ai)の一部として、インシデントインテリジェンスは、インシデントを相互に関連付け、環境内のノイズを減らすのに役立ちます。すべてのインシデント、そのソース、および関連するイベントの概要が表示されます。
まだお持ちでない方は、 [サインアップしてNew Relicアカウント](https://newrelic.com/signup) を取得してください。
@@ -15,7 +23,7 @@ translationType: machine
パスウェイは非推奨となり、代わりに [ワークフロー](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/) が使用されるようになりました。
- New Relic One で Pathways にアクセスできる場合は、New Relic のアカウント担当者に連絡して、アップグレードを依頼してください。
+ それでもパスウェイにアクセスできる場合は、New Relicアカウントの担当者に連絡して、アップグレードを依頼してください。
## EU/USデータセンターに関する注意 [#eu-datacenter]
@@ -24,24 +32,85 @@ New Relicのインシデントインテリジェンスサービスは、米国
## インシデントインテリジェンスを設定する [#get-started]
-インシデントインテリジェンスを有効にするには、次の手順に従います。その後、問題が問題フィードに表示されるようになります。
+インシデントインテリジェンスを有効にして、問題フィードに問題が表示されるようにするには、次の手順に従います。
* [1.環境を整える(1回のみ)](#1-configure-environment).
* [2.ソースの設定](#1-configure-sources).
* [3.デスティネーションの設定](#2-configure-destinations).
* [4.ワークフローを設定する](#3-configure-workflows).
-## 1.環境設定(1回のみ) [#1-configure-environment]
+## 1.環境を構成します [#1-configure-environment]
+
+環境は、1つ以上のアカウントのセットをグループ化します。これにより、相関、構成、データなどのクロスアカウントアクションを1か所で確認できます。チームの全員が環境アカウントにアクセスする必要があり、その中のデータを表示する権限が必要です。
+
+デフォルトでは、アカウントを作成すると、そのアカウントは独自の環境に追加されます。アプライドインテリジェンスでは、環境はNewRelicのアカウント間でデータを共有するためのメカニズムです。他のNewRelic製品には適用されません。
+
+アカウント間のコラボレーションが必要な場合は、複数のアカウントを1つのカスタム環境に追加できます。これは、クロスアカウントデータを追跡する必要がある場合にのみ行う必要があります。
+
+デフォルトでは、アカウントが2021年11月以降に作成された場合、そのアカウントは独自の環境に配置されます。これが推奨設定です。
+
+### 環境には何が保存されていますか? [#environment-detail]
+
+
+
+
+ 環境ドロップダウンを使用して、クロスアカウントで適用されたインテリジェンスアクティビティを確認します。
+
+
+* ワークフロー構成
+* 意思決定の構成
+* あなたの事件
+* インシデントから作成された問題
+
+ワークフローエンリッチャークエリは、環境アカウントレベルで実行されます。
-インシデントインテリジェンスで環境をセットアップするには、管理者がその環境のNewRelicアカウントを選択する必要があります。このアカウントは、チームが使用しているアカウントである必要があります。
+### 個人アカウントには何が保存されていますか? [#account-detail]
-* **誰が環境を設定するのですか?** 管理者のみ、しかも管理者権限のあるアカウントに限ります。
-* **管理者は複数の環境を設定できますか?** 親アカウントとその子アカウントにつき、1つの環境を設定できます。管理者が複数の親アカウントの権限を持っている場合は、複数の環境を設定することができます。
+
-
- インシデントインテリジェンスはクロスアカウント製品です。これは、New Relicアカウントまたは外部ソースからデータを送信して、イベントを相互に関連付けることができることを意味します。
+
+ 個々のアカウントのドロップダウンを使用して、アカウントに関連するポリシー、条件、および宛先を確認します。
+
+
+個人アカウントストア:
+
+* あなたの方針と条件
+* あなたの目的地
+
+個々のアカウントをある環境から別の環境に移動する場合、構成は削除されませんが、新しい環境では使用できない場合があります。
+
+
+ 問題を表示するには、ユーザーはインシデントインテリジェンス環境への読み取りアクセスを許可されている必要があります。
+
+ インシデントの詳細を表示するには、ユーザーは、インシデントが発生したアカウントへの読み取りアクセスを許可されている必要があります。
+
+ 各インシデントインテリジェンス環境のすべてのユーザーに読み取りアクセスを許可することをお勧めします。
+### カスタム環境を作成する [#create-environment]
+
+管理者は、これらの手順を実行して、チームが使用しているアカウントの新しいカスタム環境を作成します。 New Relicの管理者でない場合は、これらの手順を完了することはできません。
+
+1. [ユーザーキー](https://one.newrelic.com/api-keys)を作成します。
+2. [NerdGraphエクスプローラー](https://api.newrelic.com/graphiql)に移動します。 (EUデータセンターを使用している場合は、 [EUNerdGraph](https://api.eu.newrelic.com/graphiql)を使用してください。
+3. アカウントのドロップダウンで、作成したユーザーAPIキーを選択します。
+4. クエリビルダーの**ミューテーション**セクションで、 **incidentIntelligenceEnvironment**をクリックし、 **incidentIntelligenceEnvironmentCreateEnvironment**を選択します。
+5. クエリの実行ボタンをクリックするか、 **Ctrl+Enter**を押して環境アカウントを作成します。
+
+NerdGraphエクスプローラーの使用方法の詳細については、 [GraphQLAPI](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/)であるNewRelicNerdGraphの概要を参照してください。
+
+`incidentIntelligenceAccountId`パラメータは環境IDです。
+
+`associatedAccountIds`パラメーターを指定しない場合、すべてのアカウントが1つの環境にグループ化されます。
+
## 2.ソースの設定 [#1-configure-sources]
環境を整えた後は、インシデントソースを決定します。これがデータのインプットとなります。
diff --git a/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx b/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx
index 831d78911b3..4c41ffbc76f 100644
--- a/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx
+++ b/src/i18n/content/jp/docs/alerts-applied-intelligence/applied-intelligence/proactive-detection/expanded-anomaly-detection.mdx
@@ -9,15 +9,11 @@ translationType: machine
---
- この特集は限定公開です。
+ この機能は限定リリースであり、サインアップのリクエストは受け付けていません。
異常検知の対象をAPMアプリケーション以外にも拡大しました。ブラウザ・アプリケーション、モバイル・アプリケーション、インフラストラクチャ・ホストなど、監視したいほぼすべてのものに対して異常検知を設定できます。
-## 要件
-
-拡張された異常検知機能は、限定的なベータ版として提供されています。アクセスのリクエストはこちら [](https://sgnf.typeform.com/to/Y9pRHOTa)。
-
## 重要な理由
様々なアプリケーションやホストに対して警告条件の設定を始める場合、事前に何を通知したいのかを把握するのは難しいものです。異常検知は、システムの典型的なパフォーマンスと、問題が発生し始めている場所を区別するのに役立ちます。
diff --git a/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/destinations.mdx b/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/destinations.mdx
index dd44392e302..a92b6788fcb 100644
--- a/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/destinations.mdx
+++ b/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/destinations.mdx
@@ -24,6 +24,7 @@ import filterDestinations from 'images/filter-destinations.png'
* Slackです。 [ワークフロー](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/) と [エラー インボックス](/docs/errors-inbox/) で利用可能です。
* Webhookです。 [ワークフローで利用可能](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/).
* メールでのご案内です。 [ワークフローで利用可能](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/).
+* AWS EventBridge: [ワークフロー](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/)で利用できます。
* PagerDuty: [ワークフローで利用可能](/docs/alerts-applied-intelligence/applied-intelligence/incident-workflows/incident-workflows/).
これらの宛先やその他の宛先については、 [通知の統合](/docs/alerts-applied-intelligence/notifications/notification-integrations) を参照してください。
diff --git a/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx b/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx
index 4b8c4f4fcfe..186f49d9028 100644
--- a/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx
+++ b/src/i18n/content/jp/docs/alerts-applied-intelligence/notifications/notification-integrations.mdx
@@ -13,6 +13,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'
@@ -193,7 +195,7 @@ import pagerDutyServiceChannel from 'images/pagerDuty-service-channel.png'
4. いずれかのコラムヘッダーのメニューアイコンをクリックし、 **Import XML** を選択し、ダウンロードしたXMLファイルをアップロードします。
- 宛先が保存されると、NewRelicAPIキーは`api_key_credentials`に保持されます。キーは、NewRelicへのコールバックREST呼び出しの一部としてヘッダーで送信されます。
+ 宛先が保存されると、NewRelicAPIキーは`api_key_credentials`に保持されます。キーは、NewRelicへのコールバックREST呼び出しの一部としてヘッダーで送信されます
#### ワークフローとの同期 [#two-way-sync-snow-workflows]
@@ -347,7 +349,7 @@ import pagerDutyServiceChannel from 'images/pagerDuty-service-channel.png'
src={webhookPreviewError}
/>
- Webhookペイロードが有効なJSONに適合していれば、定義したWebhook宛先にテスト通知を送信できます。
+ Webhookペイロードが有効なJSONに準拠している場合は、定義したWebhook宛先にテスト通知を送信できます。
+
+ NewRelicと[AWSEventBridge](https://aws.amazon.com/eventbridge/)を使用して、AWS Lambda、Amazon Simple Notification Service(SNS)キュー、CloudWatchLogsなどのターゲットに通知をカスタマイズして配信します。
+
+ ## EventBridgeの宛先を設定します [#set-up-eventbridge]
+
+ EventBridgeの宛先を作成するには、 **Destinations**に移動し、 **AWS EventBridge**をクリックして、次の情報を入力します。
+
+ * **名前**:宛先名。
+ * **AWSリージョン**:これはAWSリージョナルエンドポイントです。イベントソースがホストされている地域を選択します。
+ * **AWSアカウントID** :AWSアカウントID。これは12桁の数字です。
+
+ ## イベントソースを選択してください [#eventbridge-source]
+
+ AWSアカウントIDを使用してEventBridgeの宛先を設定したら、新しいイベントソースを作成すると、EventBridgeで利用できるようになります。
+
+ 1. 宛先名を選択または作成します。
+ 2. イベントソースを選択または作成します。
+
+ 新しいイベントソースを作成すると、AWSEventBridgeアカウントに統合パートナーのイベントソースとして作成されます。
+
+ ## AWSアカウントでイベントソースを関連付け、ルールを作成します [#eventbridge-rule]
+
+ 1. **イベントソースをイベントバスに関連付け**ます。 AWS EventBridgeコンソールで、ナビゲーションペインで\[Partnerイベントソース]を選択します。
+
+ パートナーイベントソースの横にあるボタンを選択し、\[イベントバスに関連付ける]を選択します。
+
+ イベントソースのステータスが\[保留中]から\[アクティブ]に変わり、イベントバスの名前がイベントソース名と一致するように更新されます。これで、NewRelicのイベントに一致するルールの作成を開始できます。
+
+ 2. **イベントバス**のルールを作成します。 New Relicから送信された通知に対応するには、New-Relicイベントをフィルタリングするイベントパターンを使用してルールを作成する必要があります。
+
+
+
+ 詳細な手順について[は、イベントソースルールを作成する](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-saas.html#eb-create-rule-partner-events)方法についてこのAWSドキュメントを使用してください。
+
+ ## メッセージイベントテンプレートを構成する [#message-eventbridge]
+
+ New RelicからEventBridgeに通知を送信する場合、メッセージテンプレートを使用してその通知をカスタマイズできます。次の手順に従って、EventBridge宛先のメッセージテンプレートを構成します。
+
+ 1. デフォルトのテンプレートを使用することも、独自のテンプレートをカスタマイズすることもできます。
+
+ カスタマイズされたテンプレートが必要な場合は、[変数メニュー](/docs/alerts-applied-intelligence/notifications/message-templates/#variables-menu)から変数を選択し、[ハンドルバー構文](/docs/alerts-applied-intelligence/notifications/message-templates/#handlebars-syntax)を適用してイベントを充実させます。
+
+ EventBridgeAPIにはJSONが必要です。 [JSONの使用例](/docs/alerts-applied-intelligence/notifications/message-templates/#usage-examples)を参照してください。テンプレートプレビューには、レンダリングされたJSONが表示されます。
+
+ イベントテンプレートが有効なJSONに準拠したら、テスト通知をAWSEventBridgeに送信できます。
+
+
+
+
+ NerdGraph GraphiQLエクスプローラーを使用すると、レポートがtrue|falseおよびlastReportingChangeAt日付フィールドでエンティティーをフィルター処理できます。
+
+ * 過去数時間で報告を停止した(何かが起こった)エンティティを取得できます
+
+ ```
+ {
+ actor {
+ entitySearch(query: "reporting is false and lastReportingChangeAt > 1651708800000") {
+ results {
+ entities {
+ name
+ }
+ }
+ }
+ }
+ }
+ ```
+
## エンティティの削除 [#delete-entities]
@@ -557,7 +580,7 @@ mutation {
```
- 現在、Nerdgraph APIを使用して削除できるのは、次の [エンティティタイプ](/docs/new-relic-one/use-new-relic-one/core-concepts/what-entity-new-relic) のみです: `APM-APPLICATION`, `EXT-SERVICE`, `REF-REPOSITORY` 。
+ 現在、Nerdgraph APIを使用して削除できるのは、 `APM-APPLICATION` 、 `EXT-SERVICE` 、および`REF-REPOSITORY`の[エンティティタイプ](/docs/new-relic-one/use-new-relic-one/core-concepts/what-entity-new-relic)のみです。
削除されたエンティティがNew Relicエージェントによって再びインデックスされると、UIに表示されることがあります。
\ No newline at end of file
diff --git a/src/i18n/content/jp/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt.mdx b/src/i18n/content/jp/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt.mdx
new file mode 100644
index 00000000000..5bf08fd9323
--- /dev/null
+++ b/src/i18n/content/jp/docs/apis/nerdgraph/examples/nerdgraph-user-mgmt.mdx
@@ -0,0 +1,566 @@
+---
+title: NerdGraphチュートリアル:ユーザーグループとアクセス許可を管理する
+tags:
+ - APIs
+ - NerdGraph
+metaDescription: 'Examples of using New Relic''s NerdGraph API to manage users, groups, and access grants.'
+translationType: machine
+---
+
+NewRelicの[NerdGraphAPI](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph)を使用して、ユーザーグループとアクセス許可を表示および管理できます。 UIでこれを行う方法については、 [ユーザー管理UIのドキュメント](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-ui-and-tasks)を参照してください。
+
+## 要件 [#requirements]
+
+NerdGraphを介してユーザーとグループを管理するためのいくつかの要件:
+
+* [ProまたはEnterpriseエディション](https://newrelic.com/pricing)が必要です(Standardエディションの組織はグループを構成したり、許可にアクセスしたりすることはできません)。
+
+* [SCIMプロビジョニング](/docs/accounts/accounts/automated-user-management/automated-user-provisioning-single-sign)を使用している場合:その認証ドメインでは、グループとユーザーはSCIMを介して管理されるため、グループを作成したり、グループにユーザーを追加したりすることはできません。
+
+* [NewRelicOneユーザーモデル](/docs/accounts/original-accounts-billing/original-users-roles/overview-user-models#determine-user-model)のユーザーである必要があります。その他の権限関連の要件:
+
+ * 必要な[ユーザータイプ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-type):コアユーザーまたはフルプラットフォームユーザー
+ * 必要な[役割](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#roles):**組織マネージャー**または**認証ドメインマネージャー**
+
+## 始める前に [#concepts]
+
+NerdGraphを使用してユーザーを管理する前に:
+
+* [ユーザー管理の概念](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts#understand-concepts)を十分に理解していることを確認してください
+* まだ行っていない場合は、**組織とアクセス**UIを調べて、グループとアクセス許可がどのように機能するかを理解し、既存のアクセス許可を理解するのに役立ちます。
+* 作成する必要のあるグループとアクセス許可について、適切な計画を立ててください。これを事前にスプレッドシートにマッピングしておくと役立つ場合があります。
+* [NerdGraphエクスプローラー](/docs/apis/nerdgraph/get-started/introduction-new-relic-nerdgraph/#explorer)には、これらのリクエストで使用されるフィールドを定義するドキュメントが組み込まれていることに注意してください。
+* [NewRelicアカウントへの変更を追跡できることに注意してください](/docs/data-apis/understand-data/event-data/query-account-audit-logs-nrauditevent)。
+
+## グループとアクセス許可を作成するための推奨ワークフロー [#flow]
+
+これらのクエリとミューテーションはさまざまな方法でさまざまな順序で使用できますが、グループとアクセス許可を設定するための一般的なワークフローは次のとおりです。
+
+1. ユーザーの情報と[利用可能な役割](#query-roles)を[クエリする](#query-users):これは、NewRelicで使用しているユーザーと利用可能な役割を確実に理解するための最初の場所として役立ちます。始めたばかりの場合は、まだユーザーを追加していない可能性があり、標準の役割しか持っていない可能性があります。
+2. [オプション:新しいグループを作成します](#create-group): **SCIMプロビジョニングを使用している場合は使用できません。**既存のグループを使用することも、新しいグループを作成することもできます。グループを作成したら、アクセス許可を作成して、グループに役割とアカウントへのアクセスを許可する必要があります。グループ自体は、そのグループ内のユーザーにアクセスを許可しないことに注意してください。ユーザーがロールとアカウントにアクセスできるのは、アクセス許可を介してのみです。
+3. [アクセス許可を作成する](#grant-access):これは、グループに役割とアカウントへのアクセスを割り当てるものです。
+
+完了したら、作成したグループに既にユーザーがいて、そのグループにアクセス許可がある場合、数分以内にアクセスできるようになります(ただし、 [EUリージョンのNew Relicアカウント](/docs/using-new-relic/welcome-new-relic/get-started/our-eu-us-region-data-centers)の場合、これには最大20分かかる場合がありますとか、ぐらい)。ユーザーがまだそのグループに属していない場合(これは、新しいグループを作成したばかりの場合に当てはまります)、 [そのグループにユーザーを追加できます](/docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial#add-users)。
+
+## 既存の役割を照会する [#query-roles]
+
+ロールに関する情報を返す例を次に示します。
+
+```graphql
+{
+ actor {
+ organization {
+ authorizationManagement {
+ authenticationDomains {
+ authenticationDomains {
+ groups {
+ groups {
+ roles {
+ roles {
+ accountId
+ displayName
+ id
+ name
+ organizationId
+ type
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+結果の例を次に示します。
+
+```graphql
+{
+ "data": {
+ "actor": {
+ "organization": {
+ "authorizationManagement": {
+ "authenticationDomains": {
+ "authenticationDomains": [
+ {
+ "groups": {
+ "groups": [
+ {
+ "roles": {
+ "roles": [
+ {
+ "accountId": "account-id",
+ "displayName": "name",
+ "id": "id",
+ "name": "role-name",
+ "organizationId": null,
+ "type": "role-type"
+ },
+ {
+ "accountId":null,
+ "displayName": "name",
+ "id": "id",
+ "name": "role-name",
+ "organizationId": "organization-id",
+ "type": "role-type"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+## ユーザーに問い合わせる [#query-users]
+
+ユーザーに関する情報をクエリする例を次に示します。
+
+```graphql
+{
+ actor {
+ organization {
+ userManagement {
+ authenticationDomains {
+ authenticationDomains {
+ groups {
+ groups {
+ users {
+ users {
+ id
+ email
+ name
+ timeZone
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+結果の例を次に示します。
+
+```graphql
+{
+ "data": {
+ "actor": {
+ "organization": {
+ "userManagement": {
+ "authenticationDomains": {
+ "authenticationDomains": [
+ {
+ "groups": {
+ "groups": [
+ {
+ "users": {
+ "users": [
+ {
+ "email": "example@newrelic.com",
+ "id": "123456789",
+ "name": "Example Relic",
+ "timeZone": "Etc/UTC"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ }
+}
+```
+
+## グループを作成する [#create-group]
+
+[グループ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#groups)を作成する例を次に示します。
+
+```graphql
+mutation {
+ userManagementCreateGroup(createGroupOptions: {authenticationDomainId: "YOUR_AUTH_DOMAIN", displayName: "GROUP_DISPLAY_NAME"}) {
+ group {
+ displayName
+ id
+ }
+ }
+}
+```
+
+成功した応答:
+
+```graphql
+{
+ "data": {
+ "userManagementCreateGroup": {
+ "group": {
+ "displayName": "GROUP_DISPLAY_NAME"
+ "id": "GROUP_ID"
+ }
+ }
+ }
+}
+```
+
+## ユーザーグループを更新する [#update-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
+ }
+ }
+}
+```
+
+成功への対応:
+
+```graphql
+{
+ "data": {
+ "userManagementUpdateGroup": {
+ "group": {
+ "displayName": "YOUR_UPDATED_GROUP_NAME",
+ "id": "GROUP_ID"
+ }
+ }
+ }
+}
+```
+
+失敗への対応:
+
+```graphql
+{
+ "data": {
+ "userManagementUpdateGroup": null
+ },
+ "errors": [
+ {
+ "extensions": {
+ "errorClass": "SERVER_ERROR"
+ },
+ "locations": [
+ {
+ "column": 3,
+ "line": 2
+ }
+ ],
+ "message": "Group could not be found",
+ "path": [
+ "userManagementUpdateGroup"
+ ]
+ }
+ ]
+}
+```
+
+## グループを削除する [#delete-group]
+
+[グループ](/docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts/#groups)を削除する例を次に示します。
+
+```graphql
+mutation {
+ userManagementDeleteGroup(groupOptions: {id: "GROUP_ID"}) {
+ group {
+ id
+ }
+ }
+}
+```
+
+成功への対応:
+
+```graphql
+{
+ "data": {
+ "userManagementDeleteGroup": {
+ "group": {
+ "id": "GROUP_ID"
+ }
+ }
+ }
+}
+```
+
+失敗への対応:
+
+```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]
+
+グループにユーザーを追加する例を次に示します。
+
+```graphql
+mutation {
+ userManagementAddUsersToGroups(addUsersToGroupsOptions: {groupIds: [GROUP_ID_1, GROUP_ID_2], userIds: [YOUR_USERS_IDS]}) {
+ groups {
+ displayName
+ id
+ }
+ }
+}
+```
+
+成功への対応:
+
+```graphql
+{
+ "data": {
+ "userManagementAddUsersToGroups": {
+ "groups": [
+ {
+ "displayName": "GROUP_1_NAME",
+ "id": "GROUP_ID_1"
+ },
+ {
+ "displayName": "GROUP_NAME_2",
+ "id": "GROUP_ID_2"
+ }
+ ]
+ }
+ }
+}
+```
+
+失敗への対応:
+
+```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]
+
+グループからユーザーを削除する例を次に示します。
+
+```graphql
+mutation {
+ userManagementRemoveUsersFromGroups(removeUsersFromGroupsOptions: {groupIds: [YOUR_GROUP_IDS], userIds: [YOUR_USER_IDS]}) {
+ groups {
+ displayName
+ id
+ }
+ }
+}
+```
+
+成功への対応:
+
+```graphql
+{
+ "data": {
+ "userManagementRemoveUsersFromGroups": {
+ "groups": [
+ {
+ "displayName": "YOUR_GROUP_NAME",
+ "id": "YOUR_GROUP_ID"
+ }
+ ]
+ }
+ }
+}
+```
+
+失敗への対応:
+
+```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]
+
+グループのアクセス許可(ロールとアカウントへのアクセス)を作成する例を次に示します。
+
+```graphql
+mutation {
+ authorizationManagementGrantAccess(grantAccessOptions: {groupId: "YOUR_GROUP_ID", accountAccessGrants: {accountId: "ACCOUNT_ID", roleId: "ROLE_ID"}}) {
+ roles {
+ displayName
+ accountId
+ }
+ }
+}
+```
+
+成功への対応:
+
+```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"
+ }
+ ]
+ }
+ }
+}
+```
+
+失敗への対応:
+
+```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]
+
+グループからのアクセス許可を取り消す例を次に示します。
+
+```graphql
+mutation {
+ authorizationManagementRevokeAccess(revokeAccessOptions: {accountAccessGrants: {accountId: "ACCOUNT_ID", roleId: "ROLE_ID"}, groupId: "GROUP_ID"}) {
+ roles {
+ accountId
+ displayName
+ }
+ }
+}
+```
+
+成功への対応:
+
+```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"
+ }
+ ]
+ }
+ }
+}
+```
\ No newline at end of file
diff --git a/src/i18n/content/jp/docs/apm/agents/c-sdk/get-started/otel_cpp_example.mdx b/src/i18n/content/jp/docs/apm/agents/c-sdk/get-started/otel_cpp_example.mdx
new file mode 100644
index 00000000000..d9097825a03
--- /dev/null
+++ b/src/i18n/content/jp/docs/apm/agents/c-sdk/get-started/otel_cpp_example.mdx
@@ -0,0 +1,189 @@
+---
+title: CSDKOpenTelemetryの代替
+tags:
+ - Agents
+ - C SDK
+ - Get started
+ - OpenTelemetry
+metaDescription: Explore OpenTelemetry to send your C++ instrumentation data to New Relic.
+translationType: machine
+---
+
+OpenTelemetry C ++は、安定した機能とアクティブなコードベースの幅広い貢献者を備えたエキサイティングな可観測性[ソリューション](https://github.com/open-telemetry/opentelemetry-cpp)です。 New Relicは、OpenTelemetryと[互換性](/docs/integrations/open-source-telemetry-integrations/opentelemetry/introduction-opentelemetry-new-relic/)があり、ベンダー固有の形式に準拠するのではなく、エンドポイントにとらわれないインストルメンテーション呼び出しを行うことによる将来のプルーフコードなど、OpenTelemetryが提供できる[利点](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction/)を備えています。
+
+OpenTelemetryを使用して、選択した言語でデータをNew Relicに送信する方法の詳細については、 [NewRelicOpenTelemetryのセットアップ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/)を参照してください。
+
+OpenTelemetry C ++リポジトリには[、GitHubに多くの優れた例があります](https://github.com/open-telemetry/opentelemetry-cpp/tree/main/examples)。 OpenTelemetry C ++ SDKのビルドと使用、およびサンプルのビルドと実行の詳細については、 [CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-cpp/blob/main/CONTRIBUTING.md)を参照してください。
+
+## クイックスタートの例 [#quick-start]
+
+すぐに始めて、コードをインストルメント化せずにNew Relicで何ができるかを確認したいですか?すぐにNewRelicにデータを送信する例については、以下の手順に従ってください。
+
+インストルメンテーションを開始する準備ができたら、コードとの統合の詳細について、NewRelicOpenTelemetryの[セットアップ手順](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/)とOpenTelemetryC++リポジトリ[CONTRIBUTING.md](https://github.com/open-telemetry/opentelemetry-cpp/blob/main/CONTRIBUTING.md)を参照してください。
+
+### 1.環境を設定します [#environment]
+
+[NewRelicOpenTelemetryのドキュメント](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#prereqs)に概説されている前提条件があることを確認してください。
+
+1. `git clone https://github.com/open-telemetry/opentelemetry-cpp`を実行します。
+2. `Dockerfile.ubuntu` 、 `docker-compose-collector.yaml` 、および`config.dev.yaml`のサンプルファイルを、手順1で複製したディレクトリのルートにコピーします。
+3. [ライセンスキー](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key)と[エンドポイント](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#review-settings)を使用して`config.dev.yaml`を編集します。
+4. `docker-compose -f docker-compose-collector.yaml up`を実行します。
+5. 2つのコンテナーが実行されていることを確認します。1つはコレクター用で、もう1つはC++アプリケーション用です。
+
+### 2.C++アプリケーションを実行します [#run-app]
+
+C ++コンテナでターミナルを開き、次のコマンドを実行します。
+
+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-data]
+
+[one.newrelic.com](https://one.newrelic.com)でNewRelicアカウントにクエリを実行して、データが到着したことを確認します。
+
+1. スパンデータを表示するには:New Relic UIで、\[**データのクエリ**]をクリックし、次のクエリを実行します。
+
+```
+FROM Span SELECT * where telemetry.sdk.name = 'opentelemetry'
+```
+
+2. 詳細については、 `unknown_service`を検索して[OpenTelemetryサービス](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-view-your-data#explorer)を表示してください。
+
+## サンプルファイル [#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
+```
\ No newline at end of file
diff --git a/src/i18n/content/jp/docs/apm/agents/net-agent/net-agent-api/noticeerror-net-agent-api.mdx b/src/i18n/content/jp/docs/apm/agents/net-agent/net-agent-api/noticeerror-net-agent-api.mdx
index f00baf4cf6d..c6e90a0bb81 100644
--- a/src/i18n/content/jp/docs/apm/agents/net-agent/net-agent-api/noticeerror-net-agent-api.mdx
+++ b/src/i18n/content/jp/docs/apm/agents/net-agent/net-agent-api/noticeerror-net-agent-api.mdx
@@ -100,7 +100,7 @@ NewRelic.Api.Agent.NewRelic.NoticeError(string $error_message, IDictionary $attr
- 必須。例外であるかのようにNewRelicに報告する文字列を指定します。このメソッドは、[エラーイベント](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#events)と[エラートレース](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#trace-details)の両方を作成します。エラーイベントでは最初の255文字のみが保持され、エラートレースではメッセージ全体が保持されます。
+ 必須。例外であるかのようにNewRelicに報告する文字列を指定します。このメソッドは、[エラーイベント](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#events)と[エラートレース](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#trace-details)の両方を作成します。エラーイベントでは最初の1023文字のみが保持され、エラートレースではメッセージ全体が保持されます。
|
@@ -132,7 +132,7 @@ NewRelic.Api.Agent.NewRelic.NoticeError(string $error_message, IDictionary $attr
- 必須。例外であるかのようにNewRelicに報告する文字列を指定します。このメソッドは、[エラーイベント](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#events)と[エラートレース](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#trace-details)の両方を作成します。エラーイベントでは最初の255文字のみが保持され、エラートレースではメッセージ全体が保持されます。
+ 必須。例外であるかのようにNewRelicに報告する文字列を指定します。このメソッドは、[エラーイベント](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#events)と[エラートレース](/docs/apm/apm-ui-pages/error-analytics/manage-error-data#trace-details)の両方を作成します。エラーイベントでは最初の1023文字のみが保持され、エラートレースではメッセージ全体が保持されます。
|
diff --git a/src/i18n/content/jp/docs/apm/agents/nodejs-agent/hosting-services/install-new-relic-nodejs-agent-gae-flexible-environment.mdx b/src/i18n/content/jp/docs/apm/agents/nodejs-agent/hosting-services/install-new-relic-nodejs-agent-gae-flexible-environment.mdx
index 45fb49e101e..8c1c2d32bec 100644
--- a/src/i18n/content/jp/docs/apm/agents/nodejs-agent/hosting-services/install-new-relic-nodejs-agent-gae-flexible-environment.mdx
+++ b/src/i18n/content/jp/docs/apm/agents/nodejs-agent/hosting-services/install-new-relic-nodejs-agent-gae-flexible-environment.mdx
@@ -19,19 +19,19 @@ New Relic の [Node.js エージェント](/docs/agents/nodejs-agent/getting-sta
Google App Engineの [" ネイティブモード"](/docs/accounts-partnerships/partnerships/google-cloud-platform-gcp/google-app-engine-environment#native-mode) のインストールをNode.jsアプリで使用するには。
-1. 標準的な手順に従って、 [New Relic の Node.js エージェント](/docs/agents/nodejs-agent/installation-configuration/install-nodejs-agent) をインストールします。その際、 [ライセンスキー](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key) も一緒にインストールします。 `newrelic` モジュールを `package.json` ファイルに必ず保存してください。
+1. 標準の手順に従って、[ライセンスキー](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key)を含む[NewRelicのNode.jsエージェントをインストール](/docs/agents/nodejs-agent/installation-configuration/install-nodejs-agent)します。必ず`newrelic`モジュールを`package.json`ファイルに保存してください。
2. [Google App Engine procedures for Node.js](https://cloud.google.com/appengine/docs/flexible/nodejs/quickstart) に従って、新しい Cloud Platform プロジェクトを作成し、App Engine アプリケーションを作成し、 [Google Cloud SDK](https://cloud.google.com/sdk/gcloud/) のその他の前提条件を満たします。
-3. オプションです。環境変数を設定して、Node.js エージェントの [GAE `app.yaml` ファイル](https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml).
+3. オプション:環境変数を設定して、Node.jsエージェントの[GAE `app.yaml`ファイル](https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml)を構成します。
-4. GAE アプリをデプロイするには、Google Cloud SDK の `gcloud` コマンドラインツールを使用します。 [初期化されたGAEフレキシブル環境にNode.jsアプリをデプロイするには](https://cloud.google.com/sdk/docs/initializing) 、以下のコマンドを実行します。
+4. Google Cloud SDKの`gcloud`コマンドラインツールを使用して、GAEアプリをデプロイします。 Node.jsアプリを[初期化されたGAEフレキシブル環境](https://cloud.google.com/sdk/docs/initializing)にデプロイするには、次のコマンドを実行します。
```
gcloud --project new-relic-apm-nodejs app deploy
```
-Google App Engine は、Node.js アプリの `newrelic.js` 設定ファイルを、デプロイされたパッケージに自動的に含めます。デプロイが完了するまで待ってから、GAE flex アプリのデータを [APM **Summary** ページ](/docs/apm/applications-menu/monitoring/apm-overview-page) で確認してください。
+Google App Engineは、デプロイされたパッケージにNode.jsアプリの`newrelic.js`構成ファイルを自動的に含めます。展開が完了するまで待ってから、 [\[APMの**概要\]**ページ](/docs/apm/applications-menu/monitoring/apm-overview-page)でGAEフレックスアプリのデータを表示します。
## カスタムランタイムの構築 [#build-runtime]
@@ -47,18 +47,18 @@ GAEフレキシブル環境でのNode.jsアプリのデプロイと設定につ
id="setup-gae"
title="1.GAEプロジェクトの設定と依存関係のインストール"
>
- 1. 標準的な手順に従って、 [New Relic の Node.js エージェント](/docs/agents/nodejs-agent/installation-configuration/install-nodejs-agent) をインストールします。その際、 [ライセンスキー](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key) も一緒にインストールします。 `newrelic` モジュールを `package.json` ファイルに必ず保存してください。
+ 1. 標準の手順に従って、[ライセンスキー](/docs/apis/intro-apis/new-relic-api-keys/#ingest-license-key)を含む[NewRelicのNode.jsエージェントをインストール](/docs/agents/nodejs-agent/installation-configuration/install-nodejs-agent)します。必ず`newrelic`モジュールを`package.json`ファイルに保存してください。
2. [Google App Engine procedures for Node.js](https://cloud.google.com/appengine/docs/flexible/nodejs/quickstart) に従って、新しい Cloud Platform プロジェクトを作成し、App Engine アプリケーションを作成し、 [Google Cloud SDK](https://cloud.google.com/sdk/gcloud/) のその他の前提条件を満たします。
- Google Cloud SDKは、GAEアプリを管理・展開するためのコマンドラインツール `gcloud` を提供しています。
+ Google Cloud SDKは、GAEアプリを管理およびデプロイするための`gcloud`コマンドラインツールを提供します。
- `app.yaml` 設定ファイルは、カスタムランタイムを持つGAEフレキシブル環境アプリに必要です。最低限、それが含まれていることを確認してください。
+ カスタムランタイムを備えたGAEフレキシブル環境アプリには`app.yaml`構成ファイルが必要です。少なくとも、次のものが含まれていることを確認してください。
```
runtime: custom
@@ -82,28 +82,24 @@ GAEフレキシブル環境でのNode.jsアプリのデプロイと設定につ
## オプションヘルスチェックの無効化 [#health-checks]
-Google App Engine は、インスタンスが正常にデプロイされたことを確認するため、および実行中のインスタンスが健全な状態を維持していることを確認するために、 [定期的にヘルス チェック リクエストを送信します。ヘルスチェックは、URL `/_ah/health` への HTTP リクエストです。](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
+Google App Engine [は定期的にヘルスチェックリクエスト](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)を送信して、インスタンスが正常にデプロイされたことを確認し、実行中のインスタンスが正常なステータスを維持していることを確認します。ヘルスチェックは、URL `/_ah/health`へのHTTPリクエストです。
-[カスタムランタイムを作成する場合は、アプリが大量のヘルスチェックリクエストを処理できなければなりません。そうしないと、アプリのデータがAPMで正しく表示されない可能性があります。](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
+カスタムランタイムを作成する場合は、アプリが大量のヘルスチェックリクエストを処理できなければなりません。そうしないと、アプリのデータがAPMで正しく表示されない可能性があります。
-[パフォーマンスに問題がある場合は、GAE のヘルスチェックを無効にしてください。 `app.yaml` に、以下を追加します。](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
+パフォーマンスの問題に気付いた場合は、GAEヘルスチェックを無効にしてください。 `app.yaml`に、次を追加します。
```
health_check:
enable_health_check: False
```
-## [GAEからNew Relicエージェントのトラブルシューティングログを取得する [#agent-logs]](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
+## GAEからNew Relicエージェントのトラブルシューティングログを取得する [#agent-logs]
-[GAE flex環境アプリのトラブルシューティングには、これらのリソースをご利用ください。](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
+GAE flex環境アプリのトラブルシューティングには、これらのリソースをご利用ください。
-* [](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
+* GAE インスタンスに接続して、コードを実行している Docker コンテナでシェルを起動するには、 [Debugging an instance](https://cloud.google.com/appengine/docs/flexible/go/debugging-an-instance) を参照してください。
-* [](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)
-
- [GAE インスタンスに接続して、コードを実行している Docker コンテナでシェルを起動するには、 ](https://cloud.google.com/appengine/docs/flexible/go/configuring-your-app-with-app-yaml#health_checks)[Debugging an instance](https://cloud.google.com/appengine/docs/flexible/go/debugging-an-instance) を参照してください。
-
-* New Relic Node.js エージェントのログを [Stackdriver](http://cloud.google.com/logging/docs/view/logs_viewer_v2) in [Cloud Platform Console](https://cloud.google.com/compute/docs/console) にリダイレクトするには、 `newrelic.js` の設定ファイルを変更します。
+* NewRelicNode.jsエージェントログを[CloudPlatformConsole](https://cloud.google.com/compute/docs/console)の[Stackdriver](http://cloud.google.com/logging/docs/view/logs_viewer_v2)にリダイレクトするには、 `newrelic.js`構成ファイルを次のように変更します。
```
log_file_name: STDOUT
diff --git a/src/i18n/content/jp/docs/apm/agents/php-agent/features/distributed-tracing-php-agent.mdx b/src/i18n/content/jp/docs/apm/agents/php-agent/features/distributed-tracing-php-agent.mdx
index 0bd0fdd5afc..5673c51e955 100644
--- a/src/i18n/content/jp/docs/apm/agents/php-agent/features/distributed-tracing-php-agent.mdx
+++ b/src/i18n/content/jp/docs/apm/agents/php-agent/features/distributed-tracing-php-agent.mdx
@@ -8,6 +8,10 @@ metaDescription: 'For New Relic''s PHP agent: how to enable distributed tracing
translationType: machine
---
+
+ PHP Agentバージョン9.21.0.311以降、分散トレースはデフォルトで有効になっており、スパン数はデフォルトで2000、最大で10000に設定できるようになりました。これにより、非推奨となるクロスアプリケーショントレースが置き換えられます。分散トレース設定が取り込みのニーズに対応していることを確認してください。
+
+
New Relic の PHP エージェントは、 [分散型トレース](/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing) (PHP エージェント バージョン 9.8 以降、 [W3C Trace Context](/docs/understand-dependencies/distributed-tracing/get-started/introduction-distributed-tracing#w3c-support) を含む) をサポートしています。これにより、リクエストが分散システムを通過する際の経路を確認することができます。このドキュメントでは、PHP アプリケーションやサービスで分散型トレースを有効にするための PHP 固有のヒントを紹介します。
## PHPの分散型トレーシングを有効にする [#enable-distributed]
@@ -76,7 +80,7 @@ PHPエージェントは、いくつかのネイティブなPHP関数やサー
分散トレーシングのサポートは、PHPエージェントの [トランザクショントレーサー](/docs/agents/php-agent/configuration/php-agent-configuration#inivar-tt-enable) に依存します。 [分散トレーシングが有効になっている場合](#enable-distributed) 、 [スパン](/docs/apm/distributed-tracing/ui-data/distributed-tracing-attributes) は、トランザクショントレーサーが見る各セグメントに対して作成されます。
-[](/docs/apm/distributed-tracing/getting-started/how-new-relic-distributed-tracing-works)スパンがサンプリングされると、PHPエージェントは、外部からの電話に関連するスパンを他のスパンよりも優先し、その期間の降順で記録します。
+[スパンがサンプリングさ](/docs/apm/distributed-tracing/getting-started/how-new-relic-distributed-tracing-works)れると、PHPエージェントは、外部呼び出しに関連するスパンを他のスパンよりも優先し、期間の降順で記録されます。トランザクションごとにサンプリングされるスパンの最大数を決定するため[のini設定](/docs/agents/php-agent/configuration/php-agent-configuration#inivar-span-events-max-samples-stored)があり、パフォーマンスに影響を与える可能性があります。
PHP関数呼び出しについて報告されている重要でないスパンが多すぎる場合は、 [`newrelic.transaction_tracer.detail`](/docs/agents/php-agent/configuration/php-agent-configuration#inivar-tt-detail)を`0`に設定することで、トランザクショントレーサーの詳細を減らすことができます。次に、 [`newrelic.transaction_tracer.custom`](/docs/agents/php-agent/configuration/php-agent-configuration#inivar-tt-custom)構成設定または[`newrelic_add_custom_tracer`](/docs/agents/php-agent/php-agent-api/newrelic_add_custom_tracer) APIメソッドを使用して、トレースに追加する特定のPHP関数またはメソッドのトレースセグメントとスパンを追加できます。
diff --git a/src/i18n/content/jp/docs/apm/agents/python-agent/hosting-services/python-agent-heroku.mdx b/src/i18n/content/jp/docs/apm/agents/python-agent/hosting-services/python-agent-heroku.mdx
index f66b6bc3a6a..2669edfb273 100644
--- a/src/i18n/content/jp/docs/apm/agents/python-agent/hosting-services/python-agent-heroku.mdx
+++ b/src/i18n/content/jp/docs/apm/agents/python-agent/hosting-services/python-agent-heroku.mdx
@@ -46,7 +46,7 @@ PythonアプリをHerokuにデプロイした後、Pythonエージェントを
>
PythonエージェントアドオンをHerokuでインストールするには、ツールベルト。
- 1. 次のコマンドを実行してください。 `$planlevel` は、 [適切なサブスクリプションプラン](https://elements.heroku.com/addons/newrelic#pricing) 。
+ 1. 次のコマンドを実行します。ここで、 `$planlevel`は[適切なサブスクリプションプラン](https://elements.heroku.com/addons/newrelic#pricing)です。
```
heroku addons:create newrelic:$planlevel
@@ -84,7 +84,7 @@ heroku config:set NEW_RELIC_APP_NAME='Your Application Name'
newrelic
```
-2. **Django ユーザー:** Procfile の **web** エントリを修正し、その値の前に `newrelic-admin run-program` を付けます。たとえば、以下のようになります。
+2. **Djangoユーザー:** Procfileの**Web**エントリを変更し、値の前に`newrelic-admin run-program`を付けます。例えば:
```
web: newrelic-admin run-program gunicorn mysite.wsgi
@@ -98,7 +98,7 @@ heroku config:set NEW_RELIC_APP_NAME='Your Application Name'
Herokuはパッケージをキャッシュしており、Pythonエージェントの新しいバージョンが利用可能になっても検出されません。強制的にアップグレードするには
-1. **requirements.txt** ファイルを編集して、特定のPythonエージェントのバージョン(`n.n.n.n`)をパッケージ名に含めます。
+1. パッケージ名に特定のPythonエージェントバージョン( `n.n.n.n` )を含めて、 **requirements.txt**ファイルを編集します。
```
newrelic==n.n.n.n
@@ -141,8 +141,8 @@ heroku run newrelic-admin validate-config - stdout
Pythonエージェントを初期化するために
1. プロジェクトのルートから、 **プロセスファイル** を探します。
-2. `web` **Procfile** のエントリーを変更して、Python Web アプリケーションを起動するために何をするかを定義します。
-3. 以下の例を参考に、コマンドの先頭に `newrelic-admin run-program` を挿入してください。
+2. **Procfile**の`web`エントリを変更して、PythonWebアプリケーションを起動するために何をするかを定義します。
+3. コマンドの先頭に`newrelic-admin run-program`を挿入するには、次の例を参照してください。
4. Pythonエージェントのadminスクリプトの制御下でPythonウェブアプリケーションを実行します。
@@ -185,7 +185,7 @@ Pythonエージェントを初期化するために
- `INSTALLED_APPS にリストアップされている gunicorn を搭載した Django。`
+ に記載されているgunicornを使用したDjango `INSTALLED_APPS`
|
@@ -223,7 +223,7 @@ Pythonエージェントを初期化するために
|
- 操作...
+ これを行う...
|
@@ -253,7 +253,7 @@ Pythonエージェントを初期化するために
- `プレ` デコレーションスタイルで包みます。
+ `pre`デコレータスタイルでラップします。
```
import myapp
@@ -267,9 +267,9 @@ Pythonエージェントを初期化するために
## セロリのタスクを追跡する [#tracking-of-celery-tasks]
-Webアプリケーションに対するバックグラウンドタスクとしてCeleryタスクの実行時間を記録するには、Celeryホストのスタートアップを `newrelic-admin` コマンドでラップします。
+Celeryタスクの実行時間をWebアプリケーションに対するバックグラウンドタスクとして記録するには、Celeryホストの起動を`newrelic-admin`コマンドでラップします。
-**Procfile** の `worker` エントリで定義された既存の起動コマンドにプレフィックスを付けます。
+**Procfile**の`worker`エントリで定義されている既存のスタートアップコマンドのプレフィックスを付けます。
```
worker: newrelic-admin run-program python hellodjango/manage.py celeryd -E -B --loglevel=INFO
@@ -285,7 +285,7 @@ Herokuのウェブサーバーのログにアクセスするには、次のよ
heroku logs
```
-デフォルトでは、Python エージェントは `info` レベルでログを記録します。New Relic サポートが別のレベルのログを要求する場合は、手動で設定変数を追加する必要があります。例えば、ロギング出力を `debug` に設定するには、次のように実行します。
+デフォルトでは、Pythonエージェントは`info`レベルでログに記録します。 New Relic Supportが代替レベルのロギングを要求する場合は、手動で構成変数を追加する必要があります。たとえば、ログ出力を`debug`に設定するには、次のコマンドを実行します。
```
heroku config:add NEW_RELIC_LOG_LEVEL=debug
@@ -294,7 +294,7 @@ heroku config:add NEW_RELIC_LOG_LEVEL=debug
ログレベルを変更すると、アプリケーションは自動的に再起動します。
- `debug` log levelでは、大量の出力が発生します。この設定が不要になったら、すぐに実行して削除してください。
+ `debug`ログレベルは大量の出力を生成します。次のコマンドを実行して、この設定が不要になったらすぐに削除してください。
```
heroku config:remove NEW_RELIC_LOG_LEVEL
@@ -309,7 +309,7 @@ Heroku のアドオンと New Relic を併用する場合、Python エージェ
その他の設定をカスタマイズするには、HerokuのPythonエージェント設定ファイルを使用します。
-1. **newrelic.ini** エージェント設定ファイルを、Herokuにプッシュアップしているプロジェクトリポジトリのルートディレクトリに追加します。 `[newrelic]` セクションに、特定の設定を含めます。
+1. **newrelic.ini**エージェント構成ファイルをHerokuにプッシュするプロジェクトリポジトリのルートディレクトリに追加します`[newrelic]`セクションに特定の構成設定を含めます。例えば:
```
[newrelic]
@@ -318,7 +318,7 @@ Heroku のアドオンと New Relic を併用する場合、Python エージェ
2. 設定ファイルをリポジトリにコミットし、その変更をHerokuにプッシュします。
-3. `heroku config:add` コマンドを使用して、デプロイしたアプリケーションに **NEW_RELIC_CONFIG_FILE** 環境変数を設定します。
+3. `heroku config:add`コマンドを使用して、デプロイされたアプリケーションの**NEW_RELIC_CONFIG_FILE**環境変数を設定します。
```
heroku config:add NEW_RELIC_CONFIG_FILE=newrelic.ini
diff --git a/src/i18n/content/jp/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration.mdx b/src/i18n/content/jp/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration.mdx
index dc63b3fab78..bb24b60ed0f 100644
--- a/src/i18n/content/jp/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration.mdx
+++ b/src/i18n/content/jp/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration.mdx
@@ -10,14 +10,14 @@ translationType: machine
New Relic Ruby エージェントの設定は、設定ファイルでの設定、環境変数での設定、またはプログラムによるサーバーサイドでの設定があります。本ドキュメントでは、Ruby エージェントで利用可能な設定オプションについてまとめています。
-設定オプションのデフォルト値が `(Dynamic)` となっている場合、これはRubyエージェントが実行時にデフォルト値を計算することを意味します。コンフィグ設定の値は、必要に応じて他の設定の値をデフォルトとします。
+構成オプションのデフォルト値が`(Dynamic)`の場合、これはRubyエージェントが実行時にデフォルトを計算することを意味します。構成設定の値は、デフォルトで別の設定の値になります。
## 設定方法と優先順位 [#Options]
-Rubyエージェントを設定する主な方法(デフォルト)は、 `config` サブディレクトリ内の設定ファイル(`newrelic.yml`)を介して行います。環境変数を使って設定値を設定するには
+Rubyエージェントを構成するための主要な(デフォルトの)方法は、 `config`サブディレクトリーの構成ファイル( `newrelic.yml` )を使用することです。環境変数を使用して構成値を設定するには:
-1. 設定名に「 `NEW_RELIC_` 」というプレフィックスを追加します。
-2. ピリオド `.` をアンダースコアに置き換えてください `_`.
+1. プレフィックス`NEW_RELIC_`を設定の名前に追加します。
+2. ピリオド`.`をアンダースコア`_`に置き換えます。
また、 [サーバーサイドの設定](/docs/agents/manage-apm-agents/configuration/server-side-agent-configuration) を介して、UIでいくつかの値を設定することもできます。
@@ -25,18 +25,18 @@ Rubyエージェントでは、この優先順位に従って設定を行いま
1. 環境変数
2. サーバーサイドコンフィグレーション
-3. 設定ファイル (`newrelic.yml`)
+3. 構成ファイル( `newrelic.yml` )
4. デフォルトのコンフィギュレーション設定
つまり、環境変数は他のすべての設定や情報を上書きし、サーバー側の設定は設定ファイルやデフォルトのコンフィグ設定を上書きする、といった具合です。
## コンフィグファイルオプションの表示と編集 [#Edit]
-Ruby エージェントの `newrelic.yml` は、標準的な YAML 設定ファイルです。一般的には、先頭に `Defaults` があり、その下にアプリケーション環境ごとのセクションがあります。例えば、 `Development`, `Testing`, `Production` のようになっています。
+Rubyエージェントの`newrelic.yml`は標準のYAML構成ファイルです。通常、上部に`Defaults`セクションがあり、各アプリケーション環境の下部にセクションがあります。たとえば、 `Development` 、 `Testing` 、および`Production`です。
-Rubyエージェントは、アプリケーションの環境を導き出すために特定の環境変数を見て、 `newrelic.yml` 設定ファイルのどのセクションから読み込むかを決定します。これは例えば、本番環境では `info` を `log_level` の設定に使用し、開発環境ではより冗長な `log_level` の設定(例えば `debug` など)を使用したい場合に便利です。
+Rubyエージェントは、特定の環境変数を調べてアプリケーションの環境を導出することにより、 `newrelic.yml`構成ファイルのどのセクションから読み取るかを決定します。これは、たとえば、実稼働環境で`log_level`構成設定に`info`を使用し、開発環境でより詳細な`log_level`構成設定( `debug`など)が必要な場合に役立ちます。
-以下は、 `newrelic.yml` 設定ファイルの例です。
+`newrelic.yml`設定ファイルの例を次に示します。
```
common: &default_settings
@@ -58,27 +58,27 @@ development:
4. `APP_ENV`
5. `RACK_ENV`
-Rubyエージェントがこれらの環境変数の値を検出しなかった場合、アプリケーション環境のデフォルトを `development` とし、 `newrelic.yml` 設定ファイルの `development` セクションから読み込みます。
+Rubyエージェントがこれらの環境変数のいずれの値も検出しない場合、Rubyエージェントはデフォルトでアプリケーション環境を`development`に設定し、 `newrelic.yml`構成ファイルの`development`セクションから読み取ります。
-Rails アプリで Ruby エージェントを実行する場合、エージェントはまず `NEW_RELIC_ENV` 環境変数を探し、アプリケーション環境と `newrelic.yml` のどのセクションを使用するかを決定します。 `NEW_RELIC_ENV` が存在しない場合、エージェントはRailsの環境を使用します(`RAILS_ENV` または `RAILS.env` 、Railsのバージョンによって異なります)。
+RailsアプリでRubyエージェントを実行する場合、エージェントは最初に`NEW_RELIC_ENV`環境変数を探して、アプリケーション環境と`newrelic.yml`のセクションを使用するかを決定します。 `NEW_RELIC_ENV`が存在しない場合、エージェントはRails環境を使用します(Railsのバージョンに応じて`RAILS_ENV`または`RAILS.env` )。
設定ファイルを編集する際には、次のことを確認してください。
* インデントはスペース2つ分のみ。
* **error_collector** のようなスタンザでは、関連する部分のみインデントします。
-正しくインデントされていない場合、エージェントは起動時に `Unable to parse configuration file` エラーを投げる可能性があります。
+正しくインデントしないと、エージェントは起動時に`Unable to parse configuration file`エラーをスローする可能性があります。
-利用可能なRubyエージェントの設定オプションの最新リストを見るには、 `rake newrelic:config:docs` コマンドを使用します。このドキュメントでは、最も一般的なオプションについて説明します。
+使用可能なRubyエージェント構成オプションの最新のリストを表示するには、 `rake newrelic:config:docs`コマンドを使用します。このドキュメントでは、最も一般的なオプションについて説明します。
## 設定ファイルの更新 [#Updates]
-このドキュメントは Ruby エージェントの最新リリースに適用されます。それ以前のバージョンの詳細については、 `newrelic.yml` 自体のコメントを参照してください。
+このドキュメントは、Rubyエージェントの最新リリースに適用されます。以前のバージョンの詳細については、 `newrelic.yml`自体のコメントを参照してください。
-新しいリリース後に `newrelic.yml` ファイルを更新するには、エージェント・ジェムのベース・ディレクトリにあるテンプレートを使用します。新しいバージョンのgemにアップデートする際には、新しい設定オプションを利用するために、 `config/newrelic.yml` と `newrelic.yml` を [インストール・ディレクトリ](/docs/agents/manage-apm-agents/troubleshooting/find-agent-root-directory#ruby-agent) で調べたり、差分を取ったりします。
+新しいリリース後に`newrelic.yml`ファイルを更新するには、エージェントgemのベースディレクトリにあるテンプレートを使用します。新しいgemバージョンに更新するときは、[インストールディレクトリ](/docs/agents/manage-apm-agents/troubleshooting/find-agent-root-directory#ruby-agent)の`config/newrelic.yml`と`newrelic.yml`を調べるか差分をとって、新しい構成オプションを利用してください。
- gemをアップデートしても、自動的にはアップデートされません。 `config/newrelic.yml`.
+ gemを更新しても、 `config/newrelic.yml`は自動的に更新されません。
## 一般
@@ -98,7 +98,7 @@ Rails アプリで Ruby エージェントを実行する場合、エージェ
- 文字列
+ 弦
|
@@ -159,18 +159,18 @@ Rails アプリで Ruby エージェントを実行する場合、エージェ
- `ニューレリック・エージェント・エンabled`
+ `NEW_RELIC_AGENT_ENABLED`
|
|
- `true` の場合、Rubyエージェントの実行を許可します。
+ `true`の場合、Rubyエージェントの実行を許可します。
@@ -180,7 +180,7 @@ Rails アプリで Ruby エージェントを実行する場合、エージェ
- 文字列
+ 弦
|
@@ -190,7 +190,7 @@ Rails アプリで Ruby エージェントを実行する場合、エージェ
- `(ダイナミック)`
+ `(Dynamic)`
|
@@ -206,7 +206,7 @@ Rails アプリで Ruby エージェントを実行する場合、エージェ
- [アプリケーション名](/docs/apm/new-relic-apm/installation-configuration/name-your-application) New Relic UI でデータを集約するために使用するアプリケーションを指定します。 [複数のアプリケーションに同時にデータを報告するには、](/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app) 、セミコロンで区切られた名前のリストを指定します `;` 。例えば、 `MyApp` または `MyStagingApp;Instance1` 。
+ NewRelicUIでデータを集約するために使用する[アプリケーション名](/docs/apm/new-relic-apm/installation-configuration/name-your-application)を指定します。[同時に複数のアプリに](/docs/apm/new-relic-apm/installation-configuration/using-multiple-names-app)データを報告するには、名前のリストをセミコロン`;`で区切って指定します。たとえば、 `MyApp`または`MyStagingApp;Instance1` 。
- `ニューレリック・モニター・モード`
+ `NEW_RELIC_MONITOR_MODE`
|
- `true` の場合、エージェントはアプリに関するデータを New Relic [コレクター](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector) に送信します。
+ `true`の場合、エージェントはアプリに関するデータをNewRelic[コレクター](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#collector)に送信します。
- 文字列
+ 弦
|
|
@@ -288,7 +288,7 @@ Rails アプリで Ruby エージェントを実行する場合、エージェ
- ログメッセージの詳細レベルを設定します。設定可能なログレベルは、冗長度の高い順に以下のとおりです。 `error`, `warn`, `info` or `debug`.
+ ログメッセージの詳細レベルを設定します。冗長性を高める場合に考えられるログレベルは、 `error` 、 `warn` 、 `info` 、または`debug`です。
|