diff --git a/src/i18n/content/jp/docs/apm/agents/java-agent/troubleshooting/jboss-and-wildfly-incomplete-telemetry.mdx b/src/i18n/content/jp/docs/apm/agents/java-agent/troubleshooting/jboss-and-wildfly-incomplete-telemetry.mdx new file mode 100644 index 00000000000..4e79a443c11 --- /dev/null +++ b/src/i18n/content/jp/docs/apm/agents/java-agent/troubleshooting/jboss-and-wildfly-incomplete-telemetry.mdx @@ -0,0 +1,85 @@ +--- +title: JBoss および Wildfly からの不完全なテレメトリのトラブルシューティング +type: troubleshooting +tags: + - Agents + - Java agent + - Troubleshooting +metaDescription: 'If you are running an app using JBoss/Wildfly, you may get incomplete or incorrect telemetry due to classloading issues with classes the agent use if you use Finest level logs. Usually this is resolved by setting a system property jboss.modules.system.pkgs with a comma seperated list of java packages causing this error.' +translationType: machine +--- + +## 問題 [#problem] + +JBoss EAP 7.4 (またはそれ以降) または Wildfly 23 (またはそれ以降) を使用しているアプリから不完全なテレメトリーを取得しています。テレメトリが不完全になる可能性がある原因としては、次のようなものがあります。 + +* Web リクエストは非 Web トランザクションに変換されます +* ディスパッチャー名が間違っています + +`Finest` ログレベルを使用してログを設定し、 `NoClassDefFoundError` スタックトレースが見つかった場合、これは JBoss EAP および Wildfly でのクラスロードの動作方法に問題があることを示しています。 + +エージェントウィーバーは JBoss を使用してアプリ内の特定のクラスをインストルメント化できますが、変更されたクラスは JBoss EAP/Wildfly によって認識されないパッケージやモジュールを使用する可能性があります。その結果、ClassLoader は特定のクラスを見つけることができず、 `NoClassDefFoundError`をスローします。 + +アプリはまだ動作する可能性がありますが、エージェントから送信されたデータは不正確または不完全になります。エージェント バージョン 8.6 以降、Java エージェントは JBoss に特定のパッケージを認識させることができます。これにより、Wildfly/JBoss EAP インストルメンテーションがそのまま使用できるようになりますが、ClassLoader は依然として `NoClassDefFoundError`を返す可能性があります。 + +## 解決 [#solution] + +エージェントのログ レベルを `Finest`に設定する場合は、エージェント ログ ファイルに `NoClassDefFoundError` を含むスタック トレースがないか確認してください。 + +この例は 8.6 でパッチされましたが、 `java.util.logging` パッケージに表示されるこのエラーの例を次に示します。 + +``` +2022-02-01T11:59:16,167-0800 [97709 221] com.newrelic.agent.instrumentation.ClassTransformerServiceImpl FINEST: An error was thrown from instrumentation library com.newrelic.instrumentation.servlet-2.4 +java.lang.NoClassDefFoundError: java/util/logging/Level + at com.nr.instrumentation.servlet24.ServletHelper.setTxNameUsingServletName(ServletHelper.java:187) ~[?:?] + at com.nr.instrumentation.servlet24.ServletHelper.setTransactionName(ServletHelper.java:96) ~[?:?] + at javax.servlet.http.HttpServlet.service(HttpServlet.java) ~[?:?] + at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) ~[?:?] + at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) ~[?:?] + at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) ~[?:?] + at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) ~[?:?] + at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78) ~[?:?] + at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) ~[?:?] + at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) ~[?:?] + at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) ~[?:?] + at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) ~[?:?] + at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) ~[?:?] + at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61) ~[?:?] + at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at org.wildfly.extension.undertow.deployment.GlobalRequestControllerHandler.handleRequest(GlobalRequestControllerHandler.java:68) ~[?:?] + at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) ~[?:?] + at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) ~[undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:269) ~[undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:78) ~[undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:133) ~[undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:130) ~[undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) ~[undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) ~[undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at org.wildfly.extension.undertow.security.SecurityContextThreadSetupAction.lambda$create$0(SecurityContextThreadSetupAction.java:105) ~[?:?] + at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530) ~[?:?] + at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530) ~[?:?] + at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530) ~[?:?] + at org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService$UndertowThreadSetupAction.lambda$create$0(UndertowDeploymentInfoService.java:1530) ~[?:?] + at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:249) [undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:78) [undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:99) [undertow-servlet-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387) [undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841) [undertow-core-2.2.5.Final-redhat-00001.jar!/:2.2.5.Final-redhat-00001] + at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) [jboss-threads-2.4.0.Final-redhat-00001.jar!/:2.4.0.Final-redhat-00001] + at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990) [jboss-threads-2.4.0.Final-redhat-00001.jar!/:2.4.0.Final-redhat-00001] + at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486) [jboss-threads-2.4.0.Final-redhat-00001.jar!/:2.4.0.Final-redhat-00001] + at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377) [jboss-threads-2.4.0.Final-redhat-00001.jar!/:2.4.0.Final-redhat-00001] + at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280) [xnio-api-3.8.4.Final-redhat-00001.jar!/:3.8.4.Final-redhat-00001] + at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312] +``` + +* クラス `java.util.logging.Level` がエラーの原因となるため、 `jboss.modules.system.pkgs`というシステム プロパティを設定する必要があります。これにより、JBoss は `java.util.logging` パッケージ内のすべてのクラスを認識できるようになります。 +* これを解決するには、JBoss に認識させたい Java パッケージのカンマ区切りリストを追加してシステムプロパティを設定します。例: `Djboss.modules.system.pkgs=java.util.logging,javax.management` 。 +* このソリューションを実装した後は、 [サポート](https://support.newrelic.com/s/)に連絡することをお勧めします。エージェント ログで `NoClassDefFoundError` が見つかった場合は、エージェントがそのクラスを使用していることを意味します。サポート チームに通知すると、JBoss がより多くのパッケージを認識できるようにする潜在的なパッチへの扉が開かれます。 \ No newline at end of file diff --git a/src/i18n/content/jp/docs/apm/agents/php-agent/other-integrations/magento-business-insights.mdx b/src/i18n/content/jp/docs/apm/agents/php-agent/other-integrations/magento-business-insights.mdx index 500e405505d..84590bcf099 100644 --- a/src/i18n/content/jp/docs/apm/agents/php-agent/other-integrations/magento-business-insights.mdx +++ b/src/i18n/content/jp/docs/apm/agents/php-agent/other-integrations/magento-business-insights.mdx @@ -31,8 +31,8 @@ New Relic で Magento アプリの監視を開始するには、次の手順に エージェントをインストールするには、次のいずれかのインストール方法を選択します。 - * [ガイド付きインストール](https://one.newrelic.com/launcher/nr1-core.explorer?pane=eyJuZXJkbGV0SWQiOiJucjEtY29yZS5saXN0aW5nIn0=&cards%5B0%5D=eyJuZXJkbGV0SWQiOiJucjEtaW5zdGFsbC1uZXdyZWxpYy5ucjEtaW5zdGFsbC1uZXdyZWxpYyIsImFjdGl2ZUNvbXBvbmVudCI6IlZUU09FbnZpcm9ubWVudCIsInBhdGgiOiJndWlkZWQifQ==) の手順に従って、すばやく簡単にインストール プロセスを実行してください。 - * より高度なインストール プロセスのために[エージェントを手動でインストールする](/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent/) + * [ガイド付きインストール](https://one.newrelic.com/launcher/nr1-core.explorer?pane=eyJuZXJkbGV0SWQiOiJucjEtY29yZS5saXN0aW5nIn0=&cards%5B0%5D=eyJuZXJkbGV0SWQiOiJucjEtaW5zdGFsbC1uZXdyZWxpYy5ucjEtaW5zdGFsbC1uZXdyZWxpYyIsImFjdGl2ZUNvbXBvbmVudCI6IlZUU09FbnZpcm9ubWVudCIsInBhdGgiOiJndWlkZWQifQ==) の手順に従って、迅速かつ簡単なインストール プロセスを実行してください。 + * より高度なインストール プロセスを行うには[、エージェントを手動でインストールします](/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent/) 。 @@ -42,8 +42,8 @@ New Relic で Magento アプリの監視を開始するには、次の手順に エージェントをインストールするには、次のいずれかのインストール方法を選択します。 - * [ガイド付きインストール](https://one.newrelic.com/launcher/nr1-core.settings?pane=eyJuZXJkbGV0SWQiOiJ0dWNzb24ucGxnLWluc3RydW1lbnQtZXZlcnl0aGluZyJ9&cards%5B0%5D=eyJuZXJkbGV0SWQiOiJzZXR1cC1uZXJkbGV0cy5zZXR1cC1waHAtaW50ZWdyYXRpb24iLCJhY2NvdW50SWQiOjI2NDA0MDl9&platform%5BaccountId%5D=1) の手順に従って、すばやく簡単にインストール プロセスを実行してください。 - * より高度なインストール プロセスのために[エージェントを手動でインストールする](/docs/apm/agents/php-agent/installation/php-agent-installation-overview/) + * [ガイド付きインストール](https://one.newrelic.com/launcher/nr1-core.settings?pane=eyJuZXJkbGV0SWQiOiJ0dWNzb24ucGxnLWluc3RydW1lbnQtZXZlcnl0aGluZyJ9&cards%5B0%5D=eyJuZXJkbGV0SWQiOiJzZXR1cC1uZXJkbGV0cy5zZXR1cC1waHAtaW50ZWdyYXRpb24iLCJhY2NvdW50SWQiOjI2NDA0MDl9&platform%5BaccountId%5D=1) の手順に従って、迅速かつ簡単なインストール プロセスを実行してください。 + * より高度なインストール プロセスを行うには[、エージェントを手動でインストールします](/docs/apm/agents/php-agent/installation/php-agent-installation-overview/) 。 @@ -113,99 +113,99 @@ New Relic で Magento アプリの監視を開始するには、次の手順に integrations: - name: nri-flex # interval: 30s - config: - name: MySQLDbFlex - apis: - - database: mysql - # connection string for an rds mysql instance. Be sure to use the writer endpoint here. /sys is the default database. newrelic:Password is the user:pass. - db_conn: newrelic:Root!123@tcp(localhost:3306)/magento2 - logging: - open: true - # custom_attributes: # applies to all queries - # host: CustomMagentoMySQL # custom host name atribute - db_async: true # process queries async - db_queries: - - name: MySQLShowVars - run: SHOW VARIABLES; - custom_attributes: # can apply additional at a nested level - attype: show-vars - host: CustomMagentoMySQL - - name: MySQLShowStatus - run: SHOW STATUS LIKE 'Max%conn%'; - custom_attributes: # can apply additional at a nested level - attype: used-conns - host: CustomMagentoMySQL - - name: MySQLCustomProcessList - run: SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST # grab all processes from MySQL - custom_attributes: # can apply additional at a nested level - attype: info-schema-query - host: CustomMagentoMySQL - - name: MYSQLSalesOrderDetails - run: SELECT grand_total, shipping_amount, subtotal, total_paid, discount_amount, store_currency_code, created_at, updated_at, customer_is_guest, tax_amount, customer_id, status, entity_id AS 'order_id' FROM sales_order; - - name: MySQLSalesOrderCumulative - run: SELECT AVG(grand_total) AS 'average_grand_total', SUM(grand_total) AS 'grand_total_sum', SUM(total_item_count) AS 'total_order_item_count' FROM sales_order; - custom_attributes: # can apply additional at a nested level - attype: blocking-query - host: CustomMagentoMySQL - - name: MySQLSalesOrderByStatus - run: SELECT status AS 'order_status', COUNT(increment_id) AS 'total_orders', (SUM(grand_total)) AS 'total_billed_amount_by_status' FROM sales_order GROUP BY status; - - name: MYSQLSalesOrderByCustomerGroup - run: SELECT SUM(salesOrder.grand_total) AS 'grand_total_sum_of_all_orders', AVG(salesOrder.grand_total) AS 'grand_total_average_of_all_orders', customerGroup.customer_group_code AS 'customer_group_code' FROM `sales_order` salesOrder JOIN `customer_group` customerGroup ON salesOrder.customer_group_id = customerGroup.customer_group_id GROUP BY salesOrder.customer_group_id; - - name: MYSQLSalesOrderByProduct - run: SELECT items.order_id AS 'Order ID', items.created_at AS 'Order Created Date', orders.status AS 'Order Status', items.name AS 'productName', items.sku AS ProductSearchcode, orders.total_item_count AS 'Order Quantity', orders.grand_total AS 'Grand Total' FROM sales_order AS orders JOIN sales_order_item AS items ON items.order_id = orders.entity_id; - - name: MYSQLSalesOrderByCategory - run: SELECT items.name AS Category, AVG(orders.grand_total) AS 'average_order_total' FROM sales_order AS orders JOIN sales_order_item AS items ON items.order_id = orders.entity_id GROUP BY items.name; - - name: MYSQLSalesOrderByRegion - run: SELECT soa.country_id, soa.region_id, dcrn.name 'Region Name', so.entity_id AS 'Order ID', so.grand_total FROM sales_order_address soa JOIN directory_country_region_name dcrn JOIN sales_order so WHERE soa.region_id = dcrn.region_id AND so.entity_id = soa.parent_id; - - name: MYSQLSalesOrderByCustomer - run: SELECT so.customer_id, ce.email, AVG(so.grand_total) AS 'average_grand_total' FROM sales_order so JOIN customer_entity ce ON so.customer_id = ce.entity_id GROUP BY so.customer_id; - - name: MYSQLMagentoDetails - run: SELECT query_text, num_results FROM `search_query`; - - name: MySQLSalesOrderPayment - run: SELECT amount_ordered, shipping_amount, method, additional_information FROM sales_order_payment; - custom_attributes: # can apply additional at a nested level - attype: blocking-query - host: CustomMagentoMySQL - - name: MySQLSalesOrderPaymentCount - run: SELECT count(*) as CountOfOrderByMethod, method as PaymentMethodType FROM `sales_order_payment` group by method; - custom_attributes: # can apply additional at a nested level - attype: blocking-query - host: CustomMagentoMySQL - - name: MySQLCustomerEntity - run: SELECT email, created_at, is_active FROM customer_entity; - - name: MYSQLAbandonedCarts - run: SELECT customer_email, items_count AS 'Products', items_qty AS 'Quantity', subtotal, remote_ip, reserved_order_id FROM `quote` WHERE customer_email IS NOT NULL AND reserved_order_id IS NULL AND subtotal != 0.0000; - - name: MYSQLCustomerEntityRegisteredUsers - run: SELECT count(*) AS 'Registered Accounts' FROM `customer_entity`; - - name: MYSQLUnregisteredCustomers - run: SELECT customer_email FROM sales_order WHERE customer_is_guest = 1 GROUP BY customer_email; - - name: MYSQLSalesOrderByUnregisteredCustomers2 - run: SELECT COUNT(entity_id) AS 'Total Order Ids', SUM(grand_total) AS 'Grand Total Sum' FROM sales_order WHERE customer_is_guest = 1; - - name: MYSQLCustomerEntityActiveUsers - run: SELECT count(is_active) AS 'Active Users' FROM `customer_entity` WHERE is_active = 1; - - name: MYSQLReturningCustomers - run: WITH ctel1 AS (SELECT COUNT(entity_id) AS 'numberOfOrders', customer_email AS 'customerEmail' FROM sales_order GROUP BY customer_email) SELECT count(*) AS 'returningCustomers' FROM ctel1 WHERE numberOfOrders > 1; - - name: MYSQLNewCustomers - run: SELECT COUNT(DISTINCT email) AS 'newCustomers' FROM customer_entity WHERE MONTH(created_at) >= MONTH(CURRENT_DATE() - INTERVAL 1 MONTH); - - name: MYSQLLoginsPerDay - run: SELECT DATE(last_visit_at) as 'Date', count(*) as 'Total Logins', count(DISTINCT customer_id) AS 'Number of Customers' FROM `customer_visitor` GROUP BY customer_id, DATE(last_visit_at); - - name: MYSQLBestSellersDaily - run: SELECT SUM(qty_ordered) as 'QuantityOrdered', product_name FROM sales_bestsellers_aggregated_daily GROUP BY product_id, product_name ORDER BY QuantityOrdered DESC; - - name: MYSQLRevenuePerMonthAndYear - run: SELECT SUM(grand_total) AS 'TotalRevenue', AVG(grand_total) AS 'AverageRevenue', YEAR(created_at) AS 'Year', MONTH(created_at) AS 'Month' FROM sales_order WHERE status = 'complete' GROUP BY YEAR(created_at), MONTH(created_at); - - name: MYSQLMostViewedProductsDaily - run: SELECT SUM(views_num) as 'viewCount', product_name FROM report_viewed_product_aggregated_daily GROUP BY product_name ORDER BY viewCount DESC; - - name: MYSQLConversionRate - run: WITH cte1 AS (SELECT soi.product_id AS 'SalesProductId', soi.name AS 'ProductName', COUNT(soi.order_id) AS 'totalOrders' FROM `sales_order_item` soi group by soi.product_id, soi.name), cte2 AS (SELECT viewed.product_id AS 'productId', COUNT(viewed.product_id) AS 'totalViews' FROM `report_viewed_product_index` viewed group by viewed.product_id) SELECT SalesProductId as 'productID', ProductName, totalViews,totalOrders,totalOrders/totalViews *100 as 'conversionRateInPercent' FROM cte1 JOIN cte2 WHERE cte1.SalesProductId = cte2.ProductId; - - name: MYSQLTopTenSalesOrdersByValue - run: SELECT entity_id AS 'orderId', total_item_count AS 'orderQuantity', created_at AS 'createdDate', grand_total AS 'grandTotal' FROM sales_order ORDER BY grand_total DESC LIMIT 10; - - name: MYSQLOrdersAverage - run: SELECT AVG(order_count) AS 'AverageNumberOfOrders', Year AS 'Year' FROM (SELECT YEAR(created_at) AS 'Year', COUNT(DISTINCT order_id) AS order_count FROM sales_order_item GROUP BY MONTH(created_at), YEAR(created_at)) subquery GROUP BY Year; - - name: MYSQLProductsTotal - run: SELECT count(*) AS 'Total Products' FROM catalog_product_entity_varchar WHERE attribute_id = 73; - custom_attributes: # can apply additional at a nested level - attype: blocking-query - host: CustomMagentoMySQL + config: + name: MySQLDbFlex + apis: + - database: mysql + # connection string for an rds mysql instance. Be sure to use the writer endpoint here. /sys is the default database. newrelic:Password is the user:pass. + db_conn: newrelic:Root!123@tcp(localhost:3306)/magento2 + logging: + open: true + # custom_attributes: # applies to all queries + # host: CustomMagentoMySQL # custom host name atribute + db_async: true # process queries async + db_queries: + - name: MySQLShowVars + run: SHOW VARIABLES; + custom_attributes: # can apply additional at a nested level + attype: show-vars + host: CustomMagentoMySQL + - name: MySQLShowStatus + run: SHOW STATUS LIKE 'Max%conn%'; + custom_attributes: # can apply additional at a nested level + attype: used-conns + host: CustomMagentoMySQL + - name: MySQLCustomProcessList + run: SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST # grab all processes from MySQL + custom_attributes: # can apply additional at a nested level + attype: info-schema-query + host: CustomMagentoMySQL + - name: MYSQLSalesOrderDetails + run: SELECT grand_total, shipping_amount, subtotal, total_paid, discount_amount, store_currency_code, created_at, updated_at, customer_is_guest, tax_amount, customer_id, status, entity_id AS 'order_id' FROM sales_order; + - name: MySQLSalesOrderCumulative + run: SELECT AVG(grand_total) AS 'average_grand_total', SUM(grand_total) AS 'grand_total_sum', SUM(total_item_count) AS 'total_order_item_count' FROM sales_order; + custom_attributes: # can apply additional at a nested level + attype: blocking-query + host: CustomMagentoMySQL + - name: MySQLSalesOrderByStatus + run: SELECT status AS 'order_status', COUNT(increment_id) AS 'total_orders', (SUM(grand_total)) AS 'total_billed_amount_by_status' FROM sales_order GROUP BY status; + - name: MYSQLSalesOrderByCustomerGroup + run: SELECT SUM(salesOrder.grand_total) AS 'grand_total_sum_of_all_orders', AVG(salesOrder.grand_total) AS 'grand_total_average_of_all_orders', customerGroup.customer_group_code AS 'customer_group_code' FROM `sales_order` salesOrder JOIN `customer_group` customerGroup ON salesOrder.customer_group_id = customerGroup.customer_group_id GROUP BY salesOrder.customer_group_id; + - name: MYSQLSalesOrderByProduct + run: SELECT items.order_id AS 'Order ID', items.created_at AS 'Order Created Date', orders.status AS 'Order Status', items.name AS 'productName', items.sku AS ProductSearchcode, orders.total_item_count AS 'Order Quantity', orders.grand_total AS 'Grand Total' FROM sales_order AS orders JOIN sales_order_item AS items ON items.order_id = orders.entity_id; + - name: MYSQLSalesOrderByCategory + run: SELECT items.name AS Category, AVG(orders.grand_total) AS 'average_order_total' FROM sales_order AS orders JOIN sales_order_item AS items ON items.order_id = orders.entity_id GROUP BY items.name; + - name: MYSQLSalesOrderByRegion + run: SELECT soa.country_id, soa.region_id, dcrn.name 'Region Name', so.entity_id AS 'Order ID', so.grand_total FROM sales_order_address soa JOIN directory_country_region_name dcrn JOIN sales_order so WHERE soa.region_id = dcrn.region_id AND so.entity_id = soa.parent_id; + - name: MYSQLSalesOrderByCustomer + run: SELECT so.customer_id, ce.email, AVG(so.grand_total) AS 'average_grand_total' FROM sales_order so JOIN customer_entity ce ON so.customer_id = ce.entity_id GROUP BY so.customer_id; + - name: MYSQLMagentoDetails + run: SELECT query_text, num_results FROM `search_query`; + - name: MySQLSalesOrderPayment + run: SELECT amount_ordered, shipping_amount, method, additional_information FROM sales_order_payment; + custom_attributes: # can apply additional at a nested level + attype: blocking-query + host: CustomMagentoMySQL + - name: MySQLSalesOrderPaymentCount + run: SELECT count(*) as CountOfOrderByMethod, method as PaymentMethodType FROM `sales_order_payment` group by method; + custom_attributes: # can apply additional at a nested level + attype: blocking-query + host: CustomMagentoMySQL + - name: MySQLCustomerEntity + run: SELECT email, created_at, is_active FROM customer_entity; + - name: MYSQLAbandonedCarts + run: SELECT customer_email, items_count AS 'Products', items_qty AS 'Quantity', subtotal, remote_ip, reserved_order_id FROM `quote` WHERE customer_email IS NOT NULL AND reserved_order_id IS NULL AND subtotal != 0.0000; + - name: MYSQLCustomerEntityRegisteredUsers + run: SELECT count(*) AS 'Registered Accounts' FROM `customer_entity`; + - name: MYSQLUnregisteredCustomers + run: SELECT customer_email FROM sales_order WHERE customer_is_guest = 1 GROUP BY customer_email; + - name: MYSQLSalesOrderByUnregisteredCustomers2 + run: SELECT COUNT(entity_id) AS 'Total Order Ids', SUM(grand_total) AS 'Grand Total Sum' FROM sales_order WHERE customer_is_guest = 1; + - name: MYSQLCustomerEntityActiveUsers + run: SELECT count(is_active) AS 'Active Users' FROM `customer_entity` WHERE is_active = 1; + - name: MYSQLReturningCustomers + run: WITH ctel1 AS (SELECT COUNT(entity_id) AS 'numberOfOrders', customer_email AS 'customerEmail' FROM sales_order GROUP BY customer_email) SELECT count(*) AS 'returningCustomers' FROM ctel1 WHERE numberOfOrders > 1; + - name: MYSQLNewCustomers + run: SELECT COUNT(DISTINCT email) AS 'newCustomers' FROM customer_entity WHERE MONTH(created_at) >= MONTH(CURRENT_DATE() - INTERVAL 1 MONTH); + - name: MYSQLLoginsPerDay + run: SELECT DATE(last_visit_at) as 'Date', count(*) as 'Total Logins', count(DISTINCT customer_id) AS 'Number of Customers' FROM `customer_visitor` GROUP BY customer_id, DATE(last_visit_at); + - name: MYSQLBestSellersDaily + run: SELECT SUM(qty_ordered) as 'QuantityOrdered', product_name FROM sales_bestsellers_aggregated_daily GROUP BY product_id, product_name ORDER BY QuantityOrdered DESC; + - name: MYSQLRevenuePerMonthAndYear + run: SELECT SUM(grand_total) AS 'TotalRevenue', AVG(grand_total) AS 'AverageRevenue', YEAR(created_at) AS 'Year', MONTH(created_at) AS 'Month' FROM sales_order WHERE status = 'complete' GROUP BY YEAR(created_at), MONTH(created_at); + - name: MYSQLMostViewedProductsDaily + run: SELECT SUM(views_num) as 'viewCount', product_name FROM report_viewed_product_aggregated_daily GROUP BY product_name ORDER BY viewCount DESC; + - name: MYSQLConversionRate + run: WITH cte1 AS (SELECT soi.product_id AS 'SalesProductId', soi.name AS 'ProductName', COUNT(soi.order_id) AS 'totalOrders' FROM `sales_order_item` soi group by soi.product_id, soi.name), cte2 AS (SELECT viewed.product_id AS 'productId', COUNT(viewed.product_id) AS 'totalViews' FROM `report_viewed_product_index` viewed group by viewed.product_id) SELECT SalesProductId as 'productID', ProductName, totalViews,totalOrders,totalOrders/totalViews *100 as 'conversionRateInPercent' FROM cte1 JOIN cte2 WHERE cte1.SalesProductId = cte2.ProductId; + - name: MYSQLTopTenSalesOrdersByValue + run: SELECT entity_id AS 'orderId', total_item_count AS 'orderQuantity', created_at AS 'createdDate', grand_total AS 'grandTotal' FROM sales_order ORDER BY grand_total DESC LIMIT 10; + - name: MYSQLOrdersAverage + run: SELECT AVG(order_count) AS 'AverageNumberOfOrders', Year AS 'Year' FROM (SELECT YEAR(created_at) AS 'Year', COUNT(DISTINCT order_id) AS order_count FROM sales_order_item GROUP BY MONTH(created_at), YEAR(created_at)) subquery GROUP BY Year; + - name: MYSQLProductsTotal + run: SELECT count(*) AS 'Total Products' FROM catalog_product_entity_varchar WHERE attribute_id = 73; + custom_attributes: # can apply additional at a nested level + attype: blocking-query + host: CustomMagentoMySQL ``` diff --git a/src/i18n/content/jp/docs/apm/apm-ui-pages/monitoring/external-services/external-services-setup.mdx b/src/i18n/content/jp/docs/apm/apm-ui-pages/monitoring/external-services/external-services-setup.mdx index 066744bc93f..c80c88457e1 100644 --- a/src/i18n/content/jp/docs/apm/apm-ui-pages/monitoring/external-services/external-services-setup.mdx +++ b/src/i18n/content/jp/docs/apm/apm-ui-pages/monitoring/external-services/external-services-setup.mdx @@ -4,276 +4,364 @@ metaDescription: Here are steps to enable and configure external services translationType: machine --- -外部サービス機能は、NewRelicAPMエージェントと[OpenTelemetry](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/introduction-opentelemetry-new-relic)で利用できます。手順に従って外部サービスを設定した後、十分なデータが表示されない場合は、[サンプリングレート](#adjust-sampling)を調整する必要があります。 - -## APMエージェント [#externals-and-apm] - -これらの手順は、主に分散トレースに基づく拡張外部サービス機能を対象としています。 - - - 従来の外部サービスをすでに使用しているエージェントのチェーンに新しいサービスを追加する必要がある場合は、従来のバージョンの外部サービスを引き続き使用できます。従来の外部サービスをインストールするには、以下の手順で分散トレースの代わりに[クロスアプリケーショントレース](/docs/apm/transactions/cross-application-traces/introduction-cross-application-traces)を有効にします。 - - -外部サービスで表示するサービスごとに、以下を実行します。 - -1. まだ行っていない場合は、適切なNewRelicAPM[エージェント](/docs/distributed-tracing/enable-configure/quick-start)をインストールします。 - -2. エージェントで分散トレースがオンになっていることを確認します。 - - * 新しいエージェントをインストールした場合、標準の分散トレースはデフォルトでオンになっています。サービスがInfiniteTracingを使用する他のサービスと通信する場合は、InfiniteTracingのヘルプについてエージェントのドキュメントを参照してください。 - * 古いエージェントを使用している場合は、構成手順に従って、標準の分散トレースまたは無限トレースを有効にします。分散トレースを有効にすると、古いクロスアプリケーショントレースが上書きされます。 - -3. エージェントに追加のセットアップ手順が必要かどうかを確認します。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- エージェント - - 最小バージョン - - セットアップ -
- Go - - 3.6.0 - - [`NewRoundTripper()`](/docs/apm/agents/go-agent/instrumentation/instrument-go-segments/)の使用に関するドキュメントを参照してください。 -
- Java - - 5.13.0 - - [JavaエージェントAPI](/docs/apm/agents/java-agent/api-guides/java-agent-api-instrument-external-calls-messaging-datastore-web-frameworks/)を使用して外部呼び出しを計測する方法については、ドキュメントを参照してください。 -
- .NET - - 8.29.0 - - Azureの.NETエージェントと.NETエージェントは、外部呼び出しを自動的にインストルメントしますが、トランザクションのメソッドはインストルメントしません。トランザクションを表示するには、次の組み合わせを使用する必要があります。 - - * [カスタムトランザクション](/docs/agents/net-agent/instrumentation/net-custom-transactions/) - * [計装された労働者の役割](/docs/apm/agents/net-agent/azure-installation/install-net-agent-azure-cloud-services/#requirements) -
- Node.js - - 6.9.0 - - [Node.jsエージェントAPI](/docs/apm/agents/nodejs-agent/api-guides/guide-using-nodejs-agent-api/#external-services)の使用に関するドキュメントを参照してください。 -
- PHP - - 9.12.0.268 - - [PHPエージェントAPI](/docs/apm/agents/php-agent/php-agent-api/guide-using-php-agent-api/#datastore)を使用して外部呼び出しを計測する方法についてのドキュメントを参照してください。 -
- Python - - 5.14.0.142 - - 追加の手順は必要ありません。外部通話は自動的に計測されます。 -
- Ruby - - 6.12.0.367 - - [RubyエージェントAPI](/docs/apm/agents/ruby-agent/api-guides/guide-using-ruby-agent-api/#externals)を使用して外部呼び出しを計測する方法についてのドキュメントを参照してください。 -
- -## OpenTelemetry [#otel-setup] - -サービスの OpenTelemetry インストルメンテーションをセットアップする手順と、他のサービスへの [呼び出しを](https://opentelemetry.io/docs/java/manual_instrumentation/#span-attributes) 完了すると、New Relic UI に外部サービスの詳細が表示されます。 外部サービス機能は、サービス間の呼び出しを、各サービスのトランザクション エンドポイント別に分類して表示します。各トランザクションの名前は、プロセスのエントリ スパン ( `span.kind = "server"` ) から派生します。 - -APMサービスがOpenTelemetryサービス(アップストリームまたはダウンストリーム)に接続されている場合、そのOpenTelemetryサービスはそのAPMサービスのビューに表示されません。これは、APMサービスを表示するときに、この機能がAPMエージェントによってのみ報告されるメトリックを使用するためです。 OpenTelemetryサービスを表示すると、APMサービスが接続として表示されます。 - -表示される情報の品質は、コレクターで使用しているサンプリング戦略によって異なります。サンプリングを使用してUIに表示される内容を制御する方法については、次のセクションを参照してください。 - - - OpenTelemetryデータの100%をTrace APIに送信する場合、組織に特定のレート制限がある場合、またはデフォルトのレート制限をトリガーするのに十分なデータを送信する場合を除き、そのデータの100%が保存されます。 - - -## より多くのUIデータを表示するには、サンプリングを調整します [#adjust-sampling] - -APMエージェントを使用していて、マップの最初のページを超えてドリルを開始したときにデータがほとんどまたはまったく表示されない場合は、より多くのデータをサンプリングするためにスパンリザーバーを調整する必要があります。これは、トランザクションレベルのデータにサンプリングされたトレースデータが入力されるためです。 OpenTelemetryの場合、最初のページとすべてのドリルダウンページの両方にサンプリングされたデータが入力されるため、必要なデータを取得するためにサンプリングを調整する必要がある場合があります。 - -ここでは、APMエージェントのリザーバーを調整するためのさまざまなルーチンに関する情報と、OpenTelemetryのサンプリングを調整するためのヒントを示します。サンプリングの調整についてさらにサポートが必要な場合は、これらの[サポートオプション](https://docs.newrelic.com/docs/licenses/license-information/general-usage-licenses/global-technical-support-offerings/)を参照してください。 - -### APMエージェントのサンプリング [#sampling-agents] - - - これらの手順は、従来の外部サービスには適用されません。 - - -すべてのAPMエージェントにはスパンを格納するリザーバーがあり、これらのエージェントリザーバーのほとんどは構成可能です。このリザーバーのサイズは、エージェントが作成するすべてのスパンを送信できる可能性に影響します。詳細については、 [断片化されたトレース](/docs/distributed-tracing/ui-data/understand-use-distributed-tracing-ui/#fragmented-traces)を参照してください。 - -この機能のデータは、あるサービスから別のサービスへの外部呼び出しが行われる隣接するクライアントおよびサーバースパンから取得されます。エージェントがスパンリザーバの制限に達すると、これらのコールを表すいくつかのスパンをドロップする可能性があります。 - -デフォルトのエージェント設定値2000は、エージェントが1分間に収集するイベントの最大数を定義します。この数よりも多くのスパンがある場合、エージェントは統計サンプリングを収集し、外部サービスマップで使用されるデータの量を本質的に低下させます。 - -UIに必要な種類の詳細が表示されない場合は、リザーバーのサイズを最大10,000まで増やすことができます。エージェントリザーバーを調整するには、以下を確認してください。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- APMエージェント - - ドキュメント -
- Go - - リザーバーは現在構成できません -
- Java - - [Java構成](/docs/apm/agents/java-agent/configuration/java-agent-configuration-config-file/#cfg-span-events-max-samples-stored) -
- .NET - - [.NET構成](/docs/apm/agents/net-agent/configuration/net-agent-configuration/#paragrp-max-samples-stored) -
- Node.js - - [Node.js構成](/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration/#span-events-max-samples-stored) -
- PHP - - リザーバーは現在構成できません -
- Python - - [Python 構成](/docs/apm/agents/python-agent/configuration/python-agent-configuration/#environment-variables) ( `NEW_RELIC_SPAN_EVENTS_MAX_SAMPLES_STORED`を参照) -
- Ruby - - [Ruby構成](/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration/#span_events-max_samples_stored) -
- -### OpenTelemetryサンプリング [#otel-sampling] - - - このセクションは、サービスが OpenTelemetry Collector 経由で New Relic にデータを送信している場合にのみ適用されます。これは、データが OpenTelemetry Collector でサンプリングされていないためです。 - - -OpenTelemetryの場合、すべての外部サービスビューにはサンプリングされたトレースが入力されます。これは、十分な有用なデータが表示されない可能性があることを意味します。これを解決するには、コレクターのサンプリングを変更して、より多くのデータをNewRelicに入れることができます。 - -構成に関するヒントについては、 [サンプリング](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-concepts/#sampling)を参照してください。 +外部サービス機能は、New Relic APM エージェントと [OpenTelemetry](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/introduction-opentelemetry-new-relic)で利用できます。 + +できるだけ早く立ち上げて実行したい場合は、APM エージェントを使用することをお勧めします。 + +ロゴをクリックすると New Relic プラットフォームに移動し、ガイドに従ってエージェントのインストールと構成を行います。 + + + + + + + + + + + + + + + + + +## 外部サービスの設定 + +次の手順では、外部サービスをセットアップする手順を説明します。 + + + + ### データの送信を開始する + + 外部サービスのセットアップは、APM エージェントを使用しているか OpenTelemetry を使用しているかによって異なります。お使いのシステムに合ったインストール オプションのタブを選択します。 + + + + + APMエージェント + + + + OpenTelemetry + + + + + + 外部サービスで表示するサービスごとに、以下を実行します。 + + 1. まだ行っていない場合は、適切なNewRelicAPM[エージェント](/docs/distributed-tracing/enable-configure/quick-start)をインストールします。 + + 2. エージェントで分散トレースがオンになっていることを確認します。 + + * 新しいエージェントをインストールした場合、標準の分散トレースはデフォルトでオンになっています。サービスがInfiniteTracingを使用する他のサービスと通信する場合は、InfiniteTracingのヘルプについてエージェントのドキュメントを参照してください。 + * 古いエージェントを使用している場合は、構成手順に従って、標準の分散トレースまたは無限トレースを有効にします。分散トレースを有効にすると、古いクロスアプリケーショントレースが上書きされます。 + + 3. エージェントに追加のセットアップ手順が必要かどうかを確認します。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ エージェント + + 最小バージョン + + セットアップ +
+ Go + + 3.6.0 + + [`NewRoundTripper()`](/docs/apm/agents/go-agent/instrumentation/instrument-go-segments/)の使用に関するドキュメントを参照してください。 +
+ Java + + 5.13.0 + + [JavaエージェントAPI](/docs/apm/agents/java-agent/api-guides/java-agent-api-instrument-external-calls-messaging-datastore-web-frameworks/)を使用して外部呼び出しを計測する方法については、ドキュメントを参照してください。 +
+ .NET + + 8.29.0 + + Azureの.NETエージェントと.NETエージェントは、外部呼び出しを自動的にインストルメントしますが、トランザクションのメソッドはインストルメントしません。トランザクションを表示するには、次の組み合わせを使用する必要があります。 + + * [カスタムトランザクション](/docs/agents/net-agent/instrumentation/net-custom-transactions/) + * [計装された労働者の役割](/docs/apm/agents/net-agent/azure-installation/install-net-agent-azure-cloud-services/#requirements) +
+ Node.js + + 6.9.0 + + [Node.jsエージェントAPI](/docs/apm/agents/nodejs-agent/api-guides/guide-using-nodejs-agent-api/#external-services)の使用に関するドキュメントを参照してください。 +
+ PHP + + 9.12.0.268 + + [PHPエージェントAPI](/docs/apm/agents/php-agent/php-agent-api/guide-using-php-agent-api/#datastore)を使用して外部呼び出しを計測する方法についてのドキュメントを参照してください。 +
+ Python + + 5.14.0.142 + + 追加の手順は必要ありません。外部通話は自動的に計測されます。 +
+ Ruby + + 6.12.0.367 + + [RubyエージェントAPI](/docs/apm/agents/ruby-agent/api-guides/guide-using-ruby-agent-api/#externals)を使用して外部呼び出しを計測する方法についてのドキュメントを参照してください。 +
+ + + 従来の外部サービスをすでに使用しているエージェントのチェーンに新しいサービスを追加する必要がある場合は、従来のバージョンの外部サービスを引き続き使用できます。従来の外部サービスをインストールするには、以下の手順で分散トレースの代わりに[クロスアプリケーショントレース](/docs/apm/transactions/cross-application-traces/introduction-cross-application-traces)を有効にします。 + +
+ + + サービスの OpenTelemetry インストルメンテーションをセットアップする手順と、他のサービスへの [呼び出しを](https://opentelemetry.io/docs/java/manual_instrumentation/#span-attributes) 完了すると、New Relic UI に外部サービスの詳細が表示されます。 外部サービス機能は、サービス間の呼び出しを、各サービスのトランザクション エンドポイント別に分類して表示します。各トランザクションの名前は、プロセスのエントリ スパン ( `span.kind = "server"` ) から派生します。 + + APMサービスがOpenTelemetryサービス(アップストリームまたはダウンストリーム)に接続されている場合、そのOpenTelemetryサービスはそのAPMサービスのビューに表示されません。これは、APMサービスを表示するときに、この機能がAPMエージェントによってのみ報告されるメトリックを使用するためです。 OpenTelemetryサービスを表示すると、APMサービスが接続として表示されます。 + + 表示される情報の品質は、コレクターで使用しているサンプリング戦略によって異なります。サンプリングを使用してUIに表示される内容を制御する方法については、次のセクションを参照してください。 + + + OpenTelemetryデータの100%をTrace APIに送信する場合、組織に特定のレート制限がある場合、またはデフォルトのレート制限をトリガーするのに十分なデータを送信する場合を除き、そのデータの100%が保存されます。 + + +
+
+
+ + + ### より多くのUIデータを表示するには、サンプリングを調整します [#adjust-sampling] + + APM エージェントを使用していて、マップの最初のページを超えてドリルを開始したときにデータがほとんど、またはまったく表示されない場合は、より多くのデータをサンプリングするためにスパン リザーバーを調整する必要がある場合があります。これは、トランザクション レベルのデータがサンプリングされたトレース データによって設定されるためです。 + + OpenTelemetry の場合、最初のページとすべてのドリルダウン ページの両方にサンプリングされたデータが入力されるため、必要なデータを取得するにはサンプリングでいくつかの調整が必要になる場合があります。 + + ここでは、APM エージェントのリザーバーを調整するためのさまざまなルーチンに関する情報と、OpenTelemetry のサンプリングを調整するためのヒントを示します。 + + + + + APMエージェントのサンプリング + + + + OpenTelemetryサンプリング + + + + + + すべてのAPMエージェントにはスパンを格納するリザーバーがあり、これらのエージェントリザーバーのほとんどは構成可能です。このリザーバーのサイズは、エージェントが作成するすべてのスパンを送信できる可能性に影響します。詳細については、 [断片化されたトレース](/docs/distributed-tracing/ui-data/understand-use-distributed-tracing-ui/#fragmented-traces)を参照してください。 + + この機能のデータは、あるサービスから別のサービスへの外部呼び出しが行われる隣接するクライアントおよびサーバースパンから取得されます。エージェントがスパンリザーバの制限に達すると、これらのコールを表すいくつかのスパンをドロップする可能性があります。 + + デフォルトのエージェント設定値2000は、エージェントが1分間に収集するイベントの最大数を定義します。この数よりも多くのスパンがある場合、エージェントは統計サンプリングを収集し、外部サービスマップで使用されるデータの量を本質的に低下させます。 + + UIに必要な種類の詳細が表示されない場合は、リザーバーのサイズを最大10,000まで増やすことができます。エージェントリザーバーを調整するには、以下を確認してください。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ APMエージェント + + ドキュメント +
+ Go + + リザーバーは現在構成できません +
+ Java + + [Java構成](/docs/apm/agents/java-agent/configuration/java-agent-configuration-config-file/#cfg-span-events-max-samples-stored) +
+ .NET + + [.NET構成](/docs/apm/agents/net-agent/configuration/net-agent-configuration/#paragrp-max-samples-stored) +
+ Node.js + + [Node.js構成](/docs/apm/agents/nodejs-agent/installation-configuration/nodejs-agent-configuration/#span-events-max-samples-stored) +
+ PHP + + リザーバーは現在構成できません +
+ Python + + [Python 構成](/docs/apm/agents/python-agent/configuration/python-agent-configuration/#environment-variables) ( `NEW_RELIC_SPAN_EVENTS_MAX_SAMPLES_STORED`を参照) +
+ Ruby + + [Ruby構成](/docs/apm/agents/ruby-agent/configuration/ruby-agent-configuration/#span_events-max_samples_stored) +
+
+ + + + このセクションは、サービスが OpenTelemetry Collector 経由で New Relic にデータを送信している場合にのみ適用されます。これは、データが OpenTelemetry Collector でサンプリングされていないためです。 + + + OpenTelemetryの場合、すべての外部サービスビューにはサンプリングされたトレースが入力されます。これは、十分な有用なデータが表示されない可能性があることを意味します。これを解決するには、コレクターのサンプリングを変更して、より多くのデータをNewRelicに入れることができます。 + + 構成に関するヒントについては、 [サンプリング](https://docs.newrelic.com/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-concepts/#sampling)を参照してください。 + +
+
+
+
## 次は何ですか? [#next] -UIを理解する方法について質問がある場合は、[ヒント](/docs/apm/apm-ui-pages/monitoring/external-services/external-services-ui)を参照してください。 \ No newline at end of file +* 外部サービスを使用して [API の問題をトラブルシューティングする](/docs/tutorial-external-services/respond-external)方法を学ぶ +* [外部サービス UI の操作](/docs/apm/apm-ui-pages/monitoring/external-services/external-services-ui)について詳しくは、こちらをご覧ください。 +* UIを理解する方法について質問がある場合は、[ヒント](/docs/apm/apm-ui-pages/monitoring/external-services/external-services-ui)を参照してください。 \ No newline at end of file diff --git a/src/i18n/content/jp/docs/codestream/codestream-integrations/msteams-integration.mdx b/src/i18n/content/jp/docs/codestream/codestream-integrations/msteams-integration.mdx index dd1a4d49e7c..d4008143a64 100644 --- a/src/i18n/content/jp/docs/codestream/codestream-integrations/msteams-integration.mdx +++ b/src/i18n/content/jp/docs/codestream/codestream-integrations/msteams-integration.mdx @@ -6,6 +6,8 @@ translationType: machine import codestreamMsteamsCodestreamAppPage from 'images/codestream_screenshot-crop_msteams-codestream-app-page.webp' +import codestreamMsteamsConnect from 'images/codestream_screenshot-connect-msteams.webp' + import codestreamMsteamsCodestreamBotWelcome from 'images/codestream_screenshot-crop_msteams-welcome.webp' import codestreamMsteamsTokenExample from 'images/codestream_screenshot-crop_msteams-token-example.webp' @@ -18,49 +20,70 @@ import codestreamMsteamsCodestreamSelectChannel from 'images/codestream_screensh import codestreamMsteamsExampleCodestreamMessage from 'images/codestream_screenshot-crop_msteams-example-codestream-message.webp' -New Relic CodeStream を Microsoft Teams チャンネルに接続します。 +New Relic CodeStream を Microsoft Teams 組織に接続します。 -コードマークを投稿すると、チームメイトにはアクティビティフィードで通知され、メールでも通知されます。しかし、時には、Microsoft Teamsにも共有したいことがあるかもしれません。そうすれば、まだCodeStreamに参加していない人や、IDEにあまり時間をかけていない人にも情報を届けることができるでしょう。 +コメントを投稿したり問題を提起すると、チームメイトはアクティビティ フィードを介して、場合によっては電子メールで通知を受け取ります。ただし、場合によっては、Microsoft Teams にも共有したい場合があります。これにより、CodeStream にまだ参加していない人や、IDE にあまり時間を費やしていない人にリーチできるようになります。 ## Microsoft Teamsへの接続 [#connect] -1. [ここをクリックしてCodeStreamアプリをインストールする](https://teams.microsoft.com/l/app/7cf49ab7-8b65-4407-b494-f02b525eef2b?source=store-copy-link) または、Microsoft Teamsのサイドバーにあるアプリに行き、CodeStreamを検索します。 - -2. インストールが完了すると、CodeStream アプリの次のポップアップが表示されます。 **Add**\[追加] ボタンをクリックします。チームまたはチャットに追加するオプションを展開して選択しないでください。\[追加] をクリックするだけです。 - - A screenshot showing the Add button. - -3. これにより、CodeStream ボットとのプライベート チャットに移動し、Teams サイドバーに CodeStream のロゴが表示されます。ボットのウェルカム メッセージの **Sign in**\[サインイン] ボタンをクリックするか、このチャットに `signin` と入力して送信します。 - - A screenshot showing the bot welcome message. - -4. Web に移動し、CodeStream にサインインするよう求められます。 +1. CodeStream のユーザー名メニューの下にある **Integrations** \[統合] ページに移動し、 **Microsoft Teams** ボタンをクリックします。 +2. 表示されたサインイン コードをコピーし、 **Connect to Teams** \[チームに接続] ボタンをクリックします。 -5. サインインすると、トークンが渡されます。このトークンをコピーして、MS Teamsに戻ってCodeStreamボットとのチャットに貼り付ける必要があります。 +A screenshot showing the page to connect to Microsoft Teams. -6. トークンをチャットに貼り付けて送信します。 +3. Teams に移動すると、CodeStream アプリの次のポップアップが表示されます。**Add** \[追加] ボタンをクリックします。展開してチームまたはチャットに追加するオプションを選択しないでください。「追加」をクリックするだけです。 - An image showing where to paste the token. +A screenshot showing the Add button. -7. 共有したいチャンネルに移動し、 `@`と入力して、ポップアップで **Get bots** を選択します。 +4. これにより、CodeStream ボットとのプライベート チャットが表示され、Teams のサイドバーに CodeStream ロゴが表示されます。ボットのウェルカム メッセージの **Sign In** \[サインイン] ボタンをクリックするか、このチャットに `signin` と入力して送信します。 - An image showing the popup that appears when typing @ +A screenshot showing the bot welcome message. -8. リストからCodeStreamボットを選択し(必要であれば検索してもよい)、 **Add** をクリックします。 +5. サインイン トークンをポップアップに貼り付けて、 **Sign-in** \[サインイン] ボタンをクリックします。 -9. チャンネルに戻り、 `connect` コマンドで CodeStream ボットを @メンションします。共有したいチャンネルでこれを繰り返します。 +An image showing where to paste the token. - An image showing the command to connect a bot. +6. 共有したいチャンネルに移動し、 `@`と入力し、ポップアップで **Get bots** \[ボットを取得] を選択します。 -
このコマンドを使用して、ボットを接続します。
+An image showing the popup that appears when typing @ -10. 確認が取れれば、CodeStreamからTeamsに共有する準備が整います。 +7. リストからCodeStreamボットを選択し(必要であれば検索してもよい)、 **Add** をクリックします。 +8. チャンネルに戻り、 `connect` コマンドを使用して CodeStream ボットを @メンションします。共有したいチャンネルでこれを繰り返します。 -11. CodeStream に戻ると、接続したチャネルに共有できるようになります。 +An image showing the command to connect a bot. - An image showing the the CodeStream UI for sharing to a channel +9. 確認が取れれば、CodeStreamからTeamsに共有する準備が整います。 +10. CodeStreamに戻ると、先ほど接続したチャンネルに共有できるようになっています。 -
から共有するを選択します。
+An image showing the the CodeStream UI for sharing to a channel ## Microsoft TeamsからCodeStreamに参加する [#participate] @@ -72,10 +95,6 @@ Microsoft Teamsに共有すると、チームメイトにコードマークが src={codestreamMsteamsExampleCodestreamMessage} /> -
- これにより、指定されたIDEでコードマークが開きます。 -
- ### IDEで開く [#open-ide] **IDEで開く** をクリックすると、コードとディスカッションの両方をお使いのIDEの中で見ることができます。CodeStream の Web ページが表示され、どの IDE を開くかを選択できます。CodeStream は選択した内容を記憶しており、次回同じリポジトリのディスカッションを閲覧する際にはその内容が反映されます。次に、あなたの IDE の適切なソースファイルに移動し、関連するコードブロックにスクロールし、ディスカッションが CodeStream ペインに表示されます。IDE でそのリポジトリを開いていない場合は、CodeStream が自動的にソースファイルを開きます (CodeStream がインストールされている状態で、以前にそのリポジトリを開いていたと仮定していますので、私たちはその場所を知っています)。 diff --git a/src/i18n/content/jp/docs/codestream/codestream-integrations/notifications.mdx b/src/i18n/content/jp/docs/codestream/codestream-integrations/notifications.mdx index 3f1abfd4d5d..ef33fcd1999 100644 --- a/src/i18n/content/jp/docs/codestream/codestream-integrations/notifications.mdx +++ b/src/i18n/content/jp/docs/codestream/codestream-integrations/notifications.mdx @@ -8,13 +8,13 @@ import codestreamCodestreamDesktopNotification from 'images/codestream_screensho import codestreamCodestreamPullRequestNotification from 'images/codestream_screenshot-crop_codestream-pull-request-notification.webp' -New Relic CodeStream は、あなたがフォローしたコードマークやフィードバックリクエストについて通知します。CodeStream ペインの上部にあるユーザープロファイルのメニューから、 **Notifications** オプションを探します。 +CodeStream は、フォローしているコメントや問題について通知します。CodeStream ペインの上部にあるユーザー プロファイル メニューで **Notifications** \[通知] オプションを探します。 -## コードマークやフィードバック依頼の通知 [#codemarksandFRs] +## コメントや問題の通知 [#codemarksandFRs] -デフォルトでは、自分が作成したコードマークやフィードバックリクエスト、自分が言及されたもの(元の投稿やその後の返信)、自分が返信したものは自動的にフォローされるように設定されています。個別のコードマークやフィードバックリクエストのフォロー、アンフォローは、楕円形のメニューでいつでも選択できます。 +デフォルトでは、自分が作成したコメントや問題、自分が言及された場所 (元の投稿またはその後の返信のいずれか)、または自分が返信したコメントや問題を自動的にフォローするように設定されています。省略記号メニューから、いつでも個々のコメントや問題をフォローするかフォロー解除するかを選択できます。 -メール、デスクトップ、またはその両方で通知を受けるかどうかを選択できます。メール通知はすぐに送信され、メールに返信することで議論に参加することができます。返信は、該当するコードマークやフィードバック要求への返信として、CodeStreamに追加されます。返信する際は、通知が送られたのと同じメールアドレス(CodeStreamの **My Organization** に登録されているメールアドレス)であることを確認してください。 +電子メール、デスクトップ、またはその両方で通知を受け取るかどうかを選択できます。電子メール通知はすぐに送信され、電子メールに返信することでディスカッションに参加できます。あなたの返信は、適切なコメントまたは問題への返信として CodeStream に追加されます。返信するときは、通知が送信されたのと同じ電子メール アドレス (つまり、CodeStream の **Profile** \[プロフィール] に表示される電子メール アドレス) から返信していることを確認してください。 IDEでのデスクトップ通知は、VS CodeまたはJetBrains IDEを使用している場合のみ利用可能です。 @@ -32,7 +32,6 @@ IDEでのデスクトップ通知は、VS CodeまたはJetBrains IDEを使用し また、CodeStreamでは、以下のようなメールによる通知も行っています。 -* **未解決のフィードバック依頼のリマインダーメールを送信する**:あなたに割り当てられた未解決のフィードバックリクエストで、過去24時間以内に返信していないものについて、リマインダーの電子メールを受け取ることができます。 * **自分の活動をまとめたメールを毎週送信**: 毎週月曜日に、前週のあなたとあなたの組織の活動に関する情報を送信。 ## デスクトップ通知の追加 [#additionaldesktop] @@ -40,14 +39,6 @@ IDEでのデスクトップ通知は、VS CodeまたはJetBrains IDEを使用し CodeStreamは、以下のデスクトップ通知も提供しています。 * **Notify me about performance issues** \[パフォーマンスの問題について通知する]: コード内の新しいメソッドのパフォーマンスが低下すると、コード レベルのメトリクス [の異常検出](/docs/codestream/how-use-codestream/performance-monitoriing#clm-anomalies)に基づいてトースト通知がトリガーされます。IDE で複数のリポジトリを開いている場合、またはそれらのリポジトリに関連付けられた複数のサービスがある場合は、異常なパフォーマンスを示した最初のメソッドについてのみ通知されることに注意してください。完全なリストについては、**Observability** \[可観測性] セクションの **Code-Level Metrics** \[コードレベルのメトリクス] を必ず確認してください。 -* **Notify me about new unreviewed commits from teammates when I pull**: いつプルしても、現在のブランチにチームメイトの新しいコミットがあると、トースト通知が届きます。 **Review** ボタンをクリックすると、チームメイトの変更点のレビューを開始し、フィードバックを行うことができます。 -* **自分に割り当てられたプルリクエストについて通知する**:GitHub、GitHub Enterprise、GitLab、GitLab Self-Managed に接続して CodeStream の [プルリクエスト統合を利用している場合](/docs/codestream/how-use-codestream/pull-requests) 、プルリクエストが自分に割り当てられたりレビューアとして追加されると通知されるようにもなっています。 - -An image showing the pull request notification.
**Open** ボタンをクリックすると、プルリクエストがIDE上で開かれ、変更内容を確認することができます。 diff --git a/src/i18n/content/jp/docs/codestream/codestream-settings/team-administration.mdx b/src/i18n/content/jp/docs/codestream/codestream-settings/team-administration.mdx index 7d8c1461d87..8e5026b72e2 100644 --- a/src/i18n/content/jp/docs/codestream/codestream-settings/team-administration.mdx +++ b/src/i18n/content/jp/docs/codestream/codestream-settings/team-administration.mdx @@ -62,7 +62,7 @@ New Relic CodeStreamは、New Relicのアカウントを持っているかどう ## 組織設定 [#organization-settings] -管理者の場合、CodeStreamペイン上部のヘッドショットメニューの下にある **Organization Admin** メニューを使って、組織名の変更、 [onboarding](#onboarding) and [feedback requests](#feedback-request) settings, [export data](#export), or delete your orgを管理することができます。 +管理者の場合は、CodeStream ペインの上部にあるユーザー名メニューの下にある **Organization Admin** \[組織管理者] メニューを使用して、組織名の変更、 [オンボーディング](#onboarding) 設定の管理、[データのエクスポート](#export)、または組織の削除を行います。 This image shows the feedback request settings tab and all its options. - -
- フィードバック要求の設定を使用して、組織のフィードバックプロセスを微調整します。 -
- -デフォルトでは、フィードバックを要求した人が承認の仕組みを決めることができますが、代わりに、組織のすべてのフィードバック要求に対するデフォルトの動作を設定することができます。 - -* **Any reviewer can approve**: レビューアが何人割り当てられているかにかかわらず、誰でもフィードバック要求を承認することができます。 -* **すべてのレビュアーが個別に承認する必要があります**: フィードバックリクエストは、承認されたとみなされる前に、割り当てられた各レビュアーが個別に承認する必要があります。 - -**ラウンドロビン** は、組織内のすべての開発者を巡回します。 **ランダム** は、組織内の任意の開発者にフィードバックリクエストをランダムに割り当てます。 **Authorship** オプションでは、変更の影響を受けるコードラインを書いた開発者と、そのブランチにコミットした他の開発者に基づいて、最大3人のレビュアーを提案します。 - ### データのエクスポート [#export] 組織のディスカッションをCodeStreamから取り出すための軽量なエクスポートツールがあります。 \ No newline at end of file diff --git a/src/i18n/content/jp/docs/codestream/how-use-codestream/discuss-code.mdx b/src/i18n/content/jp/docs/codestream/how-use-codestream/discuss-code.mdx index 9d516fa0a2f..c0a24357e4c 100644 --- a/src/i18n/content/jp/docs/codestream/how-use-codestream/discuss-code.mdx +++ b/src/i18n/content/jp/docs/codestream/how-use-codestream/discuss-code.mdx @@ -72,66 +72,6 @@ import codestreamCodemarkGetPermalinkButton from 'images/codestream_screenshot-c ファイルが時間とともに変化しても、コードマークはコードとつながっています。コードブロックの上に新しいコードを追加したり、コードを編集したり、コードブロック全体をファイルの別のセクションにカット&ペーストしたりすると、コードマークが変更に合わせて移動するのがわかります。 -ここでは、チームがコードマークを使ってIDEでコードを共同作業する様子を短いビデオ(3分15秒)で紹介しています。 - -