From 6707cac491c7d1043de283f86f5da33fe997a8d0 Mon Sep 17 00:00:00 2001 From: ankit-k2io <68365825+ankit-k2io@users.noreply.github.com> Date: Fri, 24 May 2024 14:59:21 +0530 Subject: [PATCH 01/27] Update troubleshooting.mdx for certificate and firewall details --- src/content/docs/iast/troubleshooting.mdx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/content/docs/iast/troubleshooting.mdx b/src/content/docs/iast/troubleshooting.mdx index cd55ba457e4..f6f4c9d9545 100644 --- a/src/content/docs/iast/troubleshooting.mdx +++ b/src/content/docs/iast/troubleshooting.mdx @@ -52,7 +52,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel id="see-my-application" title="I don't see my application in IAST" > - If you don't see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**, check the following: + If you don't see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**, check the following: - Your application is up and running: Check the application process or the [APM & Services page](/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/advanced-techniques/view-events-their-products#products). - The application's logs to find out if there's a problem. @@ -60,7 +60,8 @@ If you don't find your problem listed here, you can always reach out to [New Rel - The `newrelic.yml` config file includes the modification of the parameters as indicated on the [install page](/docs/iast/install). - Go to the `nr-security-home/logs` directory and find the `[SETP-8]` line in the `LANGUAGE-security-collector-init.log` file. Check if there is an unexpected error and know what failed. - The application has traffic. Generate some traffic to allow IAST to test your application. - - The TLS Certificate is correct. + - Proxy or Firewall blocking access. Whitelist the following IPs `3.134.136.130, 18.219.177.104, 18.117.21.106` for the domain **csec.nr-data.net**, the following IPs `3.130.22.102, 3.138.243.136, 3.139.218.150` for the domain **csec-gov.nr-data.net** and the following IPs `18.185.235.118, 3.125.193.113, 3.75.166.122` for the domain **csec.eu01.nr-data.net**. But our recommendation is to add these domains in the whitelist instead of these IPs as these IPs are bound to change anytime. + - The TLS Certificate is correct. Add Let’s Encrypt CA certificate(download from [Let’s Encrypt Certificates](https://letsencrypt.org/certificates/#root-certificates).) to your local trust store. Include both the root certificates and the intermediate ones (ISRG Root X1 & Let’s Encrypt R3) to establish the complete chain of trust. - Your application's framework or vulnerability category is supported. From 670d4cf1732a37a3abefbf425f05f3256b554498 Mon Sep 17 00:00:00 2001 From: ankit-k2io <68365825+ankit-k2io@users.noreply.github.com> Date: Tue, 28 May 2024 16:54:19 +0530 Subject: [PATCH 02/27] minor improvements in the recommendation for proxy/firewall block case --- src/content/docs/iast/troubleshooting.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/content/docs/iast/troubleshooting.mdx b/src/content/docs/iast/troubleshooting.mdx index f6f4c9d9545..c2a3e3ac9c1 100644 --- a/src/content/docs/iast/troubleshooting.mdx +++ b/src/content/docs/iast/troubleshooting.mdx @@ -60,8 +60,8 @@ If you don't find your problem listed here, you can always reach out to [New Rel - The `newrelic.yml` config file includes the modification of the parameters as indicated on the [install page](/docs/iast/install). - Go to the `nr-security-home/logs` directory and find the `[SETP-8]` line in the `LANGUAGE-security-collector-init.log` file. Check if there is an unexpected error and know what failed. - The application has traffic. Generate some traffic to allow IAST to test your application. - - Proxy or Firewall blocking access. Whitelist the following IPs `3.134.136.130, 18.219.177.104, 18.117.21.106` for the domain **csec.nr-data.net**, the following IPs `3.130.22.102, 3.138.243.136, 3.139.218.150` for the domain **csec-gov.nr-data.net** and the following IPs `18.185.235.118, 3.125.193.113, 3.75.166.122` for the domain **csec.eu01.nr-data.net**. But our recommendation is to add these domains in the whitelist instead of these IPs as these IPs are bound to change anytime. - - The TLS Certificate is correct. Add Let’s Encrypt CA certificate(download from [Let’s Encrypt Certificates](https://letsencrypt.org/certificates/#root-certificates).) to your local trust store. Include both the root certificates and the intermediate ones (ISRG Root X1 & Let’s Encrypt R3) to establish the complete chain of trust. + - Proxy or Firewall blocking access. Whitelist the following IPs `3.134.136.130, 18.219.177.104, 18.117.21.106` for the domain **csec.nr-data.net**, the following IPs `3.130.22.102, 3.138.243.136, 3.139.218.150` for the domain **csec-gov.nr-data.net** and the following IPs `18.185.235.118, 3.125.193.113, 3.75.166.122` for the domain **csec.eu01.nr-data.net**. But our recommendation is to add domains in the whitelist instead of the IPs as these IPs are bound to change anytime. + - The TLS Certificate is correct. Add Let’s Encrypt CA certificate(download from [Let’s Encrypt Certificates](https://letsencrypt.org/certificates/#root-certificates)) to your local trust store. Include both the root certificates and the intermediate ones (ISRG Root X1 & Let’s Encrypt R3) to establish the complete chain of trust. - Your application's framework or vulnerability category is supported. From 690ae87edd9ce95855237239ce9f090e605ec748 Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Tue, 18 Jun 2024 17:33:39 -0700 Subject: [PATCH 03/27] fix(cross-platform): Start migration out of OTHER CAPABILITIES --- .../best-practices-integration.mdx | 10 +- .../dropwizard/dropwizard-reporter.mdx | 1 + .../kamon/kamon-reporter.mdx | 1 + .../micrometer-metrics-registry.mdx | 5 +- .../elixir/elixir-open-source-agent.mdx | 1 + ...are-tanzu-dotnet-buildpack-integration.mdx | 133 ++++++ ...ware-tanzu-firehose-nozzle-integration.mdx | 160 +++++++ ...mware-tanzu-service-broker-integration.mdx | 424 ++++++++++++++++++ ...are-tanzu-dotnet-buildpack-integration.mdx | 2 + ...ware-tanzu-firehose-nozzle-integration.mdx | 3 +- ...mware-tanzu-service-broker-integration.mdx | 2 + .../grafana-support-prometheus-promql.mdx | 1 + ...w-relic-prometheus-data-source-grafana.mdx | 1 + .../vertx-eventbus-integration.mdx | 4 +- .../vertx-extensions-integration.mdx | 7 +- .../airflow/monitoring-airflow-ot.mdx | 3 +- .../atlassian/atlassian-integration.mdx | 16 +- .../dojo/dojo-io-integration.mdx | 11 +- .../jenkins/monitoring-jenkins-ot.mdx | 3 +- .../lampy/lampy-integration.mdx | 15 +- .../roku/roku-open-source-video-agent.mdx | 1 + .../statsd/statsd-monitoring-integration.mdx | 3 +- .../wordpress-fullstack-integration.mdx | 9 +- .../terraform/terraform-intro.mdx | 6 +- .../terraform/terraform-modules.mdx | 8 +- .../terraform/terragrunt.mdx | 6 +- .../opentelemetry-best-practices-logs.mdx | 5 +- .../opentelemetry-best-practices-metrics.mdx | 5 +- ...opentelemetry-best-practices-resources.mdx | 4 +- .../opentelemetry-best-practices-traces.mdx | 6 +- .../opentelemetry-data-overview.mdx | 7 +- .../opentelemetry-otlp-troubleshooting.mdx | 5 +- .../best-practices/opentelemetry-otlp.mdx | 3 +- .../opentelemetry-apm-intro.mdx | 11 +- .../apm-monitoring/opentelemetry-apm-ui.mdx | 3 +- .../opentelemetry-collector-infra-docker.mdx | 3 +- ...entelemetry-collector-infra-hcp-consul.mdx | 5 +- .../opentelemetry-collector-infra-hivemq.mdx | 3 +- .../opentelemetry-collector-infra-hosts.mdx | 3 +- .../opentelemetry-collector-infra-intro.mdx | 6 +- .../opentelemetry-collector-infra-k8s.mdx | 3 +- ...llector-infra-kafka-confluentcloud-k8s.mdx | 4 +- ...y-collector-infra-kafka-confluentcloud.mdx | 3 +- ...entelemetry-collector-infra-prometheus.mdx | 3 +- ...ntelemetry-collector-infra-singlestore.mdx | 5 +- .../opentelemetry-collector-infra-squid.mdx | 5 +- .../opentelemetry-collector-infra-statsd.mdx | 5 +- ...entelemetry-collector-processing-intro.mdx | 11 +- .../opentelemetry-get-started-intro.mdx | 3 +- .../opentelemetry-introduction.mdx | 3 +- .../grafana-support-prometheus-promql.mdx | 49 ++ ...w-relic-prometheus-data-source-grafana.mdx | 128 ++++++ src/nav/accounts.yml | 2 + src/nav/apm.yml | 13 + src/nav/dashboards.yml | 8 +- src/nav/infrastructure.yml | 8 + src/nav/root.yml | 31 +- 57 files changed, 1090 insertions(+), 99 deletions(-) rename src/content/docs/{more-integrations => accounts/accounts-billing/new-relic-one-user-management}/best-practices-integration.mdx (92%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => apm/agents/java-agent/third-party-integrations}/dropwizard/dropwizard-reporter.mdx (95%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => apm/agents/java-agent/third-party-integrations}/kamon/kamon-reporter.mdx (97%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => apm/agents/java-agent/third-party-integrations}/micrometer/micrometer-metrics-registry.mdx (94%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => apm/experimental-agents}/elixir/elixir-open-source-agent.mdx (94%) create mode 100644 src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx create mode 100644 src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx create mode 100644 src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx (96%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx (98%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx (97%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx (95%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-data-overview.mdx (85%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx (98%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/best-practices/opentelemetry-otlp.mdx (99%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx (92%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx (98%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx (96%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx (95%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx (99%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx (97%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx (91%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx (79%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx (97%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx (96%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx (94%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx (93%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx (98%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx (92%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx (89%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/get-started/opentelemetry-get-started-intro.mdx (94%) rename src/content/docs/{more-integrations/open-source-telemetry-integrations => }/opentelemetry/opentelemetry-introduction.mdx (98%) create mode 100644 src/content/docs/query-your-data/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx create mode 100644 src/content/docs/query-your-data/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx diff --git a/src/content/docs/more-integrations/best-practices-integration.mdx b/src/content/docs/accounts/accounts-billing/new-relic-one-user-management/best-practices-integration.mdx similarity index 92% rename from src/content/docs/more-integrations/best-practices-integration.mdx rename to src/content/docs/accounts/accounts-billing/new-relic-one-user-management/best-practices-integration.mdx index 9407aeb6299..a3baf2be586 100644 --- a/src/content/docs/more-integrations/best-practices-integration.mdx +++ b/src/content/docs/accounts/accounts-billing/new-relic-one-user-management/best-practices-integration.mdx @@ -1,10 +1,12 @@ --- title: Best practices for integration users tags: - - Best practices - - Integrations -metaDescription: "Here are some best practices for controlling how you expose your New Relic data when you're using an integration." -freshnessValidatedDate: 2024-04-24 + - Best practices + - Integrations +metaDescription: Here are some best practices for controlling how you expose your New Relic data when you're using an integration. +freshnessValidatedDate: 2024-04-24T00:00:00.000Z +redirects: + - /docs/more-integrations/best-practices-integration --- As a New Relic administrator, you must operate your New Relic organization with the principle of least privilege. This principle is a security concept in which a user should only have access to the specific data, systems, and resources needed to complete a necessary task for the organization. By following this principle, you can reduce the risk of unauthorized access to sensitive data. This includes assigning permissions based on job roles and responsibilities. In a [New Relic organization](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure/), account-based access allows you to control what information is available to the users in your organization. This ensures that sensitive data remains secure and only authorized personnel can view it. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx b/src/content/docs/apm/agents/java-agent/third-party-integrations/dropwizard/dropwizard-reporter.mdx similarity index 95% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx rename to src/content/docs/apm/agents/java-agent/third-party-integrations/dropwizard/dropwizard-reporter.mdx index 91b330bb8a9..04147a3277a 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx +++ b/src/content/docs/apm/agents/java-agent/third-party-integrations/dropwizard/dropwizard-reporter.mdx @@ -9,6 +9,7 @@ redirects: - /docs/integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter - /docs/integrations/exporters/exporter-list/new-relics-dropwizard-integration - /docs/integrations/open-source-telemetry-integrations/open-source-telemetry-integration-list/new-relics-dropwizard-integration + - /docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx b/src/content/docs/apm/agents/java-agent/third-party-integrations/kamon/kamon-reporter.mdx similarity index 97% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx rename to src/content/docs/apm/agents/java-agent/third-party-integrations/kamon/kamon-reporter.mdx index 4bf23c52986..81e1e3c2ecb 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx +++ b/src/content/docs/apm/agents/java-agent/third-party-integrations/kamon/kamon-reporter.mdx @@ -8,6 +8,7 @@ metaDescription: New Relic's Kamon reporter can send telemetry data from your Ka redirects: - /docs/integrations/open-source-telemetry-integrations/kamon/kamon-reporter - /docs/integrations/open-source-telemetry-integrations/open-source-telemetry-integration-list/kamon-reporter + - /docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx b/src/content/docs/apm/agents/java-agent/third-party-integrations/micrometer/micrometer-metrics-registry.mdx similarity index 94% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx rename to src/content/docs/apm/agents/java-agent/third-party-integrations/micrometer/micrometer-metrics-registry.mdx index 0fdea8e1bf4..b3d04b09018 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx +++ b/src/content/docs/apm/agents/java-agent/third-party-integrations/micrometer/micrometer-metrics-registry.mdx @@ -2,8 +2,9 @@ title: Forward Micrometer data to New Relic with OpenTelemetry metaDescription: New Relic offers an integration that sends your Micrometer telemetry data to your New Relic account. redirects: - - /docs/integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry - - /docs/integrations/open-source-telemetry-integrations/open-source-telemetry-integration-list/new-relics-micrometer-integration + - /docs/integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry + - /docs/integrations/open-source-telemetry-integrations/open-source-telemetry-integration-list/new-relics-micrometer-integration + - /docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx b/src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx similarity index 94% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx rename to src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx index 15b42940e67..65316751a94 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx +++ b/src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx @@ -10,6 +10,7 @@ redirects: - /docs/introduction-new-relic-elixir - /docs/elixir-open-source-agent - /docs/agents/open-source-licensed-agents/elixir-open-source-agent/ + - /docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent freshnessValidatedDate: never --- diff --git a/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx new file mode 100644 index 00000000000..d9b5b40be0f --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx @@ -0,0 +1,133 @@ +--- +title: New Relic .NET Extension Buildpack for VMware Tanzu +tags: + - Integrations + - Cloudfoundry + - Tanzu +metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. +freshnessValidatedDate: never +redirects: + - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration +--- + +import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' + +import infrastructureVmwareTanzuAlertChart from 'images/infrastructure_screenshot-crop_vmware-tanzu-alert-chart.webp' + +This documentation describes the New Relic .NET Extension Buildpack for VMware Tanzu and provides instructions on how to install the tile. The tile can bind New Relic agents to .NET Core or .NET Framework apps so you can monitor them in a VMware Tanzu environment. + +The New Relic .NET Extension Buildpack for VMware Tanzu enables you to bind your .NET (Core and Framework) apps to New Relic .NET agents. This allows you to monitor the health and performance of these apps, analyze the data captured by agents, and additionally correlate the captured agent data with +VMware Tanzu infrastructure metrics and events collected by the [New Relic Firehose Nozzle](https://network.pivotal.io/products/nr-firehose-nozzle/). + +## Prerequisites [#prereqs] + +This product has been tested and is compatible with VMware Tanzu OpsManager versions up to and including v3.0 and Tanzu Application Service 5.0. + +New Relic .NET Extension Buildpack for VMware Tanzu requires the following: + +* An active New Relic account with a license key. This is used to bind .NET apps to New Relic .NET agents. +* To use multi-buildpacks in the app manifest, you need cf CLI v6.38 or later. +For general information about adding buildpacks to manifests, see [Pushing an Application with Multiple Buildpacks](https://docs.pivotal.io/application-service/buildpacks/use-multiple-buildpacks.html) in the Cloud Foundry documentation. +* To use the .NET HWC extension, you need HWC buildpack 3.0.3 or later. +* To use the .NET Core extension, you need the dotnet core buildpack 2.1.5 or later. + + +The following table provides version and version-support information about New Relic .NET Extension Buildpack for VMware Tanzu. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Element + + Details +
+ Tile version + + 1.1.13 +
+ Release date + + January 25, 2024 +
+ Software component version + + New Relic .NET Extension Buildpack 1.1.13 +
+ Compatible Ops Manager version(s) + + 2.9.x, 2.10.x, and 3.0.x +
+ Compatible VMware Tanzu Application Service for VMs versions + + 2.10.x, 2.11.x, 2.12.x, 2.13.x, 3.0.x, 4.0.x and 5.0.x +
+ BOSH stemcell version + + Ubuntu Jammy +
+ IaaS support + + AWS, GCP, Azure, and vSphere +
+ +## Installation [#install] + +The New Relic .NET Extension Buildpack for VMware Tanzu can be installed via the tile in Ops Manager. Alternatively, you can extract the `.Pivotal` file and install individual extension buildpacks using the cf Command Line Interface (CLI) command `cf create-buildpack`. + +After you start monitoring your apps, you can set based on any metrics that are collected by .NET agents using the New Relic alerting subsystem. + +The New Relic .NET Extension Buildpack for VMware Tanzu installs one or more of the following buildpacks depending on the tile configuration (total of 8 extension buildpacks): + +* New Relic .NET Core Extension Buildpack for .NET Core Applications running on Ubuntu Jammy 1.* stacks. This extension buildpack is non-cached. +* New Relic .NET Core Extension Cached Buildpack for .NET Core Applications running on Ubuntu Jammy 1.* in disconnected (isolated) VMware Tanzu deployments. This is for support of air-gapped environments where there is no access to the outside world. +* 3 New Relic HWC Extension Buildpacks for .NET Framework Applications running on Windows 2019 stacks. This extension buildpack is non-cached. +* 3 New Relic HWC Extension Cached Buildpacks for .NET Framework Applications running on Windows 2019 stacks in disconnected (isolated) VMware Tanzu deployments. This is for support of air-gapped environments where there is no access to the outside world. + +All buildpacks use the multi-buildpack approach of Cloud Foundry and require either the standard .NET Core buildpack or HWC buildpack to be specified as the last buildpack in the buildpack chain, either in the app manifest or in the `cf push` command line. + + + The cached version of this extension buildpack for both .NET Core and .NET Framework contains New Relic .NET Agents version `9.1.1` + + +## Feedback [#feedback] + +If you have a feature request, questions, or information about a bug, please submit an issue on [github](https://github.com/newrelic/newrelic-dotnet-buildpack-tile/issues). diff --git a/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx new file mode 100644 index 00000000000..161e50e0602 --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx @@ -0,0 +1,160 @@ +--- +title: New Relic Nozzle for VMware Tanzu +tags: + - Integrations + - Cloudfoundry + - Tanzu +metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. +dataSource: vmware-tanzu +freshnessValidatedDate: 2023-11-13T00:00:00.000Z +redirects: + - /docs/infrastructure/host-integrations/host-integrations-list/vmware-tanzu-monitoring + - /docs/cloudfoundry/vmware-tanzu/vmware-tanzu-firehose-nozzle-integration + - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration +--- + +import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' + +import infrastructureVmwareTanzuAlertChart from 'images/infrastructure_screenshot-crop_vmware-tanzu-alert-chart.webp' + +[New Relic Nozzle for VMware Tanzu](https://network.pivotal.io/products/nr-firehose-nozzle) collects metrics and events generated by all VMware Tanzu components and applications that run on VMware Tanzu Diego cells via the [Loggregator Firehose](https://docs.pivotal.io/pivotalcf/loggregator/index.html). The nozzle collects data via the Remote Log Proxy (RLP) gateway and pushes it to [New Relic](https://www.newrelic.com) for processing and visualization. + +newrelicone-dashboards-vmware-tanzu.png + +## Overview [#overview] + +After installation, the nozzle starts collecting and pushing Firehose events to New Relic for processing and visualization. New Relic organizes the data based on Firehose event types, and shows each Firehose event type in its own separate dashboard. + +The nozzle can be installed as a tile in Ops Manager or deployed using the CLI command cf push as a regular application. You can then monitor the health and performance of your VMware Tanzu deployments, and set based on any metrics that are collected from VMware Tanzu Firehose. + +## Prerequisites [#prereqs] + +New Relic Nozzle for VMware Tanzu has the following requirements: + +* An active New Relic account with a Pro or Pro Trial license. If you do not already have a New Relic account, you can obtain a [14-day free trial license](http://newrelic.com/signup?funnel=pivotal-cloud-foundry&partner=Pivotal+Cloud+Foundry). +* New Relic Insights included in the license +* VMware Tanzu versions v2.10.x through v5.0.x. + +## Key features [#key-features] + +You can monitor health and performance data of VMware Tanzu components, including: + +* VMware Tanzu Domain +* VMware Tanzu Deployment +* Firehose Event Type +* Origin +* Job +* Component IP Address +* Application Detail +* Container + +Select the item from a list of values for any of the above metrics and filter the dashboard based on the selected value. You can also filter a dashboard by multiple metrics.s + +## Event filtering [#event-filtering] + +When a large number of events is streamed from the Firehose, you may want to filter out undesired events that are generated by the Firehose. If you need the nozzle to capture any of the Firehose event types (`ValueMetric`, `CounterEvent`, `ContainerMetric`, `HttpStartStop`, `LogMessage`), you must specify them as a comma-separated list of event types in the `"Selected Events"` property, located in the Advanced Settings tab of the tile settings. + +Starting with version 2.X of the nozzle, `ContainerMetric`, `CounterEvent`, and `ValueMetric` events are aggregated. Events include the `min`, `max`, `sum`, `sample count`, and `last` value of each metric. This reduces the number of events created by the nozzle while still providing detail on each metric type. +If needed, configure LogMessage Filters to include or exclude subsets of LogMessage events. + +If needed, configure `LogMessage Filters` to include or exclude subsets of LogMessage events. + +## Filter examples [#filter-examples] + +* **LogMessage Source Include Filter**: Only generate events for log messages with a source listed in this comma or pipe-separated list. +* **LogMessage Source Exclude Filter**: Do not generate events for log messages with a source listed in this comma or pipe-separated list. +* **LogMessage Message Include Filter**: Only generate events for log messages that contain text listed in this comma or pipe-separated list. +* **LogMessage Message Exclude Filter**: Do not generate events for log messages that contain text listed in this comma or pipe-separated list. + +Multiple LogMessage filters can be combined to limit event creation. Include filters are processed before exclude filters. + + + **Note**: When you run the nozzle as an application, you can use the above environment variables in the application manifest file. + + +## Product snapshot [#product-snapshot] + +The following table provides version and version-support information about New Relic Nozzle for VMware Tanzu. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Element + + Details +
+ Tile version + + 2.9.0 +
+ Release date + + November 14, 2023 +
+ Software component version + + New Relic Nozzle v2.9.0 +
+ Compatible Ops Manager version(s) + + v2.9.x, v2.10.x and v3.0.x +
+ Compatible VMware Tanzu Application Service for VMs versions + + v2.10.x, v2.11.x, v2.12.x, v2.13.x, v3.0.x, v4.0.x and v5.0.x +
+ BOSH stemcell version + + Ubuntu Jammy +
+ IaaS support + + AWS, GCP, Azure, and vSphere +
+ +## Feedback [#feedback] + +If you have a feature request, questions, or information about a bug, please submit an issue on [github](https://github.com/newrelic/newrelic-pcf-nozzle-tile/issues). diff --git a/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx new file mode 100644 index 00000000000..b8f9713fb3b --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx @@ -0,0 +1,424 @@ +--- +title: New Relic Service Broker for VMware Tanzu +tags: + - Integrations + - Cloudfoundry + - Tanzu +metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. +freshnessValidatedDate: never +redirects: + - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration +--- + +import infrastructureVmwareTanzuImport from 'images/vmware-service-broker-import.webp' + +import infrastructureVmwareTanzuImport2 from 'images/vmware-service-broker-import-2.webp' + +import infrastructureVmwareTanzuImport3 from 'images/vmware-service-broker-import-3.webp' + +import infrastructureVmwareTanzuImport4 from 'images/vmware-service-broker-import-4.webp' + +import infrastructureVmwareTanzuImport5 from 'images/vmware-service-broker-import-5.webp' + +import infrastructureVmwareTanzuImport6 from 'images/vmware-service-broker-import-6.webp' + +import infrastructureVmwareTanzuImport7 from 'images/vmware-service-broker-import-7.webp' + +import infrastructureVmwareTanzuImport8 from 'images/vmware-service-broker-import-8.webp' + +import infrastructureVmwareTanzuImport9 from 'images/vmware-service-broker-import-9.webp' + +import infrastructureVmwareTanzuImport10 from 'images/vmware-service-broker-import-10.webp' + +import infrastructureVmwareTanzuImport11 from 'images/vmware-service-broker-import-11.webp' + +import infrastructureVmwareTanzuImport12 from 'images/vmware-service-broker-import-12.webp' + +import infrastructureVmwareTanzuImport13 from 'images/vmware-service-broker-import-13.webp' + +import infrastructureVmwareTanzuImport14 from 'images/vmware-service-broker-import-14.webp' + +import infrastructureVmwareTanzuImport15 from 'images/vmware-service-broker-import-15.webp' + +import infrastructureVmwareTanzuImport16 from 'images/vmware-service-broker-import-16.webp' + +import infrastructureVmwareTanzuImport17 from 'images/vmware-service-broker-import-17.webp' + +import infrastructureVmwareTanzuImport18 from 'images/vmware-service-broker-import-18.webp' + +New Relic Service Broker for VMware Tanzu enables you to use one or more New Relic accounts and is deployed as a Java app on VMware Tanzu. A service broker allows Cloud Foundry apps to bind to services and consume the services easily from the Apps Manager or from the command line. + + +## How it works [#works] + +The broker exposes the New Relic service on the Marketplace and allows users to directly create a service instance and bind it to their apps either from Apps Manager or from the command line. + +The New Relic Service Broker for VMware Tanzu tile installs the New Relic Service Broker as an app, registers it as a service broker on VMware Tanzu, and exposes its service plans on the Marketplace. Each service plan is associated with an existing New Relic account, which is configured during the tile setup. + +Selecting a plan binds your app with the New Relic agent, and the agent starts reporting to the New Relic account which is associated with the selected plan. This makes the installation and subsequent use of New Relic on your VMware Tanzu apps easier and more straightforward. + +## Prerequisites [#prereqs] + +New Relic Nozzle for VMware Tanzu has the following requirements: + +* Service broker v1.12.18 and later +* For service brokers on v1.12.12 and earlier, the unique GUIDs for plans were calculated differently. For these plans to not break compatibility, the GUIDs must be the same as before. The migration script preserves the plan GUIDs for existing plans in the plan collection for v1.12.12 and earlier. + + +You need to override your plan GUID if you've changed the original license key that was associated with a service broker on v1.12.12 or earlier. To obtain the original plan GUID from Cloud Controller, run the following script: + +```shell + cf curl $(cf curl /v2/services?q=label:newrelic | grep “service_plans_url” | + + awk ‘{print $2}’ | sed ‘s/[",]//g’) | egrep “"name":|"unique_id":” | + + sed ‘s/[",]//g’ | tr -s " " | awk ’ {name=$0; getline; printf(\t%-40s %-40s \n”,name,$0)}’ + ``` + +There are two new properties labeled pre-1.12.12 plan? and Plan Guid Override (broker 1.12.12 or older) in the plan collection for each plan in the tile configuration. Don't change either of these properties because they're set internally where required. + +* In New Relic Service Broker v1.12.13 and later, leave pre-1.12.12 plan unchecked, and Plan Guid Override blank. +* The tile is supported on Ops Manager v2.9.x, v2.10.x, and v3.0.x. +* You can install the tile on any of these versions, and upgrade from v1.9.x to any Ops Manager version up to and including v3.x. +* No upgrade paths are required for older versions of the tile, since versions older than v1.9.0 are not supported. +* v1.12.6 and later of the tile support migration from older versions of the tile, and preserve existing services and service plans. +* If you are using tiles older than v1.11.4, you must first upgrade to v1.11.4, then to v1.12.9, then to the latest version of the tile. + + + +The following table provides version and version-support information about the service broker for VMware Tanzu. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Element + + Details +
+ Version + + 1.12.34 +
+ Release date + + January 25, 2024 +
+ Software component version + + New Relic Service Broker 1.12.34 +
+ Compatible Ops Manager version(s) + + 2.9.x, 2.10.x, and 3.x +
+ Compatible VMware Tanzu Application Service for VMs versions + + 2.10.x, 2.11.x, 2.12.x, 2.13.x, 3.x, 4.x and 5.x +
+ BOSH stemcell version + + Ubuntu Jammy +
+ IaaS support + + AWS, GCP, Azure, and vSphere +
+ +The current tile removes the `all_open` security group from the tile default security settings. If you are using a previous versions of the tile, make your VMware Tanzu environment more secure by removing the `all_open` security group from the Application Security Group (ASG) settings. The new version of the tile doesn't open the security, nor does it close the security if it was already open. + +## Install through Ops Manager [#install-ops] + +To download New Relic Service Broker for VMware Tanzu tile and install it on VMware Tanzu Ops Manager, do the following: + +1. Download the product file from Pivotal Network. +2. Import the product file to your Ops Manager installation. +3. Click the **+** sign or **Add next** to the uploaded product description in the Ops Manager left navigation view to add this product to your staging area. +4. Click the newly added tile and review any configurable options. +5. Click **Apply Changes**. + +## Configure the tile [#configure-tile] + +1. Log in to Ops Manager. +2. Click **Import a Product** and import the New Relic Service Broker for VMware Tanzu tile. + + vmware-service-broker-import.png + +3. Click the **+** button to the right of “New Relic Service Broker” that you uploaded. + + vmware-service-broker-import-2.png + +4. Select the New Relic tile. + + vmware-service-broker-import-3.png + +5. Configure Availability Zone and Network. + + vmware-service-broker-import-4.png + +6. Configure Service Broker Global Access. You can either keep the global access enabled for all service plans (default), or you can disable global access. You can give access through configuration for one or more orgs for each service plan that you add. + + vmware-service-broker-import-5.png + +7. Configure the New Relic Service Broker. Click Add from the Service Plan screen to create a new service plan. + + vmware-service-broker-import-6.png + +8. Create a service plan with your New Relic license key. + + * Enter a name for the service plan (no spaces). + * Enter description of the plan. + * Log in to your New Relic account and navigate to the Account Settings page from the drop-down menu in the upper right corner of the page. Copy the license key from your New Relic account and paste it here. + + vmware-service-broker-import-7.png + + * If you are upgrading from New Relic Service Broker 1.12.12 or older, make sure you follow the instructions in the upgrade section of this document to check “pre 1.12.12 plan” flag and enter the pre 1.12.12 plan GUID. + * If you are running New Relic Firehose Nozzle and would like to route the data for each application to a separate New Relic account (as opposed to New Relic’s central Firehose Nozzle account) enter the target New Relic account and Insights Insert Key here. + * If in previous steps you unchecked Global Access, you need to enter a comma-separated list of orgs so that the system enables service access for them to allow users to create service instances of this plan. + + + vmware-service-broker-import-8.png + +9. Select the button on top the page to go to `INSTALLATION DASHBOARD` + + vmware-service-broker-import-9.png + +10. Apply your changes. + * Click the blue button on the top right. + * To speed up the process you could uncheck Select All Products checkbox, and select to apply change to New Relic Service Broker tile. + + vmware-service-broker-import-10.png + +11. On completion of the installation, check the Services Marketplace in Apps Manager. Select New Relic tile. + + vmware-service-broker-import-11.png + +12. View New Relic Service Plans, and select the desired plan. + + vmware-service-broker-import-12.png + +13. Enter the service instance name and click on “CREATE” button to create the service instance. + + vmware-service-broker-import-13.png + +14. Service Plan created. + + vmware-service-broker-import-14.png + +15. Bind the New Relic Service to an app. + * In Apps Manager go to an application. + + vmware-service-broker-import-15.png + * Select Service tab. + * Click the BIND SERVICE button and select the service instance you just created. + + vmware-service-broker-import-16.png + * Click the BIND button on the bottom right. + + vmware-service-broker-import-17.png + +16. Restage the application. You can select the link at the top of the **Bind** page, or in a terminal window, and run `cf restage` to make the changes. + + vmware-service-broker-import-18.png + + ```shell + cf restage APPNAME + ``` + +Log in to New Relic to view monitoring data. + + +## Configure with HTTP proxy [#configure-http] + +If the VMware Tanzu environment needs to use an HTTP or HTTPS proxy for external outbound communication, the service broker itself doesn't need to know anything about the HTTP proxy, +as it relays the license keys to the consumer apps. The consumer app should specify the `http\_proxy` or `https\_proxy` as an environment variable for the agent to communicate externally with non-Java apps, +and use `JAVA_OPTS` for Java apps. In addition, the New Relic Agent should also be configured with its own +set of parameters `(-Dnewrelic.config.\*)` to communicate with its controller through the proxy for Java language apps. + +To specify using `http_proxy` for the New Relic non-Java app agent to talk to its controller using the proxy, run the following commands: + +```shell +cf set-env APPNAME http_proxy 'http://user:password@proxy-server.customer.example.com:8080' +cf set-env APPNAME https_proxy 'http://user:password@proxy-server.customer.example.com:8080' + ``` + +To specify using `JAVA_OPTS` for the New Relic Java agent to talk to its controller using the proxy, run the following command: + +```shell +cf set-env APPNAME JAVA_OPTS " -Dtest.value=barbar + -Dnewrelic.config.proxy_host=proxy.customer.example.com + -Dnewrelic.config.proxy_port=8080 + ``` +If a Java app also needs to talk through a proxy, +add the Java proxy settings in addition to the New Relic agent proxy settings with the following command: + +```shell +cf set-env APPNAME JAVA_OPTS " -Dtest.value=barbar + -Dnewrelic.config.proxy_host=proxy.customer.example.com + -Dnewrelic.config.proxy_port=8080 + -Dhttp.proxyHost=proxy.customer.example.com-Dhttp.proxyPort=8080 + -Dhttps.proxyHost=proxy.customer.example.com -Dhttps.proxyPort=8080 + ``` + +For a non-Java app that needs to talk outbound using a proxy, run the following commands: + +```shell +cf set-env APPNAME http_proxy http://user@password:myproxy....:8080/ +cf set-env APPNAME https_proxy https://user@password:myproxy....:8080/ + ``` + +Whenever making changes to Cloud Foundry environment variables, you must restage your app(s) to make the changes effective. + +```shell +cf restage APPNAME + ``` + +You can set these environment variables individually per app, or with environment variable groups to be set for all apps as part of staging, running environments, etc. using the Cloud Foundry Command Line Interface (cf CLI) tool. + +## Environment variable groups [#variable-groups] + +* `running-environment-variable-group/revg`: Retrieve the contents of the running environment variable group +* `staging-environment-variable-group/sevg`: Retrieve the contents of the staging environment variable group +* `set-staging-environment-variable-group/ssevg`: Pass parameters as JSON to create a staging environment variable group +* `set-running-environment-variable-group/srevg`: Pass parameters as JSON to create a running environment variable group + +Use the `JAVA\_OPTS` environment variable to specify New Relic Agent-specific environment variables in the staging environment group so the Java buildpack can use that and push it in the correct place. Specifying JAVA\_OPTS in the Runtime environment variable group won't yield anything, as the buildpack won't know about it. + +For example: + +```shell +cf ssevg '{ "JAVA_OPTS" : " -Dtest.value=barbar + -Dnewrelic.config.proxy_host=proxy.customer.example.com + -Dnewrelic.config.proxy_port=8080 -Dhttp.proxyHost=proxy.customer.example.com + -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.customer.example.com + -Dhttps.proxyPort=8080 -Dspring.profiles.active=dev + -Dnewrelic.config.log_level=finer + -Djavax.net.debug=all ", "test_env_profile" : "Staging" }' +``` + +For more information, see [Configuration settings precedence](https://docs.newrelic.com/docs/agents/java-agent/configuration/java-agent-configuration-config-file#config-options-precedence). + +## Package dependencies for Offline Buildpacks [#product-dependencies] + +If you're running VMware Tanzu in an offline (disconnected) environment, you should recreate and package the +dependencies, including the New Relic agent binaries, using offline buildpacks in your VMware Tanzu environment. + +For more information, see [Packaging Dependencies for Offline Buildpacks](https://docs.cloudfoundry.org/buildpacks/depend-pkg-offline.html). + + +## Feedback [#feedback] + +If you have a feature request, questions, or information about a bug, please submit an issue on [github](https://github.com/newrelic/newrelic-service-broker-tile/issues). diff --git a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx index f1f06cbd6c4..d9b5b40be0f 100644 --- a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx +++ b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx @@ -6,6 +6,8 @@ tags: - Tanzu metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. freshnessValidatedDate: never +redirects: + - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration --- import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' diff --git a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx index 078ecec2ac9..161e50e0602 100644 --- a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx +++ b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx @@ -6,10 +6,11 @@ tags: - Tanzu metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. dataSource: vmware-tanzu -freshnessValidatedDate: 2023-11-13 +freshnessValidatedDate: 2023-11-13T00:00:00.000Z redirects: - /docs/infrastructure/host-integrations/host-integrations-list/vmware-tanzu-monitoring - /docs/cloudfoundry/vmware-tanzu/vmware-tanzu-firehose-nozzle-integration + - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration --- import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' diff --git a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx index 52640bce5d3..b8f9713fb3b 100644 --- a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx +++ b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx @@ -6,6 +6,8 @@ tags: - Tanzu metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. freshnessValidatedDate: never +redirects: + - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration --- import infrastructureVmwareTanzuImport from 'images/vmware-service-broker-import.webp' diff --git a/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx b/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx index fff24875376..63dc8f9b190 100644 --- a/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx +++ b/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx @@ -9,6 +9,7 @@ redirects: - /docs/integrations/grafana-integrations/get-started/grafana-support-prometheus-promql - /docs/grafana-support-prometheus-promql - /docs/integrations/grafana-integrations/set-configure/grafana-support-prometheus-promql + - /docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx b/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx index 9623c7775f9..d683e444d58 100644 --- a/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx +++ b/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx @@ -8,6 +8,7 @@ metaDescription: How to configure New Relic as a Prometheus data source for Graf redirects: - /docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana - /docs/configure-prometheus-data-source-grafana + - /docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx b/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx index 6388871fa64..04377b4502e 100644 --- a/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx +++ b/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx @@ -11,6 +11,8 @@ tags: - expert services metaDescription: Provides instrumentation for monitoring the Vert.x Event Bus. freshnessValidatedDate: never +redirects: + - /docs/more-integrations/java-integrations/vertx-eventbus-integration --- [Java Vert.x Event Bus Integration](https://github.com/newrelic/newrelic-java-vertx/tree/main) provides instrumentation for monitoring the (Vert.x)[https://vertx.io/] Event Bus, enabling the tracking of event flow across the bus. Specifically designed for Vert.x Verticles that extend` AbstractVerticle`, this extension instruments each deployed class to monitor all methods except those specifically defined by `AbstractVerticle`. @@ -150,4 +152,4 @@ From [Java Vert.x Event Bus Integration Releases](https://github.com/newrelic/ne After configuring the Java Vert.x Event Bus Integration, you can visualize your application's Vert.x Event Bus transactions and traces directly within New Relic APM and Services. ## Reporting Integration Issues -If you encounter any issues with the Java Vert.x Event Bus Integration, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration. \ No newline at end of file +If you encounter any issues with the Java Vert.x Event Bus Integration, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration. diff --git a/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx b/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx index 8a9f64bee24..09370e12a27 100644 --- a/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx +++ b/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx @@ -22,9 +22,10 @@ tags: - reactive - coroutines - expert services -metaDescription: provides instrumentation for monitoring the Vert.x Cassandra, JDBCClient, Coroutines, Kafka, - RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. +metaDescription: provides instrumentation for monitoring the Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. freshnessValidatedDate: never +redirects: + - /docs/more-integrations/java-integrations/vertx-extensions-integration --- [Java Instrumentation for Vert.x Extensions](https://github.com/newrelic/newrelic-java-vertx-extensions/tree/main) provides instrumentation for monitoring Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. @@ -153,4 +154,4 @@ Remove-Item -Path $tempExtractPath -Recurse -Force After configuring the Java Instrumentation for Vert.x Extensions, you can visualize your application's Vert.x extensions transactions and traces directly within New Relic APM and Services. ## Reporting Integration Issues -If you encounter any issues with the Java Instrumentation for Vert.x Extensions, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx-extensions/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration! \ No newline at end of file +If you encounter any issues with the Java Instrumentation for Vert.x Extensions, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx-extensions/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration! diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx index 768a448f23b..13f7c92f535 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx @@ -9,7 +9,8 @@ tags: metaDescription: Monitor Airflow data with New Relic using OpenTelemetry. redirects: - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/airflow/monitoring-airflow-ot -freshnessValidatedDate: 2023-11-16 + - /docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot +freshnessValidatedDate: 2023-11-16T00:00:00.000Z --- import opentelemetryAirflow01 from 'images/opentelemetry_screenshot_airflow_01.webp' diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx index 8cf785876ea..185a25bd4af 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx @@ -1,13 +1,15 @@ --- title: Atlassian Jira integration tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Atlassian - - Quickstart -metaDescription: "Monitor Atlassian with New Relic." -freshnessValidatedDate: 2024-04-24 + - Integrations + - Open source telemetry integrations + - OpenTelemetry + - Atlassian + - Quickstart +metaDescription: Monitor Atlassian with New Relic. +freshnessValidatedDate: 2024-04-24T00:00:00.000Z +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration --- import opentelemetryAtlassianNRapiToken from 'images/opentelemetry_screenshot-crop_connect-nr-jira.webp' diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx index c26b29fb122..c2e3e341e55 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx @@ -1,12 +1,13 @@ --- title: Dojo.io integration tags: - - dojo.io integration - - dojo integration - - new relic integrations -metaDescription: "The New Relic Dojo.io integration sends performance metrics and inventory data from your Dojo.io framework to the New Relic platform." -redirects: + - dojo.io integration + - dojo integration + - new relic integrations +metaDescription: The New Relic Dojo.io integration sends performance metrics and inventory data from your Dojo.io framework to the New Relic platform. +redirects: - /docs/infrastructure/host-integrations/host-integrations-list/dojo-io-integration + - /docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration freshnessValidatedDate: never --- import dojodashboard from 'images/infrastructure_screenshot-crop_dojo-dashboard.webp' diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx index 557e85016a1..db23464b83f 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx @@ -1,5 +1,5 @@ --- -title: Monitor Jenkins with OpenTelemetry and New Relic +title: Monitor Jenkins with OpenTelemetry and New Relic tags: - Integrations - Open source telemetry integrations @@ -9,6 +9,7 @@ tags: metaDescription: Here is a simple example to setup the Jenkins OpenTelemetry plugin to send data to New Relic. redirects: - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/jenkins/monitoring-jenkins-ot + - /docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx index 9c49216245c..9220e88a950 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx @@ -1,15 +1,16 @@ --- title: LAMPy stack monitoring integration tags: - - New Relic integrations - - LAMPy - - Linux - - Apache - - Python - - MySQL + - New Relic integrations + - LAMPy + - Linux + - Apache + - Python + - MySQL metaDescription: Use New Relic Linux, Apache, Python and MySQL monitoring to get a dashboard with metrics from your LAMPy application. -redirects: +redirects: - /docs/infrastructure/host-integrations/host-integrations-list/lampy-integration + - /docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx index a61e02b5439..0171072634e 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx @@ -8,6 +8,7 @@ metaDescription: A brief introduction to New Relic's open-source Roku video agen redirects: - /docs/integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent - /docs/agents/open-source-licensed-agents/ruby-open-source-video-agent + - /docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx index d868a46d14f..8b046bd06c3 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx @@ -1,5 +1,5 @@ --- -title: 'StatsD monitoring integration' +title: StatsD monitoring integration tags: - Integrations - On-host integrations @@ -13,6 +13,7 @@ redirects: - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration - /docs/integrations/host-integrations/host-integrations-list/statsd-monitoring-integration - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration-version-2 + - /docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx index 5bfbc0ec064..72827ebe661 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx +++ b/src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx @@ -1,12 +1,13 @@ --- title: WordPress Full Stack integration tags: - - New Relic integrations - - WordPress Full Stack integration + - New Relic integrations + - WordPress Full Stack integration metaDescription: Use New Relic browser monitoring to get a dashboard with metrics from your Wordpress. -redirects: +redirects: - /docs/infrastructure/host-integrations/host-integrations-list/wordpress-fullstack-integration -freshnessValidatedDate: 2023-06-28 + - /docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration +freshnessValidatedDate: 2023-06-28T00:00:00.000Z --- import infrastructureWordPressIntegrationDashboard from 'images/infrastructure_screenshot-full_wordpress-dashboard.webp' diff --git a/src/content/docs/more-integrations/terraform/terraform-intro.mdx b/src/content/docs/more-integrations/terraform/terraform-intro.mdx index 43ab7204043..18e267f5d5b 100644 --- a/src/content/docs/more-integrations/terraform/terraform-intro.mdx +++ b/src/content/docs/more-integrations/terraform/terraform-intro.mdx @@ -1,7 +1,9 @@ --- -title: 'Getting started with New Relic and Terraform' -metaDescription: 'Learn how to provision New Relic resources using [Terraform](https://www.terraform.io/).' +title: Getting started with New Relic and Terraform +metaDescription: Learn how to provision New Relic resources using [Terraform](https://www.terraform.io/). freshnessValidatedDate: never +redirects: + - /docs/more-integrations/terraform/terraform-intro --- [Terraform](https://www.terraform.io/) is a popular infrastructure-as-code software tool built by HashiCorp. You use it to provision all kinds of infrastructure and services, including New Relic and alerts. diff --git a/src/content/docs/more-integrations/terraform/terraform-modules.mdx b/src/content/docs/more-integrations/terraform/terraform-modules.mdx index 9edaababa45..afc5c090462 100644 --- a/src/content/docs/more-integrations/terraform/terraform-modules.mdx +++ b/src/content/docs/more-integrations/terraform/terraform-modules.mdx @@ -1,8 +1,10 @@ --- -title: 'Using Terraform Modules and Remote Storage' -template: 'GuideTemplate' -metaDescription: 'Learn how to use [Terraform](https://www.terraform.io/) modules in your configurations and store them remotely.' +title: Using Terraform Modules and Remote Storage +template: GuideTemplate +metaDescription: Learn how to use [Terraform](https://www.terraform.io/) modules in your configurations and store them remotely. freshnessValidatedDate: never +redirects: + - /docs/more-integrations/terraform/terraform-modules --- [Terraform](https://www.terraform.io/) is a popular infrastructure-as-code software tool built by HashiCorp. You use it to provision all kinds of infrastructure and services, including New Relic dashboards and alerts. diff --git a/src/content/docs/more-integrations/terraform/terragrunt.mdx b/src/content/docs/more-integrations/terraform/terragrunt.mdx index 3b630bbbf5c..9bc923c81d5 100644 --- a/src/content/docs/more-integrations/terraform/terragrunt.mdx +++ b/src/content/docs/more-integrations/terraform/terragrunt.mdx @@ -1,9 +1,11 @@ --- -title: 'Using Terragrunt to Manage Multiple Environments' -metaDescription: 'Learn how to use [Terragrunt](https://www.terraform.io/) to manage configurations in multiple environments' +title: Using Terragrunt to Manage Multiple Environments +metaDescription: Learn how to use [Terragrunt](https://www.terraform.io/) to manage configurations in multiple environments translate: - kr freshnessValidatedDate: never +redirects: + - /docs/more-integrations/terraform/terragrunt --- [Terraform](https://www.terraform.io/) is a popular infrastructure-as-code software tool built by HashiCorp. You use it to provision all kinds of infrastructure and services, including New Relic and alerts. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx similarity index 96% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx index 9444e917252..e8b20beba96 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx @@ -8,9 +8,10 @@ tags: translate: - kr metaDescription: Details on how New Relic works with OpenTelemetry logs -freshnessValidatedDate: 2024-05-17 +freshnessValidatedDate: 2024-05-17T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-logs-page + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-logs-page + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs --- This documentation focuses on how New Relic processes OpenTelemetry logs received through its dedicated OTLP endpoint. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx similarity index 98% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx index 5cbafba6c58..ae067d0b0d9 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx @@ -1,14 +1,15 @@ --- -title: 'OpenTelemetry metrics in New Relic' +title: OpenTelemetry metrics in New Relic tags: - Integrations - Open source telemetry integrations - OpenTelemetry metaDescription: Details on how New Relic works with OpenTelemetry metrics -freshnessValidatedDate: 2024-05-23 +freshnessValidatedDate: 2024-05-23T00:00:00.000Z redirects: - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/cumulative-metrics-transition-guide/ - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/cumulative-metrics-transition-guide/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics --- OpenTelemetry provides a dimensional metrics [data model](https://opentelemetry.io/docs/specs/otel/metrics/data-model/), an [API](https://opentelemetry.io/docs/specs/otel/metrics/api/) for recording metric telemetry, and an [SDK](https://opentelemetry.io/docs/specs/otel/metrics/sdk/) for aggregating and exporting metric data. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx similarity index 97% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx index 95cf8172e0c..0aeaa14552d 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx @@ -5,7 +5,9 @@ tags: - Open source telemetry integrations - OpenTelemetry metaDescription: Here are some tips for working with OpenTelemetry resources and New Relic. -freshnessValidatedDate: 2024-05-08 +freshnessValidatedDate: 2024-05-08T00:00:00.000Z +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources --- All data from OpenTelemetry is associated with a [resource](https://opentelemetry.io/docs/concepts/resources). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx similarity index 95% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx index 5b1e05f5344..ba644e9fbce 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx @@ -1,11 +1,13 @@ --- -title: 'OpenTelemetry traces in New Relic' +title: OpenTelemetry traces in New Relic tags: - Integrations - Open source telemetry integrations - OpenTelemetry metaDescription: Details on how New Relic works with OpenTelemetry traces -freshnessValidatedDate: 2024-05-23 +freshnessValidatedDate: 2024-05-23T00:00:00.000Z +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces --- OpenTelemetry provides a rich tracing ecosystem, with an [API](https://opentelemetry.io/docs/specs/otel/trace/api/) for recording trace telemetry, an [SDK](https://opentelemetry.io/docs/specs/otel/trace/sdk/) for exporting span data, and [context propagation](https://opentelemetry.io/docs/specs/otel/context/api-propagators/) for tracing across application boundaries. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-data-overview.mdx similarity index 85% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-data-overview.mdx index b4b3e06436e..ca22bd5513a 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-data-overview.mdx @@ -6,10 +6,11 @@ tags: - OpenTelemetry - OTLP metaDescription: Overview of OpenTelemetry data in New RElic -freshnessValidatedDate: 2024-05-31 +freshnessValidatedDate: 2024-05-31T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-alerts/ - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-data-explorer-query-builder/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-alerts/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-data-explorer-query-builder/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview --- OpenTelemetry has a rich ecosystem of instrumentation and tooling which can be integrated with New Relic via [OTLP](https://opentelemetry.io/docs/specs/otlp/). This documentation describes how New Relic receives, processes, and ingests OTLP data. See [Get started with OpenTelemetry and New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro/) for information on common integration patterns. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx similarity index 98% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx index 3f19a8e98f1..3863decd1d2 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx @@ -7,9 +7,10 @@ tags: - OTLP - Troubleshoot metaDescription: Troubleshoot common OTLP ingest errors -freshnessValidatedDate: 2024-05-06 +freshnessValidatedDate: 2024-05-06T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-troubleshooting/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-troubleshooting/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting --- New Relic has supported [native OTLP ingest](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/) for several years. In the process of working through support cases that come up from time to time, we've learned about common issues users face. For some, the problem is easy to identify and fix. Others are deviously tricky, given that the internet is unreliable and there are many components (software, networking, hardware, etc.) involved under the control of various parties, such as customers, New Relic, and public networking infrastructure outside the control of either. With so much complexity, configuration, and failure points, it can be difficult to determine which is at fault and how to best address. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx b/src/content/docs/opentelemetry/best-practices/opentelemetry-otlp.mdx similarity index 99% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx rename to src/content/docs/opentelemetry/best-practices/opentelemetry-otlp.mdx index 7f9eb5ecefc..30f85ae7660 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx +++ b/src/content/docs/opentelemetry/best-practices/opentelemetry-otlp.mdx @@ -6,13 +6,14 @@ tags: - OpenTelemetry - OTLP metaDescription: Configure OTLP exporter for New Relic -freshnessValidatedDate: 2024-05-06 +freshnessValidatedDate: 2024-05-06T00:00:00.000Z redirects: - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-attributes/ - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-batching/ - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-compression/ - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-overview - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-versions + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp --- [OpenTelemetry Protocol](https://github.com/open-telemetry/opentelemetry-proto/blob/main/docs/specification.md), or OTLP for short, is a general purpose telemetry data delivery protocol designed for the OpenTelemetry project. Each OpenTelemetry language SDK provides OTLP exporters, and the OpenTelemetry collector has OTLP receivers and exporters. Additionally, various tools outside the OpenTelemetry project have added support for OTLP export. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx b/src/content/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx similarity index 92% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx rename to src/content/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx index 5d78698afd2..26cafff07bb 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx +++ b/src/content/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx @@ -1,5 +1,5 @@ --- -title: "APM: Monitor apps and services with OpenTelemetry" +title: 'APM: Monitor apps and services with OpenTelemetry' tags: - Integrations - Open source telemetry integrations @@ -7,11 +7,12 @@ tags: translate: - kr metaDescription: Set up OpenTelemetry-based APM monitoring with New Relic. -freshnessValidatedDate: 2024-05-14 +freshnessValidatedDate: 2024-05-14T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-set-up-your-app/ - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-java - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-python + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-set-up-your-app/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-java + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-python + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro --- import moreintegrationsNativeOtlpNoCollector from 'images/more-integrations_diagram_native-otlp-no-collector.webp' diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx b/src/content/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx similarity index 98% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx rename to src/content/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx index d34df12e6a0..c8126696593 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx +++ b/src/content/docs/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx @@ -5,7 +5,7 @@ tags: - Open source telemetry integrations - OpenTelemetry metaDescription: The OpenTelemetry APM UI provides tools for identifying and diagnosing problems with services monitoring with OpenTelemetry. -freshnessValidatedDate: 2024-05-17 +freshnessValidatedDate: 2024-05-17T00:00:00.000Z redirects: - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-view-your-data - /docs/integrations/open-source-telemetry-integrations/opentelemetry/view-your-opentelemetry-data-new-relic @@ -24,6 +24,7 @@ redirects: - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-errors-inbox-page - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/view-your-data/opentelemetry-metrics-explorer-page - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-apm-ui/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui --- import opentelemetryViewSpanEvents from 'images/opentelemetry_screenshot-crop_view-span-events.webp' diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx similarity index 96% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx index 396a687a63e..a667aff052d 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx @@ -9,7 +9,8 @@ tags: metaDescription: You can collect docker container metrics using the OpenTelemetry collector. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-docker/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-docker/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker --- import infrastructureDockerOTELDashboard from 'images/infrastructure_screenshot-crop_docker-otel-dashboard.webp' diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx similarity index 95% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx index 45100e21c16..75d1aaa0ef8 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx @@ -11,9 +11,10 @@ tags: - Server - Envoy metaDescription: You can collect metrics from HCP managed Consul using the OpenTelemetry Collector. -freshnessValidatedDate: 2024-02-26 +freshnessValidatedDate: 2024-02-26T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hcp-consul + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hcp-consul + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul --- This guide explains how to collect metrics from your HCP-managed Consul deployment using the OpenTelemetry Collector. The collector gathers, processes, and sends telemetry data (including metrics, logs, and traces) to various observability backends, including New Relic. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx similarity index 99% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx index e791ff4ca8c..d030d36cb7a 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx @@ -8,7 +8,8 @@ tags: metaDescription: You can collect HiveMQ metrics using the OpenTelemetry Collector. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hivemq/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-hivemq/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq --- You can collect metrics about your HiveMQ MQTT messaging platform with the OpenTelemetry Collector. The collector is a component of OpenTelemetry that collects, processes, and exports telemetry data to New Relic (or any observability backend). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx similarity index 97% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx index a13a09e2969..39aafb84fad 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx @@ -7,7 +7,8 @@ tags: metaDescription: The OpenTelemetry Collector is a central tool to collect, process, and export your telemetry. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-infra-hosts/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-infra-hosts/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts --- You can collect metrics and logs from your infrastructure hosts with OpenTelemetry and leverage the same infrastructure experiences that are available for New Relic agents. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx similarity index 91% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx index 106fc7904bd..0d6d0cc4a75 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx @@ -5,9 +5,11 @@ tags: - Open source telemetry integrations - OpenTelemetry metaDescription: Using the OpenTelemetry Collector for infrastructure monitoring -freshnessValidatedDate: 2024-05-14 +freshnessValidatedDate: 2024-05-14T00:00:00.000Z redirect: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-redis + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-redis +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro --- The [OpenTelemetry collector](https://opentelemetry.io/docs/collector/) is a vendor-agnostic tool for receiving, processing, and exporting telemetry data. While collector requirements and configuration will vary, it comes with a variety of receivers and processors which make it popular for infrastructure monitoring. It's also common to use the collector for data processing, but this documentation focuses on infrastructure monitoring use cases. See [OpenTelemetry Collector for data processing](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro) for more info. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx similarity index 79% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx index 4e364dee95a..1a30410073e 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx @@ -7,7 +7,8 @@ tags: metaDescription: You can use the OpenTelemetry Collector to monitor your Kubernetes clusters. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-k8s/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-k8s/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s --- If you already have apps instrumented with OpenTelemetry in a Kubernetes cluster, you can use an OpenTelemetry Collector to enhance your current telemetry with metadata about Kubernetes. This can help you see the effects of Kubernetes on your apps. For example, tracing spans will show which Kubernetes cluster, node, pod, and container are involved. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx similarity index 97% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx index 7512433189d..b3b011a3cc3 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx @@ -9,7 +9,9 @@ tags: - kubernetes - helm metaDescription: You can collect Kafka metrics from Confluent using the OpenTelemetry Collector on Kubernetes. -freshnessValidatedDate: 2024-05-28 +freshnessValidatedDate: 2024-05-28T00:00:00.000Z +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s --- You can collect metrics about your Confluent Cloud-managed Kafka deployment with the OpenTelemetry Collector. The collector is a component of OpenTelemetry that collects, processes, and exports telemetry data to New Relic (or any observability backend). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx similarity index 96% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx index b86917966b7..251e1fe3593 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx @@ -9,7 +9,8 @@ tags: metaDescription: You can collect Kafka metrics from Confluent using the OpenTelemetry Collector. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-kafka-confluentcloud/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-kafka-confluentcloud/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud --- You can collect metrics about your Confluent Cloud-managed Kafka deployment with the OpenTelemetry Collector. The collector is a component of OpenTelemetry that collects, processes, and exports telemetry data to New Relic (or any observability backend). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx similarity index 94% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx index 7bfda2d5c46..c3ae4e39ecb 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx @@ -8,7 +8,8 @@ tags: metaDescription: You can collect Prometheus metrics using the OpenTelemetry collector. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-prometheus/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-prometheus/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus --- You can collect metrics from any [software that exposes Prometheus metrics](https://prometheus.io/docs/instrumenting/exporters/) with the OpenTelemetry collector by using the community [Prometheus receiver](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/prometheusreceiver). The collector is a component of OpenTelemetry that collects, processes, and exports telemetry data to New Relic (or any observability backend). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx similarity index 93% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx index 03786c9b5b2..a71e096bfa3 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx @@ -9,9 +9,10 @@ tags: - Cloud - OTeL metaDescription: You can collect metrics from SingleStore using the OpenTelemetry Collector. -freshnessValidatedDate: 2024-04-02 +freshnessValidatedDate: 2024-04-02T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-singlestore/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-singlestore/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore --- This guide explains how to collect metrics from your SingleStore deployment using the OpenTelemetry Collector. The collector gathers, processes, and sends telemetry data (including metrics, logs, and traces) to various observability backends, including New Relic. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx similarity index 98% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx index 4a20c00bf41..f9488a45eaa 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx @@ -8,7 +8,8 @@ tags: metaDescription: You can collect Squid metrics using the OpenTelemetry Collector. freshnessValidatedDate: never redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-squid/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid --- You can collect metrics about your Squid Cache Manager with the OpenTelemetry Collector. The collector is a component of OpenTelemetry that collects, processes, and exports telemetry data to New Relic (or any observability backend). @@ -1665,4 +1666,4 @@ To use Prometheus metrics naming conventions, disable the `pkg.translator.promet ```shell otelcol-contrib --config ./config.yaml --feature-gates=-pkg.translator.prometheus.NormalizeName -``` \ No newline at end of file +``` diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx similarity index 92% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx rename to src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx index 1fd7d5a2137..faffefff3c8 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx @@ -6,9 +6,10 @@ tags: - OpenTelemetry - Statsd metaDescription: You can collect StatsD metrics using the OpenTelemetry collector. -freshnessValidatedDate: 2023-07-20 +freshnessValidatedDate: 2023-07-20T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-statsd/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/collector-configuration-examples/opentelemetry-collector-statsd/ + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd --- You can collect StatsD metrics with the OpenTelemetry collector. The collector is a component of OpenTelemetry that collects, processes, and exports telemetry data to New Relic (or any observability backend). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx b/src/content/docs/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx similarity index 89% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx rename to src/content/docs/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx index b678e80366f..21c027c4f5f 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx +++ b/src/content/docs/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx @@ -5,11 +5,12 @@ tags: - Open source telemetry integrations - OpenTelemetry metaDescription: Use the OpenTelemetry collector as a general purpose telemetry data processing tool -freshnessValidatedDate: 2024-05-13 +freshnessValidatedDate: 2024-05-13T00:00:00.000Z redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-basic - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-configs - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-intro + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-basic + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-configs + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-intro + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro --- import opentelemetryNativeOtlpWithCollector from 'images/opentelemetry_diagram_native-otlp-with-collector.webp' @@ -83,4 +84,4 @@ service: For a working example, see the [New Relic OpenTelemetry examples repository](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/nr-config). -For additional collector examples, see [Collector for infrastructure monitoring](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro). \ No newline at end of file +For additional collector examples, see [Collector for infrastructure monitoring](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro). diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx b/src/content/docs/opentelemetry/get-started/opentelemetry-get-started-intro.mdx similarity index 94% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx rename to src/content/docs/opentelemetry/get-started/opentelemetry-get-started-intro.mdx index 80e77637dfc..88bf16e27d4 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx +++ b/src/content/docs/opentelemetry/get-started/opentelemetry-get-started-intro.mdx @@ -1,5 +1,5 @@ --- -title: 'Get started with OpenTelemetry and New Relic' +title: Get started with OpenTelemetry and New Relic tags: - Integrations - Open source telemetry integrations @@ -15,6 +15,7 @@ redirects: - /docs/integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-architecture-recipes/ - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-quick-start - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro freshnessValidatedDate: never --- diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx b/src/content/docs/opentelemetry/opentelemetry-introduction.mdx similarity index 98% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx rename to src/content/docs/opentelemetry/opentelemetry-introduction.mdx index 59b2194118b..b78ce780461 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx +++ b/src/content/docs/opentelemetry/opentelemetry-introduction.mdx @@ -17,7 +17,8 @@ redirects: - /docs/integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-concepts/ - /docs-website/src/content/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-ref-architecture/ - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-comparison -freshnessValidatedDate: 2024-06-01 + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction +freshnessValidatedDate: 2024-06-01T00:00:00.000Z --- import moreintegrationsOtelRefArch from 'images/more-integrations_diagram_otel-ref-arch.webp' diff --git a/src/content/docs/query-your-data/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx b/src/content/docs/query-your-data/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx new file mode 100644 index 00000000000..63dc8f9b190 --- /dev/null +++ b/src/content/docs/query-your-data/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx @@ -0,0 +1,49 @@ +--- +title: Grafana support with Prometheus and PromQL +tags: + - Integrations + - Grafana integrations + - Get started +metaDescription: Read about about how you can use New Relic within Grafana and our options for Prometheus and Prom QL support. +redirects: + - /docs/integrations/grafana-integrations/get-started/grafana-support-prometheus-promql + - /docs/grafana-support-prometheus-promql + - /docs/integrations/grafana-integrations/set-configure/grafana-support-prometheus-promql + - /docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql +freshnessValidatedDate: never +--- + +In Grafana, you can configure New Relic as a Prometheus data source. Not only that, within Grafana you can query metrics stored in New Relic using the [PromQL query language](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). + +## Use existing Grafana dashboards with New Relic [#Grafana-dashboards] + +When you integrate Prometheus metrics with New Relic via [Remote Write](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#remote-write), [Prometheus Agent](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#agent) or the [OpenMetrics Integration](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#OpenMetric) (2.0+) and configure New Relic as a Prometheus data source in Grafana, you can use existing Grafana and seamlessly tap into the additional monitoring, reliability, and scale we provide. + +## Compatibility and requirements [#compat-requirements] + +Before you begin, make sure you’ve finished integrating Prometheus metrics and are running a recent enough version of Grafana. + +* You should have either the [Remote Write](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#remote-write), [Prometheus Agent](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#agent) or the [OpenMetrics Integration](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#OpenMetrics) ( v2.0+) set up before you can configure New Relic Prometheus data sources in Grafana. +* You can only configure New Relic Prometheus data sources using this method in Grafana versions 6.7.0 or newer. You will need to configure custom headers in the UI, and this isn’t possible with earlier versions. For details, see [Configure New Relic as a Prometheus data source for Grafana](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). + +### Support for PromQL + +Our Prometheus API emulates Prometheus' query APIs. We support the Prometheus query language (PromQL) through our PromQL-style query mode. We do our best to automatically translate PromQL syntax queries into the closest NRQL approximation. + +For more information on how this works and differences you may observe between Prometheus and New Relic, see [Supported PromQL features](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). + +## Get data flowing in Grafana [#get-data] + +To make your New Relic data available in Grafana, you can configure a new or existing Prometheus data source in just a couple of simple steps: + +1. In the Grafana UI, add and [configure a new data source](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). +2. Save the new data source and start viewing your data. + +## What’s next? [#whats-next] + +Ready to configure a Grafana data source? + +* Read the how-to documentation for setting up the [Prometheus remote write integration](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration), [Prometheus Agent](/docs/infrastructure/prometheus-integrations/install-configure-prometheus-agent/setup-prometheus-agent) or the [Prometheus OpenMetrics Integration](/docs/integrations/prometheus-integrations/install-configure/install-update-or-uninstall-your-prometheus-openmetrics-integration). +* Read the how-to documentation for [configuring Prometheus data sources in Grafana](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). + + diff --git a/src/content/docs/query-your-data/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx b/src/content/docs/query-your-data/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx new file mode 100644 index 00000000000..d683e444d58 --- /dev/null +++ b/src/content/docs/query-your-data/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx @@ -0,0 +1,128 @@ +--- +title: Configure New Relic as a Prometheus data source for Grafana +tags: + - Integrations + - Grafana integrations + - Set up and configure +metaDescription: How to configure New Relic as a Prometheus data source for Grafana +redirects: + - /docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana + - /docs/configure-prometheus-data-source-grafana + - /docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana +freshnessValidatedDate: never +--- + +import moreintegrationsGrafanaDataSourceConfig from 'images/more-integrations_screenshot-crop_grafana-data-source-config.webp' + +You can configure a [Prometheus data source](https://grafana.com/docs/grafana/latest/features/datasources/prometheus/) in [Grafana](https://grafana.com/login) to query data stored in the New Relic Database (NRDB) using our [PromQL-style query language](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). + +## Add a Prometheus data source [#create-update] + +Follow these steps to add New Relic as a Prometheus data source for Grafana. These instructions detail how to complete the process when working with Grafana versions 6.7 and higher. + + + You must [complete the Prometheus remote-write integration](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration) process prior to beginning the configuration process. + + +1. In New Relic, [create a new Insights query key](/docs/apis/intro-apis/new-relic-api-keys/#insights-query-key). + + + Note: In Grafana, you'll need put this in a custom **X-Query-Key** HTTP header (see step 7 below), but it is the same entity as the New Relic Query key. + +2. From the [Grafana](https://grafana.com/login) **Home** screen, go to **Configuration > Data Sources** and click **Add data source**. +3. From the **Add data source** screen under **Time series databases** options, select **Prometheus**. +4. Enter the **Name** you want to use for your new Prometheus data source. +5. Set the **Default** toggle to the on or off position, depending on whether you want this to be your default data source for Prometheus queries. + * Off: this is not your default data source + * On: this is your default data source +6. Enter the correct **URL**: + * US: [prometheus-api.newrelic.com](https://prometheus-api.newrelic.com) + * EU: [prometheus-api.eu.newrelic.com](https://prometheus-api.eu.newrelic.com) +7. Under **Custom Headers**, select **Add Header**. Set the **Header** name to **X-Query-Key.** For the **Value**, enter to the Query key you created in step 1. +8. Click **Save & Test**. + + + If your graphs appear as groupings of dots and not as connected lines, you can change the graph style to display lines instead. To do this, go to Grafana's **[Graph panel](https://grafana.com/docs/grafana/latest/panels/visualizations/graph-panel/)** and select **Stacking and null value > connected**. + + + + + Screen capture of the add data source workflow in Grafana + +
+ Grafana Data Source Config.png, by [dbarnesbrown.newrelic.com](/users/dbarnesbrownnewreliccom) +
+
+
+ + + +## Versioning considerations + +New Relic strongly recommends using versions 6.7.x and higher to configure New Relic as a Prometheus data source. If you do chose to complete the configuration while running an earlier version, you will need to do one of the following to successfully configure your data source: + +* Configure the new data source to use basic authentication and then enter the Query-key as the password in the basic authentication workflow. +* Configure the new data source URL to include the Query-key: `` https://prometheus-api.newrelic.com/auth/`` `` + +## Customize Prometheus API behavior [#customize-API] + +Headers are particularly important if you have connected multiple Prometheus servers to New Relic using the [remote write integration](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration). Here are some details about customization. + + + + The [Query key](/docs/apis/get-started/intro-apis/types-new-relic-api-keys#x-query-key) parameter is required to authenticate with New Relic and identify the account containing your metrics. Grafana calls this an **X-Query key**, while it appears as a **Query key** in the New Relic UI. + + Details: + + * Required + * An API query key used for authentication + * If you are using the Prometheus remote write integration, the X-Query-Key should correspond to the same account as the X-License-Key used to integrate for remote write + + + + + Grafana's auto-complete support doesn't handle metrics that fail to strictly conform to Prometheus naming conventions. New Relic recommends you exclude any metrics that do not conform from this parameter. + + + Details: + + * Optional + * Limits metrics exposed by the API to those originating from Prometheus + * Default = true if not specified + + + + This parameter is useful if you are collecting metrics from multiple Prometheus servers. For example, if you are using Grafana, you might want to create a data source for each Prometheus server connected to New Relic and then another data source that can be used to query across all Prometheus servers. + + Details: + + * Optional + * Limits metrics exposed by the API to those collected from the specified Prometheus server + * This value should match the `prometheus_server` URL parameter in the remote write URL used to connect to your prometheus server to New Relic + * Defaults to return metrics collected from all servers + + + +## Delete a Prometheus data source [#delete] + +To delete a data source in Grafana: + +1. Go to **Configuration > Data Sources**. +2. Click on the data source you want to delete. +3. Click the **Delete** button at the bottom of the page. diff --git a/src/nav/accounts.yml b/src/nav/accounts.yml index eb89ea1931d..f4d9fbaacf0 100644 --- a/src/nav/accounts.yml +++ b/src/nav/accounts.yml @@ -80,6 +80,8 @@ pages: path: /docs/accounts/accounts-billing/new-relic-one-user-management/user-management-concepts - title: 'User types: basic, core, full platform' path: /docs/accounts/accounts-billing/new-relic-one-user-management/user-type + - title: Best practices for user access + path: src/content/docs/accounts/accounts-billing/new-relic-one-user-management/best-practices-integration.mdx - title: Tutorial on managing accounts and users path: /docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial - title: Videos of user management UI diff --git a/src/nav/apm.yml b/src/nav/apm.yml index e4f067e6e25..1d270acd125 100644 --- a/src/nav/apm.yml +++ b/src/nav/apm.yml @@ -283,6 +283,15 @@ pages: path: /docs/apm/agents/java-agent/troubleshooting/application-server-jmx-setup - title: Java agent identified with security vulnerabilities path: /docs/apm/agents/java-agent/troubleshooting/java-agent-identified-with-security-vulnerabilities + - title: Third-party integrations + path: /docs/apm/agents/java-agent/third-party-integrations + pages: + - title: Dropwizard integration + path: /docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter + - title: Kamon integration + path: /docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter + - title: Micrometer integration + path: /docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry - title: .NET monitoring path: /docs/apm/agents/net-agent pages: @@ -1379,3 +1388,7 @@ pages: path: /docs/apm/transactions/cross-application-traces/troubleshoot-cross-application-tracing - title: Not seeing stack traces path: /docs/apm/agents/apm-no-stack-traces + - title: Experimental agents + pages: + - title: Elixir integration + path: /docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent \ No newline at end of file diff --git a/src/nav/dashboards.yml b/src/nav/dashboards.yml index feac491f4e0..ea7186cbc66 100644 --- a/src/nav/dashboards.yml +++ b/src/nav/dashboards.yml @@ -36,4 +36,10 @@ pages: - title: Custom visualizations path: /docs/query-your-data/explore-query-data/dashboards/add-custom-visualizations-your-dashboards - title: Troubleshooting chart errors - path: /docs/query-your-data/explore-query-data/dashboards/troubleshooting-chart-errors \ No newline at end of file + path: /docs/query-your-data/explore-query-data/dashboards/troubleshooting-chart-errors + - title: Grafana integrations + pages: + - title: Grafana support with Prometheus and PromQL + path: /docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql + - title: New Relic as Prometheus data source for Grafana + path: /docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana \ No newline at end of file diff --git a/src/nav/infrastructure.yml b/src/nav/infrastructure.yml index d7eda8e3e68..954b4a2fa86 100644 --- a/src/nav/infrastructure.yml +++ b/src/nav/infrastructure.yml @@ -160,6 +160,14 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/cacti-integration - title: Cassandra integration path: /install/cassandra + - title: Cloudfoundry integrations + pages: + - title: New Relic Nozzle for VMware Tanzu + path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration + - title: New Relic Service Broker for VMware Tanzu + path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration + - title: New Relic .NET Buildpack for VMware Tanzu + path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration - title: Couchbase integration path: /docs/infrastructure/host-integrations/host-integrations-list/couchbase-monitoring-integration - title: Collectd integration diff --git a/src/nav/root.yml b/src/nav/root.yml index ceb5064310b..5fe71f041aa 100644 --- a/src/nav/root.yml +++ b/src/nav/root.yml @@ -8,6 +8,7 @@ pages: path: tutorials - title: Guides and best practices path: new-relic-solutions + - title: Monitor your data - title: AI monitoring path: ai-monitoring @@ -27,10 +28,16 @@ pages: path: mlops - title: Network Monitoring path: network-performance-monitoring + - title: OpenTelemetry + path: opentelemetry - title: Serverless Monitoring path: serverless-function-monitoring - title: Synthetic Monitoring path: synthetics + - title: Website performance monitoring + path: website-performance-monitoring + + - title: Data insights - title: Alerts and Applied Intelligence path: alerts-applied-intelligence @@ -38,32 +45,34 @@ pages: path: change-tracking - title: Charts, dashboards, and querying path: dashboards + - title: CodeStream + path: codestream - title: Distributed Tracing path: distributed-tracing + - title: Errors Inbox + path: errors-inbox - title: NRQL path: nrql - title: Service Level Management path: service-level-management - - title: Other capabilities - - title: CodeStream - path: codestream - - title: Errors Inbox - path: errors-inbox + + - title: Security - title: New Relic IAST path: iast - - title: OpenTelemetry - path: opentelemetry + - title: Vulnerability Management + path: vuln-management + + + - title: Other integrations path: integrations - - title: Vulnerability Management - path: vuln-management - - title: Website performance monitoring - path: website-performance-monitoring + - title: Latest updates - title: Release notes path: release-notes - title: What's new? path: whats-new + - title: Admin and data - title: Account & user management path: accounts From 197279ffb603ba3a3f756b5e412a5358bf7a4b91 Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Wed, 19 Jun 2024 10:44:20 -0700 Subject: [PATCH 04/27] fix(cross-platform): Ad lampy, airflow, and jenkins --- .../lampy-integration.mdx | 117 ++++++++++++++ .../monitoring-airflow-ot.mdx | 152 ++++++++++++++++++ .../monitoring-jenkins-ot.mdx | 120 ++++++++++++++ src/nav/infrastructure.yml | 6 + 4 files changed, 395 insertions(+) create mode 100644 src/content/docs/infrastructure/host-integrations/host-integrations-list/lampy-integration.mdx create mode 100644 src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-airflow-ot.mdx create mode 100644 src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot.mdx diff --git a/src/content/docs/infrastructure/host-integrations/host-integrations-list/lampy-integration.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/lampy-integration.mdx new file mode 100644 index 00000000000..9220e88a950 --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/host-integrations-list/lampy-integration.mdx @@ -0,0 +1,117 @@ +--- +title: LAMPy stack monitoring integration +tags: + - New Relic integrations + - LAMPy + - Linux + - Apache + - Python + - MySQL +metaDescription: Use New Relic Linux, Apache, Python and MySQL monitoring to get a dashboard with metrics from your LAMPy application. +redirects: + - /docs/infrastructure/host-integrations/host-integrations-list/lampy-integration + - /docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration +freshnessValidatedDate: never +--- + +import infrastructureLampyDashboard from 'images/infrastructure_screenshot-full_lampy-dashboard-1.webp' + +Our LAMPy integration makes use of the infrastructure agent, MySQL integration, Apache integration, and Python agent to provide you with a pre-built dashboard with your most important metrics like response time, CPU utilization, traffic, and login frequencies. + + +A screenshot depicting the LAMPy prebuilt dashboard + +
+After setting up our LAMPy integration, we give you a dashboard for your LAMPy web app metrics. +
+ +## Step 1: Install the infrastructure agent [#infra-install] + +To do this, follow [the infrastructure agent install steps](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux) for the host containing your LAMPy application. + +## Step 2: Install the MySQL integration [#mysql-install] + +Our LAMPy integration relies on the MySQL integration to work. To learn more and check requirements review our [MySQL docs](/install/mysql/). + +1. From [one.newrelic.com](https://one.newrelic.com) click **Add data > Infrastructure & OS > MySQL**. +2. Follow the instructions to install the MySQL agent. + +## Step 3: Install the Apache integration [#apache-install] + +Our LAMPy integration relies on the Apache integration to work. To learn more and check requirements review our [Apache docs](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/). + +1. From [one.newrelic.com](https://one.newrelic.com) click **Add data > Infrastructure & OS > Apache**. +2. Follow the instructions on the screen to install Apache agent. + +## Step 4: Install the Python agent [#python-install] + +Our LAMPy integration relies on the Python agent to work. To learn more and check requirements review our [Python docs](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/). + +1. From [one.newrelic.com](https://one.newrelic.com) click **Add data > Application monitoring > Python**. +2. Name your application. +3. Download the configuration file and place it in your application's root directory. +4. Integrate your python agent that is connected to Django web site. This python agent also runs on the Apache server. +5. Add this line to your `settings.py` file: + + ```py + NEW_RELIC_CONFIG_FILE = BASE_DIR / 'newrelic.ini' + ``` + +6. Add these lines to your `wsgi.py` file: + + ```py + import newrelic.agent + + from django.conf import settings + from django.core.wsgi import get_wsgi_application + + application = get_wsgi_application() + + newrelic.agent.initialize(settings.NEW_RELIC_CONFIG_FILE) + newrelic.agent.WSGIApplicationWrapper(application) + + ``` + +## Step 5: Restart your Apache server + +Wait for a few minutes and then proceed to finding your data in New Relic. + +## Find your data [#find-data] + +To get your LAMPy dashboard: + +1. From [one.newrelic.com](https://one.newrelic.com), go to the [**Add data** page](https://one.newrelic.com/marketplace). +2. Click on **Dashboards**. +3. In the search bar, type `LAMPy`. +4. The LAMPy dashboard should appear. Click on it to install it. + +Your LAMPy dashboard is considered a custom dashboard and can be found in the **Dashboards** UI. For docs on using and editing dashboards, see [our dashboard docs](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards). + +For information about data reported, see the docs for each of the tools you installed: + +* [Linux data](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux/) +* [MySQL data](/install/mysql/#metrics) +* [Apache data](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/) +* [Python data](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/) + +If you installed the infrastructure agent, you'll also receive [infrastructure data](/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events). + +Here is an example NRQL query to check bytes sent per request: + +```sql +SELECT (average(`apache.server.net.bytesPerSecond`) / average(`apache.server.net.requestsPerSecond`)) as 'Bytes sent per request' +FROM Metric +TIMESERIES auto +``` + +## What's next? [#whats-next] + +To learn more about querying your data and creating custom dashboards, check out these docs: + +* [Introduction to the query builder](/docs/query-your-data/explore-query-data/query-builder/introduction-query-builder) +* [Introduction to custom dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards) +* [Manage your dashboard](/docs/query-your-data/explore-query-data/dashboards/manage-your-dashboard) diff --git a/src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-airflow-ot.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-airflow-ot.mdx new file mode 100644 index 00000000000..13f7c92f535 --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-airflow-ot.mdx @@ -0,0 +1,152 @@ +--- +title: Monitor Apache Airflow with OpenTelemetry +tags: + - Integrations + - Open source telemetry integrations + - OpenTelemetry + - Airflow + - Quickstart +metaDescription: Monitor Airflow data with New Relic using OpenTelemetry. +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/airflow/monitoring-airflow-ot + - /docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot +freshnessValidatedDate: 2023-11-16T00:00:00.000Z +--- + +import opentelemetryAirflow01 from 'images/opentelemetry_screenshot_airflow_01.webp' + +import opentelemetryAirflow02 from 'images/opentelemetry_screenshot_airflow_02.webp' + +Monitor Apache Airflow data by configuring [OpenTelemetry](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#setup-opentelemetry) to send data to New Relic, where you can visualize tasks, operators, and DAG executions as metrics. + +Screenshot showing sample Airflow DAG runs in New Relic + +## Prerequisites [#prerequisites] + +Before enabling OpenTelemetry in Apache Airflow, you'll need to install the Airflow package with the `otel` extra. The installation method depends on your Airflow deployment approach: + +### Option 1: Installing from PyPi [#install-pypi] + +1. Follow the installation instructions from [Airflow's Documentation](https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html). +2. When installing with pip, add the `otel` extra to the command. For example: + + ```pip install "apache-airflow[otel]"``` + +### Option 2: Installing from Docker [#install-docker] + +1. Set up the Airflow Docker image using instructions from [Airflow's documentation](https://airflow.apache.org/docs/docker-stack/index.html). +2. Extend the pre-built Docker image by using a Dockerfile to install the `otel` extra. You can replace the latest tag with your desired version of the image. + + ``` + FROM apache/airflow:latest + RUN pip install --no-cache-dir "apache-airflow[otel]==$AIRFLOW_VERSION" + ``` + + + `$AIRFLOW_VERSION` is already set by the apache/airflow container, but can be replaced with a version number for other base images. + + +## Configuration [#configuration] + +To send Airflow metrics to New Relic, configure the OpenTelemetry metrics to export data to an [OpenTelemetry collector](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-intro/), which will then forward the data to a New Relic [OTLP endpoint](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#note-endpoints) using a . + + + Due to Airflow's current lack of support for sending OpenTelemetry data with authentication headers, the OpenTelemetry collector is essential for authenticating with New Relic. + + +### Configure the OpenTelemetry collector [#configuration-collector] + +1. Follow the [basic collector example](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-basic/) to set up your OpenTelemetry collector. +2. Configure the collector with your appropriate OTLP endpoint, such as `https://otlp.nr-data.net:4317`. +3. For authentication, add your to the environment variable `NEW_RELIC_LICENSE_KEY` so that it populates the `api-key` header. +4. Ensure port 4318 on the collector is reachable from the running Airflow instance. (For docker, you may need to use a [docker network](https://docs.docker.com/network/).) +5. Launch the collector. + +### Configure Airflow metrics [#configuration-airflow] + +Airflow sends metrics using OTLP over HTTP, which uses port `4318`. Airflow has multiple methods of [setting configuration options](https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html). + + + If your environment has Airflow running in a docker container alongside the OpenTelemetry Collector, you will need to change the `otel_host` setting from `localhost` to the container address of the collector. + + +Choose one of the following methods to set the required options for Airflow. + +1. Set the required options in the `airflow.cfg` file. + + ``` + [metrics] + otel_on = True + otel_host = localhost + otel_port = 4318 + otel_ssl_active = False + ``` + +2. Or, set the required options as environment variables. + + ``` + export AIRFLOW__METRICS__OTEL_ON=True + export AIRFLOW__METRICS__OTEL_HOST=localhost + export AIRFLOW__METRICS__OTEL_PORT=4318 + export AIRFLOW__METRICS__OTEL_SSL_ACTIVE=False + ``` + + + Airflow has [additional settings](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#setup-opentelemetry) for metrics that may be useful. This includes the ability to [rename metrics](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#rename-metrics) before sending, which is helpful if metric names exceed the 63 byte limit for OpenTelemetry. + + +## Validate data is sent to New Relic [#validation] + +To confirm New Relic is collecting your Airflow data, run a DAG or pipeline: + +1. Login to Airflow. +2. Click the run button on one of the existing tutorial DAGs, or your own. +3. Wait for the pipeline to finish running. +4. Go to **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > Services - OpenTelemetry > Airflow**. +5. Click **Metrics Explorer** to visualize metrics for pipeline executions. + +## Building dashboards [#building-dashboards] + +With Airflow metrics, you can build dashboards around individual pipelines, overall performance, or view a comparison between different pipelines. Click here to learn more about [querying your metrics](/docs/data-apis/understand-data/metric-data/query-metric-data-type/). + +This query retrieves a list of all reported metrics for Airflow: + +```sql +SELECT uniques(metricName) FROM Metric WHERE entity.name = 'Airflow' AND metricName LIKE 'airflow.%' SINCE 30 MINUTES AGO LIMIT 100 +``` + +Make sure to change the limit (`100`) if your metric names exceed it. + +This query shows a comparison of different completion times for successful runs of different DAGs: + +```sql +SELECT latest(airflow.dagrun.duration.success) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES +``` + +Screenshot showing sample Airflow DAG runs in New Relic + +This query shows counts of failed DAG runs, which can be used to build for critical pipelines: + +```sql +SELECT count(airflow.dagrun.duration.failed) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES +``` + +Screenshot showing sample Airflow failures in New Relic + + + Airflow's OpenTelemetry metrics are not maintained by New Relic, so if you have any issues with the instrumentation, [create a new issue in Airflow's GitHub repo](https://github.com/apache/airflow/issues). + + + diff --git a/src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot.mdx new file mode 100644 index 00000000000..db23464b83f --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot.mdx @@ -0,0 +1,120 @@ +--- +title: Monitor Jenkins with OpenTelemetry and New Relic +tags: + - Integrations + - Open source telemetry integrations + - OpenTelemetry + - Jenkins + - Quickstart +metaDescription: Here is a simple example to setup the Jenkins OpenTelemetry plugin to send data to New Relic. +redirects: + - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/jenkins/monitoring-jenkins-ot + - /docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot +freshnessValidatedDate: never +--- + +import opentelemetryJenkis01 from 'images/opentelemetry_screenshot-full_jenkins-01.webp' + +import opentelemetryIntegrationsJenkins02 from 'images/opentelemetry_screenshot-full_integrations-jenkins-02.webp' + +import opentelemetryIntegrationsJenkins03 from 'images/opentelemetry_screenshot-full_integrations-jenkins-03.webp' + +import opentelemetryOpentelemetryJenkins04 from 'images/opentelemetry_screenshot-full_opentelemetry-jenkins-04.webp' + +import opentelemetryJenkins05 from 'images/opentelemetry_screenshot-full_jenkins-05.webp' + +Monitor Jenkins with the [OpenTelemetry plugin](https://plugins.jenkins.io/opentelemetry) by visualizing jobs and pipeline executions as [distributed traces](/docs/distributed-tracing/concepts/introduction-distributed-tracing). You can also install the [quickstart](https://newrelic.com/instant-observability/jenkins) to get a pre-built dashboard to monitor your Jenkins pipeline. + +Screenshot showing sample Jenkins dashboard in New Relic + +## Prerequisites [#prerequisites] + +You need to first install the OpenTelemetry plugin from Jenkins: + +1. Log into Jenkins. +2. From the Dashboard, click on **Manage Jenkins**. +3. Under System Configuration, click **Plugins**. +4. Click the **Available plugins** tab, then search for **OpenTelemetry**. +5. Select the **OpenTelemetry** checkbox, and **Install without restart**. +6. Once the installation is complete, click **Manage Jenkins**. +7. Under **System Configuration**, click **System**. +8. Scroll down and check for a section called **OpenTelemetry**. If you can't see it, restart Jenkins. + +Screenshot showing Jenkins OpenTelemetry plugin + +## Configuration [#configuration] + +You need a New Relic [OTLP Endpoint](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#note-endpoints) and an to configure the Jenkins OpenTelemetry plugin to send data to New Relic. + +Screenshot showing Jenkins OpenTelemetry configuration + +1. Enter an OTLP Endpoint. For example, `https://otlp.nr-data.net:4317`. +2. For authentication, select **Header Authentication**: + a. In the **Header Name** field, enter **api-key**. + b. In the **Header Value** field, enter a secret text containing your New Relic ingest license key. +3. Save the changes. + +If you don't have a secret text created with your New Relic license key, click the **+ Add** button and select **Jenkins Credentials Provider**, to create one. You can keep the default values except for **kind** and **secret** and the **description** is optional. + +Screenshot showing Jenkins Credential Provider + +1. From the **Kind** dropdown, select **Secret text**. +2. In the **secret** field, enter your New Relic ingest license key. +3. Optionally, add a description to note what the secret text is for. + +## Validation [#validation] + +Run a job or create a new pipeline to see Jenkins data in New Relic. Here's how to build a pipeline: + +1. Log into Jenkins and click **New Item**. +2. Enter an item name, click **Pipeline**, and then **OK**. +3. Scroll down to the very bottom to the **Pipeline** section. +4. Use the Pipeline script, and select an option from the **try sample Pipeline...** dropdown. +5. Click Save. +6. In the newly created pipeline, click **Build Now**. +7. Got to **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > Services - OpenTelemetry > jenkins**. +8. Click **Distributed tracing** to visualize jobs and pipeline executions. +9. Click **Logs** to see your Jenkins console logs. If there are no logs, check to make sure the environment variable `OTEL_LOGS_EXPORTER="otlp"` is set. + +Screenshot showing Jenkins OpenTelemetry plugin + +## Install the Jenkins quickstart dashboard [#quickstart] + +After you've sent your Jenkins pipeline data to New Relic, you can also easily monitor your jobs and pipeline executions with the prebuilt dashboard from [New Relic Instant Observability](http://newrelic.com/instant-observability). Get started in minutes with a pre-built dashboard to see key metrics in a consolidated view: + +1. Go to the Jenkins quickstart in [New Relic Instant Observability](https://newrelic.com/instant-observability/jenkins), and click **+ Install now**. +2. Select an account and click **Begin installation**. +3. If you've already completed the [validation](#validation), select **done** to move onto the next step. +4. The quickstart deploys the resources to your account. Click **see your data** to get to the dashboard. + +Jenkins quickstart dashboard in New Relic + + + The Jenkins OpenTelemetry plugin is not maintained by New Relic, so if you have any issues with the instrumentation, [create a new issue in the plugin's GitHub repo](https://github.com/jenkinsci/opentelemetry-plugin/issues). + + + diff --git a/src/nav/infrastructure.yml b/src/nav/infrastructure.yml index 954b4a2fa86..515848b927a 100644 --- a/src/nav/infrastructure.yml +++ b/src/nav/infrastructure.yml @@ -142,6 +142,8 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/active-directory-integration - title: Aerospike integration path: /docs/infrastructure/host-integrations/host-integrations-list/aerospike-integration + - title: Monitor Apache Airflow with OpenTelemetry + path: /docs/infrastructure/host-integrations/host-integrations-list/monitoring-airflow-ot - title: Apache Druid integration path: /docs/infrastructure/host-integrations/host-integrations-list/apache-druid-integration - title: Apache integration @@ -184,6 +186,8 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/hashicorp-consul-monitoring-integration - title: IBM MQ monitoring integration path: /install/ibm-mq + - title: Monitor Jenkins with OpenTelemetry + path: /docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot - title: JMX integration pages: - title: Install the JMX integration @@ -192,6 +196,8 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/jmx-monitoring-activemq - title: Kafka integration path: /install/kafka + - title: LAMPy stack monitoring integration + path: /docs/infrastructure/host-integrations/host-integrations-list/lampy-integration - title: Lighttpd integration path: /docs/infrastructure/host-integrations/host-integrations-list/lighttpd-integration - title: Linkerd integration From db301afa7c0249a9c1ead927c1f0a4e67c61d437 Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Thu, 20 Jun 2024 13:28:35 -0700 Subject: [PATCH 05/27] fix(cross-platform): Migrate dojo and statsd --- .../dojo-io-integration.mdx | 0 .../statsd-monitoring-integration.mdx | 649 ++++++++++++++++++ src/nav/browser.yml | 2 + src/nav/infrastructure.yml | 2 + 4 files changed, 653 insertions(+) rename src/content/docs/{more-integrations/open-source-telemetry-integrations/dojo => browser/browser-integrations}/dojo-io-integration.mdx (100%) create mode 100644 src/content/docs/infrastructure/host-integrations/statsd-monitoring-integration.mdx diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx b/src/content/docs/browser/browser-integrations/dojo-io-integration.mdx similarity index 100% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx rename to src/content/docs/browser/browser-integrations/dojo-io-integration.mdx diff --git a/src/content/docs/infrastructure/host-integrations/statsd-monitoring-integration.mdx b/src/content/docs/infrastructure/host-integrations/statsd-monitoring-integration.mdx new file mode 100644 index 00000000000..8b046bd06c3 --- /dev/null +++ b/src/content/docs/infrastructure/host-integrations/statsd-monitoring-integration.mdx @@ -0,0 +1,649 @@ +--- +title: StatsD monitoring integration +tags: + - Integrations + - On-host integrations + - On-host integrations list +redirects: + - /docs/integrations/host-integrations/host-integrations-list/statsd-monitoring-integration-version-2 + - /docs/statsd-monitoring-integration-version-2 + - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration-new-relic-infrastructure + - /docs/statsd-monitoring-integration-new-relic-infrastructure + - /docs/statsd-monitoring-integration + - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration + - /docs/integrations/host-integrations/host-integrations-list/statsd-monitoring-integration + - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration-version-2 + - /docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration +freshnessValidatedDate: never +--- + +import infrastructureStatsdNrqlCondition from 'images/infrastructure_screenshot-crop_statsd-nrql-condition.webp' + +import infrastructureStatsdNrqlAlert from 'images/infrastructure_screenshot-crop_statsd-nrql-alert.webp' + +Our StatsD integration lets you easily get [StatsD](https://github.com/statsd/statsd)-format data into New Relic. You can also add any arbitrary tags (key-value pairs) to your data. Once your metrics are in New Relic, you can [query your data](#find-use-data) and create custom charts and dashboards. + +Want to try out our StatsD integration? [Create a New Relic account](https://newrelic.com/signup) for free! No credit card required. + +## Requirements + +This integration uses our [Metric API](/docs/data-ingest-apis/get-data-new-relic/metric-api/introduction-metric-api) and our [Event API](/docs/insights/insights-data-sources/custom-data/introduction-event-api) to ingest data. To use these APIs, you'll need a . + +The integration adheres to the Metric API [requirements and data limits](/docs/data-ingest-apis/get-data-new-relic/metric-api/metric-api-limits-restricted-attributes). To see if you might be hitting the rate limit, run the following NRQL query of the [`NrIntegrationError` event](/docs/telemetry-data-platform/manage-data/nrintegrationerror): + +```sql +SELECT count(*) FROM NrIntegrationError + WHERE newRelicFeature ='Metrics' + FACET category, message + LIMIT 100 since 1 day ago +``` +The integration is available as a linux container image in [DockerHub](https://hub.docker.com/r/newrelic/nri-statsd/tags) for amd64 and arm64 architectures. + +## Install + +This section will explain how to do a standard install. If you want to run StatsD in Kubernetes, see [Kubernetes install](#kubernetes). + +To install the StatsD integration, run the following command and include your [New Relic account ID](/docs/accounts/install-new-relic/account-setup/account-id) and . This generates a TOML configuration file used by `gostatsd`. + +```shell +docker run \ + -d --restart unless-stopped \ + --name newrelic-statsd \ + -h $(hostname) \ + -e NR_ACCOUNT_ID=YOUR_ACCOUNT_ID \ + -e NR_API_KEY=NEW_RELIC_LICENSE_KEY \ + -p 8125:8125/udp \ + newrelic/nri-statsd:latest +``` + +If your organization is in the [EU data center region](/docs/using-new-relic/welcome-new-relic/get-started/introduction-eu-region-data-center), add this to the above command: + +```shell +-e NR_EU_REGION=true \ +``` + +After installing, you can: + +* Do optional [additional configuration](#configure) +* [Define your metrics](#metric-format) +* [Add custom tags](#add-tags) to your data +* [Create alerts](#alerts) + +### Install for Kubernetes [#kubernetes] + +Here are examples of Kubernetes manifests for deployment and service objects: + + + + Below are examples of Kubernetes manifests to deploy StatsD in a Kubernetes environment and create a StatsD service named `newrelic-statsd`. You need to insert your [account ID](/docs/accounts/install-new-relic/account-setup/account-id) and your . + + **deployment.yml**: + + ```yml + apiVersion: apps/v1 + kind: Deployment + metadata: + name: newrelic-statsd + namespace: tooling + labels: + app: newrelic-statsd + spec: + selector: + matchLabels: + app: newrelic-statsd + replicas: 2 + revisionHistoryLimit: 2 + template: + metadata: + labels: + app: newrelic-statsd + spec: + serviceAccountName: newrelic-statsd + containers: + - name: newrelic-statsd + image: newrelic/nri-statsd:latest + env: + - name: NR_ACCOUNT_ID + value: "NEW_RELIC_ACCOUNT_ID" + - name: NR_API_KEY + value: "NEW_RELIC_LICENSE_KEY" + ``` + + **service.yml**: + + ```yml + apiVersion: v1 + kind: Service + metadata: + name: newrelic-statsd + namespace: tooling + labels: + app: newrelic-statsd + spec: + type: ClusterIP + ports: + - name: newrelic-statsd + port: 80 + targetPort: 8125 + protocol: UDP + selector: + app: newrelic-statsd + ``` + + **service-account.yml**: + + ```yml + apiVersion: v1 + kind: ServiceAccount + metadata: + name: newrelic-statsd + namespace: default + ``` + + + For configuration details, see [Kubernetes configuration](#k8s-config). + + + + A [StatsD Helm chart](https://github.com/newrelic/helm-charts/tree/master/charts/nri-statsd) is also available to install the integration. + + + + + + +## Configure + +In the [install procedure](#install), you run `nri-statsd` with environment variables, and this generates a TOML configuration file. Additionally, you can set these configuration options: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Configuration options + + Description +
+ `expiry-interval` + + _string_ + + If a metric is not updated for this amount of time, we stop reporting that metric. Default is `5m`. + + If you want to send the metrics only if the value was updated between the flush intervals, configure this to `1ms`. To never expire metrics, set it to `0`. +
+ `percent-threshold` + + _list of integers_ + + Specifies the percentiles used for metrics aggregation. Default: `90`. +
+ `metrics-addr` + + _string_ + + Indicates address on which to listen for metrics. Default: `:8125`. + From nri-statsd `v2.3.0` (goStatsD `v34.2.1`), connection via Unix Domain Socket (UDS) is supported. Use "metrics-addr=/some/path/newrelic-statsd.socket" instead of "[host]:port" in the configuration. +
+ + + To ensure FedRAMP compliance when using the StatsD integration you must define the following endpoints in the custom configuration: + + ``` + address = 'https://gov-insights-collector.newrelic.com/v1/accounts/ $NR_ACCOUNT_ID/events' + ``` + + ``` + address-metrics = 'https://gov-infra-api.newrelic.com/metric/v1' + ``` + + +Here are some examples of customizing configuration by overwriting the default configuration: + + + + ``` + # Specify after how long do we expire metrics, default:5m + expiry-interval = '1ms' + + # percent-threshold specify a list of percentiles for metrics aggregation, default:90 + percent-threshold = [90, 99] + + backends='newrelic' + [newrelic] + # flush types supported: metrics, insights, infra + flush-type = 'metrics' + transport = 'default' + address = 'https://insights-collector.newrelic.com/v1/accounts/$NR_ACCOUNT_ID/events' + address-metrics = 'https://metric-api.newrelic.com/metric/v1' + api-key = 'NEW_RELIC_LICENSE_KEY' + ``` + + **Disable timer sub-metrics:** + + By default, `nri_statsd` calculates the following for timer metrics: standard deviation, mean, median, sum, lower, and upper bounds for the flush interval. If you want to disable those metrics you can do it by adding a `disabled-sub-metrics` configuration section and set `true` for the ones you want disabled. Here's an example: + + ``` + # disabled-sub-metrics configuration section allows disabling timer sub-metrics + [disabled-sub-metrics] + # Regular metrics + count=false + count-per-second=false + mean=false + median=false + lower=false + upper=false + stddev=false + sum=false + sum-squares=false + + # Percentile metrics + count-pct=false + mean-pct=false + sum-pct=false + sum-squares-pct=false + lower-pct=false + upper-pct=false + ``` + + + + To overwrite the default `nri-statsd` configuration while running in a container, you can mount a configuration file inside the container. + + You can adopt the following template as needed for your situation. + + Example: + + ``` + backends='newrelic' + flush-interval='10s' + + [newrelic] + # flush types supported: metrics, insights, infra + flush-type = 'metrics' + transport = 'default' + address-metrics = 'https://metric-api.newrelic.com/metric/v1' + api-key = 'NEW_RELIC_LICENSE_KEY' + ``` + + To run the container with the file mounted in the appropriate path: + + ```shell + docker run \ + ... + -v ${PWD}/nri-statsd.toml:/etc/opt/newrelic/nri-statsd.toml \ + ... + newrelic/nri-statsd:latest + ``` + + + + The best approach to configure `nri-statsd` running in Kubernetes is to use a `configMap` and mount the `configMap` into the container. (This is a similar process to mounting the configuration file in Docker.) + + Example: + + ``` + apiVersion: v1 + kind: ConfigMap + metadata: + name: nri-statsd-config + namespace: default + data: + nri-statsd.toml: | + backends='newrelic' + flush-interval='10s' + + [newrelic] + # flush types supported: metrics, insights, infra + flush-type = 'metrics' + transport = 'default' + address = 'https://metric-api.newrelic.com/metric/v1' + api-key = '$NEW_RELIC_LICENSE_KEY' + ``` + + To use the configMap, declare a volume on your deployment spec template and then declare a `volumeMount` on your container spec. + + Example: + + ``` + apiVersion: apps/v1 + kind: Deployment + spec: + template: + spec: + containers: + .... + volumeMounts: + - mountPath: /etc/opt/newrelic/ + name: nri-statsd-config + volumes: + - name: nri-statsd-config + configMap: + name: nri-statsd-config + ``` + + + +## Metric format + +The integration receives metrics using the [StatsD protocol](https://github.com/statsd/statsd). Optionally, the sample rate can be configured and tags can be added. + +Here's the metric data format we use: + +``` +:||@|# +``` + +Here are explanations of these fields: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Field name + + Description +
+ <metric name> + `string` + + **Required.** Name of the metric. +
+ <value> + `string` + + **Required.** The [metric type](#metric-types): + + * `c` = counter + * `g` = gauge + * `ms` = timer +
+ @<sample rate> + `float` + + **Optional** for simple counters or timer counters. When many metrics must be sent, you can use sampling to reduce network traffic. The downside is a reduction in the resolution of the data. + + An example of how this would work for sample rates below `1`: If you set this to `0.1`, the counter would send a measurement one out of every 10 times. +
+ \#<tags> + `string` + + **Optional.** Tags attached to your metrics are converted into attributes (key-value pairs). For more on tagging options, see [Tags](#add-tags). +
+ +## Metric types + +Here are the types of metrics and how to format them: + + + + A counter measures the number of occurrences of an event. Examples include cache hits per reporting interval and the number of threads created per reporting interval. + + A counter can be incremented or decremented during the same flush interval by adding a sign to the value. In the following example, the counter value will be `2`: + + ``` + counter:4|c + counter:-2|c + ``` + + At each flush, the current count is sent and reset to `0`. If the count is not updated, at the next flush it will send the value `0`. You can opt to disable this behavior by setting [`expiry-interval`](#configure) to `1ms`. + + Here’s an example of a counter that is being sampled 1 out of 10 times: + + ``` + counter:4|c@0.1 + ``` + + + + A gauge represents a value that can increase or decrease with time. Examples of gauges include temperature, CPU usage, and memory. Here's an example: + + ``` + temperature:40|g + ``` + + If the gauge is not updated, at the next flush it will send the previous value. You can opt to disable this behavior by setting [`expiry-interval`](#configure) to `1ms`. + + + + The timer metric type measures timing data. + + By default, `nri_statsd` calculates the following for timer metrics: standard deviation, mean, median, sum, lower, and upper bounds for the flush interval. These are sent as sub-metrics in the following format: + + ``` + .std_dev + .median + .summary + .sum_squares + .mean + .per_second + ``` + + The configured percentiles will generate the following metrics. The percentile threshold value will be attached as a tag. + + ``` + .sum_squares.percentiles + .sum.percentiles + .count.percentiles + .upper.percentiles + .mean.percentiles + ``` + + The percentile threshold can be tweaked with the [`percent-threshold`](#configure) config option. These can be controlled through the [`disabled-sub-metrics` configuration section](#config-example). + + + +## Add tags (attributes) [#add-tags] + +You can add tags to your data, which we save as [attributes](/docs/using-new-relic/welcome-new-relic/get-started/glossary#attribute) (key-value pairs). There are two options for adding tags: + +* Add default tags that apply to all metrics: These apply to all metrics. They are fixed and don't change over time. +* Add metric-level tags: These apply to specific metrics and allow the value to be changed between two submits. + + + + Add tags to metrics and events by defining an environment variable in the [startup command](#install). + + Here's an example that would create two tags: + + ``` + -e TAGS="environment:production region:us" + ``` + + Here's that environment variable used in the [startup command](#install): + + ``` + docker run \ + -d --restart unless-stopped \ + --name newrelic-statsd \ + -h $(hostname) \ + -e NR_ACCOUNT_ID=YOUR_ACCOUNT_ID \ + -e NR_API_KEY=NEW_RELIC_LICENSE_KEY \ + -e TAGS="environment:production region:us" \ + -p 8125:8125/udp \ + newrelic/nri-statsd:latest + ``` + + + + When defining the [metric format](#metric-format), you can add tags using this format: + + ``` + :||# + ``` + + In this example, `` is a comma-separated list of tags. Tags format is: `simple` or `key:value`. + + + +Here's an example [NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql) query that includes a custom tag: + +``` +SELECT count(*) FROM Metric WHERE environment = 'production' +``` + +## Create alerts [#alerts] + +You can alert on StatsD data using [NRQL alert conditions](/docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries). + + + + This procedure walks you through sending some sample data and then creating an alert condition using that data. + + First, send this data to New Relic’s StatsD container: + + ``` + echo "prod.test.num:32|g" | nc -v -w 1 -u localhost 8125 + ``` + + Next, create a [NRQL alert condition](/docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries) using this query: + + ``` + SELECT latest(prod.test.num) FROM Metric WHERE metricName = 'prod.test.num' + ``` + + Here's an image showing creating this NRQL alert condition. Notice that the sample data sent in is represented by the blue dot on the upper right of the chart. + + StatsD NRQL alert condition query + + Now we can create the alert condition with these settings: + + StatsD NRQL alert condition creation example + + When you create the NRQL alert condition, be sure to set the **Condition name**. + + If a metric with a value above 50 is sent, then an incident is created and notified. The incident is closed automatically after 24 hours. To test that the alert is working, run this command: + + ``` + echo "prod.test.num:60|g" | nc -v -w 1 -u localhost 8125 + ``` + + + +## Find and use data [#find-use-data] + +To query your data, you'd use any New Relic [query option](/docs/using-new-relic/data/understand-data/query-new-relic-data). For example, you might run a [NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql) query like: + +``` +SELECT count(*) FROM Metric WHERE metricName = 'myMetric' and environment = 'production' +``` + +For more on how to query the `Metric` data type, see [Query metric data](/docs/data-ingest-apis/get-data-new-relic/metric-api/view-query-you-metric-data). + +## Troubleshooting [#troubleshooting] + +**Problem**: + +You've followed the steps to run the StatsD integration but still need to see the expected metrics in New Relic. + +**Solutions**: + +Follow the steps below to troubleshoot your configuration: + * Ensure the contains your 40 hexadecimal character license key, and it's a valid license for the selected New Relic account ID. +* Ensure the right data center, US or EU, has been selected for your New Relic account. Tip: If the license_key starts with "eu" then you must use the `NR_EU_REGION=true` flag. +* Ensure there are no [`NrIntegrationError`](/data-apis/ingest-apis/metric-api/troubleshoot-nrintegrationerror-events/) related to the StatsD integration. +* Verbose logs can be enabled using the environment variable `NR_STATSD_VERBOSE`, modify the docker run command adding the following variable: `-e NR_STATSD_VERBOSE=true`. +* A test metric can be pushed to confirm the integration is sending metrics that are expected. Example using the NetCat `nc` utility: + - `echo "example.gauge:123|g" | nc -u -w0 127.0.0.1 8125` (update `127.0.0.1` with running container IP/address). +## Check the source code [#source-code] + +This integration is open source software. That means you can [browse its source code](https://github.com/newrelic/nri-statsd/) and send improvements, or create your own fork and build it. diff --git a/src/nav/browser.yml b/src/nav/browser.yml index e8661fed1b2..602b1f7ce9e 100644 --- a/src/nav/browser.yml +++ b/src/nav/browser.yml @@ -214,6 +214,8 @@ pages: pages: - title: Blazor WebAssembly integration path: /docs/browser/browser-integrations/blazor-webassembly + - title: Dojo integration + path: /docs/browser/browser-integrations/dojo-io-integration - title: Flutter integration path: /docs/browser/browser-integrations/flutter-web-integration - title: MExN integration diff --git a/src/nav/infrastructure.yml b/src/nav/infrastructure.yml index 515848b927a..0a54b4d0ab6 100644 --- a/src/nav/infrastructure.yml +++ b/src/nav/infrastructure.yml @@ -262,6 +262,8 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/snowflake-integration - title: SonarQube monitoring integration path: /docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration + - title: StatsD integration + path: /docs/infrastructure/host-integrations/statsd-monitoring-integration - title: Stripe monitoring integration path: /docs/infrastructure/host-integrations/host-integrations-list/stripe-integration - title: Temporal monitoring integration From 2c084e6358b25c840cf5b48dffc6c70e7eca7e7a Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Thu, 20 Jun 2024 16:29:48 -0700 Subject: [PATCH 06/27] fix(cross-platform): Moved more integrations vertx, wordpress, terraform, statsd, cloud foundary, grafana, airflow, jenkins, lampy, statsd, and roku. --- .../vertx/vertx-eventbus-integration.mdx | 155 +++++ .../vertx/vertx-extensions-integration.mdx | 157 +++++ .../wordpress-fullstack-integration.mdx | 4 +- .../terraform/terraform-intro.mdx | 0 .../terraform/terraform-modules.mdx | 0 .../terraform/terragrunt.mdx | 0 .../statsd-monitoring-integration.mdx | 0 ...are-tanzu-dotnet-buildpack-integration.mdx | 133 ---- ...ware-tanzu-firehose-nozzle-integration.mdx | 160 ----- ...mware-tanzu-service-broker-integration.mdx | 424 ------------ .../grafana-support-prometheus-promql.mdx | 49 -- ...w-relic-prometheus-data-source-grafana.mdx | 128 ---- .../airflow/monitoring-airflow-ot.mdx | 152 ---- .../jenkins/monitoring-jenkins-ot.mdx | 120 ---- .../lampy/lampy-integration.mdx | 117 ---- .../statsd/statsd-monitoring-integration.mdx | 649 ------------------ .../video-agents/open-source-video-agents.mdx | 23 + src/nav/apm.yml | 16 +- src/nav/infrastructure.yml | 4 +- src/nav/new-relic-solutions.yml | 6 +- src/nav/root.yml | 8 +- 21 files changed, 355 insertions(+), 1950 deletions(-) create mode 100644 src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-eventbus-integration.mdx create mode 100644 src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-extensions-integration.mdx rename src/content/docs/{more-integrations/open-source-telemetry-integrations/wordpress => apm/agents/php-agent/frameworks-libraries}/wordpress-fullstack-integration.mdx (99%) rename src/content/docs/{more-integrations => infrastructure-as-code}/terraform/terraform-intro.mdx (100%) rename src/content/docs/{more-integrations => infrastructure-as-code}/terraform/terraform-modules.mdx (100%) rename src/content/docs/{more-integrations => infrastructure-as-code}/terraform/terragrunt.mdx (100%) rename src/content/docs/infrastructure/host-integrations/{ => host-integrations-list}/statsd-monitoring-integration.mdx (100%) delete mode 100644 src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx delete mode 100644 src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx delete mode 100644 src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx delete mode 100644 src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx delete mode 100644 src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx delete mode 100644 src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx delete mode 100644 src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx delete mode 100644 src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx delete mode 100644 src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx create mode 100644 src/content/docs/video-agents/open-source-video-agents.mdx diff --git a/src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-eventbus-integration.mdx b/src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-eventbus-integration.mdx new file mode 100644 index 00000000000..04377b4502e --- /dev/null +++ b/src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-eventbus-integration.mdx @@ -0,0 +1,155 @@ +--- +title: Java Vert.x Event Bus integration +tags: + - nrlabs + - nrlabs-data + - apm + - java + - vertx + - vert.x + - eventbus + - expert services +metaDescription: Provides instrumentation for monitoring the Vert.x Event Bus. +freshnessValidatedDate: never +redirects: + - /docs/more-integrations/java-integrations/vertx-eventbus-integration +--- + +[Java Vert.x Event Bus Integration](https://github.com/newrelic/newrelic-java-vertx/tree/main) provides instrumentation for monitoring the (Vert.x)[https://vertx.io/] Event Bus, enabling the tracking of event flow across the bus. Specifically designed for Vert.x Verticles that extend` AbstractVerticle`, this extension instruments each deployed class to monitor all methods except those specifically defined by `AbstractVerticle`. + +## Supported methods + +The integrations tracks or excludes metrics. Here's a list of each: + +Tracked methods: +* Methods that facilitate event flow tracking +* Methods that enchance visibility into application behavior and performance. + +Excluded methods: + +* Specific lifecycle and configuration methods (`start`, `stop`, `rxStart`, `rxStop`, `config`, `deploymentID`, `getVertx`, `init`, `processArgs`) + +## Install the Java agent + +The Java APM agent must be installed to configure the Java Vert.x extensions. Follow the instructions to [install the Java APM Agent](https://docs.newrelic.com/install/java/). + +Once the Java APM agent is installed and configured for your application,create an `extensions` folder under the `newrelic` directory if it doesn't already exist: + +```bash +# Open your Java APM Agent installation location and create 'extensions' folder ( if it is not existing) +cd path/to/newrelic +mkdir extensions +``` + +## Install and configure Java Vert.x Event Bus integration [#install] + + + + curl + Powershell + Web + + + + + +To install and configure the Java Vert.x Event Bus integration, follow these steps: + +- Update the Java APM agent's `extensions` folder location in the provided bash script. +- Copy the updated commands to a bash script `install_vertx_integration.sh`. +- Run the script to integrate the Java Vert.x Event Bus monitoring with New Relic APM. + +```sh +#!/bin/bash + +# Define variables +apiUrl="https://api.github.com/repos/newrelic/newrelic-java-vertx/releases/latest" +tempZipPath="/tmp/latest.zip" +tempExtractPath="/tmp/Extracted" +extensionsDir="/path/to/newrelic/extensions" + +# Retrieve the download URL for the latest release ZIP file +downloadUrl=$(curl -s "$apiUrl" | grep -o "browser_download_url.*\.zip" | cut -d '"' -f 3) + +echo $downloadUrl + +# Check if the download URL is empty or invalid +if [ -z "$downloadUrl" ]; then + echo "Failed to retrieve download URL. Exiting." + exit 1 +fi + +# Download the latest release ZIP file +curl -L -o "$tempZipPath" "$downloadUrl" + +# Check if the ZIP file was downloaded successfully +if [ ! -f "$tempZipPath" ]; then + echo "Failed to download the ZIP file. Exiting." + exit 1 +fi + +# Create a temporary extraction folder +mkdir -p "$tempExtractPath" + +# Extract the contents of the ZIP file to the temporary folder +unzip -q "$tempZipPath" -d "$tempExtractPath" + +# Check if the extraction was successful +if [ $? -ne 0 ]; then + echo "Failed to extract the ZIP file. Exiting." + exit 1 +fi + +# Copy all .jar files to the Java APM Agent 'extensions' directory +find "$tempExtractPath" -name "*.jar" -exec cp {} "$extensionsDir" \; + +# Clean up temporary files +rm "$tempZipPath" +rm -r "$tempExtractPath" + +echo "Installation completed successfully." +``` + + + + +To install and configure the Java Vert.x Event Bus Integration, follow these steps: + +- Update the Java APM agent's 'extensions' folder location in the provided powershell commands. + +```sh +# Define variables +$apiUrl = "https://api.github.com/repos/newrelic/newrelic-java-vertx/releases/latest" +$tempZipPath = "C:\Temp\latest.zip" +$tempExtractPath = "C:\Temp\Extracted" +$extensionsDir = "C:\Path\To\newrelic\extensions" + +# Download the latest release ZIP file from GitHub +$response = Invoke-WebRequest -Uri $apiUrl +$downloadUrl = ($response.Content | ConvertFrom-Json).assets[0].browser_download_url +Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZipPath + +# Extract the contents of the ZIP file to a temporary folder +New-Item -ItemType Directory -Path $tempExtractPath -Force +Expand-Archive -Path $tempZipPath -DestinationPath $tempExtractPath + +# Copy all .jar files to the Java APM Agent 'extensions' directory +Get-ChildItem -Path $tempExtractPath -Filter "*.jar" | Copy-Item -Destination $extensionsDir + +# Clean up temporary files +Remove-Item -Path $tempZipPath -Force +Remove-Item -Path $tempExtractPath -Recurse -Force + +``` + + +From [Java Vert.x Event Bus Integration Releases](https://github.com/newrelic/newrelic-java-vertx/releases/), download `vertx-instrumentation-vx.y.z.zip` to a temporary directory and unzip it. Copy all 'jar' files to New Relic Java APM agent's 'extensions' folder. + + + + +## Verify your integration +After configuring the Java Vert.x Event Bus Integration, you can visualize your application's Vert.x Event Bus transactions and traces directly within New Relic APM and Services. + +## Reporting Integration Issues +If you encounter any issues with the Java Vert.x Event Bus Integration, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration. diff --git a/src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-extensions-integration.mdx b/src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-extensions-integration.mdx new file mode 100644 index 00000000000..09370e12a27 --- /dev/null +++ b/src/content/docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-extensions-integration.mdx @@ -0,0 +1,157 @@ +--- +title: New Relic Java Instrumentation for Vert.x Extensions +tags: + - nrlabs + - nrlabs-data + - apm + - java + - vertx + - vert.x + - sql + - kafka + - mssql + - postgres + - oracle + - db2 + - cassandra + - jdbc + - redis + - rabbitmq + - rxjava + - mongodb + - reactive + - coroutines + - expert services +metaDescription: provides instrumentation for monitoring the Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. +freshnessValidatedDate: never +redirects: + - /docs/more-integrations/java-integrations/vertx-extensions-integration +--- + +[Java Instrumentation for Vert.x Extensions](https://github.com/newrelic/newrelic-java-vertx-extensions/tree/main) provides instrumentation for monitoring Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. + +## Install the Java agent + +The Java APM Agent must be installed to configure the Java Vert.x extensions. Follow the instructions to [install the Java APM Agent](https://docs.newrelic.com/install/java/) + +Once the Java APM Agent is installed and configured for your application, create an `extensions` folder under the `newrelic` directory if it doesn't already exist: + +```bash +# Open your Java APM Agent installation location and create 'extensions' folder ( if it is not existing) +cd path/to/newrelic +mkdir extensions +``` + +## Install and configure Java instrumentation for Vert.x Extensions [#install] + + + + curl + Powershell + Web + + + + + +To install and configure the Java Instrumentation for Vert.x Extensions, follow these steps: + +- Update the Java APM agent's `extensions` folder location in the provided bash script. +- Copy the updated commands to a bash script, `install_vertx_integration.sh`. +- Run the script to integrate the Java instrumentation for Vert.x Extensions with New Relic APM. + + +```sh +#!/bin/bash + +# Define variables +apiUrl="https://api.github.com/repos/newrelic/newrelic-java-vertx-extensions/releases/latest" +tempZipPath="/tmp/latest.zip" +tempExtractPath="/tmp/Extracted" +extensionsDir="/path/to/newrelic/extensions" + +# Retrieve the download URL for the latest release ZIP file +downloadUrl=$(curl -s "$apiUrl" | grep -o "browser_download_url.*\.zip" | cut -d '"' -f 3) + +echo $downloadUrl + +# Check if the download URL is empty or invalid +if [ -z "$downloadUrl" ]; then + echo "Failed to retrieve download URL. Exiting." + exit 1 +fi + +# Download the latest release ZIP file +curl -L -o "$tempZipPath" "$downloadUrl" + +# Check if the ZIP file was downloaded successfully +if [ ! -f "$tempZipPath" ]; then + echo "Failed to download the ZIP file. Exiting." + exit 1 +fi + +# Create a temporary extraction folder +mkdir -p "$tempExtractPath" + +# Extract the contents of the ZIP file to the temporary folder +unzip -q "$tempZipPath" -d "$tempExtractPath" + +# Check if the extraction was successful +if [ $? -ne 0 ]; then + echo "Failed to extract the ZIP file. Exiting." + exit 1 +fi + +# Copy all .jar files to the Java APM Agent 'extensions' directory +find "$tempExtractPath" -name "*.jar" -exec cp {} "$extensionsDir" \; + +# Clean up temporary files +rm "$tempZipPath" +rm -r "$tempExtractPath" + +echo "Installation completed successfully." +``` + + + + +To install and configure the Java Instrumentation for Vert.x Extensions, follow these steps: + +- Update the Java APM agent's 'extensions' folder location in the provided powershell commands: + +```sh +# Define variables +$apiUrl = "https://api.github.com/repos/newrelic/newrelic-java-vertx-extensions/releases/latest" +$tempZipPath = "C:\Temp\latest.zip" +$tempExtractPath = "C:\Temp\Extracted" +$extensionsDir = "C:\Path\To\newrelic\extensions" + +# Download the latest release ZIP file from GitHub +$response = Invoke-WebRequest -Uri $apiUrl +$downloadUrl = ($response.Content | ConvertFrom-Json).assets[0].browser_download_url +Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZipPath + +# Extract the contents of the ZIP file to a temporary folder +New-Item -ItemType Directory -Path $tempExtractPath -Force +Expand-Archive -Path $tempZipPath -DestinationPath $tempExtractPath + +# Copy all .jar files to the Java APM Agent 'extensions' directory +Get-ChildItem -Path $tempExtractPath -Filter "*.jar" | Copy-Item -Destination $extensionsDir + +# Clean up temporary files +Remove-Item -Path $tempZipPath -Force +Remove-Item -Path $tempExtractPath -Recurse -Force +``` + + + + From [Java Instrumentation for Vert.x Extensions Releases](https://github.com/newrelic/newrelic-java-vertx-extensions/releases/), download `vertx-instrumentation-vx.y.z.zip` to a temporary directory and unzip it. Copy all `jar` files to New Relic Java APM agent's `extensions` folder. + + + + +## Verify your integration +After configuring the Java Instrumentation for Vert.x Extensions, you can visualize your application's Vert.x extensions transactions and traces directly within New Relic APM and Services. + +## Reporting Integration Issues +If you encounter any issues with the Java Instrumentation for Vert.x Extensions, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx-extensions/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration! diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx b/src/content/docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration.mdx similarity index 99% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx rename to src/content/docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration.mdx index 72827ebe661..9fcf696262d 100644 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx +++ b/src/content/docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration.mdx @@ -1,8 +1,8 @@ --- -title: WordPress Full Stack integration +title: WordPress full stack integration tags: - New Relic integrations - - WordPress Full Stack integration + - WordPress full stack integration metaDescription: Use New Relic browser monitoring to get a dashboard with metrics from your Wordpress. redirects: - /docs/infrastructure/host-integrations/host-integrations-list/wordpress-fullstack-integration diff --git a/src/content/docs/more-integrations/terraform/terraform-intro.mdx b/src/content/docs/infrastructure-as-code/terraform/terraform-intro.mdx similarity index 100% rename from src/content/docs/more-integrations/terraform/terraform-intro.mdx rename to src/content/docs/infrastructure-as-code/terraform/terraform-intro.mdx diff --git a/src/content/docs/more-integrations/terraform/terraform-modules.mdx b/src/content/docs/infrastructure-as-code/terraform/terraform-modules.mdx similarity index 100% rename from src/content/docs/more-integrations/terraform/terraform-modules.mdx rename to src/content/docs/infrastructure-as-code/terraform/terraform-modules.mdx diff --git a/src/content/docs/more-integrations/terraform/terragrunt.mdx b/src/content/docs/infrastructure-as-code/terraform/terragrunt.mdx similarity index 100% rename from src/content/docs/more-integrations/terraform/terragrunt.mdx rename to src/content/docs/infrastructure-as-code/terraform/terragrunt.mdx diff --git a/src/content/docs/infrastructure/host-integrations/statsd-monitoring-integration.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration.mdx similarity index 100% rename from src/content/docs/infrastructure/host-integrations/statsd-monitoring-integration.mdx rename to src/content/docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration.mdx diff --git a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx deleted file mode 100644 index d9b5b40be0f..00000000000 --- a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx +++ /dev/null @@ -1,133 +0,0 @@ ---- -title: New Relic .NET Extension Buildpack for VMware Tanzu -tags: - - Integrations - - Cloudfoundry - - Tanzu -metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. -freshnessValidatedDate: never -redirects: - - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration ---- - -import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' - -import infrastructureVmwareTanzuAlertChart from 'images/infrastructure_screenshot-crop_vmware-tanzu-alert-chart.webp' - -This documentation describes the New Relic .NET Extension Buildpack for VMware Tanzu and provides instructions on how to install the tile. The tile can bind New Relic agents to .NET Core or .NET Framework apps so you can monitor them in a VMware Tanzu environment. - -The New Relic .NET Extension Buildpack for VMware Tanzu enables you to bind your .NET (Core and Framework) apps to New Relic .NET agents. This allows you to monitor the health and performance of these apps, analyze the data captured by agents, and additionally correlate the captured agent data with -VMware Tanzu infrastructure metrics and events collected by the [New Relic Firehose Nozzle](https://network.pivotal.io/products/nr-firehose-nozzle/). - -## Prerequisites [#prereqs] - -This product has been tested and is compatible with VMware Tanzu OpsManager versions up to and including v3.0 and Tanzu Application Service 5.0. - -New Relic .NET Extension Buildpack for VMware Tanzu requires the following: - -* An active New Relic account with a license key. This is used to bind .NET apps to New Relic .NET agents. -* To use multi-buildpacks in the app manifest, you need cf CLI v6.38 or later. -For general information about adding buildpacks to manifests, see [Pushing an Application with Multiple Buildpacks](https://docs.pivotal.io/application-service/buildpacks/use-multiple-buildpacks.html) in the Cloud Foundry documentation. -* To use the .NET HWC extension, you need HWC buildpack 3.0.3 or later. -* To use the .NET Core extension, you need the dotnet core buildpack 2.1.5 or later. - - -The following table provides version and version-support information about New Relic .NET Extension Buildpack for VMware Tanzu. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Element - - Details -
- Tile version - - 1.1.13 -
- Release date - - January 25, 2024 -
- Software component version - - New Relic .NET Extension Buildpack 1.1.13 -
- Compatible Ops Manager version(s) - - 2.9.x, 2.10.x, and 3.0.x -
- Compatible VMware Tanzu Application Service for VMs versions - - 2.10.x, 2.11.x, 2.12.x, 2.13.x, 3.0.x, 4.0.x and 5.0.x -
- BOSH stemcell version - - Ubuntu Jammy -
- IaaS support - - AWS, GCP, Azure, and vSphere -
- -## Installation [#install] - -The New Relic .NET Extension Buildpack for VMware Tanzu can be installed via the tile in Ops Manager. Alternatively, you can extract the `.Pivotal` file and install individual extension buildpacks using the cf Command Line Interface (CLI) command `cf create-buildpack`. - -After you start monitoring your apps, you can set based on any metrics that are collected by .NET agents using the New Relic alerting subsystem. - -The New Relic .NET Extension Buildpack for VMware Tanzu installs one or more of the following buildpacks depending on the tile configuration (total of 8 extension buildpacks): - -* New Relic .NET Core Extension Buildpack for .NET Core Applications running on Ubuntu Jammy 1.* stacks. This extension buildpack is non-cached. -* New Relic .NET Core Extension Cached Buildpack for .NET Core Applications running on Ubuntu Jammy 1.* in disconnected (isolated) VMware Tanzu deployments. This is for support of air-gapped environments where there is no access to the outside world. -* 3 New Relic HWC Extension Buildpacks for .NET Framework Applications running on Windows 2019 stacks. This extension buildpack is non-cached. -* 3 New Relic HWC Extension Cached Buildpacks for .NET Framework Applications running on Windows 2019 stacks in disconnected (isolated) VMware Tanzu deployments. This is for support of air-gapped environments where there is no access to the outside world. - -All buildpacks use the multi-buildpack approach of Cloud Foundry and require either the standard .NET Core buildpack or HWC buildpack to be specified as the last buildpack in the buildpack chain, either in the app manifest or in the `cf push` command line. - - - The cached version of this extension buildpack for both .NET Core and .NET Framework contains New Relic .NET Agents version `9.1.1` - - -## Feedback [#feedback] - -If you have a feature request, questions, or information about a bug, please submit an issue on [github](https://github.com/newrelic/newrelic-dotnet-buildpack-tile/issues). diff --git a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx deleted file mode 100644 index 161e50e0602..00000000000 --- a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: New Relic Nozzle for VMware Tanzu -tags: - - Integrations - - Cloudfoundry - - Tanzu -metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. -dataSource: vmware-tanzu -freshnessValidatedDate: 2023-11-13T00:00:00.000Z -redirects: - - /docs/infrastructure/host-integrations/host-integrations-list/vmware-tanzu-monitoring - - /docs/cloudfoundry/vmware-tanzu/vmware-tanzu-firehose-nozzle-integration - - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration ---- - -import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' - -import infrastructureVmwareTanzuAlertChart from 'images/infrastructure_screenshot-crop_vmware-tanzu-alert-chart.webp' - -[New Relic Nozzle for VMware Tanzu](https://network.pivotal.io/products/nr-firehose-nozzle) collects metrics and events generated by all VMware Tanzu components and applications that run on VMware Tanzu Diego cells via the [Loggregator Firehose](https://docs.pivotal.io/pivotalcf/loggregator/index.html). The nozzle collects data via the Remote Log Proxy (RLP) gateway and pushes it to [New Relic](https://www.newrelic.com) for processing and visualization. - -newrelicone-dashboards-vmware-tanzu.png - -## Overview [#overview] - -After installation, the nozzle starts collecting and pushing Firehose events to New Relic for processing and visualization. New Relic organizes the data based on Firehose event types, and shows each Firehose event type in its own separate dashboard. - -The nozzle can be installed as a tile in Ops Manager or deployed using the CLI command cf push as a regular application. You can then monitor the health and performance of your VMware Tanzu deployments, and set based on any metrics that are collected from VMware Tanzu Firehose. - -## Prerequisites [#prereqs] - -New Relic Nozzle for VMware Tanzu has the following requirements: - -* An active New Relic account with a Pro or Pro Trial license. If you do not already have a New Relic account, you can obtain a [14-day free trial license](http://newrelic.com/signup?funnel=pivotal-cloud-foundry&partner=Pivotal+Cloud+Foundry). -* New Relic Insights included in the license -* VMware Tanzu versions v2.10.x through v5.0.x. - -## Key features [#key-features] - -You can monitor health and performance data of VMware Tanzu components, including: - -* VMware Tanzu Domain -* VMware Tanzu Deployment -* Firehose Event Type -* Origin -* Job -* Component IP Address -* Application Detail -* Container - -Select the item from a list of values for any of the above metrics and filter the dashboard based on the selected value. You can also filter a dashboard by multiple metrics.s - -## Event filtering [#event-filtering] - -When a large number of events is streamed from the Firehose, you may want to filter out undesired events that are generated by the Firehose. If you need the nozzle to capture any of the Firehose event types (`ValueMetric`, `CounterEvent`, `ContainerMetric`, `HttpStartStop`, `LogMessage`), you must specify them as a comma-separated list of event types in the `"Selected Events"` property, located in the Advanced Settings tab of the tile settings. - -Starting with version 2.X of the nozzle, `ContainerMetric`, `CounterEvent`, and `ValueMetric` events are aggregated. Events include the `min`, `max`, `sum`, `sample count`, and `last` value of each metric. This reduces the number of events created by the nozzle while still providing detail on each metric type. -If needed, configure LogMessage Filters to include or exclude subsets of LogMessage events. - -If needed, configure `LogMessage Filters` to include or exclude subsets of LogMessage events. - -## Filter examples [#filter-examples] - -* **LogMessage Source Include Filter**: Only generate events for log messages with a source listed in this comma or pipe-separated list. -* **LogMessage Source Exclude Filter**: Do not generate events for log messages with a source listed in this comma or pipe-separated list. -* **LogMessage Message Include Filter**: Only generate events for log messages that contain text listed in this comma or pipe-separated list. -* **LogMessage Message Exclude Filter**: Do not generate events for log messages that contain text listed in this comma or pipe-separated list. - -Multiple LogMessage filters can be combined to limit event creation. Include filters are processed before exclude filters. - - - **Note**: When you run the nozzle as an application, you can use the above environment variables in the application manifest file. - - -## Product snapshot [#product-snapshot] - -The following table provides version and version-support information about New Relic Nozzle for VMware Tanzu. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Element - - Details -
- Tile version - - 2.9.0 -
- Release date - - November 14, 2023 -
- Software component version - - New Relic Nozzle v2.9.0 -
- Compatible Ops Manager version(s) - - v2.9.x, v2.10.x and v3.0.x -
- Compatible VMware Tanzu Application Service for VMs versions - - v2.10.x, v2.11.x, v2.12.x, v2.13.x, v3.0.x, v4.0.x and v5.0.x -
- BOSH stemcell version - - Ubuntu Jammy -
- IaaS support - - AWS, GCP, Azure, and vSphere -
- -## Feedback [#feedback] - -If you have a feature request, questions, or information about a bug, please submit an issue on [github](https://github.com/newrelic/newrelic-pcf-nozzle-tile/issues). diff --git a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx b/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx deleted file mode 100644 index b8f9713fb3b..00000000000 --- a/src/content/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx +++ /dev/null @@ -1,424 +0,0 @@ ---- -title: New Relic Service Broker for VMware Tanzu -tags: - - Integrations - - Cloudfoundry - - Tanzu -metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. -freshnessValidatedDate: never -redirects: - - /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration ---- - -import infrastructureVmwareTanzuImport from 'images/vmware-service-broker-import.webp' - -import infrastructureVmwareTanzuImport2 from 'images/vmware-service-broker-import-2.webp' - -import infrastructureVmwareTanzuImport3 from 'images/vmware-service-broker-import-3.webp' - -import infrastructureVmwareTanzuImport4 from 'images/vmware-service-broker-import-4.webp' - -import infrastructureVmwareTanzuImport5 from 'images/vmware-service-broker-import-5.webp' - -import infrastructureVmwareTanzuImport6 from 'images/vmware-service-broker-import-6.webp' - -import infrastructureVmwareTanzuImport7 from 'images/vmware-service-broker-import-7.webp' - -import infrastructureVmwareTanzuImport8 from 'images/vmware-service-broker-import-8.webp' - -import infrastructureVmwareTanzuImport9 from 'images/vmware-service-broker-import-9.webp' - -import infrastructureVmwareTanzuImport10 from 'images/vmware-service-broker-import-10.webp' - -import infrastructureVmwareTanzuImport11 from 'images/vmware-service-broker-import-11.webp' - -import infrastructureVmwareTanzuImport12 from 'images/vmware-service-broker-import-12.webp' - -import infrastructureVmwareTanzuImport13 from 'images/vmware-service-broker-import-13.webp' - -import infrastructureVmwareTanzuImport14 from 'images/vmware-service-broker-import-14.webp' - -import infrastructureVmwareTanzuImport15 from 'images/vmware-service-broker-import-15.webp' - -import infrastructureVmwareTanzuImport16 from 'images/vmware-service-broker-import-16.webp' - -import infrastructureVmwareTanzuImport17 from 'images/vmware-service-broker-import-17.webp' - -import infrastructureVmwareTanzuImport18 from 'images/vmware-service-broker-import-18.webp' - -New Relic Service Broker for VMware Tanzu enables you to use one or more New Relic accounts and is deployed as a Java app on VMware Tanzu. A service broker allows Cloud Foundry apps to bind to services and consume the services easily from the Apps Manager or from the command line. - - -## How it works [#works] - -The broker exposes the New Relic service on the Marketplace and allows users to directly create a service instance and bind it to their apps either from Apps Manager or from the command line. - -The New Relic Service Broker for VMware Tanzu tile installs the New Relic Service Broker as an app, registers it as a service broker on VMware Tanzu, and exposes its service plans on the Marketplace. Each service plan is associated with an existing New Relic account, which is configured during the tile setup. - -Selecting a plan binds your app with the New Relic agent, and the agent starts reporting to the New Relic account which is associated with the selected plan. This makes the installation and subsequent use of New Relic on your VMware Tanzu apps easier and more straightforward. - -## Prerequisites [#prereqs] - -New Relic Nozzle for VMware Tanzu has the following requirements: - -* Service broker v1.12.18 and later -* For service brokers on v1.12.12 and earlier, the unique GUIDs for plans were calculated differently. For these plans to not break compatibility, the GUIDs must be the same as before. The migration script preserves the plan GUIDs for existing plans in the plan collection for v1.12.12 and earlier. - - -You need to override your plan GUID if you've changed the original license key that was associated with a service broker on v1.12.12 or earlier. To obtain the original plan GUID from Cloud Controller, run the following script: - -```shell - cf curl $(cf curl /v2/services?q=label:newrelic | grep “service_plans_url” | - - awk ‘{print $2}’ | sed ‘s/[",]//g’) | egrep “"name":|"unique_id":” | - - sed ‘s/[",]//g’ | tr -s " " | awk ’ {name=$0; getline; printf(\t%-40s %-40s \n”,name,$0)}’ - ``` - -There are two new properties labeled pre-1.12.12 plan? and Plan Guid Override (broker 1.12.12 or older) in the plan collection for each plan in the tile configuration. Don't change either of these properties because they're set internally where required. - -* In New Relic Service Broker v1.12.13 and later, leave pre-1.12.12 plan unchecked, and Plan Guid Override blank. -* The tile is supported on Ops Manager v2.9.x, v2.10.x, and v3.0.x. -* You can install the tile on any of these versions, and upgrade from v1.9.x to any Ops Manager version up to and including v3.x. -* No upgrade paths are required for older versions of the tile, since versions older than v1.9.0 are not supported. -* v1.12.6 and later of the tile support migration from older versions of the tile, and preserve existing services and service plans. -* If you are using tiles older than v1.11.4, you must first upgrade to v1.11.4, then to v1.12.9, then to the latest version of the tile. - - - -The following table provides version and version-support information about the service broker for VMware Tanzu. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Element - - Details -
- Version - - 1.12.34 -
- Release date - - January 25, 2024 -
- Software component version - - New Relic Service Broker 1.12.34 -
- Compatible Ops Manager version(s) - - 2.9.x, 2.10.x, and 3.x -
- Compatible VMware Tanzu Application Service for VMs versions - - 2.10.x, 2.11.x, 2.12.x, 2.13.x, 3.x, 4.x and 5.x -
- BOSH stemcell version - - Ubuntu Jammy -
- IaaS support - - AWS, GCP, Azure, and vSphere -
- -The current tile removes the `all_open` security group from the tile default security settings. If you are using a previous versions of the tile, make your VMware Tanzu environment more secure by removing the `all_open` security group from the Application Security Group (ASG) settings. The new version of the tile doesn't open the security, nor does it close the security if it was already open. - -## Install through Ops Manager [#install-ops] - -To download New Relic Service Broker for VMware Tanzu tile and install it on VMware Tanzu Ops Manager, do the following: - -1. Download the product file from Pivotal Network. -2. Import the product file to your Ops Manager installation. -3. Click the **+** sign or **Add next** to the uploaded product description in the Ops Manager left navigation view to add this product to your staging area. -4. Click the newly added tile and review any configurable options. -5. Click **Apply Changes**. - -## Configure the tile [#configure-tile] - -1. Log in to Ops Manager. -2. Click **Import a Product** and import the New Relic Service Broker for VMware Tanzu tile. - - vmware-service-broker-import.png - -3. Click the **+** button to the right of “New Relic Service Broker” that you uploaded. - - vmware-service-broker-import-2.png - -4. Select the New Relic tile. - - vmware-service-broker-import-3.png - -5. Configure Availability Zone and Network. - - vmware-service-broker-import-4.png - -6. Configure Service Broker Global Access. You can either keep the global access enabled for all service plans (default), or you can disable global access. You can give access through configuration for one or more orgs for each service plan that you add. - - vmware-service-broker-import-5.png - -7. Configure the New Relic Service Broker. Click Add from the Service Plan screen to create a new service plan. - - vmware-service-broker-import-6.png - -8. Create a service plan with your New Relic license key. - - * Enter a name for the service plan (no spaces). - * Enter description of the plan. - * Log in to your New Relic account and navigate to the Account Settings page from the drop-down menu in the upper right corner of the page. Copy the license key from your New Relic account and paste it here. - - vmware-service-broker-import-7.png - - * If you are upgrading from New Relic Service Broker 1.12.12 or older, make sure you follow the instructions in the upgrade section of this document to check “pre 1.12.12 plan” flag and enter the pre 1.12.12 plan GUID. - * If you are running New Relic Firehose Nozzle and would like to route the data for each application to a separate New Relic account (as opposed to New Relic’s central Firehose Nozzle account) enter the target New Relic account and Insights Insert Key here. - * If in previous steps you unchecked Global Access, you need to enter a comma-separated list of orgs so that the system enables service access for them to allow users to create service instances of this plan. - - - vmware-service-broker-import-8.png - -9. Select the button on top the page to go to `INSTALLATION DASHBOARD` - - vmware-service-broker-import-9.png - -10. Apply your changes. - * Click the blue button on the top right. - * To speed up the process you could uncheck Select All Products checkbox, and select to apply change to New Relic Service Broker tile. - - vmware-service-broker-import-10.png - -11. On completion of the installation, check the Services Marketplace in Apps Manager. Select New Relic tile. - - vmware-service-broker-import-11.png - -12. View New Relic Service Plans, and select the desired plan. - - vmware-service-broker-import-12.png - -13. Enter the service instance name and click on “CREATE” button to create the service instance. - - vmware-service-broker-import-13.png - -14. Service Plan created. - - vmware-service-broker-import-14.png - -15. Bind the New Relic Service to an app. - * In Apps Manager go to an application. - - vmware-service-broker-import-15.png - * Select Service tab. - * Click the BIND SERVICE button and select the service instance you just created. - - vmware-service-broker-import-16.png - * Click the BIND button on the bottom right. - - vmware-service-broker-import-17.png - -16. Restage the application. You can select the link at the top of the **Bind** page, or in a terminal window, and run `cf restage` to make the changes. - - vmware-service-broker-import-18.png - - ```shell - cf restage APPNAME - ``` - -Log in to New Relic to view monitoring data. - - -## Configure with HTTP proxy [#configure-http] - -If the VMware Tanzu environment needs to use an HTTP or HTTPS proxy for external outbound communication, the service broker itself doesn't need to know anything about the HTTP proxy, -as it relays the license keys to the consumer apps. The consumer app should specify the `http\_proxy` or `https\_proxy` as an environment variable for the agent to communicate externally with non-Java apps, -and use `JAVA_OPTS` for Java apps. In addition, the New Relic Agent should also be configured with its own -set of parameters `(-Dnewrelic.config.\*)` to communicate with its controller through the proxy for Java language apps. - -To specify using `http_proxy` for the New Relic non-Java app agent to talk to its controller using the proxy, run the following commands: - -```shell -cf set-env APPNAME http_proxy 'http://user:password@proxy-server.customer.example.com:8080' -cf set-env APPNAME https_proxy 'http://user:password@proxy-server.customer.example.com:8080' - ``` - -To specify using `JAVA_OPTS` for the New Relic Java agent to talk to its controller using the proxy, run the following command: - -```shell -cf set-env APPNAME JAVA_OPTS " -Dtest.value=barbar - -Dnewrelic.config.proxy_host=proxy.customer.example.com - -Dnewrelic.config.proxy_port=8080 - ``` -If a Java app also needs to talk through a proxy, -add the Java proxy settings in addition to the New Relic agent proxy settings with the following command: - -```shell -cf set-env APPNAME JAVA_OPTS " -Dtest.value=barbar - -Dnewrelic.config.proxy_host=proxy.customer.example.com - -Dnewrelic.config.proxy_port=8080 - -Dhttp.proxyHost=proxy.customer.example.com-Dhttp.proxyPort=8080 - -Dhttps.proxyHost=proxy.customer.example.com -Dhttps.proxyPort=8080 - ``` - -For a non-Java app that needs to talk outbound using a proxy, run the following commands: - -```shell -cf set-env APPNAME http_proxy http://user@password:myproxy....:8080/ -cf set-env APPNAME https_proxy https://user@password:myproxy....:8080/ - ``` - -Whenever making changes to Cloud Foundry environment variables, you must restage your app(s) to make the changes effective. - -```shell -cf restage APPNAME - ``` - -You can set these environment variables individually per app, or with environment variable groups to be set for all apps as part of staging, running environments, etc. using the Cloud Foundry Command Line Interface (cf CLI) tool. - -## Environment variable groups [#variable-groups] - -* `running-environment-variable-group/revg`: Retrieve the contents of the running environment variable group -* `staging-environment-variable-group/sevg`: Retrieve the contents of the staging environment variable group -* `set-staging-environment-variable-group/ssevg`: Pass parameters as JSON to create a staging environment variable group -* `set-running-environment-variable-group/srevg`: Pass parameters as JSON to create a running environment variable group - -Use the `JAVA\_OPTS` environment variable to specify New Relic Agent-specific environment variables in the staging environment group so the Java buildpack can use that and push it in the correct place. Specifying JAVA\_OPTS in the Runtime environment variable group won't yield anything, as the buildpack won't know about it. - -For example: - -```shell -cf ssevg '{ "JAVA_OPTS" : " -Dtest.value=barbar - -Dnewrelic.config.proxy_host=proxy.customer.example.com - -Dnewrelic.config.proxy_port=8080 -Dhttp.proxyHost=proxy.customer.example.com - -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.customer.example.com - -Dhttps.proxyPort=8080 -Dspring.profiles.active=dev - -Dnewrelic.config.log_level=finer - -Djavax.net.debug=all ", "test_env_profile" : "Staging" }' -``` - -For more information, see [Configuration settings precedence](https://docs.newrelic.com/docs/agents/java-agent/configuration/java-agent-configuration-config-file#config-options-precedence). - -## Package dependencies for Offline Buildpacks [#product-dependencies] - -If you're running VMware Tanzu in an offline (disconnected) environment, you should recreate and package the -dependencies, including the New Relic agent binaries, using offline buildpacks in your VMware Tanzu environment. - -For more information, see [Packaging Dependencies for Offline Buildpacks](https://docs.cloudfoundry.org/buildpacks/depend-pkg-offline.html). - - -## Feedback [#feedback] - -If you have a feature request, questions, or information about a bug, please submit an issue on [github](https://github.com/newrelic/newrelic-service-broker-tile/issues). diff --git a/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx b/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx deleted file mode 100644 index 63dc8f9b190..00000000000 --- a/src/content/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: Grafana support with Prometheus and PromQL -tags: - - Integrations - - Grafana integrations - - Get started -metaDescription: Read about about how you can use New Relic within Grafana and our options for Prometheus and Prom QL support. -redirects: - - /docs/integrations/grafana-integrations/get-started/grafana-support-prometheus-promql - - /docs/grafana-support-prometheus-promql - - /docs/integrations/grafana-integrations/set-configure/grafana-support-prometheus-promql - - /docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql -freshnessValidatedDate: never ---- - -In Grafana, you can configure New Relic as a Prometheus data source. Not only that, within Grafana you can query metrics stored in New Relic using the [PromQL query language](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). - -## Use existing Grafana dashboards with New Relic [#Grafana-dashboards] - -When you integrate Prometheus metrics with New Relic via [Remote Write](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#remote-write), [Prometheus Agent](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#agent) or the [OpenMetrics Integration](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#OpenMetric) (2.0+) and configure New Relic as a Prometheus data source in Grafana, you can use existing Grafana and seamlessly tap into the additional monitoring, reliability, and scale we provide. - -## Compatibility and requirements [#compat-requirements] - -Before you begin, make sure you’ve finished integrating Prometheus metrics and are running a recent enough version of Grafana. - -* You should have either the [Remote Write](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#remote-write), [Prometheus Agent](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#agent) or the [OpenMetrics Integration](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#OpenMetrics) ( v2.0+) set up before you can configure New Relic Prometheus data sources in Grafana. -* You can only configure New Relic Prometheus data sources using this method in Grafana versions 6.7.0 or newer. You will need to configure custom headers in the UI, and this isn’t possible with earlier versions. For details, see [Configure New Relic as a Prometheus data source for Grafana](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). - -### Support for PromQL - -Our Prometheus API emulates Prometheus' query APIs. We support the Prometheus query language (PromQL) through our PromQL-style query mode. We do our best to automatically translate PromQL syntax queries into the closest NRQL approximation. - -For more information on how this works and differences you may observe between Prometheus and New Relic, see [Supported PromQL features](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). - -## Get data flowing in Grafana [#get-data] - -To make your New Relic data available in Grafana, you can configure a new or existing Prometheus data source in just a couple of simple steps: - -1. In the Grafana UI, add and [configure a new data source](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). -2. Save the new data source and start viewing your data. - -## What’s next? [#whats-next] - -Ready to configure a Grafana data source? - -* Read the how-to documentation for setting up the [Prometheus remote write integration](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration), [Prometheus Agent](/docs/infrastructure/prometheus-integrations/install-configure-prometheus-agent/setup-prometheus-agent) or the [Prometheus OpenMetrics Integration](/docs/integrations/prometheus-integrations/install-configure/install-update-or-uninstall-your-prometheus-openmetrics-integration). -* Read the how-to documentation for [configuring Prometheus data sources in Grafana](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). - - diff --git a/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx b/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx deleted file mode 100644 index d683e444d58..00000000000 --- a/src/content/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx +++ /dev/null @@ -1,128 +0,0 @@ ---- -title: Configure New Relic as a Prometheus data source for Grafana -tags: - - Integrations - - Grafana integrations - - Set up and configure -metaDescription: How to configure New Relic as a Prometheus data source for Grafana -redirects: - - /docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana - - /docs/configure-prometheus-data-source-grafana - - /docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana -freshnessValidatedDate: never ---- - -import moreintegrationsGrafanaDataSourceConfig from 'images/more-integrations_screenshot-crop_grafana-data-source-config.webp' - -You can configure a [Prometheus data source](https://grafana.com/docs/grafana/latest/features/datasources/prometheus/) in [Grafana](https://grafana.com/login) to query data stored in the New Relic Database (NRDB) using our [PromQL-style query language](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). - -## Add a Prometheus data source [#create-update] - -Follow these steps to add New Relic as a Prometheus data source for Grafana. These instructions detail how to complete the process when working with Grafana versions 6.7 and higher. - - - You must [complete the Prometheus remote-write integration](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration) process prior to beginning the configuration process. - - -1. In New Relic, [create a new Insights query key](/docs/apis/intro-apis/new-relic-api-keys/#insights-query-key). - - - Note: In Grafana, you'll need put this in a custom **X-Query-Key** HTTP header (see step 7 below), but it is the same entity as the New Relic Query key. - -2. From the [Grafana](https://grafana.com/login) **Home** screen, go to **Configuration > Data Sources** and click **Add data source**. -3. From the **Add data source** screen under **Time series databases** options, select **Prometheus**. -4. Enter the **Name** you want to use for your new Prometheus data source. -5. Set the **Default** toggle to the on or off position, depending on whether you want this to be your default data source for Prometheus queries. - * Off: this is not your default data source - * On: this is your default data source -6. Enter the correct **URL**: - * US: [prometheus-api.newrelic.com](https://prometheus-api.newrelic.com) - * EU: [prometheus-api.eu.newrelic.com](https://prometheus-api.eu.newrelic.com) -7. Under **Custom Headers**, select **Add Header**. Set the **Header** name to **X-Query-Key.** For the **Value**, enter to the Query key you created in step 1. -8. Click **Save & Test**. - - - If your graphs appear as groupings of dots and not as connected lines, you can change the graph style to display lines instead. To do this, go to Grafana's **[Graph panel](https://grafana.com/docs/grafana/latest/panels/visualizations/graph-panel/)** and select **Stacking and null value > connected**. - - - - - Screen capture of the add data source workflow in Grafana - -
- Grafana Data Source Config.png, by [dbarnesbrown.newrelic.com](/users/dbarnesbrownnewreliccom) -
-
-
- - - -## Versioning considerations - -New Relic strongly recommends using versions 6.7.x and higher to configure New Relic as a Prometheus data source. If you do chose to complete the configuration while running an earlier version, you will need to do one of the following to successfully configure your data source: - -* Configure the new data source to use basic authentication and then enter the Query-key as the password in the basic authentication workflow. -* Configure the new data source URL to include the Query-key: `` https://prometheus-api.newrelic.com/auth/`` `` - -## Customize Prometheus API behavior [#customize-API] - -Headers are particularly important if you have connected multiple Prometheus servers to New Relic using the [remote write integration](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration). Here are some details about customization. - - - - The [Query key](/docs/apis/get-started/intro-apis/types-new-relic-api-keys#x-query-key) parameter is required to authenticate with New Relic and identify the account containing your metrics. Grafana calls this an **X-Query key**, while it appears as a **Query key** in the New Relic UI. - - Details: - - * Required - * An API query key used for authentication - * If you are using the Prometheus remote write integration, the X-Query-Key should correspond to the same account as the X-License-Key used to integrate for remote write - - - - - Grafana's auto-complete support doesn't handle metrics that fail to strictly conform to Prometheus naming conventions. New Relic recommends you exclude any metrics that do not conform from this parameter. - - - Details: - - * Optional - * Limits metrics exposed by the API to those originating from Prometheus - * Default = true if not specified - - - - This parameter is useful if you are collecting metrics from multiple Prometheus servers. For example, if you are using Grafana, you might want to create a data source for each Prometheus server connected to New Relic and then another data source that can be used to query across all Prometheus servers. - - Details: - - * Optional - * Limits metrics exposed by the API to those collected from the specified Prometheus server - * This value should match the `prometheus_server` URL parameter in the remote write URL used to connect to your prometheus server to New Relic - * Defaults to return metrics collected from all servers - - - -## Delete a Prometheus data source [#delete] - -To delete a data source in Grafana: - -1. Go to **Configuration > Data Sources**. -2. Click on the data source you want to delete. -3. Click the **Delete** button at the bottom of the page. diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx deleted file mode 100644 index 13f7c92f535..00000000000 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx +++ /dev/null @@ -1,152 +0,0 @@ ---- -title: Monitor Apache Airflow with OpenTelemetry -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Airflow - - Quickstart -metaDescription: Monitor Airflow data with New Relic using OpenTelemetry. -redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/airflow/monitoring-airflow-ot - - /docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot -freshnessValidatedDate: 2023-11-16T00:00:00.000Z ---- - -import opentelemetryAirflow01 from 'images/opentelemetry_screenshot_airflow_01.webp' - -import opentelemetryAirflow02 from 'images/opentelemetry_screenshot_airflow_02.webp' - -Monitor Apache Airflow data by configuring [OpenTelemetry](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#setup-opentelemetry) to send data to New Relic, where you can visualize tasks, operators, and DAG executions as metrics. - -Screenshot showing sample Airflow DAG runs in New Relic - -## Prerequisites [#prerequisites] - -Before enabling OpenTelemetry in Apache Airflow, you'll need to install the Airflow package with the `otel` extra. The installation method depends on your Airflow deployment approach: - -### Option 1: Installing from PyPi [#install-pypi] - -1. Follow the installation instructions from [Airflow's Documentation](https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html). -2. When installing with pip, add the `otel` extra to the command. For example: - - ```pip install "apache-airflow[otel]"``` - -### Option 2: Installing from Docker [#install-docker] - -1. Set up the Airflow Docker image using instructions from [Airflow's documentation](https://airflow.apache.org/docs/docker-stack/index.html). -2. Extend the pre-built Docker image by using a Dockerfile to install the `otel` extra. You can replace the latest tag with your desired version of the image. - - ``` - FROM apache/airflow:latest - RUN pip install --no-cache-dir "apache-airflow[otel]==$AIRFLOW_VERSION" - ``` - - - `$AIRFLOW_VERSION` is already set by the apache/airflow container, but can be replaced with a version number for other base images. - - -## Configuration [#configuration] - -To send Airflow metrics to New Relic, configure the OpenTelemetry metrics to export data to an [OpenTelemetry collector](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-intro/), which will then forward the data to a New Relic [OTLP endpoint](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#note-endpoints) using a . - - - Due to Airflow's current lack of support for sending OpenTelemetry data with authentication headers, the OpenTelemetry collector is essential for authenticating with New Relic. - - -### Configure the OpenTelemetry collector [#configuration-collector] - -1. Follow the [basic collector example](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-basic/) to set up your OpenTelemetry collector. -2. Configure the collector with your appropriate OTLP endpoint, such as `https://otlp.nr-data.net:4317`. -3. For authentication, add your to the environment variable `NEW_RELIC_LICENSE_KEY` so that it populates the `api-key` header. -4. Ensure port 4318 on the collector is reachable from the running Airflow instance. (For docker, you may need to use a [docker network](https://docs.docker.com/network/).) -5. Launch the collector. - -### Configure Airflow metrics [#configuration-airflow] - -Airflow sends metrics using OTLP over HTTP, which uses port `4318`. Airflow has multiple methods of [setting configuration options](https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html). - - - If your environment has Airflow running in a docker container alongside the OpenTelemetry Collector, you will need to change the `otel_host` setting from `localhost` to the container address of the collector. - - -Choose one of the following methods to set the required options for Airflow. - -1. Set the required options in the `airflow.cfg` file. - - ``` - [metrics] - otel_on = True - otel_host = localhost - otel_port = 4318 - otel_ssl_active = False - ``` - -2. Or, set the required options as environment variables. - - ``` - export AIRFLOW__METRICS__OTEL_ON=True - export AIRFLOW__METRICS__OTEL_HOST=localhost - export AIRFLOW__METRICS__OTEL_PORT=4318 - export AIRFLOW__METRICS__OTEL_SSL_ACTIVE=False - ``` - - - Airflow has [additional settings](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#setup-opentelemetry) for metrics that may be useful. This includes the ability to [rename metrics](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#rename-metrics) before sending, which is helpful if metric names exceed the 63 byte limit for OpenTelemetry. - - -## Validate data is sent to New Relic [#validation] - -To confirm New Relic is collecting your Airflow data, run a DAG or pipeline: - -1. Login to Airflow. -2. Click the run button on one of the existing tutorial DAGs, or your own. -3. Wait for the pipeline to finish running. -4. Go to **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > Services - OpenTelemetry > Airflow**. -5. Click **Metrics Explorer** to visualize metrics for pipeline executions. - -## Building dashboards [#building-dashboards] - -With Airflow metrics, you can build dashboards around individual pipelines, overall performance, or view a comparison between different pipelines. Click here to learn more about [querying your metrics](/docs/data-apis/understand-data/metric-data/query-metric-data-type/). - -This query retrieves a list of all reported metrics for Airflow: - -```sql -SELECT uniques(metricName) FROM Metric WHERE entity.name = 'Airflow' AND metricName LIKE 'airflow.%' SINCE 30 MINUTES AGO LIMIT 100 -``` - -Make sure to change the limit (`100`) if your metric names exceed it. - -This query shows a comparison of different completion times for successful runs of different DAGs: - -```sql -SELECT latest(airflow.dagrun.duration.success) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES -``` - -Screenshot showing sample Airflow DAG runs in New Relic - -This query shows counts of failed DAG runs, which can be used to build for critical pipelines: - -```sql -SELECT count(airflow.dagrun.duration.failed) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES -``` - -Screenshot showing sample Airflow failures in New Relic - - - Airflow's OpenTelemetry metrics are not maintained by New Relic, so if you have any issues with the instrumentation, [create a new issue in Airflow's GitHub repo](https://github.com/apache/airflow/issues). - - - diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx deleted file mode 100644 index db23464b83f..00000000000 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Monitor Jenkins with OpenTelemetry and New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Jenkins - - Quickstart -metaDescription: Here is a simple example to setup the Jenkins OpenTelemetry plugin to send data to New Relic. -redirects: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/jenkins/monitoring-jenkins-ot - - /docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot -freshnessValidatedDate: never ---- - -import opentelemetryJenkis01 from 'images/opentelemetry_screenshot-full_jenkins-01.webp' - -import opentelemetryIntegrationsJenkins02 from 'images/opentelemetry_screenshot-full_integrations-jenkins-02.webp' - -import opentelemetryIntegrationsJenkins03 from 'images/opentelemetry_screenshot-full_integrations-jenkins-03.webp' - -import opentelemetryOpentelemetryJenkins04 from 'images/opentelemetry_screenshot-full_opentelemetry-jenkins-04.webp' - -import opentelemetryJenkins05 from 'images/opentelemetry_screenshot-full_jenkins-05.webp' - -Monitor Jenkins with the [OpenTelemetry plugin](https://plugins.jenkins.io/opentelemetry) by visualizing jobs and pipeline executions as [distributed traces](/docs/distributed-tracing/concepts/introduction-distributed-tracing). You can also install the [quickstart](https://newrelic.com/instant-observability/jenkins) to get a pre-built dashboard to monitor your Jenkins pipeline. - -Screenshot showing sample Jenkins dashboard in New Relic - -## Prerequisites [#prerequisites] - -You need to first install the OpenTelemetry plugin from Jenkins: - -1. Log into Jenkins. -2. From the Dashboard, click on **Manage Jenkins**. -3. Under System Configuration, click **Plugins**. -4. Click the **Available plugins** tab, then search for **OpenTelemetry**. -5. Select the **OpenTelemetry** checkbox, and **Install without restart**. -6. Once the installation is complete, click **Manage Jenkins**. -7. Under **System Configuration**, click **System**. -8. Scroll down and check for a section called **OpenTelemetry**. If you can't see it, restart Jenkins. - -Screenshot showing Jenkins OpenTelemetry plugin - -## Configuration [#configuration] - -You need a New Relic [OTLP Endpoint](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#note-endpoints) and an to configure the Jenkins OpenTelemetry plugin to send data to New Relic. - -Screenshot showing Jenkins OpenTelemetry configuration - -1. Enter an OTLP Endpoint. For example, `https://otlp.nr-data.net:4317`. -2. For authentication, select **Header Authentication**: - a. In the **Header Name** field, enter **api-key**. - b. In the **Header Value** field, enter a secret text containing your New Relic ingest license key. -3. Save the changes. - -If you don't have a secret text created with your New Relic license key, click the **+ Add** button and select **Jenkins Credentials Provider**, to create one. You can keep the default values except for **kind** and **secret** and the **description** is optional. - -Screenshot showing Jenkins Credential Provider - -1. From the **Kind** dropdown, select **Secret text**. -2. In the **secret** field, enter your New Relic ingest license key. -3. Optionally, add a description to note what the secret text is for. - -## Validation [#validation] - -Run a job or create a new pipeline to see Jenkins data in New Relic. Here's how to build a pipeline: - -1. Log into Jenkins and click **New Item**. -2. Enter an item name, click **Pipeline**, and then **OK**. -3. Scroll down to the very bottom to the **Pipeline** section. -4. Use the Pipeline script, and select an option from the **try sample Pipeline...** dropdown. -5. Click Save. -6. In the newly created pipeline, click **Build Now**. -7. Got to **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > Services - OpenTelemetry > jenkins**. -8. Click **Distributed tracing** to visualize jobs and pipeline executions. -9. Click **Logs** to see your Jenkins console logs. If there are no logs, check to make sure the environment variable `OTEL_LOGS_EXPORTER="otlp"` is set. - -Screenshot showing Jenkins OpenTelemetry plugin - -## Install the Jenkins quickstart dashboard [#quickstart] - -After you've sent your Jenkins pipeline data to New Relic, you can also easily monitor your jobs and pipeline executions with the prebuilt dashboard from [New Relic Instant Observability](http://newrelic.com/instant-observability). Get started in minutes with a pre-built dashboard to see key metrics in a consolidated view: - -1. Go to the Jenkins quickstart in [New Relic Instant Observability](https://newrelic.com/instant-observability/jenkins), and click **+ Install now**. -2. Select an account and click **Begin installation**. -3. If you've already completed the [validation](#validation), select **done** to move onto the next step. -4. The quickstart deploys the resources to your account. Click **see your data** to get to the dashboard. - -Jenkins quickstart dashboard in New Relic - - - The Jenkins OpenTelemetry plugin is not maintained by New Relic, so if you have any issues with the instrumentation, [create a new issue in the plugin's GitHub repo](https://github.com/jenkinsci/opentelemetry-plugin/issues). - - - diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx deleted file mode 100644 index 9220e88a950..00000000000 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx +++ /dev/null @@ -1,117 +0,0 @@ ---- -title: LAMPy stack monitoring integration -tags: - - New Relic integrations - - LAMPy - - Linux - - Apache - - Python - - MySQL -metaDescription: Use New Relic Linux, Apache, Python and MySQL monitoring to get a dashboard with metrics from your LAMPy application. -redirects: - - /docs/infrastructure/host-integrations/host-integrations-list/lampy-integration - - /docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration -freshnessValidatedDate: never ---- - -import infrastructureLampyDashboard from 'images/infrastructure_screenshot-full_lampy-dashboard-1.webp' - -Our LAMPy integration makes use of the infrastructure agent, MySQL integration, Apache integration, and Python agent to provide you with a pre-built dashboard with your most important metrics like response time, CPU utilization, traffic, and login frequencies. - - -A screenshot depicting the LAMPy prebuilt dashboard - -
-After setting up our LAMPy integration, we give you a dashboard for your LAMPy web app metrics. -
- -## Step 1: Install the infrastructure agent [#infra-install] - -To do this, follow [the infrastructure agent install steps](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux) for the host containing your LAMPy application. - -## Step 2: Install the MySQL integration [#mysql-install] - -Our LAMPy integration relies on the MySQL integration to work. To learn more and check requirements review our [MySQL docs](/install/mysql/). - -1. From [one.newrelic.com](https://one.newrelic.com) click **Add data > Infrastructure & OS > MySQL**. -2. Follow the instructions to install the MySQL agent. - -## Step 3: Install the Apache integration [#apache-install] - -Our LAMPy integration relies on the Apache integration to work. To learn more and check requirements review our [Apache docs](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/). - -1. From [one.newrelic.com](https://one.newrelic.com) click **Add data > Infrastructure & OS > Apache**. -2. Follow the instructions on the screen to install Apache agent. - -## Step 4: Install the Python agent [#python-install] - -Our LAMPy integration relies on the Python agent to work. To learn more and check requirements review our [Python docs](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/). - -1. From [one.newrelic.com](https://one.newrelic.com) click **Add data > Application monitoring > Python**. -2. Name your application. -3. Download the configuration file and place it in your application's root directory. -4. Integrate your python agent that is connected to Django web site. This python agent also runs on the Apache server. -5. Add this line to your `settings.py` file: - - ```py - NEW_RELIC_CONFIG_FILE = BASE_DIR / 'newrelic.ini' - ``` - -6. Add these lines to your `wsgi.py` file: - - ```py - import newrelic.agent - - from django.conf import settings - from django.core.wsgi import get_wsgi_application - - application = get_wsgi_application() - - newrelic.agent.initialize(settings.NEW_RELIC_CONFIG_FILE) - newrelic.agent.WSGIApplicationWrapper(application) - - ``` - -## Step 5: Restart your Apache server - -Wait for a few minutes and then proceed to finding your data in New Relic. - -## Find your data [#find-data] - -To get your LAMPy dashboard: - -1. From [one.newrelic.com](https://one.newrelic.com), go to the [**Add data** page](https://one.newrelic.com/marketplace). -2. Click on **Dashboards**. -3. In the search bar, type `LAMPy`. -4. The LAMPy dashboard should appear. Click on it to install it. - -Your LAMPy dashboard is considered a custom dashboard and can be found in the **Dashboards** UI. For docs on using and editing dashboards, see [our dashboard docs](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards). - -For information about data reported, see the docs for each of the tools you installed: - -* [Linux data](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux/) -* [MySQL data](/install/mysql/#metrics) -* [Apache data](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/) -* [Python data](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/) - -If you installed the infrastructure agent, you'll also receive [infrastructure data](/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events). - -Here is an example NRQL query to check bytes sent per request: - -```sql -SELECT (average(`apache.server.net.bytesPerSecond`) / average(`apache.server.net.requestsPerSecond`)) as 'Bytes sent per request' -FROM Metric -TIMESERIES auto -``` - -## What's next? [#whats-next] - -To learn more about querying your data and creating custom dashboards, check out these docs: - -* [Introduction to the query builder](/docs/query-your-data/explore-query-data/query-builder/introduction-query-builder) -* [Introduction to custom dashboards](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards) -* [Manage your dashboard](/docs/query-your-data/explore-query-data/dashboards/manage-your-dashboard) diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx deleted file mode 100644 index 8b046bd06c3..00000000000 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx +++ /dev/null @@ -1,649 +0,0 @@ ---- -title: StatsD monitoring integration -tags: - - Integrations - - On-host integrations - - On-host integrations list -redirects: - - /docs/integrations/host-integrations/host-integrations-list/statsd-monitoring-integration-version-2 - - /docs/statsd-monitoring-integration-version-2 - - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration-new-relic-infrastructure - - /docs/statsd-monitoring-integration-new-relic-infrastructure - - /docs/statsd-monitoring-integration - - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration - - /docs/integrations/host-integrations/host-integrations-list/statsd-monitoring-integration - - /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration-version-2 - - /docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration -freshnessValidatedDate: never ---- - -import infrastructureStatsdNrqlCondition from 'images/infrastructure_screenshot-crop_statsd-nrql-condition.webp' - -import infrastructureStatsdNrqlAlert from 'images/infrastructure_screenshot-crop_statsd-nrql-alert.webp' - -Our StatsD integration lets you easily get [StatsD](https://github.com/statsd/statsd)-format data into New Relic. You can also add any arbitrary tags (key-value pairs) to your data. Once your metrics are in New Relic, you can [query your data](#find-use-data) and create custom charts and dashboards. - -Want to try out our StatsD integration? [Create a New Relic account](https://newrelic.com/signup) for free! No credit card required. - -## Requirements - -This integration uses our [Metric API](/docs/data-ingest-apis/get-data-new-relic/metric-api/introduction-metric-api) and our [Event API](/docs/insights/insights-data-sources/custom-data/introduction-event-api) to ingest data. To use these APIs, you'll need a . - -The integration adheres to the Metric API [requirements and data limits](/docs/data-ingest-apis/get-data-new-relic/metric-api/metric-api-limits-restricted-attributes). To see if you might be hitting the rate limit, run the following NRQL query of the [`NrIntegrationError` event](/docs/telemetry-data-platform/manage-data/nrintegrationerror): - -```sql -SELECT count(*) FROM NrIntegrationError - WHERE newRelicFeature ='Metrics' - FACET category, message - LIMIT 100 since 1 day ago -``` -The integration is available as a linux container image in [DockerHub](https://hub.docker.com/r/newrelic/nri-statsd/tags) for amd64 and arm64 architectures. - -## Install - -This section will explain how to do a standard install. If you want to run StatsD in Kubernetes, see [Kubernetes install](#kubernetes). - -To install the StatsD integration, run the following command and include your [New Relic account ID](/docs/accounts/install-new-relic/account-setup/account-id) and . This generates a TOML configuration file used by `gostatsd`. - -```shell -docker run \ - -d --restart unless-stopped \ - --name newrelic-statsd \ - -h $(hostname) \ - -e NR_ACCOUNT_ID=YOUR_ACCOUNT_ID \ - -e NR_API_KEY=NEW_RELIC_LICENSE_KEY \ - -p 8125:8125/udp \ - newrelic/nri-statsd:latest -``` - -If your organization is in the [EU data center region](/docs/using-new-relic/welcome-new-relic/get-started/introduction-eu-region-data-center), add this to the above command: - -```shell --e NR_EU_REGION=true \ -``` - -After installing, you can: - -* Do optional [additional configuration](#configure) -* [Define your metrics](#metric-format) -* [Add custom tags](#add-tags) to your data -* [Create alerts](#alerts) - -### Install for Kubernetes [#kubernetes] - -Here are examples of Kubernetes manifests for deployment and service objects: - - - - Below are examples of Kubernetes manifests to deploy StatsD in a Kubernetes environment and create a StatsD service named `newrelic-statsd`. You need to insert your [account ID](/docs/accounts/install-new-relic/account-setup/account-id) and your . - - **deployment.yml**: - - ```yml - apiVersion: apps/v1 - kind: Deployment - metadata: - name: newrelic-statsd - namespace: tooling - labels: - app: newrelic-statsd - spec: - selector: - matchLabels: - app: newrelic-statsd - replicas: 2 - revisionHistoryLimit: 2 - template: - metadata: - labels: - app: newrelic-statsd - spec: - serviceAccountName: newrelic-statsd - containers: - - name: newrelic-statsd - image: newrelic/nri-statsd:latest - env: - - name: NR_ACCOUNT_ID - value: "NEW_RELIC_ACCOUNT_ID" - - name: NR_API_KEY - value: "NEW_RELIC_LICENSE_KEY" - ``` - - **service.yml**: - - ```yml - apiVersion: v1 - kind: Service - metadata: - name: newrelic-statsd - namespace: tooling - labels: - app: newrelic-statsd - spec: - type: ClusterIP - ports: - - name: newrelic-statsd - port: 80 - targetPort: 8125 - protocol: UDP - selector: - app: newrelic-statsd - ``` - - **service-account.yml**: - - ```yml - apiVersion: v1 - kind: ServiceAccount - metadata: - name: newrelic-statsd - namespace: default - ``` - - - For configuration details, see [Kubernetes configuration](#k8s-config). - - - - A [StatsD Helm chart](https://github.com/newrelic/helm-charts/tree/master/charts/nri-statsd) is also available to install the integration. - - - - - - -## Configure - -In the [install procedure](#install), you run `nri-statsd` with environment variables, and this generates a TOML configuration file. Additionally, you can set these configuration options: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Configuration options - - Description -
- `expiry-interval` - - _string_ - - If a metric is not updated for this amount of time, we stop reporting that metric. Default is `5m`. - - If you want to send the metrics only if the value was updated between the flush intervals, configure this to `1ms`. To never expire metrics, set it to `0`. -
- `percent-threshold` - - _list of integers_ - - Specifies the percentiles used for metrics aggregation. Default: `90`. -
- `metrics-addr` - - _string_ - - Indicates address on which to listen for metrics. Default: `:8125`. - From nri-statsd `v2.3.0` (goStatsD `v34.2.1`), connection via Unix Domain Socket (UDS) is supported. Use "metrics-addr=/some/path/newrelic-statsd.socket" instead of "[host]:port" in the configuration. -
- - - To ensure FedRAMP compliance when using the StatsD integration you must define the following endpoints in the custom configuration: - - ``` - address = 'https://gov-insights-collector.newrelic.com/v1/accounts/ $NR_ACCOUNT_ID/events' - ``` - - ``` - address-metrics = 'https://gov-infra-api.newrelic.com/metric/v1' - ``` - - -Here are some examples of customizing configuration by overwriting the default configuration: - - - - ``` - # Specify after how long do we expire metrics, default:5m - expiry-interval = '1ms' - - # percent-threshold specify a list of percentiles for metrics aggregation, default:90 - percent-threshold = [90, 99] - - backends='newrelic' - [newrelic] - # flush types supported: metrics, insights, infra - flush-type = 'metrics' - transport = 'default' - address = 'https://insights-collector.newrelic.com/v1/accounts/$NR_ACCOUNT_ID/events' - address-metrics = 'https://metric-api.newrelic.com/metric/v1' - api-key = 'NEW_RELIC_LICENSE_KEY' - ``` - - **Disable timer sub-metrics:** - - By default, `nri_statsd` calculates the following for timer metrics: standard deviation, mean, median, sum, lower, and upper bounds for the flush interval. If you want to disable those metrics you can do it by adding a `disabled-sub-metrics` configuration section and set `true` for the ones you want disabled. Here's an example: - - ``` - # disabled-sub-metrics configuration section allows disabling timer sub-metrics - [disabled-sub-metrics] - # Regular metrics - count=false - count-per-second=false - mean=false - median=false - lower=false - upper=false - stddev=false - sum=false - sum-squares=false - - # Percentile metrics - count-pct=false - mean-pct=false - sum-pct=false - sum-squares-pct=false - lower-pct=false - upper-pct=false - ``` - - - - To overwrite the default `nri-statsd` configuration while running in a container, you can mount a configuration file inside the container. - - You can adopt the following template as needed for your situation. - - Example: - - ``` - backends='newrelic' - flush-interval='10s' - - [newrelic] - # flush types supported: metrics, insights, infra - flush-type = 'metrics' - transport = 'default' - address-metrics = 'https://metric-api.newrelic.com/metric/v1' - api-key = 'NEW_RELIC_LICENSE_KEY' - ``` - - To run the container with the file mounted in the appropriate path: - - ```shell - docker run \ - ... - -v ${PWD}/nri-statsd.toml:/etc/opt/newrelic/nri-statsd.toml \ - ... - newrelic/nri-statsd:latest - ``` - - - - The best approach to configure `nri-statsd` running in Kubernetes is to use a `configMap` and mount the `configMap` into the container. (This is a similar process to mounting the configuration file in Docker.) - - Example: - - ``` - apiVersion: v1 - kind: ConfigMap - metadata: - name: nri-statsd-config - namespace: default - data: - nri-statsd.toml: | - backends='newrelic' - flush-interval='10s' - - [newrelic] - # flush types supported: metrics, insights, infra - flush-type = 'metrics' - transport = 'default' - address = 'https://metric-api.newrelic.com/metric/v1' - api-key = '$NEW_RELIC_LICENSE_KEY' - ``` - - To use the configMap, declare a volume on your deployment spec template and then declare a `volumeMount` on your container spec. - - Example: - - ``` - apiVersion: apps/v1 - kind: Deployment - spec: - template: - spec: - containers: - .... - volumeMounts: - - mountPath: /etc/opt/newrelic/ - name: nri-statsd-config - volumes: - - name: nri-statsd-config - configMap: - name: nri-statsd-config - ``` - - - -## Metric format - -The integration receives metrics using the [StatsD protocol](https://github.com/statsd/statsd). Optionally, the sample rate can be configured and tags can be added. - -Here's the metric data format we use: - -``` -:||@|# -``` - -Here are explanations of these fields: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Field name - - Description -
- <metric name> - `string` - - **Required.** Name of the metric. -
- <value> - `string` - - **Required.** The [metric type](#metric-types): - - * `c` = counter - * `g` = gauge - * `ms` = timer -
- @<sample rate> - `float` - - **Optional** for simple counters or timer counters. When many metrics must be sent, you can use sampling to reduce network traffic. The downside is a reduction in the resolution of the data. - - An example of how this would work for sample rates below `1`: If you set this to `0.1`, the counter would send a measurement one out of every 10 times. -
- \#<tags> - `string` - - **Optional.** Tags attached to your metrics are converted into attributes (key-value pairs). For more on tagging options, see [Tags](#add-tags). -
- -## Metric types - -Here are the types of metrics and how to format them: - - - - A counter measures the number of occurrences of an event. Examples include cache hits per reporting interval and the number of threads created per reporting interval. - - A counter can be incremented or decremented during the same flush interval by adding a sign to the value. In the following example, the counter value will be `2`: - - ``` - counter:4|c - counter:-2|c - ``` - - At each flush, the current count is sent and reset to `0`. If the count is not updated, at the next flush it will send the value `0`. You can opt to disable this behavior by setting [`expiry-interval`](#configure) to `1ms`. - - Here’s an example of a counter that is being sampled 1 out of 10 times: - - ``` - counter:4|c@0.1 - ``` - - - - A gauge represents a value that can increase or decrease with time. Examples of gauges include temperature, CPU usage, and memory. Here's an example: - - ``` - temperature:40|g - ``` - - If the gauge is not updated, at the next flush it will send the previous value. You can opt to disable this behavior by setting [`expiry-interval`](#configure) to `1ms`. - - - - The timer metric type measures timing data. - - By default, `nri_statsd` calculates the following for timer metrics: standard deviation, mean, median, sum, lower, and upper bounds for the flush interval. These are sent as sub-metrics in the following format: - - ``` - .std_dev - .median - .summary - .sum_squares - .mean - .per_second - ``` - - The configured percentiles will generate the following metrics. The percentile threshold value will be attached as a tag. - - ``` - .sum_squares.percentiles - .sum.percentiles - .count.percentiles - .upper.percentiles - .mean.percentiles - ``` - - The percentile threshold can be tweaked with the [`percent-threshold`](#configure) config option. These can be controlled through the [`disabled-sub-metrics` configuration section](#config-example). - - - -## Add tags (attributes) [#add-tags] - -You can add tags to your data, which we save as [attributes](/docs/using-new-relic/welcome-new-relic/get-started/glossary#attribute) (key-value pairs). There are two options for adding tags: - -* Add default tags that apply to all metrics: These apply to all metrics. They are fixed and don't change over time. -* Add metric-level tags: These apply to specific metrics and allow the value to be changed between two submits. - - - - Add tags to metrics and events by defining an environment variable in the [startup command](#install). - - Here's an example that would create two tags: - - ``` - -e TAGS="environment:production region:us" - ``` - - Here's that environment variable used in the [startup command](#install): - - ``` - docker run \ - -d --restart unless-stopped \ - --name newrelic-statsd \ - -h $(hostname) \ - -e NR_ACCOUNT_ID=YOUR_ACCOUNT_ID \ - -e NR_API_KEY=NEW_RELIC_LICENSE_KEY \ - -e TAGS="environment:production region:us" \ - -p 8125:8125/udp \ - newrelic/nri-statsd:latest - ``` - - - - When defining the [metric format](#metric-format), you can add tags using this format: - - ``` - :||# - ``` - - In this example, `` is a comma-separated list of tags. Tags format is: `simple` or `key:value`. - - - -Here's an example [NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql) query that includes a custom tag: - -``` -SELECT count(*) FROM Metric WHERE environment = 'production' -``` - -## Create alerts [#alerts] - -You can alert on StatsD data using [NRQL alert conditions](/docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries). - - - - This procedure walks you through sending some sample data and then creating an alert condition using that data. - - First, send this data to New Relic’s StatsD container: - - ``` - echo "prod.test.num:32|g" | nc -v -w 1 -u localhost 8125 - ``` - - Next, create a [NRQL alert condition](/docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries) using this query: - - ``` - SELECT latest(prod.test.num) FROM Metric WHERE metricName = 'prod.test.num' - ``` - - Here's an image showing creating this NRQL alert condition. Notice that the sample data sent in is represented by the blue dot on the upper right of the chart. - - StatsD NRQL alert condition query - - Now we can create the alert condition with these settings: - - StatsD NRQL alert condition creation example - - When you create the NRQL alert condition, be sure to set the **Condition name**. - - If a metric with a value above 50 is sent, then an incident is created and notified. The incident is closed automatically after 24 hours. To test that the alert is working, run this command: - - ``` - echo "prod.test.num:60|g" | nc -v -w 1 -u localhost 8125 - ``` - - - -## Find and use data [#find-use-data] - -To query your data, you'd use any New Relic [query option](/docs/using-new-relic/data/understand-data/query-new-relic-data). For example, you might run a [NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql) query like: - -``` -SELECT count(*) FROM Metric WHERE metricName = 'myMetric' and environment = 'production' -``` - -For more on how to query the `Metric` data type, see [Query metric data](/docs/data-ingest-apis/get-data-new-relic/metric-api/view-query-you-metric-data). - -## Troubleshooting [#troubleshooting] - -**Problem**: - -You've followed the steps to run the StatsD integration but still need to see the expected metrics in New Relic. - -**Solutions**: - -Follow the steps below to troubleshoot your configuration: - * Ensure the contains your 40 hexadecimal character license key, and it's a valid license for the selected New Relic account ID. -* Ensure the right data center, US or EU, has been selected for your New Relic account. Tip: If the license_key starts with "eu" then you must use the `NR_EU_REGION=true` flag. -* Ensure there are no [`NrIntegrationError`](/data-apis/ingest-apis/metric-api/troubleshoot-nrintegrationerror-events/) related to the StatsD integration. -* Verbose logs can be enabled using the environment variable `NR_STATSD_VERBOSE`, modify the docker run command adding the following variable: `-e NR_STATSD_VERBOSE=true`. -* A test metric can be pushed to confirm the integration is sending metrics that are expected. Example using the NetCat `nc` utility: - - `echo "example.gauge:123|g" | nc -u -w0 127.0.0.1 8125` (update `127.0.0.1` with running container IP/address). -## Check the source code [#source-code] - -This integration is open source software. That means you can [browse its source code](https://github.com/newrelic/nri-statsd/) and send improvements, or create your own fork and build it. diff --git a/src/content/docs/video-agents/open-source-video-agents.mdx b/src/content/docs/video-agents/open-source-video-agents.mdx new file mode 100644 index 00000000000..b2b7258ca30 --- /dev/null +++ b/src/content/docs/video-agents/open-source-video-agents.mdx @@ -0,0 +1,23 @@ +--- +title: Open-source video monitoring tools +tags: + - Agents + - Open-source licensed agents +metaDescription: A brief introduction to New Relic's video agents. +redirects: + - /docs/integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent + - /docs/agents/open-source-licensed-agents/ruby-open-source-video-agent + - /docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent +freshnessValidatedDate: 2024-06-20 +--- + +New Relic has a variety of open-source tools for monitoring video. Some are in the category of experimental and some are community projects: + +* iOS & tvOS +* Android Mobile and TV +* Chromecast +* Roku (device or TV) + +For requirements, installation, and configuration information, see our [wiki](https://github.com/newrelic-experimental/video-documentation/wiki) on GitHub. + + diff --git a/src/nav/apm.yml b/src/nav/apm.yml index 1d270acd125..3e06e1d1890 100644 --- a/src/nav/apm.yml +++ b/src/nav/apm.yml @@ -287,11 +287,13 @@ pages: path: /docs/apm/agents/java-agent/third-party-integrations pages: - title: Dropwizard integration - path: /docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter + path: /docs/apm/agents/java-agent/third-party-integrations/dropwizard/dropwizard-reporter - title: Kamon integration - path: /docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter + path: /docs/apm/agents/java-agent/third-party-integrations/kamon/kamon-reporter - title: Micrometer integration - path: /docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry + path: /docs/apm/agents/java-agent/third-party-integrations/micrometer/micrometer-metrics-registry + - title: Java Vert.x Event Bus integration + path: /docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-eventbus-integration - title: .NET monitoring path: /docs/apm/agents/net-agent pages: @@ -723,8 +725,12 @@ pages: path: /docs/apm/agents/php-agent/frameworks-libraries/magento-specific-functionality - title: Predis library path: /docs/apm/agents/php-agent/frameworks-libraries/predis-library-php - - title: WordPress specific functionality - path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-specific-functionality + - title: WordPress + pages: + - title: WordPress full stack integration + path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration + - title: WordPress specific functionality + path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-specific-functionality - title: Other integrations pages: - title: Magento business insights diff --git a/src/nav/infrastructure.yml b/src/nav/infrastructure.yml index 0a54b4d0ab6..8fea9f772dd 100644 --- a/src/nav/infrastructure.yml +++ b/src/nav/infrastructure.yml @@ -162,7 +162,7 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/cacti-integration - title: Cassandra integration path: /install/cassandra - - title: Cloudfoundry integrations + - title: Cloud Foundry integrations pages: - title: New Relic Nozzle for VMware Tanzu path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration @@ -263,7 +263,7 @@ pages: - title: SonarQube monitoring integration path: /docs/infrastructure/host-integrations/host-integrations-list/sonarqube-monitoring-integration - title: StatsD integration - path: /docs/infrastructure/host-integrations/statsd-monitoring-integration + path: /docs/infrastructure/host-integrations/host-integrations-list/statsd-monitoring-integration - title: Stripe monitoring integration path: /docs/infrastructure/host-integrations/host-integrations-list/stripe-integration - title: Temporal monitoring integration diff --git a/src/nav/new-relic-solutions.yml b/src/nav/new-relic-solutions.yml index 426297990ab..c08c304cb69 100644 --- a/src/nav/new-relic-solutions.yml +++ b/src/nav/new-relic-solutions.yml @@ -141,11 +141,11 @@ pages: - title: Terraform guides pages: - title: Getting started with New Relic and Terraform - path: /docs/more-integrations/terraform/terraform-intro + path: /docs/infrastructure-as-code/terraform/terraform-intro - title: Terraform modules and remote storage - path: /docs/more-integrations/terraform/terraform-modules + path: /docs/infrastructure-as-code/terraform/terraform-modules - title: Manage multiple environments - path: /docs/more-integrations/terraform/terragrunt + path: /docs/infrastructure-as-code/terraform/terragrunt - title: Build on New Relic UI pages: - title: New Relic CLI diff --git a/src/nav/root.yml b/src/nav/root.yml index 5fe71f041aa..292d6e48d06 100644 --- a/src/nav/root.yml +++ b/src/nav/root.yml @@ -36,7 +36,8 @@ pages: path: synthetics - title: Website performance monitoring path: website-performance-monitoring - + - title: Video + - title: video-agents - title: Data insights - title: Alerts and Applied Intelligence @@ -61,11 +62,6 @@ pages: path: iast - title: Vulnerability Management path: vuln-management - - - - - title: Other integrations - path: integrations - title: Latest updates - title: Release notes From cedd401a32723bb16b7ea0320547e19e26b750b3 Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Thu, 20 Jun 2024 17:43:50 -0700 Subject: [PATCH 07/27] fix(cross-platform): Remove spacing in root.yml --- src/nav/root.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/nav/root.yml b/src/nav/root.yml index 292d6e48d06..6abd5ee9ed7 100644 --- a/src/nav/root.yml +++ b/src/nav/root.yml @@ -8,7 +8,6 @@ pages: path: tutorials - title: Guides and best practices path: new-relic-solutions - - title: Monitor your data - title: AI monitoring path: ai-monitoring @@ -38,7 +37,6 @@ pages: path: website-performance-monitoring - title: Video - title: video-agents - - title: Data insights - title: Alerts and Applied Intelligence path: alerts-applied-intelligence @@ -56,19 +54,16 @@ pages: path: nrql - title: Service Level Management path: service-level-management - - title: Security - title: New Relic IAST path: iast - title: Vulnerability Management path: vuln-management - - title: Latest updates - title: Release notes path: release-notes - title: What's new? path: whats-new - - title: Admin and data - title: Account & user management path: accounts From 9e6f0d098f02268fd458edd9ee00126adccfbabf Mon Sep 17 00:00:00 2001 From: nbaenam Date: Fri, 21 Jun 2024 16:09:34 +0200 Subject: [PATCH 08/27] fix(IAST): Removed & Applications from the UI path according to UI --- src/content/docs/iast/troubleshooting.mdx | 16 ++++++++-------- .../content/es/docs/iast/troubleshooting.mdx | 14 +++++++------- .../content/jp/docs/iast/troubleshooting.mdx | 10 +++++----- .../content/kr/docs/iast/troubleshooting.mdx | 12 ++++++------ .../content/pt/docs/iast/troubleshooting.mdx | 14 +++++++------- 5 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/content/docs/iast/troubleshooting.mdx b/src/content/docs/iast/troubleshooting.mdx index c2a3e3ac9c1..d46a0cbdf48 100644 --- a/src/content/docs/iast/troubleshooting.mdx +++ b/src/content/docs/iast/troubleshooting.mdx @@ -17,7 +17,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel id="iast-results" title="Where do I find IAST results?" > - Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Click on an application to check the application testing efficiency, vulnerabilities, APIs covered, and methods calls, amongst other data. + Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Click on an application to check the application testing efficiency, vulnerabilities, APIs covered, and methods calls, amongst other data. @@ -38,9 +38,9 @@ If you don't find your problem listed here, you can always reach out to [New Rel If you can see your application in the New Relic UI and the security agent successfully started IAST, but you don't see vulnerabilities in the UI, check the following: - - The level of efficiency for your application: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Search for your application and check the summary section. If IAST coverage is low for your application, add additional test cases to your application to get a higher level of testing efficiency. + - The level of efficiency for your application: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Search for your application and check the summary section. If IAST coverage is low for your application, add additional test cases to your application to get a higher level of testing efficiency. - - The IAST coverage: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Search for your application and click on it. Under the summary section, check if IAST analysis coverage is high and no vulnerabilities are detected, that means your application is secure. + - The IAST coverage: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Search for your application and click on it. Under the summary section, check if IAST analysis coverage is high and no vulnerabilities are detected, that means your application is secure. - Your application's framework or vulnerability category is not supported. @@ -52,7 +52,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel id="see-my-application" title="I don't see my application in IAST" > - If you don't see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**, check the following: + If you don't see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Testsate>, check the following: - Your application is up and running: Check the application process or the [APM & Services page](/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/advanced-techniques/view-events-their-products#products). - The application's logs to find out if there's a problem. @@ -61,7 +61,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel - Go to the `nr-security-home/logs` directory and find the `[SETP-8]` line in the `LANGUAGE-security-collector-init.log` file. Check if there is an unexpected error and know what failed. - The application has traffic. Generate some traffic to allow IAST to test your application. - Proxy or Firewall blocking access. Whitelist the following IPs `3.134.136.130, 18.219.177.104, 18.117.21.106` for the domain **csec.nr-data.net**, the following IPs `3.130.22.102, 3.138.243.136, 3.139.218.150` for the domain **csec-gov.nr-data.net** and the following IPs `18.185.235.118, 3.125.193.113, 3.75.166.122` for the domain **csec.eu01.nr-data.net**. But our recommendation is to add domains in the whitelist instead of the IPs as these IPs are bound to change anytime. - - The TLS Certificate is correct. Add Let’s Encrypt CA certificate(download from [Let’s Encrypt Certificates](https://letsencrypt.org/certificates/#root-certificates)) to your local trust store. Include both the root certificates and the intermediate ones (ISRG Root X1 & Let’s Encrypt R3) to establish the complete chain of trust. + - The TLS Certificate is correct. Add Let's Encrypt CA certificate (download from [Let's Encrypt Certificates](https://letsencrypt.org/certificates/#root-certificates)) to your local trust store. Include both the root certificates and the intermediate ones (ISRG Root X1 & Let's Encrypt R3) to establish the complete chain of trust. - Your application's framework or vulnerability category is supported. @@ -78,7 +78,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel When the security agent is working correctly: - +All capabilities > IAST > Tests - You see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. The application is started and there is traffic generated. - In the `nr-security-home/logs` directory, search for the `LANGUAGE-security-collector-init.log` file. Replace `LANGUAGE` in the filename with the one you are using. Search for these steps to see where the problem is: - [STEP-1]: The security agent is starting. @@ -107,7 +107,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel > You can check if IAST is working, even if you're seeing your application in the IAST UI and the security agent started successfully. Follow these steps for checking it: - +All capabilities > IAST > Tests 1. Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. 2. Search for your application in the **Application tests** tab and click on it. @@ -187,7 +187,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel > Update the status of your vulnerability if you think IAST has reported a false positive. Follow these steps: - +All capabilities > IAST > Tests - Search your application: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. - Click on the all applications tab and select the vulnerability that is not an actual vulnerability. diff --git a/src/i18n/content/es/docs/iast/troubleshooting.mdx b/src/i18n/content/es/docs/iast/troubleshooting.mdx index 9e410371768..7abe9283ddb 100644 --- a/src/i18n/content/es/docs/iast/troubleshooting.mdx +++ b/src/i18n/content/es/docs/iast/troubleshooting.mdx @@ -18,7 +18,7 @@ Si no encuentra su problema en la lista aquí, siempre puede comunicarse con [el id="iast-results" title="¿Dónde encuentro los resultados del IAST?" > - Vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Haga clic en una aplicación para verificar la eficiencia de las pruebas de la aplicación, las vulnerabilidades, las API cubiertas y las llamadas a métodos, entre otros datos. + Vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Haga clic en una aplicación para verificar la eficiencia de las pruebas de la aplicación, las vulnerabilidades, las API cubiertas y las llamadas a métodos, entre otros datos. **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Busque su aplicación y consulte la sección de resumen. Si la cobertura IAST es baja para su aplicación, agregue casos de prueba adicionales a su aplicación para obtener un mayor nivel de eficiencia de prueba. + * El nivel de eficiencia de su aplicación: vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Busque su aplicación y consulte la sección de resumen. Si la cobertura IAST es baja para su aplicación, agregue casos de prueba adicionales a su aplicación para obtener un mayor nivel de eficiencia de prueba. - * La cobertura de IAST: vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Busque su aplicación y haga clic en ella. En la sección de resumen, verifique si la cobertura del análisis IAST es alta y no se detectan vulnerabilidades, eso significa que su aplicación es segura. + * La cobertura de IAST: vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Busque su aplicación y haga clic en ella. En la sección de resumen, verifique si la cobertura del análisis IAST es alta y no se detectan vulnerabilidades, eso significa que su aplicación es segura. * Framework de su aplicación o la categoría de vulnerabilidades no son compatibles. @@ -49,7 +49,7 @@ Si no encuentra su problema en la lista aquí, siempre puede comunicarse con [el id="see-my-application" title="No veo mi aplicación en IAST" > - Si no ve su aplicación en **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**, verifique lo siguiente: + Si no ve su aplicación en **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**, verifique lo siguiente: * Su aplicación está en funcionamiento: consulte el proceso de aplicación o la [página APM y servicios](/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/advanced-techniques/view-events-their-products#products). * El registro de la aplicación para saber si hay algún problema. @@ -73,7 +73,7 @@ Si no encuentra su problema en la lista aquí, siempre puede comunicarse con [el Cuando el agente de seguridad está funcionando correctamente: - * Verá su aplicación en **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. La aplicación se inicia y se genera tráfico. + * Verá su aplicación en **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. La aplicación se inicia y se genera tráfico. * En el directorio `nr-security-home/logs` , busque el archivo `LANGUAGE-security-collector-init.log` . Reemplace `LANGUAGE` en el nombre del archivo con el que está utilizando. Busque estos pasos para ver dónde está el problema: @@ -103,7 +103,7 @@ Si no encuentra su problema en la lista aquí, siempre puede comunicarse con [el > Puede comprobar si IAST está funcionando, incluso si ve su aplicación en la UI de IAST y el agente de seguridad se inició correctamente. Siga estos pasos para comprobarlo: - 1. Vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. + 1. Vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. 2. Busque su aplicación en la pestaña **Application tests** y haga clic en ella. @@ -173,7 +173,7 @@ Si no encuentra su problema en la lista aquí, siempre puede comunicarse con [el > Actualice el estado de sus vulnerabilidades si cree que IAST ha informado un falso positivo. Sigue estos pasos: - * Busque su aplicación: Vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. + * Busque su aplicación: Vaya a **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. * Haga clic en la pestaña de todas las aplicaciones y seleccione las vulnerabilidades que no sean vulnerabilidades reales. diff --git a/src/i18n/content/jp/docs/iast/troubleshooting.mdx b/src/i18n/content/jp/docs/iast/troubleshooting.mdx index 927e1bd7860..bc2768ed9de 100644 --- a/src/i18n/content/jp/docs/iast/troubleshooting.mdx +++ b/src/i18n/content/jp/docs/iast/troubleshooting.mdx @@ -18,7 +18,7 @@ translationType: machine id="iast-results" title="IAST の結果はどこで確認できますか?" > - **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**に移動します。 アプリケーションをクリックすると、アプリケーションのテスト効率、脆弱性、対象となる API、メソッド呼び出しなどのデータを確認できます。 + **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**に移動します。 アプリケーションをクリックすると、アプリケーションのテスト効率、脆弱性、対象となる API、メソッド呼び出しなどのデータを確認できます。 All capabilities > IAST > Tests & Applications**に移動します。 アプリケーションを検索し、概要セクションを確認してください。 アプリケーションの IAST カバレッジが低い場合は、アプリケーションにテスト ケースを追加して、より高いレベルのテスト効率を実現します。 + * アプリケーションの効率のレベル: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**に移動します。 アプリケーションを検索し、概要セクションを確認してください。 アプリケーションの IAST カバレッジが低い場合は、アプリケーションにテスト ケースを追加して、より高いレベルのテスト効率を実現します。 - * IAST の対象範囲: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**に移動します。 アプリケーションを検索してクリックします。 概要セクションで、IAST 分析のカバレッジが高く、脆弱性が検出されないかどうかを確認します。つまり、アプリケーションが安全であることを意味します。 + * IAST の対象範囲: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**に移動します。 アプリケーションを検索してクリックします。 概要セクションで、IAST 分析のカバレッジが高く、脆弱性が検出されないかどうかを確認します。つまり、アプリケーションが安全であることを意味します。 * アプリケーションのフレームワークまたは脆弱性カテゴリはサポートされていません。 @@ -103,7 +103,7 @@ translationType: machine > IAST UI にアプリケーションが表示され、セキュリティ エージェントが正常に開始された場合でも、IAST が動作しているかどうかを確認できます。 確認するには次の手順に従います。 - 1. **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**に移動します。 + 1. **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**に移動します。 2. **Application tests** \[アプリケーション テスト]タブでアプリケーションを検索し、クリックします。 @@ -173,7 +173,7 @@ translationType: machine > IAST が誤検知を報告したと思われる場合は、脆弱性のステータスを更新してください。 次の手順を実行します: - * アプリケーションを検索します。 **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**に移動します。 + * アプリケーションを検索します。 **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**に移動します。 * \[すべてのアプリケーション] タブをクリックし、実際の脆弱性ではない脆弱性を選択します。 diff --git a/src/i18n/content/kr/docs/iast/troubleshooting.mdx b/src/i18n/content/kr/docs/iast/troubleshooting.mdx index 739fbe60c78..c3e92806042 100644 --- a/src/i18n/content/kr/docs/iast/troubleshooting.mdx +++ b/src/i18n/content/kr/docs/iast/troubleshooting.mdx @@ -18,7 +18,7 @@ translationType: machine id="iast-results" title="IAST 결과는 어디서 찾을 수 있나요?" > - **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications** 으로 이동합니다. 애플리케이션을 클릭하면 애플리케이션 테스트 효율성, 취약점, 적용되는 API, 메소드 호출 등을 확인할 수 있습니다. + **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests** 으로 이동합니다. 애플리케이션을 클릭하면 애플리케이션 테스트 효율성, 취약점, 적용되는 API, 메소드 호출 등을 확인할 수 있습니다. All capabilities > IAST > Tests & Applications** 으로 이동하세요. 귀하의 기능을 검색하고 요약 섹션을 확인하세요. 애플리케이션의 IAST 적용 범위가 낮은 경우 애플리케이션에 추가 테스트 사례를 추가하여 더 높은 수준의 테스트 효율성을 얻으세요. + * 귀하의 기능에 대한 효율성 수준: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests** 으로 이동하세요. 귀하의 기능을 검색하고 요약 섹션을 확인하세요. 애플리케이션의 IAST 적용 범위가 낮은 경우 애플리케이션에 추가 테스트 사례를 추가하여 더 높은 수준의 테스트 효율성을 얻으세요. - * IAST 적용 범위: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications** 으로 이동합니다. 해당 애플리케이션을 검색하고 클릭하세요. 요약 섹션에서 IAST 분석 적용 범위가 높고 취약점이 발견되지 않았는지 확인하세요. 이는 애플리케이션이 안전하다는 의미입니다. + * IAST 적용 범위: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests** 으로 이동합니다. 해당 애플리케이션을 검색하고 클릭하세요. 요약 섹션에서 IAST 분석 적용 범위가 높고 취약점이 발견되지 않았는지 확인하세요. 이는 애플리케이션이 안전하다는 의미입니다. * 귀하의 애플리케이션의 프레임워크 또는 취약점 카테고리는 지원되지 않습니다. @@ -49,7 +49,7 @@ translationType: machine id="see-my-application" title="IAST에서 내 지원서를 볼 수 없습니다." > - **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications** 에 해당 기능이 표시되지 않으면 다음을 확인하세요. + **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests** 에 해당 기능이 표시되지 않으면 다음을 확인하세요. * 귀하의 애플리케이션이 실행 중입니다. 애플리케이션 프로세스 또는 [APM & 서비스 페이지를](/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/advanced-techniques/view-events-their-products#products) 확인하세요. * 문제가 있는지 확인하기 위한 애플리케이션 로그입니다. @@ -73,7 +73,7 @@ translationType: machine 보안 에이전트가 올바르게 작동하는 경우: - * **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications** 에서 귀하의 기능을 확인하세요. 애플리케이션이 시작되고 트래픽이 생성됩니다. + * **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests** 에서 귀하의 기능을 확인하세요. 애플리케이션이 시작되고 트래픽이 생성됩니다. * `nr-security-home/logs` 디렉터리에서 `LANGUAGE-security-collector-init.log` 파일을 검색합니다. 파일 이름의 `LANGUAGE` 사용 중인 이름으로 바꾸세요. 문제가 있는 위치를 확인하려면 다음 단계를 검색하세요. @@ -173,7 +173,7 @@ translationType: machine > IAST가 오탐지를 보고했다고 생각되면 취약점 상태를 업데이트하세요. 다음과 같이하세요: - * 기능 검색: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications** 으로 이동하세요. + * 기능 검색: **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests** 으로 이동하세요. * 모든 애플리케이션 탭을 클릭하고 실제 취약점이 아닌 취약점을 선택합니다. diff --git a/src/i18n/content/pt/docs/iast/troubleshooting.mdx b/src/i18n/content/pt/docs/iast/troubleshooting.mdx index 61f49259ee8..620402c632e 100644 --- a/src/i18n/content/pt/docs/iast/troubleshooting.mdx +++ b/src/i18n/content/pt/docs/iast/troubleshooting.mdx @@ -18,7 +18,7 @@ Se você não encontrar seu problema listado aqui, você pode entrar em contato id="iast-results" title="Onde encontro os resultados do IAST?" > - Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Clique em um aplicativo para verificar a eficiência dos testes do aplicativo, vulnerabilidades, API coberta e chamadas de métodos, entre outros dados. + Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Clique em um aplicativo para verificar a eficiência dos testes do aplicativo, vulnerabilidades, API coberta e chamadas de métodos, entre outros dados. **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Procure seu aplicativo e verifique a seção de resumo. Se a cobertura do IAST for baixa para seu aplicativo, adicione casos de teste adicionais ao seu aplicativo para obter um nível mais alto de eficiência de teste. + * O nível de eficiência do seu aplicativo: Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Procure seu aplicativo e verifique a seção de resumo. Se a cobertura do IAST for baixa para seu aplicativo, adicione casos de teste adicionais ao seu aplicativo para obter um nível mais alto de eficiência de teste. - * A cobertura do IAST: vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. Procure seu aplicativo e clique nele. Na seção de resumo, verifique se a cobertura da análise IAST é alta e nenhuma vulnerabilidade foi detectada, o que significa que seu aplicativo está seguro. + * A cobertura do IAST: vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. Procure seu aplicativo e clique nele. Na seção de resumo, verifique se a cobertura da análise IAST é alta e nenhuma vulnerabilidade foi detectada, o que significa que seu aplicativo está seguro. * Framework ou categoria de vulnerabilidades do seu aplicativo não é suportada. @@ -49,7 +49,7 @@ Se você não encontrar seu problema listado aqui, você pode entrar em contato id="see-my-application" title="Não vejo meu aplicativo no IAST" > - Se você não vir seu aplicativo em **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**, verifique o seguinte: + Se você não vir seu aplicativo em **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**, verifique o seguinte: * Seu aplicativo está instalado e funcionando: verifique o processo do aplicativo ou a [página APM e serviços](/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/advanced-techniques/view-events-their-products#products). * O log do aplicativo para descobrir se há algum problema. @@ -73,7 +73,7 @@ Se você não encontrar seu problema listado aqui, você pode entrar em contato Quando o agente de segurança está funcionando corretamente: - * Você vê seu aplicativo em **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. O aplicativo é iniciado e há tráfego gerado. + * Você vê seu aplicativo em **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. O aplicativo é iniciado e há tráfego gerado. * No diretório `nr-security-home/logs` , procure o arquivo `LANGUAGE-security-collector-init.log` . Substitua `LANGUAGE` no nome do arquivo pelo que você está usando. Pesquise estas etapas para ver onde está o problema: @@ -103,7 +103,7 @@ Se você não encontrar seu problema listado aqui, você pode entrar em contato > Você pode verificar se o IAST está funcionando, mesmo se estiver vendo seu aplicativo na interface do IAST e o agente de segurança tiver sido iniciado com êxito. Siga estas etapas para verificar: - 1. Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. + 1. Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. 2. Procure seu aplicativo na aba **Application tests** e clique nele. @@ -173,7 +173,7 @@ Se você não encontrar seu problema listado aqui, você pode entrar em contato > Atualize o status de suas vulnerabilidades se achar que o IAST relatou um falso positivo. Siga esses passos: - * Pesquise seu aplicativo: Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. + * Pesquise seu aplicativo: Vá para **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. * Clique na guia Todos os aplicativos e selecione as vulnerabilidades que não são vulnerabilidades reais. From be8daa6f60777965e4d624996726830033715f4c Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 07:51:39 -0700 Subject: [PATCH 09/27] fix(cross-product): Correct indentation in apm.yml --- src/nav/apm.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/nav/apm.yml b/src/nav/apm.yml index 3e06e1d1890..87dcfdc6ebb 100644 --- a/src/nav/apm.yml +++ b/src/nav/apm.yml @@ -725,13 +725,13 @@ pages: path: /docs/apm/agents/php-agent/frameworks-libraries/magento-specific-functionality - title: Predis library path: /docs/apm/agents/php-agent/frameworks-libraries/predis-library-php - - title: WordPress - pages: - - title: WordPress full stack integration - path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration - - title: WordPress specific functionality - path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-specific-functionality - - title: Other integrations + - title: WordPress + pages: + - title: WordPress full stack integration + path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration + - title: WordPress specific functionality + path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-specific-functionality + - title: Other integrations pages: - title: Magento business insights path: /docs/apm/agents/php-agent/other-integrations/magento-business-insights From 87a61e4fb41c1595502cf19e03a687f91149acbd Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 08:13:51 -0700 Subject: [PATCH 10/27] fix(cross-platform): Make additional indentation fix in apm.yml --- src/nav/apm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nav/apm.yml b/src/nav/apm.yml index 87dcfdc6ebb..894790544c2 100644 --- a/src/nav/apm.yml +++ b/src/nav/apm.yml @@ -731,7 +731,7 @@ pages: path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-fullstack-integration - title: WordPress specific functionality path: /docs/apm/agents/php-agent/frameworks-libraries/wordpress-specific-functionality - - title: Other integrations + - title: Other integrations pages: - title: Magento business insights path: /docs/apm/agents/php-agent/other-integrations/magento-business-insights From 4ec95b152dbee00eb35deab2158c535ddf9488b3 Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 08:27:27 -0700 Subject: [PATCH 11/27] fix(cross-platform): Add vertx integrations to Java --- src/nav/apm.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/nav/apm.yml b/src/nav/apm.yml index 894790544c2..596bee729be 100644 --- a/src/nav/apm.yml +++ b/src/nav/apm.yml @@ -294,6 +294,8 @@ pages: path: /docs/apm/agents/java-agent/third-party-integrations/micrometer/micrometer-metrics-registry - title: Java Vert.x Event Bus integration path: /docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-eventbus-integration + - title: Java Instrumentation for Vert.x Extensions + path: /docs/apm/agents/java-agent/third-party-integrations/vertx/vertx-extensions-integration - title: .NET monitoring path: /docs/apm/agents/net-agent pages: From 6beaade2e0d3fa437cfdff92751d87cd37f747bb Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 12:29:18 -0700 Subject: [PATCH 12/27] fix(cross-platform): Switch URLs to new ones instead of redirects in nav. --- .../elixir/elixir-open-source-agent.mdx | 2 +- .../atlassian-integration.mdx | 0 .../vertx-eventbus-integration.mdx | 155 ----------------- .../vertx-extensions-integration.mdx | 157 ------------------ .../roku/roku-open-source-video-agent.mdx | 26 --- src/nav/accounts.yml | 2 +- src/nav/apm.yml | 2 +- src/nav/dashboards.yml | 4 +- src/nav/infrastructure.yml | 8 +- src/nav/integrations.yml | 43 ----- src/nav/root.yml | 2 +- src/nav/video.yml | 6 + 12 files changed, 17 insertions(+), 390 deletions(-) rename src/content/docs/{more-integrations/open-source-telemetry-integrations/atlassian => infrastructure/host-integrations/host-integrations-list}/atlassian-integration.mdx (100%) delete mode 100644 src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx delete mode 100644 src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx delete mode 100644 src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx delete mode 100644 src/nav/integrations.yml create mode 100644 src/nav/video.yml diff --git a/src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx b/src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx index 65316751a94..cc92726075b 100644 --- a/src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx +++ b/src/content/docs/apm/experimental-agents/elixir/elixir-open-source-agent.mdx @@ -14,7 +14,7 @@ redirects: freshnessValidatedDate: never --- -Monitor [Elixir](https://github.com/newrelic/elixir_agent) behavior with New Relic using the Elixir open-source agent. The agent: +Monitor [Elixir](https://github.com/newrelic/elixir_agent) behavior with New Relic using the Elixir open-source agent. This experimental agent: * Helps you track transactions, distributed traces, and other parts of your application’s behavior * Provides an overview of underlying [BEAM](http://erlang.org/faq/implementations.html#idp32950544) activity diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx b/src/content/docs/infrastructure/host-integrations/host-integrations-list/atlassian-integration.mdx similarity index 100% rename from src/content/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx rename to src/content/docs/infrastructure/host-integrations/host-integrations-list/atlassian-integration.mdx diff --git a/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx b/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx deleted file mode 100644 index 04377b4502e..00000000000 --- a/src/content/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx +++ /dev/null @@ -1,155 +0,0 @@ ---- -title: Java Vert.x Event Bus integration -tags: - - nrlabs - - nrlabs-data - - apm - - java - - vertx - - vert.x - - eventbus - - expert services -metaDescription: Provides instrumentation for monitoring the Vert.x Event Bus. -freshnessValidatedDate: never -redirects: - - /docs/more-integrations/java-integrations/vertx-eventbus-integration ---- - -[Java Vert.x Event Bus Integration](https://github.com/newrelic/newrelic-java-vertx/tree/main) provides instrumentation for monitoring the (Vert.x)[https://vertx.io/] Event Bus, enabling the tracking of event flow across the bus. Specifically designed for Vert.x Verticles that extend` AbstractVerticle`, this extension instruments each deployed class to monitor all methods except those specifically defined by `AbstractVerticle`. - -## Supported methods - -The integrations tracks or excludes metrics. Here's a list of each: - -Tracked methods: -* Methods that facilitate event flow tracking -* Methods that enchance visibility into application behavior and performance. - -Excluded methods: - -* Specific lifecycle and configuration methods (`start`, `stop`, `rxStart`, `rxStop`, `config`, `deploymentID`, `getVertx`, `init`, `processArgs`) - -## Install the Java agent - -The Java APM agent must be installed to configure the Java Vert.x extensions. Follow the instructions to [install the Java APM Agent](https://docs.newrelic.com/install/java/). - -Once the Java APM agent is installed and configured for your application,create an `extensions` folder under the `newrelic` directory if it doesn't already exist: - -```bash -# Open your Java APM Agent installation location and create 'extensions' folder ( if it is not existing) -cd path/to/newrelic -mkdir extensions -``` - -## Install and configure Java Vert.x Event Bus integration [#install] - - - - curl - Powershell - Web - - - - - -To install and configure the Java Vert.x Event Bus integration, follow these steps: - -- Update the Java APM agent's `extensions` folder location in the provided bash script. -- Copy the updated commands to a bash script `install_vertx_integration.sh`. -- Run the script to integrate the Java Vert.x Event Bus monitoring with New Relic APM. - -```sh -#!/bin/bash - -# Define variables -apiUrl="https://api.github.com/repos/newrelic/newrelic-java-vertx/releases/latest" -tempZipPath="/tmp/latest.zip" -tempExtractPath="/tmp/Extracted" -extensionsDir="/path/to/newrelic/extensions" - -# Retrieve the download URL for the latest release ZIP file -downloadUrl=$(curl -s "$apiUrl" | grep -o "browser_download_url.*\.zip" | cut -d '"' -f 3) - -echo $downloadUrl - -# Check if the download URL is empty or invalid -if [ -z "$downloadUrl" ]; then - echo "Failed to retrieve download URL. Exiting." - exit 1 -fi - -# Download the latest release ZIP file -curl -L -o "$tempZipPath" "$downloadUrl" - -# Check if the ZIP file was downloaded successfully -if [ ! -f "$tempZipPath" ]; then - echo "Failed to download the ZIP file. Exiting." - exit 1 -fi - -# Create a temporary extraction folder -mkdir -p "$tempExtractPath" - -# Extract the contents of the ZIP file to the temporary folder -unzip -q "$tempZipPath" -d "$tempExtractPath" - -# Check if the extraction was successful -if [ $? -ne 0 ]; then - echo "Failed to extract the ZIP file. Exiting." - exit 1 -fi - -# Copy all .jar files to the Java APM Agent 'extensions' directory -find "$tempExtractPath" -name "*.jar" -exec cp {} "$extensionsDir" \; - -# Clean up temporary files -rm "$tempZipPath" -rm -r "$tempExtractPath" - -echo "Installation completed successfully." -``` - - - - -To install and configure the Java Vert.x Event Bus Integration, follow these steps: - -- Update the Java APM agent's 'extensions' folder location in the provided powershell commands. - -```sh -# Define variables -$apiUrl = "https://api.github.com/repos/newrelic/newrelic-java-vertx/releases/latest" -$tempZipPath = "C:\Temp\latest.zip" -$tempExtractPath = "C:\Temp\Extracted" -$extensionsDir = "C:\Path\To\newrelic\extensions" - -# Download the latest release ZIP file from GitHub -$response = Invoke-WebRequest -Uri $apiUrl -$downloadUrl = ($response.Content | ConvertFrom-Json).assets[0].browser_download_url -Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZipPath - -# Extract the contents of the ZIP file to a temporary folder -New-Item -ItemType Directory -Path $tempExtractPath -Force -Expand-Archive -Path $tempZipPath -DestinationPath $tempExtractPath - -# Copy all .jar files to the Java APM Agent 'extensions' directory -Get-ChildItem -Path $tempExtractPath -Filter "*.jar" | Copy-Item -Destination $extensionsDir - -# Clean up temporary files -Remove-Item -Path $tempZipPath -Force -Remove-Item -Path $tempExtractPath -Recurse -Force - -``` - - -From [Java Vert.x Event Bus Integration Releases](https://github.com/newrelic/newrelic-java-vertx/releases/), download `vertx-instrumentation-vx.y.z.zip` to a temporary directory and unzip it. Copy all 'jar' files to New Relic Java APM agent's 'extensions' folder. - - - - -## Verify your integration -After configuring the Java Vert.x Event Bus Integration, you can visualize your application's Vert.x Event Bus transactions and traces directly within New Relic APM and Services. - -## Reporting Integration Issues -If you encounter any issues with the Java Vert.x Event Bus Integration, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration. diff --git a/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx b/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx deleted file mode 100644 index 09370e12a27..00000000000 --- a/src/content/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: New Relic Java Instrumentation for Vert.x Extensions -tags: - - nrlabs - - nrlabs-data - - apm - - java - - vertx - - vert.x - - sql - - kafka - - mssql - - postgres - - oracle - - db2 - - cassandra - - jdbc - - redis - - rabbitmq - - rxjava - - mongodb - - reactive - - coroutines - - expert services -metaDescription: provides instrumentation for monitoring the Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. -freshnessValidatedDate: never -redirects: - - /docs/more-integrations/java-integrations/vertx-extensions-integration ---- - -[Java Instrumentation for Vert.x Extensions](https://github.com/newrelic/newrelic-java-vertx-extensions/tree/main) provides instrumentation for monitoring Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy. - -## Install the Java agent - -The Java APM Agent must be installed to configure the Java Vert.x extensions. Follow the instructions to [install the Java APM Agent](https://docs.newrelic.com/install/java/) - -Once the Java APM Agent is installed and configured for your application, create an `extensions` folder under the `newrelic` directory if it doesn't already exist: - -```bash -# Open your Java APM Agent installation location and create 'extensions' folder ( if it is not existing) -cd path/to/newrelic -mkdir extensions -``` - -## Install and configure Java instrumentation for Vert.x Extensions [#install] - - - - curl - Powershell - Web - - - - - -To install and configure the Java Instrumentation for Vert.x Extensions, follow these steps: - -- Update the Java APM agent's `extensions` folder location in the provided bash script. -- Copy the updated commands to a bash script, `install_vertx_integration.sh`. -- Run the script to integrate the Java instrumentation for Vert.x Extensions with New Relic APM. - - -```sh -#!/bin/bash - -# Define variables -apiUrl="https://api.github.com/repos/newrelic/newrelic-java-vertx-extensions/releases/latest" -tempZipPath="/tmp/latest.zip" -tempExtractPath="/tmp/Extracted" -extensionsDir="/path/to/newrelic/extensions" - -# Retrieve the download URL for the latest release ZIP file -downloadUrl=$(curl -s "$apiUrl" | grep -o "browser_download_url.*\.zip" | cut -d '"' -f 3) - -echo $downloadUrl - -# Check if the download URL is empty or invalid -if [ -z "$downloadUrl" ]; then - echo "Failed to retrieve download URL. Exiting." - exit 1 -fi - -# Download the latest release ZIP file -curl -L -o "$tempZipPath" "$downloadUrl" - -# Check if the ZIP file was downloaded successfully -if [ ! -f "$tempZipPath" ]; then - echo "Failed to download the ZIP file. Exiting." - exit 1 -fi - -# Create a temporary extraction folder -mkdir -p "$tempExtractPath" - -# Extract the contents of the ZIP file to the temporary folder -unzip -q "$tempZipPath" -d "$tempExtractPath" - -# Check if the extraction was successful -if [ $? -ne 0 ]; then - echo "Failed to extract the ZIP file. Exiting." - exit 1 -fi - -# Copy all .jar files to the Java APM Agent 'extensions' directory -find "$tempExtractPath" -name "*.jar" -exec cp {} "$extensionsDir" \; - -# Clean up temporary files -rm "$tempZipPath" -rm -r "$tempExtractPath" - -echo "Installation completed successfully." -``` - - - - -To install and configure the Java Instrumentation for Vert.x Extensions, follow these steps: - -- Update the Java APM agent's 'extensions' folder location in the provided powershell commands: - -```sh -# Define variables -$apiUrl = "https://api.github.com/repos/newrelic/newrelic-java-vertx-extensions/releases/latest" -$tempZipPath = "C:\Temp\latest.zip" -$tempExtractPath = "C:\Temp\Extracted" -$extensionsDir = "C:\Path\To\newrelic\extensions" - -# Download the latest release ZIP file from GitHub -$response = Invoke-WebRequest -Uri $apiUrl -$downloadUrl = ($response.Content | ConvertFrom-Json).assets[0].browser_download_url -Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZipPath - -# Extract the contents of the ZIP file to a temporary folder -New-Item -ItemType Directory -Path $tempExtractPath -Force -Expand-Archive -Path $tempZipPath -DestinationPath $tempExtractPath - -# Copy all .jar files to the Java APM Agent 'extensions' directory -Get-ChildItem -Path $tempExtractPath -Filter "*.jar" | Copy-Item -Destination $extensionsDir - -# Clean up temporary files -Remove-Item -Path $tempZipPath -Force -Remove-Item -Path $tempExtractPath -Recurse -Force -``` - - - - From [Java Instrumentation for Vert.x Extensions Releases](https://github.com/newrelic/newrelic-java-vertx-extensions/releases/), download `vertx-instrumentation-vx.y.z.zip` to a temporary directory and unzip it. Copy all `jar` files to New Relic Java APM agent's `extensions` folder. - - - - -## Verify your integration -After configuring the Java Instrumentation for Vert.x Extensions, you can visualize your application's Vert.x extensions transactions and traces directly within New Relic APM and Services. - -## Reporting Integration Issues -If you encounter any issues with the Java Instrumentation for Vert.x Extensions, please report them on the [GitHub repository](https://github.com/newrelic/newrelic-java-vertx-extensions/issues). Your feedback helps us identify and address issues promptly, ensuring a smooth and reliable monitoring experience for Vert.x applications. Thank you for contributing to the improvement of our integration! diff --git a/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx b/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx deleted file mode 100644 index 0171072634e..00000000000 --- a/src/content/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: Roku open-source agent -tags: - - Agents - - Open-source licensed agents - - Open-source licensed agents -metaDescription: A brief introduction to New Relic's open-source Roku video agent. -redirects: - - /docs/integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent - - /docs/agents/open-source-licensed-agents/ruby-open-source-video-agent - - /docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent -freshnessValidatedDate: never ---- - -Monitor Roku behavior with New Relic using the [Roku open-source agent](https://github.com/newrelic/video-agent-roku). The agent contains two parts, to capture two separate categories of Roku behavior: - -* App events like app starts and HTTP requests -* Video playback within the app - - - This agent is released as open source on GitHub. A change log is also available there for the latest updates. - - -## Get started [#get_started] - -For requirements, installation, and configuration information, see the [Open-source Roku agent README](https://github.com/newrelic/video-agent-roku/blob/master/README.md) on GitHub. diff --git a/src/nav/accounts.yml b/src/nav/accounts.yml index f4d9fbaacf0..f4796ac299c 100644 --- a/src/nav/accounts.yml +++ b/src/nav/accounts.yml @@ -81,7 +81,7 @@ pages: - title: 'User types: basic, core, full platform' path: /docs/accounts/accounts-billing/new-relic-one-user-management/user-type - title: Best practices for user access - path: src/content/docs/accounts/accounts-billing/new-relic-one-user-management/best-practices-integration.mdx + path: /docs/accounts/accounts-billing/new-relic-one-user-management/best-practices-integration - title: Tutorial on managing accounts and users path: /docs/accounts/accounts-billing/new-relic-one-user-management/account-user-mgmt-tutorial - title: Videos of user management UI diff --git a/src/nav/apm.yml b/src/nav/apm.yml index 596bee729be..66f25aeebd6 100644 --- a/src/nav/apm.yml +++ b/src/nav/apm.yml @@ -1399,4 +1399,4 @@ pages: - title: Experimental agents pages: - title: Elixir integration - path: /docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent \ No newline at end of file + path: /docs/apm/experimental-agents/elixir/elixir-open-source-agent \ No newline at end of file diff --git a/src/nav/dashboards.yml b/src/nav/dashboards.yml index ea7186cbc66..575dd2d5a7f 100644 --- a/src/nav/dashboards.yml +++ b/src/nav/dashboards.yml @@ -40,6 +40,6 @@ pages: - title: Grafana integrations pages: - title: Grafana support with Prometheus and PromQL - path: /docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql + path: /docs/query-your-data/grafana-integrations/get-started/grafana-support-prometheus-promql - title: New Relic as Prometheus data source for Grafana - path: /docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana \ No newline at end of file + path: /docs/query-your-data/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana \ No newline at end of file diff --git a/src/nav/infrastructure.yml b/src/nav/infrastructure.yml index 8fea9f772dd..8a464d30847 100644 --- a/src/nav/infrastructure.yml +++ b/src/nav/infrastructure.yml @@ -158,6 +158,8 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/apache-traffic-server-monitoring-integration - title: Apache Zookeeper integration path: /docs/infrastructure/host-integrations/host-integrations-list/zookeeper-monitoring-integration + - title: Atlassian Jira integration + path: /docs/infrastructure/host-integrations/host-integrations-list/atlassian-integration - title: Cacti integration path: /docs/infrastructure/host-integrations/host-integrations-list/cacti-integration - title: Cassandra integration @@ -165,11 +167,11 @@ pages: - title: Cloud Foundry integrations pages: - title: New Relic Nozzle for VMware Tanzu - path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration + path: /docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration - title: New Relic Service Broker for VMware Tanzu - path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration + path: /docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-service-broker-integration - title: New Relic .NET Buildpack for VMware Tanzu - path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration + path: /docs/infrastructure/host-integrations/host-integrations-list/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration - title: Couchbase integration path: /docs/infrastructure/host-integrations/host-integrations-list/couchbase-monitoring-integration - title: Collectd integration diff --git a/src/nav/integrations.yml b/src/nav/integrations.yml deleted file mode 100644 index ee836163561..00000000000 --- a/src/nav/integrations.yml +++ /dev/null @@ -1,43 +0,0 @@ -title: Other integrations -path: /docs/more-integrations -pages: - - title: Best practices for integration users - path: /docs/more-integrations/best-practices-integration - - title: Grafana integrations - pages: - - title: Grafana support with Prometheus and PromQL - path: /docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql - - title: New Relic as Prometheus data source for Grafana - path: /docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana - - title: Cloudfoundry integrations - pages: - - title: New Relic Nozzle for VMware Tanzu - path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration - - title: New Relic Service Broker for VMware Tanzu - path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration - - title: New Relic .NET Buildpack for VMware Tanzu - path: /docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration - - title: Airflow with OpenTelemetry integration - path: /docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot - - title: Atlassian Jira integration - path: /docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration - - title: Dojo integration - path: /docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration - - title: Dropwizard integration - path: /docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter - - title: Elixir integration - path: /docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent - - title: Jenkins with OpenTelemetry integration - path: /docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot - - title: Kamon integration - path: /docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter - - title: LAMPy integration - path: /docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration - - title: Micrometer integration - path: /docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry - - title: Roku integration - path: /docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent - - title: StatsD integration - path: /docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration - - title: WordPress Full Stack integration - path: /docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration diff --git a/src/nav/root.yml b/src/nav/root.yml index 6abd5ee9ed7..c23992ba39c 100644 --- a/src/nav/root.yml +++ b/src/nav/root.yml @@ -36,7 +36,7 @@ pages: - title: Website performance monitoring path: website-performance-monitoring - title: Video - - title: video-agents + path: video - title: Data insights - title: Alerts and Applied Intelligence path: alerts-applied-intelligence diff --git a/src/nav/video.yml b/src/nav/video.yml new file mode 100644 index 00000000000..e3e25d2ee9e --- /dev/null +++ b/src/nav/video.yml @@ -0,0 +1,6 @@ +title: Video agents +path: /docs/video +pages: + - title: Open-source video monitoring tools + path: /docs/video-agents/open-source-video-agents + From 6f1ec6586b5dd0d60370ab7ad56d55582ff4b45c Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 13:04:53 -0700 Subject: [PATCH 13/27] fix(cross-platform): Reverse order of items and spell out IAST. --- src/nav/iast.yml | 2 +- src/nav/root.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/nav/iast.yml b/src/nav/iast.yml index d8dd3b19d41..80ee1134fd5 100644 --- a/src/nav/iast.yml +++ b/src/nav/iast.yml @@ -1,4 +1,4 @@ -title: IAST +title: Interactive application security testing (IAST) path: /docs/iast pages: - title: Introduction to IAST diff --git a/src/nav/root.yml b/src/nav/root.yml index c23992ba39c..20d28a202c7 100644 --- a/src/nav/root.yml +++ b/src/nav/root.yml @@ -55,10 +55,10 @@ pages: - title: Service Level Management path: service-level-management - title: Security - - title: New Relic IAST - path: iast - title: Vulnerability Management path: vuln-management + - title: New Relic IAST + path: iast - title: Latest updates - title: Release notes path: release-notes From 75e969f9d3ed300e8151a33cd36e326a6531e11c Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 14:42:07 -0700 Subject: [PATCH 14/27] fix(cross-platform): Remove "monitor" for better alphabetization. --- src/nav/infrastructure.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/nav/infrastructure.yml b/src/nav/infrastructure.yml index 3fd77fc4817..55ed6cb562b 100644 --- a/src/nav/infrastructure.yml +++ b/src/nav/infrastructure.yml @@ -142,7 +142,7 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/active-directory-integration - title: Aerospike integration path: /docs/infrastructure/host-integrations/host-integrations-list/aerospike-integration - - title: Monitor Apache Airflow with OpenTelemetry + - title: Apache Airflow with OpenTelemetry path: /docs/infrastructure/host-integrations/host-integrations-list/monitoring-airflow-ot - title: Apache Druid integration path: /docs/infrastructure/host-integrations/host-integrations-list/apache-druid-integration @@ -188,7 +188,7 @@ pages: path: /docs/infrastructure/host-integrations/host-integrations-list/hashicorp-consul-monitoring-integration - title: IBM MQ monitoring integration path: /install/ibm-mq - - title: Monitor Jenkins with OpenTelemetry + - title: Jenkins with OpenTelemetry path: /docs/infrastructure/host-integrations/host-integrations-list/monitoring-jenkins-ot - title: JMX integration pages: From f53887b77869a0732ea5c17fd5403130072c5ac3 Mon Sep 17 00:00:00 2001 From: Rob Siebens Date: Fri, 21 Jun 2024 15:22:13 -0700 Subject: [PATCH 15/27] fix(cross-platform): Run i18n script --- .../best-practices-integration.mdx | 29 - ...are-tanzu-dotnet-buildpack-integration.mdx | 140 - ...ware-tanzu-firehose-nozzle-integration.mdx | 178 - ...mware-tanzu-service-broker-integration.mdx | 447 - .../grafana-support-prometheus-promql.mdx | 45 - ...w-relic-prometheus-data-source-grafana.mdx | 144 - .../vertx-eventbus-integration.mdx | 164 - .../vertx-extensions-integration.mdx | 163 - .../airflow/monitoring-airflow-ot.mdx | 172 - .../atlassian/atlassian-integration.mdx | 123 - .../dojo/dojo-io-integration.mdx | 43 - .../dropwizard/dropwizard-reporter.mdx | 27 - .../elixir/elixir-open-source-agent.mdx | 27 - .../jenkins/monitoring-jenkins-ot.mdx | 258 - .../kamon/kamon-reporter.mdx | 44 - .../lampy/lampy-integration.mdx | 139 - .../micrometer-metrics-registry.mdx | 147 - .../opentelemetry-best-practices-logs.mdx | 207 - .../opentelemetry-best-practices-metrics.mdx | 458 - ...opentelemetry-best-practices-resources.mdx | 111 - .../opentelemetry-best-practices-traces.mdx | 262 - .../opentelemetry-data-overview.mdx | 28 - .../opentelemetry-otlp-troubleshooting.mdx | 67 - .../best-practices/opentelemetry-otlp.mdx | 282 - .../opentelemetry-apm-intro.mdx | 113 - .../apm-monitoring/opentelemetry-apm-ui.mdx | 150 - .../opentelemetry-collector-infra-docker.mdx | 194 - ...entelemetry-collector-infra-hcp-consul.mdx | 205 - .../opentelemetry-collector-infra-hivemq.mdx | 12701 ---------------- .../opentelemetry-collector-infra-hosts.mdx | 261 - .../opentelemetry-collector-infra-intro.mdx | 36 - .../opentelemetry-collector-infra-k8s.mdx | 16 - ...llector-infra-kafka-confluentcloud-k8s.mdx | 328 - ...y-collector-infra-kafka-confluentcloud.mdx | 304 - ...entelemetry-collector-infra-prometheus.mdx | 122 - ...ntelemetry-collector-infra-singlestore.mdx | 168 - .../opentelemetry-collector-infra-squid.mdx | 1915 --- .../opentelemetry-collector-infra-statsd.mdx | 115 - ...entelemetry-collector-processing-intro.mdx | 83 - .../opentelemetry-get-started-intro.mdx | 20 - .../opentelemetry-introduction.mdx | 119 - .../roku/roku-open-source-video-agent.mdx | 23 - .../statsd/statsd-monitoring-integration.mdx | 651 - .../wordpress-fullstack-integration.mdx | 210 - .../terraform/terraform-intro.mdx | 482 - .../terraform/terraform-modules.mdx | 412 - .../terraform/terragrunt.mdx | 636 - .../best-practices-integration.mdx | 29 - ...are-tanzu-dotnet-buildpack-integration.mdx | 140 - ...ware-tanzu-firehose-nozzle-integration.mdx | 178 - ...mware-tanzu-service-broker-integration.mdx | 445 - .../grafana-support-prometheus-promql.mdx | 45 - ...w-relic-prometheus-data-source-grafana.mdx | 134 - .../vertx-eventbus-integration.mdx | 164 - .../vertx-extensions-integration.mdx | 163 - .../airflow/monitoring-airflow-ot.mdx | 168 - .../atlassian/atlassian-integration.mdx | 123 - .../dojo/dojo-io-integration.mdx | 37 - .../dropwizard/dropwizard-reporter.mdx | 27 - .../elixir/elixir-open-source-agent.mdx | 27 - .../jenkins/monitoring-jenkins-ot.mdx | 116 - .../kamon/kamon-reporter.mdx | 44 - .../lampy/lampy-integration.mdx | 137 - .../micrometer-metrics-registry.mdx | 147 - .../opentelemetry-best-practices-logs.mdx | 207 - .../opentelemetry-best-practices-metrics.mdx | 458 - ...opentelemetry-best-practices-resources.mdx | 111 - .../opentelemetry-best-practices-traces.mdx | 262 - .../opentelemetry-data-overview.mdx | 28 - .../opentelemetry-otlp-troubleshooting.mdx | 67 - .../best-practices/opentelemetry-otlp.mdx | 282 - .../opentelemetry-apm-intro.mdx | 111 - .../apm-monitoring/opentelemetry-apm-ui.mdx | 150 - .../opentelemetry-collector-infra-docker.mdx | 194 - ...entelemetry-collector-infra-hcp-consul.mdx | 203 - .../opentelemetry-collector-infra-hivemq.mdx | 12701 ---------------- .../opentelemetry-collector-infra-hosts.mdx | 261 - .../opentelemetry-collector-infra-intro.mdx | 36 - .../opentelemetry-collector-infra-k8s.mdx | 16 - ...llector-infra-kafka-confluentcloud-k8s.mdx | 328 - ...y-collector-infra-kafka-confluentcloud.mdx | 304 - ...entelemetry-collector-infra-prometheus.mdx | 122 - ...ntelemetry-collector-infra-singlestore.mdx | 166 - .../opentelemetry-collector-infra-squid.mdx | 1915 --- .../opentelemetry-collector-infra-statsd.mdx | 115 - ...entelemetry-collector-processing-intro.mdx | 83 - .../opentelemetry-get-started-intro.mdx | 20 - .../opentelemetry-introduction.mdx | 119 - .../roku/roku-open-source-video-agent.mdx | 23 - .../statsd/statsd-monitoring-integration.mdx | 649 - .../wordpress-fullstack-integration.mdx | 202 - .../terraform/terraform-intro.mdx | 482 - .../terraform/terraform-modules.mdx | 412 - .../terraform/terragrunt.mdx | 636 - .../create-nrql-alert-conditions.mdx | 1002 -- .../best-practices-integration.mdx | 29 - ...are-tanzu-dotnet-buildpack-integration.mdx | 140 - ...ware-tanzu-firehose-nozzle-integration.mdx | 178 - ...mware-tanzu-service-broker-integration.mdx | 445 - .../grafana-support-prometheus-promql.mdx | 45 - ...w-relic-prometheus-data-source-grafana.mdx | 134 - .../vertx-eventbus-integration.mdx | 164 - .../vertx-extensions-integration.mdx | 163 - .../airflow/monitoring-airflow-ot.mdx | 170 - .../atlassian/atlassian-integration.mdx | 123 - .../dojo/dojo-io-integration.mdx | 37 - .../dropwizard/dropwizard-reporter.mdx | 27 - .../elixir/elixir-open-source-agent.mdx | 27 - .../jenkins/monitoring-jenkins-ot.mdx | 116 - .../kamon/kamon-reporter.mdx | 44 - .../lampy/lampy-integration.mdx | 137 - .../micrometer-metrics-registry.mdx | 147 - .../opentelemetry-best-practices-logs.mdx | 207 - .../opentelemetry-best-practices-metrics.mdx | 458 - ...opentelemetry-best-practices-resources.mdx | 111 - .../opentelemetry-best-practices-traces.mdx | 262 - .../opentelemetry-data-overview.mdx | 28 - .../opentelemetry-otlp-troubleshooting.mdx | 67 - .../best-practices/opentelemetry-otlp.mdx | 282 - .../opentelemetry-apm-intro.mdx | 111 - .../apm-monitoring/opentelemetry-apm-ui.mdx | 150 - .../opentelemetry-collector-infra-docker.mdx | 194 - ...entelemetry-collector-infra-hcp-consul.mdx | 203 - .../opentelemetry-collector-infra-hivemq.mdx | 12701 ---------------- .../opentelemetry-collector-infra-hosts.mdx | 261 - .../opentelemetry-collector-infra-intro.mdx | 36 - .../opentelemetry-collector-infra-k8s.mdx | 16 - ...llector-infra-kafka-confluentcloud-k8s.mdx | 328 - ...y-collector-infra-kafka-confluentcloud.mdx | 304 - ...entelemetry-collector-infra-prometheus.mdx | 122 - ...ntelemetry-collector-infra-singlestore.mdx | 166 - .../opentelemetry-collector-infra-squid.mdx | 1915 --- .../opentelemetry-collector-infra-statsd.mdx | 115 - ...entelemetry-collector-processing-intro.mdx | 83 - .../opentelemetry-get-started-intro.mdx | 20 - .../opentelemetry-introduction.mdx | 119 - .../roku/roku-open-source-video-agent.mdx | 23 - .../statsd/statsd-monitoring-integration.mdx | 649 - .../wordpress-fullstack-integration.mdx | 206 - .../terraform/terraform-intro.mdx | 482 - .../terraform/terraform-modules.mdx | 412 - .../terraform/terragrunt.mdx | 636 - .../best-practices-integration.mdx | 29 - ...are-tanzu-dotnet-buildpack-integration.mdx | 140 - ...ware-tanzu-firehose-nozzle-integration.mdx | 178 - ...mware-tanzu-service-broker-integration.mdx | 447 - .../grafana-support-prometheus-promql.mdx | 45 - ...w-relic-prometheus-data-source-grafana.mdx | 144 - .../vertx-eventbus-integration.mdx | 164 - .../vertx-extensions-integration.mdx | 163 - .../airflow/monitoring-airflow-ot.mdx | 172 - .../atlassian/atlassian-integration.mdx | 123 - .../dojo/dojo-io-integration.mdx | 43 - .../dropwizard/dropwizard-reporter.mdx | 27 - .../elixir/elixir-open-source-agent.mdx | 27 - .../jenkins/monitoring-jenkins-ot.mdx | 258 - .../kamon/kamon-reporter.mdx | 44 - .../lampy/lampy-integration.mdx | 139 - .../micrometer-metrics-registry.mdx | 147 - .../opentelemetry-best-practices-logs.mdx | 207 - .../opentelemetry-best-practices-metrics.mdx | 458 - ...opentelemetry-best-practices-resources.mdx | 111 - .../opentelemetry-best-practices-traces.mdx | 262 - .../opentelemetry-data-overview.mdx | 28 - .../opentelemetry-otlp-troubleshooting.mdx | 67 - .../best-practices/opentelemetry-otlp.mdx | 282 - .../opentelemetry-apm-intro.mdx | 113 - .../apm-monitoring/opentelemetry-apm-ui.mdx | 150 - .../opentelemetry-collector-infra-docker.mdx | 194 - ...entelemetry-collector-infra-hcp-consul.mdx | 205 - .../opentelemetry-collector-infra-hivemq.mdx | 12701 ---------------- .../opentelemetry-collector-infra-hosts.mdx | 261 - .../opentelemetry-collector-infra-intro.mdx | 36 - .../opentelemetry-collector-infra-k8s.mdx | 16 - ...llector-infra-kafka-confluentcloud-k8s.mdx | 328 - ...y-collector-infra-kafka-confluentcloud.mdx | 304 - ...entelemetry-collector-infra-prometheus.mdx | 122 - ...ntelemetry-collector-infra-singlestore.mdx | 168 - .../opentelemetry-collector-infra-squid.mdx | 1915 --- .../opentelemetry-collector-infra-statsd.mdx | 115 - ...entelemetry-collector-processing-intro.mdx | 83 - .../opentelemetry-get-started-intro.mdx | 20 - .../opentelemetry-introduction.mdx | 119 - .../roku/roku-open-source-video-agent.mdx | 23 - .../statsd/statsd-monitoring-integration.mdx | 651 - .../wordpress-fullstack-integration.mdx | 210 - .../terraform/terraform-intro.mdx | 482 - .../terraform/terraform-modules.mdx | 412 - .../terraform/terragrunt.mdx | 636 - 189 files changed, 92520 deletions(-) delete mode 100644 src/i18n/content/es/docs/more-integrations/best-practices-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/terraform/terraform-intro.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/terraform/terraform-modules.mdx delete mode 100644 src/i18n/content/es/docs/more-integrations/terraform/terragrunt.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/best-practices-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/terraform/terraform-intro.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/terraform/terraform-modules.mdx delete mode 100644 src/i18n/content/jp/docs/more-integrations/terraform/terragrunt.mdx delete mode 100644 src/i18n/content/kr/docs/alerts-applied-intelligence/new-relic-alerts/alert-conditions/create-nrql-alert-conditions.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/best-practices-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/terraform/terraform-intro.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/terraform/terraform-modules.mdx delete mode 100644 src/i18n/content/kr/docs/more-integrations/terraform/terragrunt.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/best-practices-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/terraform/terraform-intro.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/terraform/terraform-modules.mdx delete mode 100644 src/i18n/content/pt/docs/more-integrations/terraform/terragrunt.mdx diff --git a/src/i18n/content/es/docs/more-integrations/best-practices-integration.mdx b/src/i18n/content/es/docs/more-integrations/best-practices-integration.mdx deleted file mode 100644 index f16a3d0f768..00000000000 --- a/src/i18n/content/es/docs/more-integrations/best-practices-integration.mdx +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Mejores prácticas para la integración de usuario -tags: - - Best practices - - Integrations -metaDescription: Here are some best practices for controlling how you expose your New Relic data when you're using an integration. -freshnessValidatedDate: '2024-04-24T00:00:00.000Z' -translationType: machine ---- - -Como administrador de New Relic, debe operar su organización New Relic con el principio de privilegio mínimo. Este principio es un concepto de seguridad en el que un usuario solo debe tener acceso a los datos, sistemas y recursos específicos necesarios para completar una tarea necesaria para la organización. Si sigue este principio, puede reducir el riesgo de acceso no autorizado a datos confidenciales. Esto incluye la asignación de permisos según las funciones y responsabilidades laborales. En una [organización New Relic ](/docs/accounts/accounts-billing/account-structure/new-relic-account-structure/), el acceso basado en cuenta le permite controlar qué información está disponible para el usuario en su organización. Esto garantiza que los datos confidenciales permanezcan seguros y que solo el personal autorizado pueda verlos. - -Lidiar con la integración con sistemas de terceros puede complicar el acceso a las aplicaciones. Por ejemplo, es posible que el usuario de Atlassian Jira no tenga acceso a New Relic. El sistema también puede carecer de permisos o controles centralizados. Conozca las mejores prácticas para compartir datos en esta página. - -## Cuenta y alcance de clave de API [#account-api-key-scope] - -Lo primero que debe considerar al controlar el acceso a sus datos de New Relic es el alcance de su cuenta. Su organización puede tener varias cuentas y los usuarios pueden tener acceso a las cuentas. Esto le permite limitar los datos que estos usuarios pueden ver. Si su organización sólo tiene una única cuenta, esto significa que todos los usuarios tienen acceso a la misma información. En esta situación, es posible que solo desees exponer algunos datos a través de una integración. - -Algunas integraciones con New Relic aprovechan la capacidad de generar una clave de API para exponer sus datos a otros sistemas (por ejemplo, la integración Atlassian). Si un usuario tiene acceso a 3 de 5 cuentas en una organización New Relic , su clave de API generada tendrá acceso a esas mismas 3 cuentas. - - - Tenga en cuenta que una clave de API hereda los permisos de cuenta del usuario que la generó. - - -Es importante comprender esta distinción al configurar una integración. Por ejemplo, es posible que desee asegurarse de generar una clave de API de un usuario que tenga los permisos correctos. Es posible que desee que el usuario solo tenga acceso a determinadas cuentas de la aplicación. Esto limita lo que pueden ver y compartir con otros. Por ejemplo, digamos que tienes más usuarios en tu aplicación Atlassian que en tus cuentas New Relic y configuras la integración de Atlassian. El usuario de la integración Atlassian podrá ver los datos New Relic compartidos con el usuario Atlassian en la aplicación Atlassian, independientemente de si esos tienen acceso a las cuentas New Relic correspondientes. - -## Aprovechamiento del usuario de integración [#integration-user-leverage] - -Al configurar la integración de terceros con New Relic, recomendamos encarecidamente utilizar un usuario de integración dedicado. Esto significa [crear un usuario de New Relic](/docs/accounts/accounts-billing/new-relic-one-user-management/user-permissions/) solo para una integración específica. Puedes darle a este usuario un nombre que represente la integración en cuestión. Una gran ventaja de esto es que no necesita utilizar su acceso de nivel de administrador para la integración. Todo lo que tienes que hacer es crear el nuevo usuario y asignar solo las cuentas que deseas exponer a la integración. Luego, genere una clave de API para el usuario de integración. Esto permite que la clave de API que utiliza para una integración exponga solo los detalles de la cuenta que desea utilizar para la integración. También le permite desacoplar su acceso personal a New Relic del de la integración. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx b/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx deleted file mode 100644 index e755ebba15a..00000000000 --- a/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-dotnet-buildpack-integration.mdx +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: New Relic .NET para VMware Tanzu -tags: - - Integrations - - Cloudfoundry - - Tanzu -metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. -freshnessValidatedDate: never -translationType: machine ---- - -import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' - -import infrastructureVmwareTanzuAlertChart from 'images/infrastructure_screenshot-crop_vmware-tanzu-alert-chart.webp' - -Esta documentación describe el paquete de extensión New Relic .NET para VMware Tanzu y proporciona instrucciones sobre cómo instalar el mosaico. El mosaico puede vincular el agente New Relic a aplicaciones .NET Core o .NET framework para que pueda monitor en un entorno VMware Tanzu. - -El paquete de extensión New Relic .NET para VMware Tanzu le permite vincular sus aplicaciones ..NET Core y framework al agente New Relic .NET. Esto le permite monitor el estado y el rendimiento de estas aplicaciones, analizar los datos capturados por los agentes y, además, correlacionar los datos capturados del agente con la infraestructura métrica y de eventos de VMware Tanzu recopilados por [New Relic Firehose Mouth](https://network.pivotal.io/products/nr-firehose-nozzle/). - -## Requisitos previos [#prereqs] - -Este producto ha sido probado y es compatible con las versiones de VMware Tanzu OpsManager hasta v3.0 inclusive y Tanzu aplicación Service 5.0. - -El paquete de compilación de extensión New Relic .NET para VMware Tanzu requiere lo siguiente: - -* Una cuenta activa de New Relic con una clave de licencia. Esto se utiliza para vincular aplicaciones .NET al agente .NET New Relic. -* Para utilizar paquetes de compilación múltiples en el manifiesto de la aplicación, necesita CLI v6.38 o posterior. Para obtener información general sobre cómo agregar paquetes de compilación a manifiestos, consulte [Envío de una aplicación con varios paquetes de compilación](https://docs.pivotal.io/application-service/buildpacks/use-multiple-buildpacks.html) en la documentación de Cloud Foundry. -* Para utilizar la extensión .NET HWC, necesita HWC buildpack 3.0.3 o después. -* Para utilizar la extensión .NET Core, necesita el paquete de compilación dotnet core 2.1.5 o después. - -La siguiente tabla proporciona información sobre la versión y la compatibilidad con la versión de New Relic .NET Extension Buildpack para VMware Tanzu. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Elemento - - Detalles -
- Versión en mosaico - - 1.1.13 -
- Fecha de lanzamiento - - 25 de enero de 2024 -
- Versión del componente de software - - Paquete de compilación de extensión New Relic .NET 1.1.13 -
- Versiones compatibles de Ops Manager - - 2.9.x, 2.10.x y 3.0.x -
- Servicio de aplicación VMware Tanzu compatible para versiones de máquina virtual (VM) - - 2.10.x, 2.11.x, 2.12.x, 2.13.x, 3.0.x, 4.0.x y 5.0.x -
- Versión de células madre BOSH - - Ubuntu Jammy -
- Soporte IaaS - - AWS, GCP, Azure y vSphere -
- -## Instalacion [#install] - -El paquete de extensión New Relic .NET para VMware Tanzu se puede instalar a través del mosaico en Ops Manager. Alternativamente, puede extraer el archivo `.Pivotal` e instalar paquetes de extensión individuales usando el comando cf línea de comando Interface (CLI) `cf create-buildpack`. - -Después de comenzar a monitorear sus aplicaciones, puede configurar en función de cualquier métrica recopilada por el agente .NET mediante el subsistema de alertas de New Relic. - -El paquete de compilación de extensión New Relic .NET para VMware Tanzu instala uno o más de los siguientes paquetes de compilación según la configuración del mosaico (un total de 8 paquetes de compilación de extensión): - -* New Relic .NET Core para la aplicación .NET Core que se ejecuta en la pila Ubuntu Jammy 1.\*. Este paquete de compilación de extensión no está almacenado en caché. -* New Relic .NET Core Extension Cached Buildpack para la aplicación .NET Core que se ejecuta en Ubuntu Jammy 1.\* en VMware Tanzu desconectado (aislado) en despliegue. Esto es para soportar entornos con espacios abiertos donde no hay acceso al mundo exterior. -* 3 New Relic HWC para la aplicación .NET framework que se ejecuta en la pila de Windows 2019. Este paquete de compilación de extensión no está almacenado en caché. -* 3 paquetes de compilación en caché de extensión New Relic HWC para la aplicación .NET framework que se ejecuta en la pila de Windows 2019 en VMware Tanzu desconectado (aislado). Esto es para soportar entornos con espacios abiertos donde no hay acceso al mundo exterior. - -Todos los paquetes de compilación utilizan el enfoque de paquetes de compilación múltiples de Cloud Foundry y requieren que se especifique el paquete de compilación estándar .NET Core o el paquete de compilación HWC como el último paquete de compilación en la cadena de paquetes de compilación, ya sea en el manifiesto de la aplicación o en la línea de comando `cf push` . - - - La versión en caché de este paquete de extensión para .NET Core y .NET framework contiene la versión New Relic .NET agente `9.1.1` - - -## Comentario [#feedback] - -Si tiene una solicitud de característica, preguntas o información sobre un error, envíe un problema en [github](https://github.com/newrelic/newrelic-dotnet-buildpack-tile/issues). \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx b/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx deleted file mode 100644 index 2094084ba87..00000000000 --- a/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-firehose-nozzle-integration.mdx +++ /dev/null @@ -1,178 +0,0 @@ ---- -title: New Relic para VMware Tanzu -tags: - - Integrations - - Cloudfoundry - - Tanzu -metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. -dataSource: vmware-tanzu -freshnessValidatedDate: '2023-11-13T00:00:00.000Z' -translationType: machine ---- - -import infrastructureVmwareTanzuDashboard from 'images/infrastructure_screenshot-crop_vmware-tanzu-dashboard.webp' - -import infrastructureVmwareTanzuAlertChart from 'images/infrastructure_screenshot-crop_vmware-tanzu-alert-chart.webp' - -[La boquilla New Relic para VMware Tanzu](https://network.pivotal.io/products/nr-firehose-nozzle) recopila métrica y eventos generados por todos los componentes y aplicaciones de VMware Tanzu que se ejecutan en las celdas de VMware Tanzu Diego a través de [Loggregator Firehose](https://docs.pivotal.io/pivotalcf/loggregator/index.html). La boquilla recopila datos a través de la puerta de enlace del proxy log remoto (RLP) y los envía a [New Relic](https://www.newrelic.com) para su procesamiento y visualización. - -newrelicone-dashboards-vmware-tanzu.png - -## Descripción general [#overview] - -Después de la instalación, la boquilla comienza a recolectar y empujar el evento Firehose a New Relic para su procesamiento y visualización. New Relic organiza los datos según los tipos de eventos de Firehose y muestra cada tipo de evento de Firehose en su propio dashboard independiente. - -La boquilla se puede instalar como un mosaico en Ops Manager o desplegar usando el comando CLI cf push como una aplicación normal. Luego puede monitor el estado y el rendimiento de su despliegue de VMware Tanzu y configurarlo en función de cualquier métrica recopilada de VMware Tanzu Firehose. - -## Requisitos previos [#prereqs] - -New Relic para VMware Tanzu tiene los siguientes requisitos: - -* Una cuenta New Relic activa con una licencia Pro o Pro Trial. Si aún no tienes una cuenta de New Relic, puedes obtener una [licencia de prueba gratuita de 14 días](http://newrelic.com/signup?funnel=pivotal-cloud-foundry&partner=Pivotal+Cloud+Foundry). -* New Relic Insights incluida en la licencia -* Versiones de VMware Tanzu v2.10.x a v5.0.x. - -## Característica clave [#key-features] - -Puede monitor los datos de estado y rendimiento de los componentes de VMware Tanzu, incluidos: - -* Dominio de VMware Tanzu -* VMware Tanzu implementando -* Tipo de evento de manguera contra incendios -* Origen -* Trabajo -* Dirección IP del componente -* Detalle de la aplicación -* Contenedor - -Seleccione el elemento de una lista de valores para cualquiera de las métricas anteriores y filtre el dashboard según el valor seleccionado. También puedes filtrar un dashboard por múltiples métricas. - -## Filtrado de eventos [#event-filtering] - -Cuando se transmite una gran cantidad de eventos desde Firehose, es posible que desee filtrar los eventos no deseados generados por Firehose. Si necesita que la boquilla capture cualquiera de los tipos de eventos de Firehose (`ValueMetric`, `CounterEvent`, `ContainerMetric`, `HttpStartStop`, `LogMessage`), debe especificarlos como una lista de tipos de eventos separados por comas en el Propiedad `"Selected Events"` , ubicada en la pestaña Configuración avanzada de la configuración del mosaico. - -A partir de la versión 2.X de la boquilla, se agregan los eventos `ContainerMetric`, `CounterEvent` y `ValueMetric` . evento incluye el valor `min`, `max`, `sum`, `sample count` y `last` de cada métrica. Esto reduce la cantidad de eventos creados por la boquilla y al mismo tiempo proporciona detalles sobre cada tipo de métrica. Si es necesario, configure los filtros LogMessage para incluir o excluir subconjuntos del evento LogMessage. - -Si es necesario, configure `LogMessage Filters` para incluir o excluir subconjuntos del evento LogMessage. - -## Ejemplos de filtrado [#filter-examples] - -* **LogMessage Source Include Filter** - - : Solo genera eventos para mensaje de registro con una fuente incluida en esta lista separada por comas o barras verticales. - -* **LogMessage Source Exclude Filter** - - : No genere eventos para mensaje de registro con una fuente incluida en esta lista separada por comas o barras verticales. - -* **LogMessage Message Include Filter** - - : Solo genera eventos para mensaje de registro que contengan el texto enumerado en esta lista separada por comas o barras verticales. - -* **LogMessage Message Exclude Filter** - - : No genere eventos para mensaje de registro que contengan texto enumerado en esta lista separada por comas o barras verticales. - -Se pueden combinar múltiples filtros LogMessage para limitar la creación de eventos. Los filtros de inclusión se procesan antes que los filtros de exclusión. - - - **Note**: Cuando ejecuta el inyector como una aplicación, puede utilizar las variables de entorno anteriores en el archivo de manifiesto de la aplicación. - - -## Instantánea del producto [#product-snapshot] - -La siguiente tabla proporciona información sobre la versión y la compatibilidad con la versión de New Relic Mouth para VMware Tanzu. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Elemento - - Detalles -
- Versión en mosaico - - 2.9.0 -
- Fecha de lanzamiento - - 14 de noviembre de 2023 -
- Versión del componente de software - - New Relic v2.9.0 -
- Versiones compatibles de Ops Manager - - v2.9.x, v2.10.x y v3.0.x -
- Servicio de aplicación VMware Tanzu compatible para versiones de máquina virtual (VM) - - v2.10.x, v2.11.x, v2.12.x, v2.13.x, v3.0.x, v4.0.x y v5.0.x -
- Versión de células madre BOSH - - Ubuntu Jammy -
- Soporte IaaS - - AWS, GCP, Azure y vSphere -
- -## Comentario [#feedback] - -Si tiene una solicitud de característica, preguntas o información sobre un error, envíe un problema en [github](https://github.com/newrelic/newrelic-pcf-nozzle-tile/issues). \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx b/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx deleted file mode 100644 index 951ee53799b..00000000000 --- a/src/i18n/content/es/docs/more-integrations/cloudfoundry-integrations/vmware-tanzu-service-broker-integration.mdx +++ /dev/null @@ -1,447 +0,0 @@ ---- -title: New Relic para VMware Tanzu -tags: - - Integrations - - Cloudfoundry - - Tanzu -metaDescription: Use our integration to gain increased visibility into the performance of your VMware Tanzu environment. -freshnessValidatedDate: never -translationType: machine ---- - -import infrastructureVmwareTanzuImport from 'images/vmware-service-broker-import.webp' - -import infrastructureVmwareTanzuImport2 from 'images/vmware-service-broker-import-2.webp' - -import infrastructureVmwareTanzuImport3 from 'images/vmware-service-broker-import-3.webp' - -import infrastructureVmwareTanzuImport4 from 'images/vmware-service-broker-import-4.webp' - -import infrastructureVmwareTanzuImport5 from 'images/vmware-service-broker-import-5.webp' - -import infrastructureVmwareTanzuImport6 from 'images/vmware-service-broker-import-6.webp' - -import infrastructureVmwareTanzuImport7 from 'images/vmware-service-broker-import-7.webp' - -import infrastructureVmwareTanzuImport8 from 'images/vmware-service-broker-import-8.webp' - -import infrastructureVmwareTanzuImport9 from 'images/vmware-service-broker-import-9.webp' - -import infrastructureVmwareTanzuImport10 from 'images/vmware-service-broker-import-10.webp' - -import infrastructureVmwareTanzuImport11 from 'images/vmware-service-broker-import-11.webp' - -import infrastructureVmwareTanzuImport12 from 'images/vmware-service-broker-import-12.webp' - -import infrastructureVmwareTanzuImport13 from 'images/vmware-service-broker-import-13.webp' - -import infrastructureVmwareTanzuImport14 from 'images/vmware-service-broker-import-14.webp' - -import infrastructureVmwareTanzuImport15 from 'images/vmware-service-broker-import-15.webp' - -import infrastructureVmwareTanzuImport16 from 'images/vmware-service-broker-import-16.webp' - -import infrastructureVmwareTanzuImport17 from 'images/vmware-service-broker-import-17.webp' - -import infrastructureVmwareTanzuImport18 from 'images/vmware-service-broker-import-18.webp' - -New Relic Service Broker para VMware Tanzu le permite usar una o más cuentas New Relic y se implementa como una aplicación Java en VMware Tanzu. Un intermediario de servicios permite que las aplicaciones de Cloud Foundry se vinculen a servicios y los consuman fácilmente desde el Administrador de aplicaciones o desde la línea de comando. - -## Cómo funciona [#works] - -El corredor expone el servicio New Relic en Marketplace y permite al usuario crear directamente una instancia de servicio y vincularla a sus aplicaciones, ya sea desde Apps Manager o desde la línea de comando. - -El mosaico New Relic Service Broker para VMware Tanzu instala New Relic Service Broker como una aplicación, lo registra como agente de servicios en VMware Tanzu y expone sus planes de servicio en Marketplace. Cada plan de servicio está asociado con una cuenta New Relic existente, que se configura durante la configuración del mosaico. - -La selección de un plan vincula su aplicación con el agente de New Relic y el agente comienza a informar a la cuenta de New Relic que está asociada con el plan seleccionado. Esto hace que la instalación y el uso posterior de New Relic en sus aplicaciones VMware Tanzu sean más fáciles y directos. - -## Requisitos previos [#prereqs] - -New Relic para VMware Tanzu tiene los siguientes requisitos: - -* Agente de servicios v1.12.18 y posteriores -* Para los agentes de servicios en la versión 1.12.12 y anteriores, los GUID únicos para los planes se calcularon de manera diferente. Para que estos planes no rompan la compatibilidad, los GUID deben ser los mismos que antes. El script de migración conserva los GUID de los planes existentes en la colección de planes para la versión 1.12.12 y versiones anteriores. - - - Debe anular el GUID de su plan si cambió la clave de licencia original asociada con un agente de servicios en la versión 1.12.12 o anterior. Para obtener el GUID del plan original de Cloud Controller, ejecute el siguiente script: - - ```shell - cf curl $(cf curl /v2/services?q=label:newrelic | grep “service_plans_url” | - - awk ‘{print $2}’ | sed ‘s/[",]//g’) | egrep “"name":|"unique_id":” | - - sed ‘s/[",]//g’ | tr -s " " | awk ’ {name=$0; getline; printf(\t%-40s %-40s \n”,name,$0)}’ - ``` - - ¿Hay dos nuevas propiedades etiquetadas como plan anterior al 1.12.12? y Anulación de guía de plan (broker 1.12.12 o anterior) en la colección de planes para cada plan en la configuración de mosaico. No cambie ninguna de estas propiedades porque se configuran internamente cuando sea necesario. - - * En New Relic Service Broker v1.12.13 y posteriores, deje el plan anterior a 1.12.12 sin marcar y la Anulación de guía del plan en blanco. - * El mosaico es compatible con Ops Manager v2.9.x, v2.10.x y v3.0.x. - * Puede instalar el mosaico en cualquiera de estas versiones y actualizar desde v1.9.x a cualquier versión de Ops Manager hasta v3.x inclusive. - * No se requieren rutas de actualización para versiones anteriores del mosaico, ya que no se admiten versiones anteriores a la v1.9.0. - * La versión 1.12.6 y posteriores del mosaico admiten la migración desde versiones anteriores del mosaico y conservan los servicios y planes de servicio existentes. - * Si está utilizando mosaicos anteriores a la versión 1.11.4, primero debe actualizar a v1.11.4, luego a la v1.12.9 y luego a la última versión del mosaico. - - -La siguiente tabla proporciona información sobre la versión y la compatibilidad con la versión del agente de servicios para VMware Tanzu. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Elemento - - Detalles -
- Versión - - 1.12.34 -
- Fecha de lanzamiento - - 25 de enero de 2024 -
- Versión del componente de software - - New Relic 1.12.34 -
- Versiones compatibles de Ops Manager - - 2.9.x, 2.10.x y 3.x -
- Servicio de aplicación VMware Tanzu compatible para versiones de máquina virtual (VM) - - 2.10.x, 2.11.x, 2.12.x, 2.13.x, 3.x, 4.x y 5.x -
- Versión de células madre BOSH - - Ubuntu Jammy -
- Soporte IaaS - - AWS, GCP, Azure y vSphere -
- -El mosaico actual elimina el grupo de seguridad `all_open` de la configuración de seguridad predeterminada del mosaico. Si está utilizando una versión anterior del mosaico, haga que su entorno VMware Tanzu sea más seguro eliminando el grupo de seguridad `all_open` de la configuración del grupo de seguridad de la aplicación (ASG). La nueva versión del mosaico no abre la seguridad ni la cierra si ya estaba abierta. - -## Instalar a través del Administrador de operaciones [#install-ops] - -Para descargar New Relic Service Broker para el mosaico VMware Tanzu e instalarlo en VMware Tanzu Ops Manager, haga lo siguiente: - -1. Descargue el archivo del producto de Pivotal Network. - -2. Importe el archivo del producto a su instalación de Ops Manager. - -3. Haga clic en el signo - - **+** - - o - - **Add next** - - en la descripción del producto cargado en la vista de navegación izquierda del Administrador de operaciones para agregar este producto a su área de prueba. - -4. Haga clic en el mosaico recién agregado y revise las opciones configurables. - -5. Haga clic en - - **Apply Changes** - - . - -## Configurar el mosaico [#configure-tile] - -1. Log sesión en el Administrador de operaciones. - -2. Haga clic en **Import a Product** e importe el mosaico New Relic Service Broker para VMware Tanzu. - - vmware-service-broker-import.png - -3. Haga clic en el botón **+** a la derecha del "New Relic Service Broker" que cargó. - - vmware-service-broker-import-2.png - -4. Seleccione el mosaico New Relic . - - vmware-service-broker-import-3.png - -5. Configure la zona de disponibilidad y la red. - - vmware-service-broker-import-4.png - -6. Configure el acceso global de Service Broker. Puede mantener el acceso global habilitado para todos los planes de servicio (predeterminado) o puede desactivar el acceso global. Puede dar acceso a través de la configuración para una o más organizaciones para cada plan de servicio que agregue. - - vmware-service-broker-import-5.png - -7. Configure el New Relic Service Broker. Haga clic en Agregar en la pantalla Plan de servicio para crear un nuevo plan de servicio. - - vmware-service-broker-import-6.png - -8. Cree un plan de servicio con su clave de licencia de New Relic. - - * Ingrese un nombre para el plan de servicio (sin espacios). - * Introduzca la descripción del plan. - * Log sesión en su cuenta New Relic y navegue hasta la página Configuración de la cuenta en el menú desplegable en la esquina superior derecha de la página. Copie la clave de licencia de su cuenta New Relic y péguela aquí. - - vmware-service-broker-import-7.png - - * Si está actualizando desde New Relic Service Broker 1.12.12 o anterior, asegúrese de seguir las instrucciones en la sección de actualización de este documento para marcar el indicador "plan anterior a 1.12.12" e ingresar el GUID del plan anterior a 1.12.12. - * Si está ejecutando New Relic Firehose Boquilla y desea enrutar los datos de cada aplicación a una cuenta New Relic separada (a diferencia de la cuenta central Firehose Boquilla de New Relic), ingrese la cuenta objetivo de New Relic y la Insights Insertar clave aquí. - * Si en los pasos anteriores desmarcó Acceso global, debe ingresar una lista de organizaciones separadas por comas para que el sistema les permita el acceso al servicio para permitir al usuario crear una instancia de servicio de este plan. - -vmware-service-broker-import-8.png - -9. Seleccione el botón en la parte superior de la página para ir a `INSTALLATION DASHBOARD` - - vmware-service-broker-import-9.png - -10. Aplica tus cambios. - - * Haga clic en el botón azul en la parte superior derecha. - * Para acelerar el proceso, puede desmarcar la casilla Seleccionar todos los productos y seleccionar aplicar el cambio al mosaico de New Relic Service Broker. - - vmware-service-broker-import-10.png - -11. Al finalizar la instalación, consulte el Mercado de servicios en el Administrador de aplicaciones. Seleccione el mosaico New Relic . - - vmware-service-broker-import-11.png - -12. Vea los planes de servicio de New Relic y seleccione el plan deseado. - - vmware-service-broker-import-12.png - -13. Ingrese el nombre de la instancia de servicio y haga clic en el botón "CREAR" para crear la instancia de servicio. - - vmware-service-broker-import-13.png - -14. Plan de servicio creado. - - vmware-service-broker-import-14.png - -15. Vincula el servicio New Relic a una aplicación. - - * En el Administrador de aplicaciones, vaya a una aplicación. - - vmware-service-broker-import-15.png - - * Seleccione la pestaña Servicio. - - * Haga clic en el botón VINCULAR SERVICIO y seleccione la instancia de servicio que acaba de crear. - - vmware-service-broker-import-16.png - - * Haga clic en el botón VINCULAR en la parte inferior derecha. - - vmware-service-broker-import-17.png - -16. Vuelva a preparar la aplicación. Puede seleccionar el enlace en la parte superior de la página **Bind** , o en una ventana de terminal, y ejecutar `cf restage` para realizar los cambios. - - vmware-service-broker-import-18.png - - ```shell - cf restage APPNAME - ``` - -Log sesión en New Relic para ver los datos de monitoreo. - -## Configurar con proxy HTTP [#configure-http] - -Si el entorno VMware Tanzu necesita utilizar un proxy HTTP o HTTPS para la comunicación saliente externa, el intermediario de servicios no necesita saber nada sobre el proxy HTTP, ya que transmite la clave de licencia a las aplicaciones del consumidor. La aplicación del consumidor debe especificar `http\_proxy` o `https\_proxy` como variable de entorno para que el agente se comunique externamente con aplicaciones que no sean Java y usar `JAVA_OPTS` para aplicaciones Java. Además, el Agente New Relic también debe configurarse con su propio conjunto de parámetros `(-Dnewrelic.config.\*)` para comunicarse con su controlador a través del proxy para aplicaciones en lenguaje Java. - -Para especificar el uso de `http_proxy` para que el agente de la aplicación New Relic que no es Java se comunique con su controlador mediante el proxy, ejecute los siguientes comandos: - -```shell -cf set-env APPNAME http_proxy 'http://user:password@proxy-server.customer.example.com:8080' -cf set-env APPNAME https_proxy 'http://user:password@proxy-server.customer.example.com:8080' -``` - -Para especificar el uso de `JAVA_OPTS` para que el agente de Java New Relic se comunique con su controlador mediante el proxy, ejecute el siguiente comando: - -```shell -cf set-env APPNAME JAVA_OPTS " -Dtest.value=barbar - -Dnewrelic.config.proxy_host=proxy.customer.example.com - -Dnewrelic.config.proxy_port=8080 -``` - -Si una aplicación Java también necesita comunicarse a través de un proxy, agregue la configuración del proxy Java además de la configuración del proxy del agente New Relic con el siguiente comando: - -```shell -cf set-env APPNAME JAVA_OPTS " -Dtest.value=barbar - -Dnewrelic.config.proxy_host=proxy.customer.example.com - -Dnewrelic.config.proxy_port=8080 - -Dhttp.proxyHost=proxy.customer.example.com-Dhttp.proxyPort=8080 - -Dhttps.proxyHost=proxy.customer.example.com -Dhttps.proxyPort=8080 -``` - -Para una aplicación que no sea Java y que necesite comunicarse mediante un proxy, ejecute los siguientes comandos: - -```shell -cf set-env APPNAME http_proxy http://user@password:myproxy....:8080/ -cf set-env APPNAME https_proxy https://user@password:myproxy....:8080/ -``` - -Siempre que realice cambios en las variables de entorno de Cloud Foundry, debe volver a configurar sus aplicaciones para que los cambios sean efectivos. - -```shell -cf restage APPNAME -``` - -Puede configurar estas variables de entorno individualmente por aplicación, o con grupos de variables de entorno que se configurarán para todas las aplicaciones como parte de entornos de prueba, ejecución, etc. utilizando la herramienta de interfaz de línea de comando (cf CLI) de Cloud Foundry. - -## Grupos de variables de entorno [#variable-groups] - -* `running-environment-variable-group/revg`: recuperar el contenido del grupo de variables de entorno en ejecución -* `staging-environment-variable-group/sevg`: Recupera el contenido del grupo de variables de entorno de prueba. -* `set-staging-environment-variable-group/ssevg`: Pase el parámetro como JSON para crear un grupo de variables de entorno de prueba -* `set-running-environment-variable-group/srevg`: Pase el parámetro como JSON para crear un grupo de variables de entorno en ejecución - -Utilice la variable de entorno `JAVA\_OPTS` para especificar variables de entorno específicas del agente New Relic en el grupo de entorno de prueba para que el paquete de compilación de Java pueda usarlas y enviarlas al lugar correcto. Especificar JAVA_OPTS en el grupo de variables de entorno de ejecución no producirá nada, ya que el paquete de compilación no lo sabrá. - -Por ejemplo: - -```shell -cf ssevg '{ "JAVA_OPTS" : " -Dtest.value=barbar - -Dnewrelic.config.proxy_host=proxy.customer.example.com - -Dnewrelic.config.proxy_port=8080 -Dhttp.proxyHost=proxy.customer.example.com - -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.customer.example.com - -Dhttps.proxyPort=8080 -Dspring.profiles.active=dev - -Dnewrelic.config.log_level=finer - -Djavax.net.debug=all ", "test_env_profile" : "Staging" }' -``` - -Para obtener más información, consulte [Prioridad de los ajustes de configuración](https://docs.newrelic.com/docs/agents/java-agent/configuration/java-agent-configuration-config-file#config-options-precedence). - -## Dependencia del paquete para Buildpacks sin conexión [#product-dependencies] - -Si está ejecutando VMware Tanzu en un entorno fuera de línea (desconectado), debe volver a crear y empaquetar la dependencia, incluidos los archivos binarios del agente New Relic, utilizando paquetes de compilación fuera de línea en su entorno VMware Tanzu. - -Para obtener más información, consulte [Dependencia de empaquetado para paquetes de compilación sin conexión](https://docs.cloudfoundry.org/buildpacks/depend-pkg-offline.html). - -## Comentario [#feedback] - -Si tiene una solicitud de característica, preguntas o información sobre un error, envíe un problema en [github](https://github.com/newrelic/newrelic-service-broker-tile/issues). \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx b/src/i18n/content/es/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx deleted file mode 100644 index b2d1777fdaa..00000000000 --- a/src/i18n/content/es/docs/more-integrations/grafana-integrations/get-started/grafana-support-prometheus-promql.mdx +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: Soporte de Grafana con Prometheus y PromQL -tags: - - Integrations - - Grafana integrations - - Get started -metaDescription: Read about about how you can use New Relic within Grafana and our options for Prometheus and Prom QL support. -freshnessValidatedDate: never -translationType: machine ---- - -En Grafana, puede configurar New Relic como fuente de datos de Prometheus. No solo eso, dentro de Grafana puedes consultar métrica almacenada en New Relic usando el [lenguaje de consulta PromQL](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). - -## Utilice el panel de Grafana existente con New Relic [#Grafana-dashboards] - -Cuando integra Prometheus métrica con New Relic a través de [escritura remota](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#remote-write), [Prometheus Agent](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#agent) o [OpenMetrics Integration](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#OpenMetric) (2.0+) y configura New Relic como fuente de datos de Prometheus en Grafana, puede usar Grafana existente y acceder sin problemas al monitoreo adicional. confiabilidad y escala que ofrecemos. - -## Compatibilidad y requisitos [#compat-requirements] - -Antes de comenzar, asegúrese de haber terminado de integrar Prometheus métrica y de estar ejecutando una versión suficientemente reciente de Grafana. - -* Debe tener configurado [Remote Write](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#remote-write), [Prometheus agente](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#agent) o [OpenMetrics integración](/docs/integrations/prometheus-integrations/get-started/monitor-prometheus-new-relic#OpenMetrics) (v2.0+) antes de poder configurar las fuentes de datos de New Relic Prometheus en Grafana. -* Solo puede configurar fuentes de datos de New Relic Prometheus utilizando este método en las versiones 6.7.0 o posteriores de Grafana. Deberá configurar encabezados personalizados en la UI y esto no es posible con versiones anteriores. Para obtener más información, consulte [Configurar New Relic como fuente de datos de Prometheus para Grafana](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). - -### Soporte para PromQL - -Nuestra API de Prometheus emula las API de consulta de Prometheus. Admitimos el lenguaje de consulta Prometheus (PromQL) a través de nuestro modo de consulta estilo PromQL. Hacemos todo lo posible para traducir automáticamente la consulta de sintaxis PromQL a la aproximación NRQL más cercana. - -Para obtener más información sobre cómo funciona esto y las diferencias que puede observar entre Prometheus y New Relic, consulte [Característica PromQL compatible](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). - -## Haga que los datos fluyan en Grafana [#get-data] - -Para que sus datos de New Relic estén disponibles en Grafana, puede configurar una fuente de datos de Prometheus nueva o existente en solo un par de sencillos pasos: - -1. En la UI de Grafana, agregue y [configure una nueva fuente de datos](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). -2. Guarde la nueva fuente de datos y comience a ver sus datos. - -## ¿Que sigue? [#whats-next] - -¿Listo para configurar una fuente de datos de Grafana? - -* Lea la documentación práctica para configurar la [integración de escritura remota de Prometheus](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration), [el agente Prometheus](/docs/infrastructure/prometheus-integrations/install-configure-prometheus-agent/setup-prometheus-agent) o la [integración de Prometheus OpenMetrics](/docs/integrations/prometheus-integrations/install-configure/install-update-or-uninstall-your-prometheus-openmetrics-integration). -* Lea la documentación práctica para [configurar fuentes de datos de Prometheus en Grafana](/docs/integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana). - - \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx b/src/i18n/content/es/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx deleted file mode 100644 index 4870750e058..00000000000 --- a/src/i18n/content/es/docs/more-integrations/grafana-integrations/set-configure/configure-new-relic-prometheus-data-source-grafana.mdx +++ /dev/null @@ -1,144 +0,0 @@ ---- -title: Configure New Relic como fuente de datos de Prometheus para Grafana -tags: - - Integrations - - Grafana integrations - - Set up and configure -metaDescription: How to configure New Relic as a Prometheus data source for Grafana -freshnessValidatedDate: never -translationType: machine ---- - -import moreintegrationsGrafanaDataSourceConfig from 'images/more-integrations_screenshot-crop_grafana-data-source-config.webp' - -Puede configurar una [fuente de datos de Prometheus](https://grafana.com/docs/grafana/latest/features/datasources/prometheus/) en [Grafana](https://grafana.com/login) para consultar los datos almacenados en la base de datos de New Relic (NRDB) utilizando nuestro [lenguaje de consulta estilo PromQL](/docs/integrations/prometheus-integrations/view-query-data/supported-promql-features). - -## Agregar una fuente de datos de Prometheus [#create-update] - -Siga estos pasos para agregar New Relic como fuente de datos de Prometheus para Grafana. Estas instrucciones detallan cómo completar el proceso cuando se trabaja con las versiones 6.7 y superiores de Grafana. - - - Debe [completar el proceso de integración de escritura remota de Prometheus](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration) antes de comenzar el proceso de configuración. - - -1. En New Relic, [cree una nueva clave de consulta de Insights](/docs/apis/intro-apis/new-relic-api-keys/#insights-query-key). - - - Nota: En Grafana, deberá colocar esto en un encabezado HTTP **X-Query-Key** personalizado (consulte el paso 7 a continuación), pero es la misma entidad que la clave de consulta New Relic. - - -2. Desde la pantalla [de Grafana](https://grafana.com/login) **Home** , vaya a **Configuration > Data Sources** y haga clic en **Add data source**. - -3. En la pantalla **Add data source** , en las opciones **Time series databases** , seleccione **Prometheus**. - -4. Ingrese el **Name** que desea usar para su nueva fuente de datos de Prometheus. - -5. Configure el interruptor **Default** en la posición de encendido o apagado, dependiendo de si desea que esta sea su fuente de datos predeterminada para Prometheus consulta. - - * Desactivado: esta no es su fuente de datos predeterminada - * Activado: esta es su fuente de datos predeterminada - -6. Ingrese el **URL** correcto: - - * EE. UU.: [prometheus-api.newrelic.com](https://prometheus-api.newrelic.com) - * UE: [prometheus-api.eu.newrelic.com](https://prometheus-api.eu.newrelic.com) - -7. En **Custom Headers**, seleccione **Add Header**. Establezca el nombre **Header** en **X-Query-Key.** Para **Value**, ingrese la clave de consulta que creó en el paso 1. - -8. Haga clic en **Save & Test**. - - - Si sus gráficos aparecen como grupos de puntos y no como líneas conectadas, puede cambiar el estilo del gráfico para mostrar líneas. Para hacer esto, vaya a **[Graph panel](https://grafana.com/docs/grafana/latest/panels/visualizations/graph-panel/)** de Grafana y seleccione **Stacking and null value > connected**. - - - - - Screen capture of the add data source workflow in Grafana - -
- Grafana Data Source Config.png, por [dbarnesbrown.newrelic.com](/users/dbarnesbrownnewreliccom) -
-
-
- - - -## Consideraciones de versiones - -New Relic recomienda encarecidamente utilizar las versiones 6.7.x y superiores para configurar New Relic como fuente de datos de Prometheus. Si elige completar la configuración mientras ejecuta una versión anterior, deberá realizar una de las siguientes acciones para configurar correctamente su fuente de datos: - -* Configure la nueva fuente de datos para usar autenticación básica y luego ingrese la clave de consulta como contraseña en el flujo de trabajo de autenticación básica. -* Configure la nueva URL de la fuente de datos para incluir la clave de consulta: `` https://prometheus-api.newrelic.com/auth/`` `` - -## Personaliza el comportamiento de la API de Prometheus [#customize-API] - -Los encabezados son particularmente importantes si ha conectado varios servidores Prometheus a New Relic mediante la [integración de escritura remota](/docs/integrations/prometheus-integrations/install-configure/set-your-prometheus-remote-write-integration). Aquí hay algunos detalles sobre la personalización. - - - - El parámetro [Clave de consulta](/docs/apis/get-started/intro-apis/types-new-relic-api-keys#x-query-key) es necesario para autenticarse con New Relic e identificar la cuenta que contiene su métrica. Grafana llama a esto **X-Query key**, mientras que aparece como **Query key** en la UI de New Relic. - - Detalles: - - * Requerido - * Una clave de consulta API utilizada para la autenticación - * Si está utilizando la integración de escritura remota de Prometheus, la X-consulta debe corresponder a la misma cuenta que la X-clave de licencia utilizada para integrarse para la escritura remota. - - - - - El soporte de autocompletar de Grafana no maneja métricas que no se ajusten estrictamente a las convenciones de nomenclatura de Prometheus. New Relic recomienda excluir cualquier métrica que no se ajuste a este parámetro. - - - Detalles: - - * Opcional - * Límites métricos expuestos por la API a los provenientes de Prometheus - * Predeterminado = verdadero si no se especifica - - - - Este parámetro es útil si está recopilando métricas de varios servidores Prometheus. Por ejemplo, si está utilizando Grafana, es posible que desee crear una fuente de datos para cada servidor Prometheus conectado a New Relic y luego otra fuente de datos que pueda usarse para realizar consultas en todos los servidores Prometheus. - - Detalles: - - * Opcional - * Límites métricos expuestos por la API a los recopilados del servidor Prometheus especificado - * Este valor debe coincidir con el parámetro de URL `prometheus_server` en la URL de escritura remota utilizada para conectarse a su servidor Prometheus en New Relic. - * El valor predeterminado es devolver la métrica recopilada de todos los servidores. - - - -## Eliminar una fuente de datos de Prometheus [#delete] - -Para eliminar una fuente de datos en Grafana: - -1. Vaya a - - **Configuration > Data Sources** - - . - -2. Haga clic en la fuente de datos que desea eliminar. - -3. Haga clic en el botón - - **Delete** - - en la parte inferior de la página. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx b/src/i18n/content/es/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx deleted file mode 100644 index a53c733809f..00000000000 --- a/src/i18n/content/es/docs/more-integrations/java-integrations/vertx-eventbus-integration.mdx +++ /dev/null @@ -1,164 +0,0 @@ ---- -title: Java Vert.x Event Bus integración -tags: - - nrlabs - - nrlabs-data - - apm - - java - - vertx - - vert.x - - eventbus - - expert services -metaDescription: Provides instrumentation for monitoring the Vert.x Event Bus. -freshnessValidatedDate: never -translationType: machine ---- - -[Java Vert.x Event Bus integración](https://github.com/newrelic/newrelic-java-vertx/tree/main) proporciona instrumentación para monitoreo del (Vert.x)\[https://vertx.io/] Event Bus, que permite el seguimiento del flujo de eventos a través del bus. Diseñado específicamente para Vert.x Verticles que se extienden` AbstractVerticle`, esta extensión instrumenta cada clase desplegar para monitor todos los métodos excepto aquellos específicamente definidos por `AbstractVerticle`. - -## Métodos admitidos - -La integración rastrea o excluye métrica. Aquí hay una lista de cada uno: - -Métodos rastreados: - -* Métodos que facilitan el seguimiento del flujo de eventos. -* Métodos que mejoran la visibilidad del comportamiento y rendimiento de la aplicación. - -Métodos excluidos: - -* Métodos de configuración y ciclo de vida específicos (`start`, `stop`, `rxStart`, `rxStop`, `config`, `deploymentID`, `getVertx`, `init`, `processArgs`) - -## Instalar el agente de Java - -Se debe instalar el agente Java APM para configurar las extensiones Java Vert.x. Siga las instrucciones para [instalar el agente Java APM](https://docs.newrelic.com/install/java/). - -Una vez que Java agente APM esté instalado y configurado para su aplicación, cree una carpeta `extensions` en el directorio `newrelic` si aún no existe: - -```bash -# Open your Java APM Agent installation location and create 'extensions' folder ( if it is not existing) -cd path/to/newrelic -mkdir extensions -``` - -## Instalar y configurar Java Vert.x Event Bus integración [#install] - - - - - curl - - - - Powershell - - - - Web - - - - - - Para instalar y configurar Java Vert.x Event Bus integración, sigue estos pasos: - - * Actualice la ubicación de la carpeta `extensions` del agente Java APM en el script bash proporcionado. - * Copie los comandos actualizados a un script bash `install_vertx_integration.sh`. - * Ejecute el script para integrar Java Vert.x Event Bus Monitoreo con New Relic APM. - - ```sh - #!/bin/bash - - # Define variables - apiUrl="https://api.github.com/repos/newrelic/newrelic-java-vertx/releases/latest" - tempZipPath="/tmp/latest.zip" - tempExtractPath="/tmp/Extracted" - extensionsDir="/path/to/newrelic/extensions" - - # Retrieve the download URL for the latest release ZIP file - downloadUrl=$(curl -s "$apiUrl" | grep -o "browser_download_url.*\.zip" | cut -d '"' -f 3) - - echo $downloadUrl - - # Check if the download URL is empty or invalid - if [ -z "$downloadUrl" ]; then - echo "Failed to retrieve download URL. Exiting." - exit 1 - fi - - # Download the latest release ZIP file - curl -L -o "$tempZipPath" "$downloadUrl" - - # Check if the ZIP file was downloaded successfully - if [ ! -f "$tempZipPath" ]; then - echo "Failed to download the ZIP file. Exiting." - exit 1 - fi - - # Create a temporary extraction folder - mkdir -p "$tempExtractPath" - - # Extract the contents of the ZIP file to the temporary folder - unzip -q "$tempZipPath" -d "$tempExtractPath" - - # Check if the extraction was successful - if [ $? -ne 0 ]; then - echo "Failed to extract the ZIP file. Exiting." - exit 1 - fi - - # Copy all .jar files to the Java APM Agent 'extensions' directory - find "$tempExtractPath" -name "*.jar" -exec cp {} "$extensionsDir" \; - - # Clean up temporary files - rm "$tempZipPath" - rm -r "$tempExtractPath" - - echo "Installation completed successfully." - ``` - - - - Para instalar y configurar Java Vert.x Event Bus integración, sigue estos pasos: - - * Actualice la ubicación de la carpeta 'extensiones' del agente Java APM en los comandos de PowerShell proporcionados. - - ```sh - # Define variables - $apiUrl = "https://api.github.com/repos/newrelic/newrelic-java-vertx/releases/latest" - $tempZipPath = "C:\Temp\latest.zip" - $tempExtractPath = "C:\Temp\Extracted" - $extensionsDir = "C:\Path\To\newrelic\extensions" - - # Download the latest release ZIP file from GitHub - $response = Invoke-WebRequest -Uri $apiUrl - $downloadUrl = ($response.Content | ConvertFrom-Json).assets[0].browser_download_url - Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZipPath - - # Extract the contents of the ZIP file to a temporary folder - New-Item -ItemType Directory -Path $tempExtractPath -Force - Expand-Archive -Path $tempZipPath -DestinationPath $tempExtractPath - - # Copy all .jar files to the Java APM Agent 'extensions' directory - Get-ChildItem -Path $tempExtractPath -Filter "*.jar" | Copy-Item -Destination $extensionsDir - - # Clean up temporary files - Remove-Item -Path $tempZipPath -Force - Remove-Item -Path $tempExtractPath -Recurse -Force - - ``` - - - - Desde [Java Vert.x Event Bus Integration Releases](https://github.com/newrelic/newrelic-java-vertx/releases/), descargue `vertx-instrumentation-vx.y.z.zip` a un directorio temporal y descomprímalo. Copie todos los archivos 'jar' a la carpeta 'extensiones' de New Relic Java agente APM. - - - - -## Verifica tu integración - -Luego de configurar Java Vert.x Event Bus integración, podrás visualizar el Vert.x de tu aplicación Event Bus transacción y traza directamente dentro de New Relic APM and Services. - -## Informar problemas de integración - -Si encuentra algún problema con Java Vert.x Event Bus integración, por favor repórtalos en el [repositorio de GitHub](https://github.com/newrelic/newrelic-java-vertx/issues). Sus comentarios nos ayudan a identificar y abordar los problemas rápidamente, lo que garantiza una experiencia de monitoreo fluida y confiable para Vert.x. aplicación. Gracias por contribuir a la mejora de nuestra integración. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx b/src/i18n/content/es/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx deleted file mode 100644 index b72f7bbfe6c..00000000000 --- a/src/i18n/content/es/docs/more-integrations/java-integrations/vertx-extensions-integration.mdx +++ /dev/null @@ -1,163 +0,0 @@ ---- -title: New Relic Java para Vert.x Extensiones -tags: - - nrlabs - - nrlabs-data - - apm - - java - - vertx - - vert.x - - sql - - kafka - - mssql - - postgres - - oracle - - db2 - - cassandra - - jdbc - - redis - - rabbitmq - - rxjava - - mongodb - - reactive - - coroutines - - expert services -metaDescription: 'provides instrumentation for monitoring the Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive and Service Proxy.' -freshnessValidatedDate: never -translationType: machine ---- - -[Instrumentación Java para Vert.x Extensions](https://github.com/newrelic/newrelic-java-vertx-extensions/tree/main) proporciona instrumentación para monitoreo Vert.x Cassandra, JDBCClient, Coroutines, Kafka, RxJava, SQL Clients, Redis, MongoDB, Reactive y Service Proxy. - -## Instalar el agente de Java - -Se debe instalar el agente Java APM para configurar las extensiones Java Vert.x. Siga las instrucciones para [instalar el agente Java APM](https://docs.newrelic.com/install/java/) - -Una vez que Java agente APM esté instalado y configurado para su aplicación, cree una carpeta `extensions` en el directorio `newrelic` si aún no existe: - -```bash -# Open your Java APM Agent installation location and create 'extensions' folder ( if it is not existing) -cd path/to/newrelic -mkdir extensions -``` - -## Instalar y configurar la instrumentación Java para Vert.x Extensiones [#install] - - - - - curl - - - - Powershell - - - - Web - - - - - - Para instalar y configurar la instrumentación Java para Vert.x Extensiones, sigue estos pasos: - - * Actualice la ubicación de la carpeta `extensions` del agente Java APM en el script bash proporcionado. - * Copie los comandos actualizados a un script bash, `install_vertx_integration.sh`. - * Ejecute el script para integrar la instrumentación Java para Vert.x Extensiones con New Relic APM. - - ```sh - #!/bin/bash - - # Define variables - apiUrl="https://api.github.com/repos/newrelic/newrelic-java-vertx-extensions/releases/latest" - tempZipPath="/tmp/latest.zip" - tempExtractPath="/tmp/Extracted" - extensionsDir="/path/to/newrelic/extensions" - - # Retrieve the download URL for the latest release ZIP file - downloadUrl=$(curl -s "$apiUrl" | grep -o "browser_download_url.*\.zip" | cut -d '"' -f 3) - - echo $downloadUrl - - # Check if the download URL is empty or invalid - if [ -z "$downloadUrl" ]; then - echo "Failed to retrieve download URL. Exiting." - exit 1 - fi - - # Download the latest release ZIP file - curl -L -o "$tempZipPath" "$downloadUrl" - - # Check if the ZIP file was downloaded successfully - if [ ! -f "$tempZipPath" ]; then - echo "Failed to download the ZIP file. Exiting." - exit 1 - fi - - # Create a temporary extraction folder - mkdir -p "$tempExtractPath" - - # Extract the contents of the ZIP file to the temporary folder - unzip -q "$tempZipPath" -d "$tempExtractPath" - - # Check if the extraction was successful - if [ $? -ne 0 ]; then - echo "Failed to extract the ZIP file. Exiting." - exit 1 - fi - - # Copy all .jar files to the Java APM Agent 'extensions' directory - find "$tempExtractPath" -name "*.jar" -exec cp {} "$extensionsDir" \; - - # Clean up temporary files - rm "$tempZipPath" - rm -r "$tempExtractPath" - - echo "Installation completed successfully." - ``` - - - - Para instalar y configurar la instrumentación Java para Vert.x Extensiones, sigue estos pasos: - - * Actualice la ubicación de la carpeta 'extensiones' del agente Java APM en los comandos de PowerShell proporcionados: - - ```sh - # Define variables - $apiUrl = "https://api.github.com/repos/newrelic/newrelic-java-vertx-extensions/releases/latest" - $tempZipPath = "C:\Temp\latest.zip" - $tempExtractPath = "C:\Temp\Extracted" - $extensionsDir = "C:\Path\To\newrelic\extensions" - - # Download the latest release ZIP file from GitHub - $response = Invoke-WebRequest -Uri $apiUrl - $downloadUrl = ($response.Content | ConvertFrom-Json).assets[0].browser_download_url - Invoke-WebRequest -Uri $downloadUrl -OutFile $tempZipPath - - # Extract the contents of the ZIP file to a temporary folder - New-Item -ItemType Directory -Path $tempExtractPath -Force - Expand-Archive -Path $tempZipPath -DestinationPath $tempExtractPath - - # Copy all .jar files to the Java APM Agent 'extensions' directory - Get-ChildItem -Path $tempExtractPath -Filter "*.jar" | Copy-Item -Destination $extensionsDir - - # Clean up temporary files - Remove-Item -Path $tempZipPath -Force - Remove-Item -Path $tempExtractPath -Recurse -Force - ``` - - - - Desde [instrumentación Java para versiones de extensiones Vert.x](https://github.com/newrelic/newrelic-java-vertx-extensions/releases/), descargue `vertx-instrumentation-vx.y.z.zip` a un directorio temporal y descomprímalo. Copie todos los archivos `jar` a la carpeta `extensions` del agente Java de New Relic APM. - - - - -## Verifica tu integración - -Luego de configurar la instrumentación Java para Vert.x Extensiones, puede visualizar la transacción y traza de las extensiones Vert.x de su aplicación directamente dentro de New Relic APM y Servicios. - -## Informar problemas de integración - -Si tiene algún problema con la instrumentación Java para Vert.x Extensiones, infórmalas en el [repositorio de GitHub](https://github.com/newrelic/newrelic-java-vertx-extensions/issues). Sus comentarios nos ayudan a identificar y abordar los problemas rápidamente, lo que garantiza una experiencia de monitoreo fluida y confiable para Vert.x. aplicación. ¡Gracias por contribuir a la mejora de nuestra integración! \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx deleted file mode 100644 index 11e5134462b..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/airflow/monitoring-airflow-ot.mdx +++ /dev/null @@ -1,172 +0,0 @@ ---- -title: Monitor el flujo de aire de Apache con OpenTelemetry -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Airflow - - Quickstart -metaDescription: Monitor Airflow data with New Relic using OpenTelemetry. -freshnessValidatedDate: '2023-11-16T00:00:00.000Z' -translationType: machine ---- - -import opentelemetryAirflow01 from 'images/opentelemetry_screenshot_airflow_01.webp' - -import opentelemetryAirflow02 from 'images/opentelemetry_screenshot_airflow_02.webp' - -monitor los datos de Apache Airflow configurando [OpenTelemetry](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#setup-opentelemetry) para enviar datos a New Relic, donde puede visualizar tareas, operadores y ejecuciones de DAG como métrica. - -Screenshot showing sample Airflow DAG runs in New Relic - -## Requisitos previos [#prerequisites] - -Antes de habilitar OpenTelemetry en Apache Airflow, deberá instalar el paquete Airflow con el extra `otel` . El método de instalación depende de su enfoque de implementación de Airflow: - -### Opción 1: instalación desde PyPi [#install-pypi] - -1. Siga las instrucciones de instalación de [la documentación de Airflow](https://airflow.apache.org/docs/apache-airflow/stable/installation/installing-from-pypi.html). - -2. Al instalar con pip, agregue el `otel` adicional al comando. Por ejemplo: - - `pip install "apache-airflow[otel]"` - -### Opción 2: instalación desde docker [#install-docker] - -1. Configure la imagen de Airflow Docker siguiendo las instrucciones de [la documentación de Airflow](https://airflow.apache.org/docs/docker-stack/index.html). - -2. Amplíe la imagen docker prediseñada utilizando un Dockerfile para instalar el extra `otel`. Puede reemplazar la última etiqueta con la versión que desee de la imagen. - - ``` - FROM apache/airflow:latest - RUN pip install --no-cache-dir "apache-airflow[otel]==$AIRFLOW_VERSION" - ``` - - - `$AIRFLOW_VERSION` ya está configurado por el contenedor apache/airflow, pero se puede reemplazar con un número de versión para otras imágenes base. - - -## Configuración [#configuration] - -Para enviar Airflow métrica a New Relic, configure la métrica OpenTelemetry para exportar datos a un [recolector OpenTelemetry](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-intro/), que luego reenviará los datos a un [extremo OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#note-endpoints) de New Relic usando un . - - - Debido a la actual falta de soporte de Airflow para enviar datos de OpenTelemetry con encabezados de autenticación, el recolector de OpenTelemetry es esencial para autenticarse con New Relic. - - -### Configurar el recolector OpenTelemetry [#configuration-collector] - -1. Siga el [ejemplo del recolector básico](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/collector/opentelemetry-collector-basic/) para configurar su recolector OpenTelemetry. - -2. Configure el recolector con su extremo OTLP apropiado, como `https://otlp.nr-data.net:4317`. - -3. Para la autenticación, agregue su - - - - a la variable de entorno `NEW_RELIC_LICENSE_KEY` para que complete el encabezado `api-key` . - -4. Asegúrese de que se pueda acceder al puerto 4318 en el recolector desde la instancia de Airflow en ejecución. (Para docker, es posible que necesite utilizar una [reddocker ](https://docs.docker.com/network/)). - -5. Lanzamiento el recolector. - -### Configurar flujo de aire métrico [#configuration-airflow] - -Airflow envía métrica usando OTLP sobre HTTP, que usa el puerto `4318`. Airflow tiene múltiples métodos para [configurar las opciones de configuración](https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html). - - - Si su entorno tiene Airflow ejecutándose en un contenedor docker junto con el recolector OpenTelemetry, deberá cambiar la configuración `otel_host` de `localhost` a la dirección del contenedor del recolector. - - -Elija uno de los siguientes métodos para configurar las opciones requeridas para Airflow. - -1. Configure las opciones requeridas en el archivo `airflow.cfg` . - - ``` - [metrics] - otel_on = True - otel_host = localhost - otel_port = 4318 - otel_ssl_active = False - ``` - -2. O establezca las opciones requeridas como variables de entorno. - - ``` - export AIRFLOW__METRICS__OTEL_ON=True - export AIRFLOW__METRICS__OTEL_HOST=localhost - export AIRFLOW__METRICS__OTEL_PORT=4318 - export AIRFLOW__METRICS__OTEL_SSL_ACTIVE=False - ``` - - - Airflow tiene [configuraciones métricas adicionales](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#setup-opentelemetry) que pueden resultar útiles. Esto incluye la capacidad de [cambiar el nombre de las métricas](https://airflow.apache.org/docs/apache-airflow/stable/administration-and-deployment/logging-monitoring/metrics.html#rename-metrics) antes de enviarlas, lo cual resulta útil si los nombres de las métricas exceden el límite de 63 bytes para OpenTelemetry. - - -## Los datos de validación se envían a New Relic [#validation] - -Para confirmar que New Relic está recopilando sus datos de Airflow, ejecute un DAG o una tubería: - -1. Inicie sesión en flujo de aire. - -2. Haga clic en el botón Ejecutar en uno de los DAG del tutorial existente, o en el suyo propio. - -3. Espere a que la canalización termine de ejecutarse. - -4. Vaya a - - **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > Services - OpenTelemetry > Airflow** - - . - -5. Haga clic en - - **Metrics Explorer** - - para visualizar métricas para ejecuciones de canalizaciones. - -## Panel de control del edificio [#building-dashboards] - -Con Airflow métrica, puede crear un panel sobre tuberías individuales, el rendimiento general o ver una comparación entre diferentes tuberías. Haga clic aquí para obtener más información sobre [cómo consultar su métrica](/docs/data-apis/understand-data/metric-data/query-metric-data-type/). - -Esta consulta recupera una lista de todas las métricas reportadas para Airflow: - -```sql -SELECT uniques(metricName) FROM Metric WHERE entity.name = 'Airflow' AND metricName LIKE 'airflow.%' SINCE 30 MINUTES AGO LIMIT 100 -``` - -Asegúrate de cambiar el límite (`100`) si tus nombres métricos lo exceden. - -Esta consulta muestra una comparación de diferentes tiempos de finalización para ejecuciones exitosas de diferentes DAG: - -```sql -SELECT latest(airflow.dagrun.duration.success) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES -``` - -Screenshot showing sample Airflow DAG runs in New Relic - -Esta consulta muestra recuentos de ejecuciones DAG fallidas, que se pueden utilizar para crear para canalizaciones críticas: - -```sql -SELECT count(airflow.dagrun.duration.failed) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES -``` - -Screenshot showing sample Airflow failures in New Relic - - - New Relic no mantiene las métricas OpenTelemetry de Airflow, por lo que si tiene algún problema con la instrumentación, [cree un nuevo problema en el repositorio de GitHub de Airflow](https://github.com/apache/airflow/issues). - - - \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx deleted file mode 100644 index 6192575090d..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/atlassian/atlassian-integration.mdx +++ /dev/null @@ -1,123 +0,0 @@ ---- -title: Integración de Atlassian Jira -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Atlassian - - Quickstart -metaDescription: Monitor Atlassian with New Relic. -freshnessValidatedDate: '2024-04-24T00:00:00.000Z' -translationType: machine ---- - -import opentelemetryAtlassianNRapiToken from 'images/opentelemetry_screenshot-crop_connect-nr-jira.webp' - -import opentelemetryJiraIncidentManagement from 'images/opentelemetry_screenshot-full_jira-incident-mgt.webp' - -import opentelemetryJiraNRConfiguration from 'images/opentelemetry_screenshot-full_jira-nr-configuration.webp' - -New Relic ofrece una integración con Atlassian Jira que sincroniza su problema de New Relic y la información de incidentes con Jira. Estos datos luego aparecen en Jira en el [incidente característico](https://support.atlassian.com/jira-software-cloud/docs/what-is-the-incidents-feature/) y le permiten conectarlos con problemas de Jira para mejorar su flujo de trabajo de interrupción. Las secciones cubren cómo configurar esta integración y las mejores prácticas para usarla. - - - Esta característica aún está en versión preliminar, ¡pero te animamos a que la pruebes! - - -## Compartir datos [#data-sharing] - -Cuando instalas la aplicación New Relic para Jira desde Atlassian Marketplace, habilitas la integración para realizar estas acciones: - -* Lea entidad, incidente y problemas de Jira. -* Escribe entidad, incidente y issues a Jira. -* Elimine entidad, incidente y problemas tanto de New Relic como de Jira para reflejar los informes de datos con cada entidad. - - - Esta integración expondrá sus problemas de New Relic e información sobre incidentes a todos los usuarios en el espacio de trabajo de Jira relacionado. Es posible que el usuario de Jira en este espacio de trabajo no tenga acceso a New Relic e, incluso si lo tuviera, es posible que no tenga acceso a las mismas cuentas New Relic que su usuario de clave de API. - - Si tiene información de cuenta de New Relic para ocultar, utilice un [usuario de integración](/docs/more-integrations/best-practices-integration/#integration-user-leverage) que no tenga acceso a sus cuentas confidenciales. - - -## Instalacion [#installation] - -Siga estos pasos para integrar New Relic con Jira. - - - - ## Instale la aplicación New Relic para Jira [#install-nr-jira-app] - - Debes instalar la aplicación New Relic for Jira para sincronizar tus datos entre New Relic y Atlassian. Tenga en cuenta que debe tener la licencia de administrador del sitio Jira para instalar la aplicación Marketplace. Vaya a [Atlassian Marketplace](https://marketplace.atlassian.com/apps/1233828/new-relic-for-jira?tab=overview&hosting=cloud) y haga clic en el botón **Install**. - - - Si no tiene el permiso de administrador del sitio, puede solicitarlo a su administrador. Le recomendamos que haga un seguimiento con el administrador de su sitio Jira para completar el proceso de instalación de la aplicación. - - - - - ## Crear una clave API de New Relic [#create-new-relic-key] - - Luego de instalar la aplicación New Relic para Jira, deberá crear una [clave API deNew Relic ](/docs/apis/intro-apis/new-relic-api-keys/). El administrador del sitio de Jira y el administrador de New Relic decidirán las cuentas expuestas a Jira. El usuario que tenga el acceso correcto a la cuenta de New Relic , podrá generar una clave de API de New Relic. La clave de API de New Relic tiene acceso a las mismas cuentas que el usuario que las generó. - - Cree y administre su clave de API desde la [New Relic página de clave de API UI](https://one.newrelic.com/launcher/api-keys-ui.api-keys-launcher) o en la página log del [API token de](https://id.atlassian.com/manage-profile/security/api-tokens) Atlassian y haga clic en **Create API token**. - - - - ## Aplicar una clave de API de New Relic [#apply-new-relic-key] - - Una vez que haya creado una clave de API, puede aplicar esa clave a la primera página de la aplicación New Relic Connect. - - Pegue su token API de New Relic en la aplicación New Relic Atlassian Marketplace y haga clic en **Connect**. - - Apply a New Relic API key - - - - ## Seleccione sus servicios New Relic [#select-nr-services] - - Una vez que la aplicación New Relic for Jira esté conectada a través de una clave de API, verá una lista de todas las entidades asociadas con las cuentas en esa clave de API. Selecciona el incidente característico en la navegación, luego conecta cualquier entidad que quieras exponer en Jira. - - Aprenda cómo [conectar y eliminar servicios en Jira](https://support.atlassian.com/jira-software-cloud/docs/connect-jira-service-management-services-to-jira-software/). - - Jira incident management page - - - - ## Ver problemas e incidentes New Relic en Atlassian Jira [#see-issues-incidents] - - Después de haber seleccionado su entidad New Relic , la aplicación comienza a sincronizar datos de New Relic en Atlassian Jira. Abra la pestaña de incidentes para ver una lista de incidentes detectados. - - - -## Habilitar el incidente característico [#enable-incidents-feature] - -Si tiene licencias de administrador del proyecto, siga estos pasos para habilitar la característica de incidente: - -1. Desde la barra lateral de su proyecto, vaya a **Project settings > Features**. -2. Activa o desactiva la característica **Incidents**. -3. Una vez habilitado, seleccione **Incidents** en la barra lateral de su proyecto para usar la característica. - -Consulta la página [de incidentes característicos](https://support.atlassian.com/jira-software-cloud/docs/what-is-the-incidents-feature/) en la documentación de soporte de Atlassian para obtener más información. - -## Eliminar una conexión entre New Relic y Jira [#remove-connection] - -Puede dejar de sincronizar datos de New Relic y eliminar los datos sincronizados en cualquier momento. Si tiene licencias de administrador del sitio de Jira, puede hacerlo desde la página de configuración de New Relic dentro de Jira. Puede seleccionar su organización conectada y hacer clic en **Delete**. Una vez que finalice el proceso, ya no verás el incidente New Relic ni la información del problema en el incidente característico de Jira. - -## Conectar a una organización diferente [#different-organization] - -Para conectarse a una organización diferente o cambiar el acceso a la cuenta que proporciona su clave de API, vaya a la página de configuración de New Relic dentro de Jira. - -Cuando seleccione **Connect another New Relic organization**, deberá proporcionar una clave API de New Relic. Agregar una nueva clave eliminará su conexión actual, incluidos todos los datos sincronizados con Atlassian. Luego iniciará un nuevo proceso de sincronización entre la cuenta y el acceso de la organización a la nueva clave de API. - -New Relic configuration from Jira \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx deleted file mode 100644 index a88a1ca1f6d..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dojo/dojo-io-integration.mdx +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Integración de Dojo.io -tags: - - dojo.io integration - - dojo integration - - new relic integrations -metaDescription: The New Relic Dojo.io integration sends performance metrics and inventory data from your Dojo.io framework to the New Relic platform. -freshnessValidatedDate: never -translationType: machine ---- - -import dojodashboard from 'images/infrastructure_screenshot-crop_dojo-dashboard.webp' - -Con la ayuda del dashboard Dojo de New Relic, puede realizar un seguimiento de las principales Métricas web de su aplicación, cuánto tiempo pasa su usuario en su sitio y métricas críticas del rendimiento browser , como la carga inicial de la página y las páginas con errores de Javascript. Creado con nuestro agente, el dashboard de Dojo le permite ver todos sus datos más importantes en un solo lugar. - -A screenshot of the Dojo dashboard - -## Instalar el agente de infraestructura (opcional) [#infra-install] - -Si bien nuestra integración de Dojo no está creada con nuestro agente de infraestructura, recomendamos instalarla si desea obtener datos de rendimiento sobre sus hosts. Puede instalar el agente de infraestructura de dos maneras diferentes: - -* Nuestra [instalación guiada](https://one.newrelic.com/nr1-core?state=4f81feab-35f7-e97e-9903-52510f8542bd) es una herramienta CLI que inspecciona su sistema e instala el agente de infraestructura junto con el agente de monitoreo de aplicaciones que mejor funcione para su sistema. Para obtener más información sobre cómo funciona nuestra instalación guiada, consulte nuestra [descripción general de la instalación guiada](/docs/infrastructure/host-integrations/installation/new-relic-guided-install-overview). -* Si prefiere instalar nuestro agente de infraestructura manualmente, puede seguir un tutorial para la instalación manual para [Linux](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux), [Windows](/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows/) o [macOS](/docs/infrastructure/install-infrastructure-agent/macos-installation/install-infrastructure-monitoring-agent-macos/). - -## Instalar el agente del navegador [#browser-install] - -1. Instale nuestro agente del navegador yendo a nuestro [iniciador de instalación](https://one.newrelic.com/marketplace?account=3510613&state=79352429-fa28-4c25-1123-30c4b23ff83c) y haciendo clic en - - **Browser monitoring** - - . - -2. Seleccione su cuenta y siga las instrucciones en la UI. - -3. Instale el dashboard de Dojo prediseñado en la [página de observabilidad instantánea de Dojo.](https://newrelic.com/instant-observability/dojo) - -## ¿Que sigue? [#whats-next] - -Con el agente del navegador instalado e equipado con su aplicación, podrá ver sus datos sin procesar en [métrica & evento](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer/). El valor predeterminado transforma los datos sin procesar en tablas y gráficos que brindan una vista de alto nivel del estado de su sistema. Para instalar nuestro panel predeterminado, vaya a nuestra [página de observabilidad instantánea](https://newrelic.com/instant-observability/) \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx deleted file mode 100644 index 0b771b8461d..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/dropwizard/dropwizard-reporter.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Reportero del asistente desplegable -tags: - - Integrations - - Open source telemetry integrations - - Dropwizard -metaDescription: New Relic offers an integration that exports data from your DropWizard and sends it to your New Relic account. -freshnessValidatedDate: never -translationType: machine ---- - -[Dropwizard](https://www.dropwizard.io/en/latest/) es un framework de Java para desarrollar servicios web RESTful de alto rendimiento y fáciles de operar al proporcionar instrumentación métrica lista para usar. El reportero DropWizard de New Relic envía su métrica Dropwizard a su cuenta New Relic. - -¿Quieres probar nuestro reportero Dropwizard? ¡ [Crea una cuenta New Relic](https://newrelic.com/signup) gratis! No se requiere tarjeta de crédito. - -Recursos para nuestro reportero de Dropwizard: - -* [LÉAME](https://github.com/newrelic/dropwizard-metrics-newrelic) -* [Especificaciones de integración](https://github.com/newrelic/newrelic-exporter-specs/tree/master/dropwizard) - -## Encuentra tus datos - -Para encontrar tus datos, ve a **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > All entities**. Busque su servicio por nombre. Desde allí, puede explorar su métrica usando **Metrics and events** y crear un panel usando su métrica. - -Para obtener más información sobre cómo consultar sus datos una vez que estén en New Relic, consulte [consultar sus datos](/docs/using-new-relic/data/understand-data/query-new-relic-data) e [Introducción a NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql). - - \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx deleted file mode 100644 index 0a0aedff9db..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/elixir/elixir-open-source-agent.mdx +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: Agente de código abierto Elixir -tags: - - Agents - - Open-source licensed agents - - Open-source licensed agents -metaDescription: A brief introduction to New Relic's open-source Elixir agent. -freshnessValidatedDate: never -translationType: machine ---- - -Monitor el comportamiento [de Elixir](https://github.com/newrelic/elixir_agent) con New Relic utilizando el agente de código abierto de Elixir. El agente: - -* Le ayuda a rastrear transacciones, rastreo distribuido y otras partes del comportamiento de su aplicación. -* Proporciona una descripción general de la actividad [BEAM](http://erlang.org/faq/implementations.html#idp32950544) subyacente. - - - Este agente se publica como código abierto en [GitHub](https://github.com/newrelic/). También hay disponible un log de cambios para las últimas actualizaciones. - - -## Empezar [#get_started] - -Para obtener información sobre requisitos, instalación y configuración, consulte el [archivo README del agente Elixir de código abierto](https://github.com/newrelic/elixir_agent/blob/master/README.md) en GitHub. - -Visite [el repositorio Elixir de New Relic en GitHub](https://github.com/newrelic/elixir_agent) si tiene preguntas sobre la instalación, el uso u otros temas. Informar problemas o errores como problema en el [repositorio de GitHub](https://github.com/newrelic/elixir_agent/issues). - - \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx deleted file mode 100644 index 26434d04795..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/jenkins/monitoring-jenkins-ot.mdx +++ /dev/null @@ -1,258 +0,0 @@ ---- -title: Monitor Jenkins con OpenTelemetry y New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Jenkins - - Quickstart -metaDescription: Here is a simple example to setup the Jenkins OpenTelemetry plugin to send data to New Relic. -freshnessValidatedDate: never -translationType: machine ---- - -import opentelemetryJenkis01 from 'images/opentelemetry_screenshot-full_jenkins-01.webp' - -import opentelemetryIntegrationsJenkins02 from 'images/opentelemetry_screenshot-full_integrations-jenkins-02.webp' - -import opentelemetryIntegrationsJenkins03 from 'images/opentelemetry_screenshot-full_integrations-jenkins-03.webp' - -import opentelemetryOpentelemetryJenkins04 from 'images/opentelemetry_screenshot-full_opentelemetry-jenkins-04.webp' - -import opentelemetryJenkins05 from 'images/opentelemetry_screenshot-full_jenkins-05.webp' - -Monitor Jenkins con el [complemento OpenTelemetry](https://plugins.jenkins.io/opentelemetry) visualizando trabajos y ejecuciones de canalizaciones como [rastreo distribuido](/docs/distributed-tracing/concepts/introduction-distributed-tracing). También puede instalar el [inicio rápido](https://newrelic.com/instant-observability/jenkins) para obtener un dashboard prediseñado para monitor su canalización de Jenkins. - -Screenshot showing sample Jenkins dashboard in New Relic - -## Requisitos previos [#prerequisites] - -Primero debe instalar el complemento OpenTelemetry de Jenkins: - -1. Log en Jenkins. - -2. Desde el dashboard, haga clic en - - **Manage Jenkins** - - . - -3. En Configuración del sistema, haga clic en - - **Plugins** - - . - -4. Haga clic en la pestaña - - **Available plugins** - - y busque - - **OpenTelemetry** - - . - -5. Seleccione la casilla de verificación - - **OpenTelemetry** - - y - - **Install without restart** - - . - -6. Una vez completada la instalación, haga clic en - - **Manage Jenkins** - - . - -7. En - - **System Configuration** - - , haga clic en - - **System** - - . - -8. Desplácese hacia abajo y busque una sección llamada - - **OpenTelemetry** - - . Si no puede verlo, reinicie Jenkins. - -Screenshot showing Jenkins OpenTelemetry plugin - -## Configuración [#configuration] - -Necesita un [extremo OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-setup/#note-endpoints) de New Relic y un para configurar el complemento Jenkins OpenTelemetry para enviar datos a New Relic. - -Screenshot showing Jenkins OpenTelemetry configuration - -1. Ingrese un extremo OTLP. Por ejemplo, `https://otlp.nr-data.net:4317`. - -2. Para autenticación, seleccione - - **Header Authentication** - - : a. En el campo - - **Header Name** - - , ingrese - - **api-key** - - . b. En el campo - - **Header Value** - - , ingrese un texto secreto que contenga su clave de licencia de ingesta de New Relic. - -3. Guarde los cambios. - -Si no tiene un texto secreto creado con su clave de licencia de New Relic, haga clic en el botón **+ Add** y seleccione **Jenkins Credentials Provider** para crear uno. Puede mantener los valores predeterminados excepto **kind** y **secret** y el **description** es opcional. - -Screenshot showing Jenkins Credential Provider - -1. En el menú desplegable - - **Kind** - - , seleccione - - **Secret text** - - . - -2. En el campo - - **secret** - - , ingrese su clave de licencia de ingesta de New Relic. - -3. Opcionalmente, agregue una descripción para indicar para qué sirve el texto secreto. - -## Validación [#validation] - -Ejecute un trabajo o cree una nueva canalización para ver los datos de Jenkins en New Relic. A continuación se explica cómo construir una tubería: - -1. Log en Jenkins y haga clic en - - **New Item** - - . - -2. Introduzca un nombre de elemento, haga clic en - - **Pipeline** - - y luego - - **OK** - - . - -3. Desplácese hasta el final de la sección - - **Pipeline** - - . - -4. Utilice la script Pipeline y seleccione una opción del menú desplegable - - **try sample Pipeline...** - - . - -5. Clic en Guardar. - -6. En la canalización recién creada, haga clic en - - **Build Now** - - . - -7. Llegué a - - **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > Services - OpenTelemetry > jenkins** - - . - -8. Haga clic en - - **Distributed tracing** - - para visualizar trabajos y ejecuciones de canalizaciones. - -9. Haga clic en - - **Logs** - - para ver el registro de su consola Jenkins. Si no hay ningún registro, verifique que la variable de entorno `OTEL_LOGS_EXPORTER="otlp"` esté configurada. - -Screenshot showing Jenkins OpenTelemetry plugin - -## Instale el dashboard de inicio rápido de Jenkins [#quickstart] - -Después de haber enviado los datos de su canalización de Jenkins a New Relic, también puede monitor fácilmente sus trabajos y ejecuciones de canalización con el dashboard prediseñado de [New Relic Instant observabilidad](http://newrelic.com/instant-observability). Comience en minutos con un dashboard prediseñado para ver las métricas clave en una vista consolidada: - -1. Vaya al inicio rápido de Jenkins en [Observabilidad instantánea de New Relic](https://newrelic.com/instant-observability/jenkins) y haga clic en - - **+ Install now** - - . - -2. Seleccione una cuenta y haga clic en - - **Begin installation** - - . - -3. Si ya completó la [validación](#validation), seleccione - - **done** - - para pasar al siguiente paso. - -4. El inicio rápido desplegar los recursos a su cuenta. Haga clic en - - **see your data** - - para acceder al dashboard. - -Jenkins quickstart dashboard in New Relic - - - New Relic no mantiene el complemento Jenkins OpenTelemetry, por lo que si tiene algún problema con la instrumentación, [cree un nuevo problema en el repositorio de GitHub del complemento](https://github.com/jenkinsci/opentelemetry-plugin/issues). - - - \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx deleted file mode 100644 index ff5c3f96cf2..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/kamon/kamon-reporter.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Reportero kamon -tags: - - Integrations - - Open source telemetry integrations - - Kamon -metaDescription: New Relic's Kamon reporter can send telemetry data from your Kamon-instrumented applications to your New Relic account. -freshnessValidatedDate: never -translationType: machine ---- - -[Kamon](https://kamon.io/) proporciona un conjunto de herramientas de instrumentación que se especializa en instrumentación automática de aplicaciones Scala y Akka. Consta de API para instrumentación métrica y de rastreo y módulos de instrumentación automática que crean aplicación métrica y rastreo distribuida. - -Kamon también proporciona módulos de reportero para transferir telemetry data al backend de su elección. El reportero Kamon de New Relic está incluido en el paquete Kamon y puede configurarlo para enviar telemetry data desde su aplicación Kamon instrumentado a su cuenta de New Relic. - -## Habilitar reportero Kamon [#install] - -Para habilitar nuestro reportero Kamon: - -1. Si aún no lo ha hecho, [cree una cuenta New Relic](https://newrelic.com/signup). Es gratis, para siempre. - -2. Siga las [instrucciones de instalación de Kamon Reporter](https://kamon.io/docs/latest/reporters/newrelic/). - -3. Opcional: en lugar de utilizar el Kamon muestreo de trazas nativo, puede habilitar nuestra característica [Infinite Tracing](/docs/introduction-infinite-tracing) . Si utiliza esta opción, normalmente querrá configurar Kamon para que nos envíe todos los datos de la traza ([obtenga más información sobre el muestreo](/docs/distributed-tracing/concepts/how-new-relic-distributed-tracing-works)). Para habilitar el seguimiento infinito: - - 1. En la UI de New Relic, [configure un observador de trazas](/docs/infinite-tracing-set-trace-observer#set-up). - 2. Configure nuestro reportero Kamon para enviar datos al observador de traza: establezca el valor [`span-ingest-uri`](https://kamon.io/docs/latest/reporters/newrelic/) en [YOUR_TRACE_OBSERVER_URL](/docs/infinite-tracing-set-trace-observer#ui-endpoints) en su bloque de configuración `kamon.newrelic` . - - - -## Encuentra tus datos - -Para encontrar tus datos, ve a **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > All entities**. Busque su servicio por nombre. Proporcionamos una descripción general lista para usar que incluye gráficos de algunas de las métricas más útiles proporcionadas por la instrumentación Kamon. Si también estás enviando datos de rastreo distribuido, la característica **Distributed tracing** está disponible para consultar y ver la traza. - -Puede utilizar la descripción general lista para usar como punto de partida para crear su propio panel. Haga clic en el icono `...` en un gráfico para agregar ese gráfico a un dashboard o vea la consulta detrás del gráfico para modificarlo y agregarlo a su dashboard. - -Para obtener más información sobre cómo consultar sus datos una vez que estén en New Relic, consulte [consultar sus datos](/docs/using-new-relic/data/understand-data/query-new-relic-data) e [Introducción a NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql). - -## Recursos - -Nuestros recursos para reporteros de Kamon incluyen: - -* [Guía de instalación y configuración](https://kamon.io/docs/latest/reporters/newrelic/) (sitio Kamon) -* [Especificaciones de integración](https://github.com/newrelic/newrelic-exporter-specs/tree/master/kamon) (New Relic GitHub) \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx deleted file mode 100644 index 005f2f78f73..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/lampy/lampy-integration.mdx +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: Integración de monitoreo stack LAMPy -tags: - - New Relic integrations - - LAMPy - - Linux - - Apache - - Python - - MySQL -metaDescription: 'Use New Relic Linux, Apache, Python and MySQL monitoring to get a dashboard with metrics from your LAMPy application.' -freshnessValidatedDate: never -translationType: machine ---- - -import infrastructureLampyDashboard from 'images/infrastructure_screenshot-full_lampy-dashboard-1.webp' - -Nuestra integración LAMPy utiliza el agente de infraestructura, la integración MySQL, la integración Apache y el agente Python para brindarle un dashboard prediseñado con sus métricas más importantes, como el tiempo de respuesta, la utilización de la CPU, el tráfico y las frecuencias de inicio de sesión. - -A screenshot depicting the LAMPy prebuilt dashboard - -
- Después de configurar nuestra integración LAMPy, le brindamos un dashboard para su aplicación web LAMPy. -
- -## Paso 1: instalar el agente de infraestructura [#infra-install] - -Para hacer esto, siga [los pasos de instalación del agente de infraestructura](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux) para el host que contiene su aplicación LAMPy. - -## Paso 2: Instale la integración MySQL [#mysql-install] - -Nuestra integración LAMPy depende de la integración MySQL para funcionar. Para obtener más información y comprobar los requisitos, revise nuestros [documentos de MySQL](/install/mysql/). - -1. Desde [one.newrelic.com,](https://one.newrelic.com) haga clic en - - **Add data > Infrastructure & OS > MySQL** - - . - -2. Siga las instrucciones para instalar el agente MySQL. - -## Paso 3: instale la integración de Apache [#apache-install] - -Nuestra integración LAMPy depende de la integración de Apache para funcionar. Para obtener más información y comprobar los requisitos, consulte nuestros [documentos de Apache](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/). - -1. Desde [one.newrelic.com,](https://one.newrelic.com) haga clic en - - **Add data > Infrastructure & OS > Apache** - - . - -2. Siga las instrucciones en pantalla para instalar el agente Apache. - -## Paso 4: instalar el agente Python [#python-install] - -Nuestra integración LAMPy depende del agente Python para funcionar. Para obtener más información y comprobar los requisitos, consulte nuestros [documentos de Python](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/). - -1. Desde [one.newrelic.com,](https://one.newrelic.com) haga clic en **Add data > Application monitoring > Python**. - -2. Nombra tu aplicación. - -3. Descargue el archivo de configuración y colóquelo en el directorio raíz de su aplicación. - -4. Integre su agente Python que está conectado al sitio web de Django. Este agente Python también se ejecuta en el servidor Apache. - -5. Agregue esta línea a su archivo `settings.py` : - - ```py - NEW_RELIC_CONFIG_FILE = BASE_DIR / 'newrelic.ini' - ``` - -6. Agregue estas líneas a su archivo `wsgi.py` : - - ```py - import newrelic.agent - - from django.conf import settings - from django.core.wsgi import get_wsgi_application - - application = get_wsgi_application() - - newrelic.agent.initialize(settings.NEW_RELIC_CONFIG_FILE) - newrelic.agent.WSGIApplicationWrapper(application) - - ``` - -## Paso 5: reinicie su servidor Apache - -Espere unos minutos y luego proceda a buscar sus datos en New Relic. - -## Encuentra tus datos [#find-data] - -Para obtener su dashboard LAMPy: - -1. Desde [one.newrelic.com](https://one.newrelic.com), vaya a la [página](https://one.newrelic.com/marketplace) - - [**Add data**](https://one.newrelic.com/marketplace) - - [ ](https://one.newrelic.com/marketplace). - -2. Haga clic en - - **Dashboards** - - . - -3. En la barra de búsqueda, escriba `LAMPy`. - -4. Debería aparecer el dashboard de LAMPy. Haga clic en él para instalarlo. - -Su dashboard de LAMPy se considera un panel personalizado y se puede encontrar en la UI **Dashboards**. Para obtener documentos sobre el uso y edición del panel, consulte [nuestros documentos dashboard ](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards). - -Para obtener información sobre los datos reportados, consulte los documentos de cada una de las herramientas que instaló: - -* [Datos de linux](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux/) -* [Datos MySQL](/install/mysql/#metrics) -* [Datos de apache](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/) -* [Datos de Python](/docs/apm/agents/python-agent/getting-started/introduction-new-relic-python/) - -Si instaló el agente de infraestructura, también recibirá [datos de infraestructura](/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data/#infrastructure-events). - -Aquí hay un ejemplo de consulta NRQL para verificar los bytes enviados por solicitud: - -```sql -SELECT (average(`apache.server.net.bytesPerSecond`) / average(`apache.server.net.requestsPerSecond`)) as 'Bytes sent per request' -FROM Metric -TIMESERIES auto -``` - -## ¿Que sigue? [#whats-next] - -Para obtener más información sobre cómo consultar sus datos y crear un panel personalizado, consulte estos documentos: - -* [Introducción al generador de consultas](/docs/query-your-data/explore-query-data/query-builder/introduction-query-builder) -* [Introducción al panel personalizado](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards) -* [Administra tu dashboard](/docs/query-your-data/explore-query-data/dashboards/manage-your-dashboard) \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx deleted file mode 100644 index 706a31a0a21..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/micrometer/micrometer-metrics-registry.mdx +++ /dev/null @@ -1,147 +0,0 @@ ---- -title: Reenviar datos de Micrometer a New Relic con OpenTelemetry -metaDescription: New Relic offers an integration that sends your Micrometer telemetry data to your New Relic account. -freshnessValidatedDate: never -translationType: machine ---- - -import opentelemetryMicrometerWithOtel from 'images/opentelemetry_screenshot-full_micrometer-with-otel.webp' - -New Relic admite [datos de Micrometer](https://micrometer.io/) para que puedas ver toda tu observabilidad métrica en una sola plataforma. Configurará el [puente OpenTelemetry Micrometer](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/micrometer/micrometer-1.5/library) con el SDK de OpenTelemetry y luego utilizará el protocolo OpenTelemetry (OTLP) para reenviar los datos de su Micrometer a New Relic. - -A screenshot of the Micrometer summary page when instrumented with OpenTelemetry - -
- Vaya a **[one.newrelic.com](https://one.newrelic.com) > All Capabilities > APM & Services**, luego busque la sección **Services - OpenTelemetry** : vea los datos de su Micrometer en New Relic cuando esté conectado a través de OpenTelemetry -
- -## Compatibilidad y requisitos [#requirements] - -Antes de seguir estos procedimientos, debe: - -* Configurar el SDK OpenTelemetry métrica para [exportar datos a New Relic vía OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction/#how-it-works) -* Instale el puente OpenTelemetry Micrometer - -## Reenviar datos del Micrometer a New Relic [#forward-data-OpenTelemetry] - -Estos son pasos generalizados para configurar el reenvío Micrometer métrica. Es posible que desee actualizar el fragmento de código según sea necesario para adaptarlo a su entorno específico. - - - - ### Agregar instrumentación de OpenTelemetry Micrometer - - Agregue la instrumentación de OpenTelemetry Micrometer a la sección de módulos alfa de su archivo `build.gradle` : - - ```groovy - //Alpha modules - implementation 'io.opentelemetry.instrumentation:opentelemetry-micrometer-1.5' - ``` - - - - ### Agregar dependencia OpenTelemetry - - En la sección `dependencies` , agregue el SDK de OpenTelemetry y el exportador OTLP: - - ```groovy - dependencies { - implementation 'io.opentelemetry:opentelemetry-sdk' - implementation 'io.opentelemetry:opentelemetry-exporters-otlp' - } - ``` - - Un archivo de ejemplo con módulos alfa y dependencias agregadas podría verse así: - - ```groovy - plugins { - id 'java-library' - id 'org.springframework.boot' - } - - bootRun { - mainClass.set 'io.opentelemetry.example.micrometer.Application' - } - - dependencies { - implementation platform("io.opentelemetry:opentelemetry-bom-alpha:JAVA_OTEL_VERSION") - implementation 'io.opentelemetry:opentelemetry-sdk' - implementation 'io.opentelemetry:opentelemetry-exporters-otlp' - - implementation platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:OTEL_JAVA_INSTRUMENTATION_VERSION") - implementation 'io.opentelemetry.instrumentation:opentelemetry-micrometer-1.5' - } - ``` - - Tenga en cuenta que deberá actualizar el fragmento con la versión correcta. - - - - ### Configurar Micrometer para reenviar datos a New Relic - - A continuación se muestra un fragmento de código de ejemplo que indica a Micrometer que utilice el puente OpenTelemetry Micrometer. - - Este fragmento actualiza su código para que OpenTelemetry pueda detectar datos de Micrometer y luego reenviar esos datos a New Relic: - - ```java - public OpenTelemetry openTelemetry() { - return OpenTelemetrySdk.builder() - .setMeterProvider( - SdkMeterProvider.builder() - .setResource( - Resource.getDefault() - .toBuilder() - .put("service.name", "micrometer-shim") - // Include instrumentation.provider=micrometer to enable - // micrometer metrics experience in New Relic - .put("instrumentation.provider", "micrometer") - .build()) - .registerMetricReader( - PeriodicMetricReader.builder( - OtlpHttpMetricExporter.builder() - .setEndpoint("https://otlp.nr-data.net") - .addHeader("api-key", - Optional - .ofNullable(System.getenv("NEW_RELIC_LICENSE_KEY")) - .filter(str -> !str.isEmpty() && !str.isBlank()) - .orElseThrow()) - // IMPORTANT: New Relic exports data using delta - // temporality rather than cumulative temporality - .setAggregationTemporalitySelector( - AggregationTemporalitySelector - .deltaPreferred()) - // Use exponential histogram aggregation for - // histogram instruments to produce better data - // and compression - .setDefaultAggregationSelector( - DefaultAggregationSelector.getDefault().with( - InstrumentType.HISTOGRAM, - Aggregation.base2ExponentialBucketHistogram())) - .build()) - // Match default micrometer collection interval of 60 - // seconds - .setInterval(Duration.ofSeconds(60)) - .build()) - .build()) - .build(); - } - ``` - - - - ### Encuentra tus datos en New Relic - - Espere unos minutos, active algunos datos de prueba, luego vaya a **[one.newrelic.com](https://one.newrelic.com) > All Capabilities > APM & Services**, luego busque **Services - OpenTelemetry** para elegir el servicio instrumentado con Micrometer. - - - -## ¿Que sigue? [#whats-next] - -Para obtener más información sobre el uso de New Relic con datos de Micrometer, recomendamos estos documentos: - -* Aprenda a crear [visualizaciones personalizadas con el panel](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards) -* [Configure algunas alertas](/docs/tutorial-create-alerts/create-an-alert) para realizar un seguimiento del rendimiento del sistema -* [Consulta tus datos con NRQL](/docs/nrql/get-started/introduction-nrql-how-nrql-works) \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx deleted file mode 100644 index 8a00d377a22..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs.mdx +++ /dev/null @@ -1,207 +0,0 @@ ---- -title: Registro OpenTelemetry en New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Logs -metaDescription: Details on how New Relic works with OpenTelemetry logs -freshnessValidatedDate: '2024-05-17T00:00:00.000Z' -translationType: machine ---- - -Esta documentación se centra en cómo New Relic procesa el registro OpenTelemetry recibido a través de su extremo OTLP dedicado. - -Hay dos flujos de trabajo típicos para enviar registros OpenTelemetry a New Relic: - -* [Directo al recolector](https://opentelemetry.io/docs/specs/otel/logs/#direct-to-collector): - - * La aplicación puede enviar el registro directamente al New Relic OTLP endpoint. - * Consulte la [documentación del lenguaje OpenTelemetry](https://opentelemetry.io/docs/languages/) relevante para obtener detalles de implementación específicos y [el monitoreo de OpenTelemetry APM](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro/) para obtener detalles sobre los servicios de monitoreo con New Relic. - -* [A través de archivo o `stdout`](https://opentelemetry.io/docs/specs/otel/logs/#via-file-or-stdout-logs): - - * Este método implica extraer el registro de aplicación escrito en archivos o salida estándar (`stdout`). - - * El recolector OpenTelemetry se emplea normalmente para esta tarea. Luego, los troncos raspados se envían al OTLP New Relic endpoint. - - * Puede encontrar información de configuración detallada en los siguientes recursos de OpenTelemetry: - - * [Recolector OpenTelemetry](https://opentelemetry.io/docs/collector/) - * [Receptor de registros de archivos con Kubernetes](https://opentelemetry.io/docs/kubernetes/collector/components/#filelog-receiver) - * [Un ejemplo práctico que demuestra este flujo de trabajo para una aplicación Java usando Log4j2](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/java/logs-in-context-log4j2) - -Independientemente del método de recopilación elegido, una integración exitosa requiere configurar su fuente log para exportar registros a este extremo. Cerciorar de revisar los [requisitos de configuración extrema](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#configure-endpoint-port-protocol) antes de continuar. - -## Mapeo de registro log OTLP [#otlp-log-mapping] - -New Relic asigna log de OTLP al tipo de datos `Log`. La siguiente tabla describe cómo los campos del [mensaje proto`LogRecord` ](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/logs/v1/logs.proto)se asignan a New Relic `Log`: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Campo OTLP `logs.proto` - - Campo New Relic `Log` -
- `ResourceLogs.Resource.attributes` - - Cada valor principal es un atributo en el campo `Log` **\[1]** -
- `ScopeLogs.InstrumentationScope.name` - - `otel.library.name` -
- `ScopeLogs.InstrumentationScope.version` - - `otel.library.version` -
- `ScopeLogs.InstrumentationScope.attributes` - - Cada valor principal es un atributo en el campo `Log` **\[1]** -
- `LogRecord.time_unix_nanos` - - `timestamp` **\[2]** -
- `LogRecord.severity_number` - - `severity.number` -
- `LogRecord.severity_text` - - `severity.text` -
- `LogRecord.body` - - `message`, y posiblemente atributo analizado **\[3]** -
- `LogRecord.attributes` - - Cada valor principal es un atributo en el campo `Log` **\[1]** -
- `LogRecord.dropped_attribute_count` - - `otel.dropped_attributes_count` -
- `LogRecord.flags` - - `w3c.flags` (entero) -
- `LogRecord.trace_id` - - `trace.id` -
- `LogRecord.span_id` - - `span.id` -
- -### Notas a pie de tabla [#otlp-mapping-notes] - -**\[1]** En caso de conflicto en el atributo de recurso, el atributo de alcance, el atributo de registro log , los campos de registro log de nivel superior y el atributo analizado de `LogRecord.body` **\[3]**, el orden del precedente (de mayor a menor) es: atributo analizado de `LogRecord.body` -> campos de nivel superior `LogRecord.*` > `LogRecord.attributes` > `ScopeLogs.InstrumentationScope.attributes` > `ResourceLogs.Resource.attributes`. - -**\[2]** Si `LogRecord.time_unix_nanos` no está presente, `timestamp` se establece en la hora en que New Relic recibió los datos. - -**\[3]** [El análisis de registros](/docs/logs/ui-data/parsing/) se aplica a `LogRecord.body` para intentar extraer el atributo del texto log sin formato. Por ejemplo, si se emplea un formato log estructurado JSON, el valor principal se convierte en atributo en el log resultante. Esto es particularmente útil cuando se recopilan registros de archivos o `stdout`. En este caso, es común no tener ningún atributo de recurso asociado con el log (requerido para [la correlación del servicioAPM ](#service-correlation)) y ningún valor para `LogRecord.trace_id` / `LogRecord.span_id` (requerido para [la correlación de traza](#trace-correlation)). La correlación funcionará según lo previsto si los campos obligatorios se pueden analizar correctamente. - -## Correlación con el servicio OpenTelemetry APM [#service-correlation] - -log se correlacionan con una entidad de servicio si incluyen el [atributo requerido](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/#required-attributes). Normalmente, estos provienen del atributo de recurso del log, como `ResourceLogs.Resource.attributes`, pero también se pueden analizar desde `LogRecord.body` como se describe en [la nota al pie n.° 3 del mapeo de OTLP](#otlp-mapping-notes). - -Para ver el registro de un servicio, navegue hasta la [página de registro](/docs/logs/ui-data/use-logs-ui/) de ese servicio. - -## Correlación con trazas [#trace-correlation] - -Log se correlacionan con una traza si `trace.id` y `span.id` atributo se pueden resolver. Normalmente, estos provienen de los campos `LogRecord.trace_id` y `LogRecord.span_id` , pero también se pueden analizar desde `LogRecord.body` como se describe en la nota al pie 3 del [mapeo OTLP](#otlp-mapping-notes). - -Para ver el registro registrado en el contexto de una traza particular, tiene dos opciones: - -* Navegue a la pestaña de **Logs** dentro de la [página de detalles de la traza](/docs/distributed-tracing/ui-data/trace-details/#view-your-logs). -* Navegue a la [página de registro](/docs/logs/ui-data/use-logs-ui/) de un servicio y haga clic en un log para abrir los detalles log. Si está asociado a una traza, podrás navegar desde los **Log details** hasta los **Trace details**. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx deleted file mode 100644 index 778342621dd..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics.mdx +++ /dev/null @@ -1,458 +0,0 @@ ---- -title: Métricas de OpenTelemetry en New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Details on how New Relic works with OpenTelemetry metrics -freshnessValidatedDate: '2024-05-23T00:00:00.000Z' -translationType: machine ---- - -OpenTelemetry proporciona un [modelo de datos](https://opentelemetry.io/docs/specs/otel/metrics/data-model/) métrico dimensional, una [API](https://opentelemetry.io/docs/specs/otel/metrics/api/) para registrar telemetría métrica y un [SDK](https://opentelemetry.io/docs/specs/otel/metrics/sdk/) para agregar y exportar datos métricos. - -Esta página describe cómo New Relic maneja OpenTelemetry métrica que recibe a través del [extremo OTLPNew Relic ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp). La integración de OpenTelemetry métrica con New Relic requiere configurar la fuente métrica para exportar a este extremo; revise los requisitos de configuración del extremo. Para información sobre la configuración de servicios con OpenTelemetry métrica consulte [OpenTelemetry APM monitoreo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro). - -## Tipo de instrumento para mapeo tipo métrica [#instrument-mapping] - -La OpenTelemetry métrica API define [varios tipos de instrumentos](https://opentelemetry.io/docs/specs/otel/metrics/api/#instrument). mediciones de registro instrumentado, que se agregan y exportan a través de OTLP como un tipo métrico particular. La siguiente tabla describe el comportamiento predeterminado sobre cómo cada instrumento OpenTelemetry agrega y exporta. Consulte [OTLP métrica mapeo](#otlp-mapping) para obtener detalles sobre cómo se trata cada tipo de métrica en New Relic. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Tipo de instrumento - - Uso de ejemplo - - Agregación predeterminada - - Tipo de métrica exportada -
- [`Counter`](https://opentelemetry.io/docs/specs/otel/metrics/api/#counter) - - Bytes procesados - - [Suma](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#sum-aggregation) - - [`Sum` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L217-L226), con `is_monotonic=true` -
- [Contador asincrónico](https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-counter) - - Observe el tiempo total de CPU del proceso - - [Suma](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#sum-aggregation) - - [`Sum` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L217-L226), con `is_monotonic=true` -
- [`UpDownCounter`](https://opentelemetry.io/docs/specs/otel/metrics/api/#updowncounter) - - Artículos en una cola - - [Suma](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#sum-aggregation) - - [`Sum` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L217-L226), con `is_monotonic=false` -
- [UpDownCounter asincrónico](https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-updowncounter) - - Observe el uso actual de la memoria - - [Suma](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#sum-aggregation) - - [`Sum` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L217-L226), con `is_monotonic=false` -
- [`Histogram`](https://opentelemetry.io/docs/specs/otel/metrics/api/#histogram) - - Duración de las solicitudes http - - [Histograma de cubo explícito](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#explicit-bucket-histogram-aggregation) - - [`Histogram` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L230-L236) **\[1]** -
- [`Gauge`](https://opentelemetry.io/docs/specs/otel/metrics/api/#gauge) - - Cambiar evento para la velocidad del ventilador de la CPU - - [Último valor](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#last-value-aggregation) - - [`Gauge` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L211-L213) -
- [Medidor asincrónico](https://opentelemetry.io/docs/specs/otel/metrics/api/#asynchronous-gauge) - - Observe la temperatura ambiente actual - - [Último valor](https://opentelemetry.io/docs/specs/otel/metrics/sdk/#last-value-aggregation) - - [`Gauge` métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L211-L213) -
- -Consulte [las pautas complementariasOpenTelemetry métrica](https://opentelemetry.io/docs/specs/otel/metrics/supplementary-guidelines/) para obtener detalles sobre cómo elegir el tipo de instrumento correcto. - -**\[1]** El histograma instrumentado también se puede agregar al histograma métrico exponencial. Consulte [el histograma métrico de OTLP](#otlp-histogram) para obtener más detalles. - -## Mapeo de métrica OTLP [#otlp-mapping] - -New Relic asigna OTLP métrica al [tipo de datos`Metric` ](https://docs.newrelic.com/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types). La siguiente tabla describe cómo se interpretan los campos de los [protomensajes métricos](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/metrics/v1/metrics.proto). Consulte [tipo de instrumento a tipo métrico](#instrument-mapping) para obtener detalles sobre cómo los SDK/OpenTelemetry API producen los distintos tipos de métrica. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Protocampo métrico OTLP - - Campo New Relic `Metric` -
- `ResourceMetrics.Resource.attributes` - - Cada valor principal es un atributo en el `Metric`**\[1]** -
- `ScopeMetrics.InstrumentationScope.name` - - `otel.library.name` -
- `ScopeMetrics.InstrumentationScope.version` - - `otel.library.version` -
- `ScopeMetrics.InstrumentationScope.attributes` - - Cada valor principal es un atributo en el `Metric`**\[1]** -
- `Metric.name` - - `metricName` -
- `Metric.description` - - `description` -
- `Metric.unit` - - `unit` -
- `Metric.*.data_points.start_time_unix_nano` - - `timestamp` -
- `Metric.*.data_points.time_unix_nano` - - `endTimestamp` -
- `Metric.*.data_points.attributes` - - Cada valor principal es un atributo en el `Metric`**\[1]** -
- `Metric.gauge.data_points` - - Mapas de New Relic [`gauge`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) -
- `Metric.sum.data_points` - - Mapas de New Relic [`count`, `cumulativeCount` o `gauge`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) - - Ver [métricas OTLP sum](#otlp-sum) -
- `Metric.histogram.data_points` - - Mapas de New Relic [`distribution`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) - - Ver [histograma métrico OTLP](#otlp-histogram) -
- `Metric.exponential_histogram.data_points` - - Mapas de New Relic [`distribution`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) - - Ver [histograma métrico OTLP](#otlp-histogram) -
- `Metric.summary.data_points` - - Mapas de New Relic [`summary`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) - - Ver [resumen OTLP métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L254-L256) -
- -**\[1]**: En caso de conflicto en los campos atributo de recurso, atributo alcance, atributo punto métrico y campos métricos de nivel superior, el orden de precedente (de mayor a menor) es: campos `Metric.*` de nivel superior > `Metric.*.data_points.attributes` > `ScopeMetrics.InstrumentationScope.attributes` > `ResourceMetrics.Resource.attributes`. - -### Métrica OTLP sum [#otlp-sum] - -OTLP [suma métrica](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L217-L226) representa la suma de medidas a lo largo del tiempo. Las sumas incluyen un campo [`aggregation_temporality`](#aggregation-temporality) y un campo `is_monotonic` , que indica si los valores aumentan monótonamente (es decir, solo pueden subir) o no (es decir, pueden subir y bajar). La siguiente tabla describe cómo New Relic trata las diferentes variedades de suma: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- `is_monotonic` - - `aggregation_temporality` - - Comportamiento -
- `true` - - `cumulative` - - Mapas de New Relic [`cumulativeCount`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) -
- `true` - - `delta` - - Mapas de New Relic [`count`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) -
- `false` - - `cumulative` - - Mapas de New Relic [`gauge`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types) -
- `false` - - `delta` - - No se admite porque los datos no son significativos. Vea [esta discusión](https://github.com/open-telemetry/opentelemetry-specification/pull/2314#pullrequestreview-877408961) para más detalles. -
- -### Histograma métrico OTLP [#otlp-histogram] - -[El histograma métrico](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L230-L236) OTLP y [el histograma métrico exponencial](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L240-L246) resumen una población de mediciones con información como suma, recuento, mínimo, máximo y depósitos que describen la distribución de los valores de medición. La variedad de histograma (también llamado histograma de depósito explícito) tiene depósitos con límites explícitos. La variedad exponencial tiene categorías con límites descritos por una fórmula exponencial. Ambas variedades incluyen un campo [de temporalidad de agregación](#aggregation-temporality). - -Ambas variedades de histograma se traducen a New Relic [`distribution`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types), que está respaldado por una representación interna de histograma exponencial de base 2. Esta representación refleja fielmente el formato de histograma exponencial de OpenTelemetry. Por esta razón, New Relic prefiere el histograma exponencial (consulte [Agregación de mistogramas métricos](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#metric-mistogram-aggregation) para obtener detalles sobre cómo configurar OTLP para preferir el histograma exponencial). La variedad de histograma de depósito explícito de OpenTelemetry se traduce a la representación exponencial mediante interpolación lineal. Consulte [NrSketch](https://github.com/newrelic-experimental/newrelic-sketch-java#new-relic-sketch) para obtener una explicación detallada. - -Los depósitos con límites en el infinito negativo y positivo se representan en New Relic como depósitos de ancho cero. Por ejemplo, un depósito de OpenTelemetry con límites `[-∞, 10)` se representa en New Relic como `[10, 10)`. Como resultado, es posible que vea recuentos de depósitos exagerados al final de su distribución. - -### Métrica de resumen OTLP [#otlp-summary] - -[Las métricas resumidas](https://github.com/open-telemetry/opentelemetry-proto/blob/a05597bff803d3d9405fcdd1e1fb1f42bed4eb7a/opentelemetry/proto/metrics/v1/metrics.proto#L254-L256) de OTLP son similares al histograma en que resumen una población de medidas, incluida la suma y el conteo. Sin embargo, cuando los histogramas incluyen categorías para describir la distribución de las mediciones, los resúmenes incluyen cuantiles. Estos cuantiles son de uso limitado ya que no pueden sufrir reagregación espacial o temporal. Los resúmenes incluidos en OpenTelemetry para legacy soporte , y OpenTelemetry API y el SDK no producen resúmenes. - -Los resúmenes están traducidos a New Relic [`summary`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types). - -## Temporalidad de agregación [#aggregation-temporality] - -La OpenTelemetry noción de [temporalidad de](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#temporality) agregación define si un punto de datos métrico individuo agrega un conjunto acumulativo de mediciones (generalmente desde el inicio de la aplicación) o el conjunto delta de mediciones desde la última exportación. OTLP [sum métrica](#otlp-sum) y [histograma métrica](#otlp-histogram) tienen un campo `aggregation_temporality` que describe la semántica de sus puntos. - -Aunque aceptamos tanto la temporalidad métrica acumulativa como la delta, New Relic es generalmente un sistema delta métrica, y recomendamos al usuario que [configure su exportador OTLP para que prefiera la temporalidad delta](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#metric-aggregation-temporality). - -Cuando la temporalidad es acumulativa, las métricas se convierten en una representación delta (con el valor acumulativo retenido para [`cumulativeCount`](/docs/data-apis/understand-data/metric-data/metric-data-type/#metric-types), el uso de una traducción con estado es un proceso con estado en el que se calcula el delta a partir de dos puntos acumulativos consecutivos del mismo serial. El `Metric.*.data_points.start_time_unix_nano` se emplea para detectar reinicios de seriales. - -## Apoyo de ejemplares [#exemplars] - -[Ejemplares](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#exemplars) métricos de OpenTelemetry no son actualmente compatibles con New Relic. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx deleted file mode 100644 index 51229bbbc47..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources.mdx +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: Recursos de OpenTelemetry en New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Details on how New Relic works with OpenTelemetry resources -freshnessValidatedDate: '2024-05-08T00:00:00.000Z' -translationType: machine ---- - -Todos los datos de OpenTelemetry están asociados con un [recurso](https://opentelemetry.io/docs/concepts/resources). Un recurso es una representación de la entidad que produce telemetría como atributo de recurso. Los atributos de recurso se emplean para adaptar un recurso a New Relic la noción de [entidad](/docs/new-relic-solutions/new-relic-one/core-concepts/what-entity-new-relic). - -Los datos recibidos se asocian con una entidad a través de un proceso llamado [síntesis de entidades](/docs/entities/synthesis/) mediante el cual el atributo de recurso presente se compara con reglas que determinan el tipo de entidad a la que se asociarán los datos. Para los datos obtenidos de OpenTelemetry, las reglas de síntesis de entidades están diseñadas para respetar las OpenTelemetry [convenciones semánticas de recursos](https://opentelemetry.io/docs/specs/semconv/resource) de . - -Las convenciones semánticas de recursos definen diferentes cuerpos de convenciones para describir diferentes tipos de entidad. Por ejemplo, las convenciones [de servicio](https://opentelemetry.io/docs/specs/semconv/resource/#service) y [host](https://opentelemetry.io/docs/specs/semconv/resource/host/) definen el atributo de recurso que describe una instancia de servicio u host, respectivamente. - -## Tipos de entidad admitidos [#supported-entity-types] - -Aquí se describen los tipos de entidad New Relic que son compatibles cuando se emplea la instrumentación OpenTelemetry . Para cada tipo de entidad admitida se incluyen: - -* El atributo de recurso requerido para la síntesis de entidades. -* Atributo recomendado que impulsa ciertos aspectos de la New Relic UI. -* Atributo que se convierte en [entidad etiqueta](/docs/new-relic-solutions/new-relic-one/core-concepts/use-tags-help-organize-find-your-data/), cuando está presente. - -### Servicios [#services] - -Una entidad de servicio se sintetiza siguiendo las convenciones semánticas de recursos de OpenTelemetry que describen una [instancia de servicio](https://opentelemetry.io/docs/specs/semconv/resource/#service). - -Consulte nuestra [documentación y ejemplos](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-set-up-your-app) para monitorear entidades de servicios usando OpenTelemetry. - -#### Atributo requerido [#service-required-attributes] - -* [`service.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/service): el nombre del servicio que ves en la UI proviene de este valor. - -#### Atributo recomendado [#service-recommended-attributes] - -* [`service.instance.id`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/service): habilita el facetado entre varias instancias del mismo servicio. -* [`telemetry.sdk.language`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/telemetry): cuando está presente, este valor controla la visualización de cualquier UI específica del tiempo de ejecución, como la página de tiempo de ejecución JVM para la aplicación Java. - -#### Entidad etiqueta [#service-entity-tags] - -* [`service.namespace`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/service) -* [`telemetry.sdk.language`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/telemetry) (agregado como etiqueta de idioma) -* [`telemetry.sdk.version`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/telemetry) -* [`k8s.cluster.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/k8s) -* [`k8s.namespace.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/k8s) -* [`k8s.deployment.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/k8s) - -### Hospedadores [#hosts] - -Una entidad de host se sintetiza siguiendo las convenciones semánticas de recursos de OpenTelemetry que describen un [host](https://opentelemetry.io/docs/specs/semconv/resource/host). - -Consulte el ejemplo de monitoreo de host en [recolector de monitoreo de infraestructura](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro/) para obtener más detalles. - -#### Atributo requerido [#host-required-attributes] - -* [`host.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host): el nombre de host que ves en la UI proviene de este valor. -* [`host.id`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) - -#### Entidad etiqueta [#host-entity-tags] - -* [`cloud.provider`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`cloud.account.id`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`cloud.region`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`cloud.availability_zone`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`cloud.platform`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`host.id`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`host.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`host.type`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`host.arch`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`host.image.name`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`host.image.id`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`host.image.version`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) - -### Instancia Redis [#redis] - -Una instancia Redis se sintetiza empleando datos emitidos desde el recolector [receptor Redis](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/redisreceiver). Desafortunadamente, actualmente no existen convenciones semánticas para la instancia Redis ni atributos de identificación en la métrica que emite el receptor Redis . Por lo tanto, el usuario debe incluir manualmente el atributo que se describe a continuación. - -Consulte el ejemplo Redis en [recolector de monitoreo de infraestructura](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro/) para obtener más detalles. - -#### Atributo requerido [#redis-required-attributes] - -* [`server.address`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/): el nombre de la instancia Redis que ves en la UI proviene de este valor. -* [`server.port`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/) - -#### Entidad etiqueta [#redis-entity-tags] - -* `redis.version` -* `redis.role` -* [`host.type`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/host) -* [`cloud.provider`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`cloud.account.id`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* [`cloud.region`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/cloud) -* `instrumenation.name` -* [`server.address`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/) -* [`server.port`](https://opentelemetry.io/docs/specs/semconv/attributes-registry/server/) - -## Relaciones entre entidades soportadas [#supported-entity-relationships] - -New Relic soporta relaciones entre entidades provenientes de la instrumentación OpenTelemetry . Estas relaciones se sintetizan automáticamente cuando se cumplen los criterios de relación adecuados. A continuación se detallan las relaciones que se admiten actualmente y sus criterios requeridos. - -### Servicio de hospedaje [#service-to-host] - -Las relaciones entre un servicio y una entidad host requieren que el servicio incluya el atributo de recurso `host.id` y que coincida con el `host.id` del host en el que se ejecuta. - -## Agregar una etiqueta personalizada a una entidad [#tags] - -Puedes usar etiqueta para organizar y filtrar tu entidad en la UI. [etiqueta](/docs/new-relic-solutions/new-relic-one/core-concepts/use-tags-help-organize-find-your-data/) son pares de valores principales, por ejemplo `team: operations`, agregados a varios conjuntos de datos, como aplicaciones de monitoreo y hosts. Ciertos atributos importantes están disponibles automáticamente como etiqueta, como el ID de cuenta; También puedes agregar tu propia etiqueta personalizada [directamente en la UI](/docs/new-relic-solutions/new-relic-one/core-concepts/use-tags-help-organize-find-your-data/#add-tags) o con uno de los métodos siguientes. - -Agregar un atributo de recurso con el prefijo `tags` dará como resultado una etiqueta en su entidad en New Relic. Por ejemplo, agregar el atributo `tags.mytag=myvalue` dará como resultado la etiqueta de entidad `mytag=myvalue`. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx deleted file mode 100644 index f5472f6f4e1..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces.mdx +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: Trazas de OpenTelemetry en New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Details on how New Relic works with OpenTelemetry traces -freshnessValidatedDate: '2024-05-23T00:00:00.000Z' -translationType: machine ---- - -OpenTelemetry proporciona un rico ecosistema de rastreo, con una [API](https://opentelemetry.io/docs/specs/otel/trace/api/) para registrar traza telemetría, un [SDK](https://opentelemetry.io/docs/specs/otel/trace/sdk/) para exportar datos de tramo y [distribución del contexto](https://opentelemetry.io/docs/specs/otel/context/api-propagators/) para rastrear a través de los límites de las aplicaciones. - -Esta página describe cómo New Relic maneja los tramos OpenTelemetry que recibe a través del [extremo OTLP New Relic ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp). La integración de trazas de OpenTelemetry con New Relic requiere configurar la fuente de traza para exportar a este extremo; revise los requisitos de configuración del extremo. Para obtener información sobre la configuración de servicios con trazas de OpenTelemetry, consulte [OpenTelemetry APM monitoreo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro). - -## Mapeo de tramo OTLP [#otlp-mapping] - -New Relic asigna extensiones de OTLP al tipo de datos `Span`. La siguiente tabla describe cómo se interpretan los campos del [mensaje Span proto](https://github.com/open-telemetry/opentelemetry-proto/blob/main/opentelemetry/proto/trace/v1/trace.proto) : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Protocampo de tramo OTLP - - Campo New Relic `Span` -
- `ResourceSpans.Resource.attributes` - - Cada valor principal es un atributo en el `Span` **\[1]** -
- `ScopeSpans.InstrumentationScope.name` - - `otel.library.name` -
- `ScopeSpans.InstrumentationScope.version` - - `otel.library.version` -
- `ScopeSpans.InstrumentationScope.attributes` - - Cada valor principal es un atributo en el `Span` **\[1]** -
- `Span.trace_id` - - `trace.id` -
- `Span.span_id` - - `id` -
- `Span.trace_state` - - `w3c.tracestate` -
- `Span.parent_span_id` - - `parent.id` -
- `Span.name` - - `name` -
- `Span.kind` - - `span.kind` -
- `Span.start_time_unix_nano` - - `timestamp` -
- `Span.end_time_unix_nano` - - `druation.ms` (calcular con `Span.start_time_unix_nano` -
- `Span.attributes` - - Cada valor principal es un atributo en el `Span` **\[1]** -
- `Span.dropped_attribute_count` - - `otel.dropped_attributes_count` -
- `Span.events` - - Cada evento se registra como `SpanEvent` con `span.id` / `trace.id` haciendo referencia al intervalo de origen, el recuento se almacena como `nr.spanEventCount` -
- `Span.events[*].time_unix_nano` - - Almacenado como `timestamp` el `SpanEvent` -
- `Span.events[*].name` - - Almacenado como `name` el `SpanEvent` -
- `Span.events[*].attributes` - - Cada valor principal se almacena como un atributo en `SpanEvent` -
- `Span.events[*].dropped_attributes_count` - - Almacenado como `ote.dropped_Attributes_count` el `SpanEvent` -
- `Span.dropped_events_count` - - `otel.dropped_events_count` -
- `Span.status.message` - - `otel.status_description` -
- `Span.status.code` - - `otel.status_code` -
- -### Notas a pie de tabla [#otlp-mapping-notes] - -**\[1]** En caso de conflicto en los campos atributo de recurso, atributo de alcance, atributo span y span de nivel superior, el orden de precedente (de mayor a menor) es: campos `Span.*` de nivel superior > `Span.attributes` > `ScopeSpans.InstrumentationScope.attributes` > `ResourceSpans.Resource.attributes`. - -## Soporte de enlaces de extensión [#span-links-support] - -Actualmente, New Relic no admite [enlaces de tramo](https://opentelemetry.io/docs/concepts/signals/traces/#span-links) de OpenTelemetry. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx deleted file mode 100644 index ab31940b5ab..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview.mdx +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: Datos de OpenTelemetry en New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - OTLP -metaDescription: Overview of OpenTelemetry data in New RElic -freshnessValidatedDate: '2024-05-31T00:00:00.000Z' -translationType: machine ---- - -OpenTelemetry tiene un rico ecosistema de instrumentación y herramientas que se pueden integrar con New Relic a través de [OTLP](https://opentelemetry.io/docs/specs/otlp/). Esta documentación describe cómo New Relic recibe, procesa e ingiere datos OTLP. Consulte [Introducción a OpenTelemetry y New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro/) para obtener información sobre patrones de integración comunes. - -[New Relic OTLP extremo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/) describe los requisitos de configuración de OTLP relevantes para cualquier integración OpenTelemetry con New Relic, junto con información [sobre resolución de problemas](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting/) . - -OTLP se divide en señales traza, métrica y log , todas las cuales incluyen el concepto de recursos. Consulte las siguientes páginas para obtener detalles sobre cómo se procesa e ingiere cada uno: - -* [Trazas de OpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces/) -* [Métricas de OpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics/) -* [Registro OpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-logs/) -* [Recursos de OpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/) - -Todos los datos de OTLP se incorporan a la [plataforma New Relic](/docs/new-relic-solutions/new-relic-one/introduction-new-relic-platform/), que incluye muchas herramientas poderosas de observabilidad de propósito general para ayudarlo a identificar y diagnosticar problemas, que incluyen: - -* [Alertas](/docs/alerts-applied-intelligence/overview/): Recibe información cuando una señal supera un umbral. -* [Consulta personalizada](/docs/query-your-data/explore-query-data/get-started/introduction-querying-new-relic-data/): escriba una consulta NRQL personalizada para el análisis y la exploración de datos ad hoc. -* [Panel de control](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/): cree visualizaciones de datos personalizadas que reflejen los requisitos únicos de su aplicación. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx deleted file mode 100644 index 80590c75f7d..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting.mdx +++ /dev/null @@ -1,67 +0,0 @@ ---- -title: Resolución de problemas New Relic OTLP -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - OTLP - - Troubleshoot -metaDescription: Troubleshoot common OTLP ingest errors -freshnessValidatedDate: '2024-05-06T00:00:00.000Z' -translationType: machine ---- - -New Relic apoyó [la ingesta nativa de OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/) durante varios años. En el proceso de trabajar en los casos de soporte que surgen de vez en cuando, aprendimos sobre los problemas comunes que enfrentan los usuarios. Para algunos, el problema es fácil de identificar y solucionar. Otros son tortuosamente complicados, dado que Internet no es confiable y hay muchos componentes (software, redes, hardware, etc.) involucrados bajo el control de varias partes, como clientes, New Relic e infraestructura de redes públicas fuera del control de cualquiera de ellos. . Con tanta complejidad, configuración y puntos de falla, puede resultar difícil determinar cuál es el culpable y cuál es la mejor manera de abordarlo. - -Trabajar en un caso de soporte puede llevar mucho tiempo y, en ocasiones, resultar frustrante para los clientes (¡y para New Relic!). Por lo tanto, elaboramos esta guía de resolución de problemas para ayudar a establecer un entendimiento compartido y brindar herramientas para autodiagnosticar y solucionar problemas cuando sea posible. - -Primero, revise [los requisitos y recomendaciones de configuración de New Relic OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/). Contiene consejos y contexto esenciales que cualquiera que desee emplear OTLP con New Relic debe conocer. - -A continuación, consulte las secciones siguientes: - -* [Resolución general de problemas](#general-troubleshooting): resolución de problemas para cuestiones generales de OTLP -* [Catálogo de problemas](#issue-catalog): problemas comunes de los clientes y medidas de mitigación - -## Resolución general de problemas [#general-troubleshooting] - -Cuando tenga un problema con el extremo OTLP New Relic , primero siga estos pasos básicos de resolución de problemas. Si terminas abriendo un de ticket soporte, estas son las primeras cosas que te preguntamos: - -1. **Habilite logs de diagnóstico.** Cerciorar de que su cliente OTLP tenga habilitado el logging de modo que pueda ver detalles sobre cualquier error que pueda estar ocurriendo. El mecanismo para habilitar el log varía según la implementación. Consulte los documentos relevantes. -2. **Pruebe que el extremo OTLP de New Relic sea accesible.** Un simple comando de shell `curl http://otlp.nr-data.net` de la máquina en cuestión puede ayudar a determinar si hay algún problema de configuración de la red local (es decir, restricción del firewall) impide la conectividad con New Relic. -3. **Busque [`NrIntegrationError`](/docs/data-apis/manage-data/nrintegrationerror/) evento.** La ingesta de New Relic OTLP realiza una validación mínima sincrónicamente antes de devolver un código de estado exitoso. Si no ve indicaciones de errores de exportación en su log de aplicación, pero no ve datos en New Relic, intente consultar `NrIntegrationError`. Puede haber problemas con tus datos que fueron detectados durante la validación asincrónica. -4. **Determine si el problema está localizado.** A menudo, los errores se localizan en una aplicación o entorno específico. En estos casos, es útil evaluar las diferencias entre las áreas que son problemáticas y funcionan correctamente. -5. **Busque signos de clave de API no válida.** El endoint OTLP de New Relic [requiere configurar un encabezado `api-key` ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key). La clave de API no válida o faltante es un problema común que se presenta con códigos de estado HTTP 403 o 401, o códigos de estado gRPC Unauthenticated o PermissionDenied. Si ve estos, verifique que su clave de API sea válida y esté configurada correctamente. -6. **Compruebe si la exportación se realizó correctamente luego de volver a intentarlo.** [Recomendamos que el reintento esté habilitado](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#retry) y esperamos que los intentos de exportación ocasionalmente fallen inicialmente con errores transitorios, pero tengan éxito luego de volver a intentarlo. Sin embargo, tenemos un [SLA](/docs/licenses/license-information/referenced-policies/service-level-availability-commitment/). Si sospecha que los errores transitorios son lo suficientemente frecuentes como para exceder nuestro SLA, abra un caso de soporte. -7. **Compruebe si hay señales de que no se están reintentando los errores transitorios.** A pesar de nuestros mejores esfuerzos, puede haber casos extremos en los que el extremo OTLP de New Relic devuelva códigos de estado no recuperables para errores transitorios. Si cree que se encontró con esta situación, abra un caso de soporte. - -## Catálogo de ediciones [#issue-catalog] - -La siguiente tabla cataloga los problemas que vimos que los clientes encontraron con el extremo OTLP de New Relic . Muchos son fáciles de resolver con la configuración adecuada. La columna **Fingerprint** muestra un log típico cuando una aplicación encuentra una clase particular de problema. Consulte las columnas **Known resolution** y **Notes** para conocer los pasos de mitigación. - -| Versión del protocolo OTLP | Tipo | Idioma / Ecosistema | Fingerprint | Resolución conocida | Notas | -| -------------------------- | -------------------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| HTTP | 401 - Unauthorized | Java | `io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. Server responded with HTTP status code 401.` | [Incluir clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Falta el encabezado `api-key` | -| HTTP | 401 - Unauthorized | Recolector | `Exporting failed. The error is not retryable. Dropping data. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "Permanent error: error exporting items, request to https://otlp.nr-data.net/v1/traces responded with HTTP Status Code 401, Message=, Details=[]", "dropped_items": 4}` | [Incluir clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Falta el encabezado `api-key` | -| HTTP | 401 - Unauthorized | Go | `failed to upload metrics: failed to send metrics to https://otlp.nr-data.net/v1/metrics: 401 Unauthorized` | [Incluir clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Falta el encabezado `api-key` | -| HTTP | 403 - Forbidden | Java | `io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. Server responded with HTTP status code 403.` | [Verificar clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Encabezado `api-key` no válido | -| HTTP | 403 - Forbidden | Java | `Exporting failed. The error is not retryable. Dropping data. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "Permanent error: error exporting items, request to https://otlp.nr-data.net/v1/traces responded with HTTP Status Code 403, Message=, Details=[]", "dropped_items": 14}` | [Verificar clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Encabezado `api-key` no válido | -| HTTP | 403 - Forbidden | Go | `traces export: failed to send to https://otlp.nr-data.net/v1/traces: 403 Forbidden` | [Verificar clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Encabezado `api-key` no válido | -| HTTP | 403 - Forbidden | .NET | `Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/v1/traces}{System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden).` | [Verificar clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Encabezado `api-key` no válido | -| HTTP | Se acabó el tiempo | Java | `io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. The request could not be executed. Full error message: timeout` | [Ajustar el procesamiento por lotes/tiempo de espera](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Ocurre después de que se agota el tiempo de exportación. Verifique la configuración del tiempo de espera y el estado de la red del cliente.
Si descartó la configuración y la red del lado del cliente, abra el caso de soporte. | -| HTTP | Se acabó el tiempo | Recolector | `max elapsed time expired failed to make an HTTP request: Post \"https://otlp.nr-data.net/v1/traces\": context deadline exceeded (Client.Timeout exceeded while awaiting headers)` | [Ajustar el procesamiento por lotes/tiempo de espera](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Normalmente ocurre después de que fallan los reintentos y se agota el tiempo de espera de exportación. Puede estar relacionado con la red del cliente, la configuración de reintento/tiempo de espera del cliente o la red/servidores de New Relic.
Si descartó la configuración y la red del lado del cliente, abra el caso de soporte. | -| HTTP | Se acabó el tiempo | Go | `failed to upload metrics: context deadline exceeded: retry-able request failure` | [Ajustar el procesamiento por lotes/tiempo de espera](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Ocurre después de que se agota el tiempo de exportación. Verifique la configuración del tiempo de espera y el estado de la red del cliente.
Si descartó la configuración y la red del lado del cliente, abra el caso de soporte. | -| HTTP | Límite de tarifa | Recolector | `Exporting failed. Will retry the request after interval. {"kind": "exporter", "data_type": "metrics", "name": "otlphttp", "error": "Throttle (29s), error: error exporting items, request to https://otlp.nr-data.net:443/v1/metrics responded with HTTP Status Code 429", "interval": "29s"}` | [Sintonizar el procesamiento por lotes](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Excede el límite de velocidad.
Ajuste la configuración de procesamiento por lotes para reducir la tasa de solicitudes. | -| gRPC | Código 2 - Desconocido
Se acabó el tiempo | Java | `io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 2. Error message: timeout` | [Ajustar el procesamiento por lotes/tiempo de espera](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Ocurre después de que se agota el tiempo de exportación. Verifique la configuración del tiempo de espera y el estado de la red del cliente.
Si descartó la configuración y la red del lado del cliente, abra el caso de soporte. | -| gRPC | Código 2 - Desconocido
HTTP 500 | Recolector | `rpc error: code = Unknown desc = unexpected HTTP status code received from server: 500 (Internal Server Error); malformed header: missing HTTP content-type` | | El proveedor de redes New Relic produjo un código de estado no recuperable para un error transitorio.
Si esto sucede repetidamente, abra el caso de soporte. | -| gRPC | Código 2 - Desconocido
HTTP 530 | Recolector | `rpc error: code = Unknown desc = unexpected HTTP status code received from server: 530 (); transport: received unexpected content-type \"text/html; charset=UTF-8\"` | | El proveedor de redes New Relic produjo un código de estado no recuperable para un error transitorio.
Si esto sucede repetidamente, abra el caso de soporte. | -| gRPC | Código 4 - Fecha límite excedida | Recolector | `rpc error: code = DeadlineExceeded desc = context deadline exceeded` | [Ajustar el procesamiento por lotes/tiempo de espera](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Normalmente ocurre después de que fallan los reintentos y se agota el tiempo de espera de exportación. Puede estar relacionado con la red del cliente, la configuración de reintento/tiempo de espera del cliente o la red/servidores de New Relic.
Si descartó la configuración y la red del lado del cliente, abra el caso de soporte. | -| gRPC | Código 7 - No autenticado | Java | `io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 7.` | [Incluir clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Falta el encabezado `api-key` | -| gRPC | Código 7 - No autenticado | .NET | `Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/}{Grpc.Core.RpcException: Status(StatusCode="Unauthenticated", Detail="")` | [Incluir clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Falta el encabezado `api-key` | -| gRPC | Código 8 - Recurso agotado | Recolector | `rpc error: code = ResourceExhausted desc = Too many requests", "dropped_items": 1024` | [Sintonizar el procesamiento por lotes](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#payload) | Excede el límite de velocidad.
Ajuste la configuración de procesamiento por lotes para reducir la tasa de solicitudes. | -| gRPC | Código 13 - Interno | Java | `io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 13.` | | No hay suficiente información para diagnosticar. Podría ser que el proveedor de redes de New Relic produjo un código de estado no recuperable para un error transitorio.
Si esto sucede repetidamente, abra un caso de soporte. | -| gRPC | Código 13 - Interno
HTTP 400 | Recolector | `rpc error: code = Internal desc = unexpected HTTP status code received from server: 400 (Bad Request)` | | El proveedor de redes New Relic produjo un código de estado no recuperable para un error transitorio.
Si esto sucede repetidamente, abra un caso de soporte. | -| gRPC | Código 14 - No disponible
Reajuste de conexion | Recolector | `rpc error: code = Unavailable desc = error reading from server: read tcp 100.127.0.171:47470->162.247.241.110:4317: read: connection reset by peer` | [Reintento de sintonización](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#retry) | Debería resolver con un nuevo intento. Cerciorar de que el recolector tenga recursos suficientes para manejar la contrapresión de reintento. | -| gRPC | Código 14 - No disponible
HTTP 502 | Recolector | `rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 502 (Bad Gateway); transport: received unexpected content-type "text/html"` | [Reintento de sintonización](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#retry) | Debería resolver con un nuevo intento. Cerciorar de que el recolector tenga recursos suficientes para manejar la contrapresión de reintento. | -| gRPC | Código 14 - No disponible
HTTP 503 | Recolector | `rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 503 (Service Unavailable)` | [Reintento de sintonización](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#retry) | Debería resolver con un nuevo intento. Cerciorar de que el recolector tenga recursos suficientes para manejar la contrapresión de reintento. | -| gRPC | Código 16 - Licencia denegada | Java | `io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 16.` | [Verificar clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Encabezado `api-key` no válido | -| gRPC | Código 16 - Licencia denegada | .NET | `Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/}{Grpc.Core.RpcException: Status(StatusCode="PermissionDenied", Detail="")` | [Verificar clave de API](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#api-key) | Encabezado `api-key` no válido | \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx deleted file mode 100644 index d4de4a7aa97..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp.mdx +++ /dev/null @@ -1,282 +0,0 @@ ---- -title: New Relic OTLP extremo -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - OTLP -metaDescription: Configure OTLP exporter for New Relic -freshnessValidatedDate: '2024-05-06T00:00:00.000Z' -translationType: machine ---- - -[OpenTelemetry Protocol](https://github.com/open-telemetry/opentelemetry-proto/blob/main/docs/specification.md), u OTLP para abreviar, es un protocolo de entrega telemetry data de propósito general diseñado para el proyecto OpenTelemetry . Cada SDK de lenguaje OpenTelemetry proporciona exportadores OTLP, y el recolector OpenTelemetry tiene receptores y exportadores OTLP. Además, varias herramientas fuera del proyecto OpenTelemetry agregaron soporte para la exportación OTLP. - -New Relic admite la ingesta OTLP nativa y lo recomienda como el método preferido para enviar datos de OpenTelemetry a la plataforma New Relic. Este documento profundiza en el soporte OTLP de New Relic, incluidos los requisitos y recomendaciones de configuración. - -## Antes de que empieces [#before-you-begin] - -* Si aún no lo ha hecho, regístrese para obtener una [cuenta gratuita de New Relic](https://newrelic.com/signup). -* Obtenga la [clave de licencia](https://one.newrelic.com/launcher/api-keys-ui.launcher) para la cuenta New Relic a la que desea reportar datos. Esta clave de licencia se empleará para [configurar el encabezado `api-key` ](#api-key). - -## Configuración: extremo, puerto y protocolo de OTLP [#configure-endpoint-port-protocol] - -Nivel de requisito: **Required** - -Para configurar el envío de datos OTLP a New Relic, debe configurar su exportador OTLP para emplear el extremo y puerto relevantes de la siguiente tabla según su entorno. - -El mecanismo para configurar el extremo variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_ENDPOINT=` (consulte [los documentosOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/protocol/exporter/)para obtener más información). - -Además, debe configurar su exportador OTLP para emplear la [versión protobuf binaria OTLP/HTTP](https://opentelemetry.io/docs/specs/otlp/#binary-protobuf-encoding) del protocolo, si está disponible. Si bien New Relic admite todas las versiones de OTLP, el protobuf binario OTLP/HTTP demostró ser más robusto que gRPC sin ninguna reducción aparente en el rendimiento. - -El mecanismo para configurar el extremo variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf` (consulte [los documentosOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/protocol/exporter/)para obtener más información). - -Si está empleando un recolector, le recomendamos emplear [otlphttpexporter](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Ambiente - - gRPC - - HTTP - - Extremo - - Puertos soportados -
- OTLP de EE. UU. - - ✅ - - ✅ - - `https://otlp.nr-data.net` - - `443`, `4317`, `4318` -
- OTLP de la UE - - ✅ - - ✅ - - `https://otlp.eu01.nr-data.net` - - `443`, `4317`, `4318` -
- OTLP de la FedRAMP de EE. UU.
(Consulte [Cumplimiento de FedRAMP](/docs/security/security-privacy/compliance/fedramp-compliant-endpoints/#otlp-api) para obtener más información) -
- ✅ - - ✅ - - `https://gov-otlp.nr-data.net` - - `443`, `4317`, `4318` -
- rastreo infinito
(Ver [mejores prácticas](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces#infinite-tracing) para detalles extremos) -
- ✅ - - ✅ - - `https://{trace-observer}` - - `443` -
- - - - Los estándares OTLP designan el tráfico gRPC al puerto `4317` y el tráfico HTTP al puerto `4318`. El extremo OTLP nativo New Relic US FedRamp se adhiere a esas especificaciones. También permite el tráfico gRPC y HTTP en el puerto `443`. Para simplificar, puede omitir el puerto ya que el esquema `https` selecciona automáticamente el puerto `443`. - - - - Según el [documentoOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/protocol/exporter/#endpoint-urls-for-otlphttp)sobre URL extremas para OTLP/HTTP, si envía tráfico OTLP/HTTP y emplea la variable de entorno independiente de la señal (`OTEL_EXPORTER_OTLP_ENDPOINT`), simplemente puede configurar `OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.nr-data.net:{port}` y el exportador debe agregar la ruta adecuada para el tipo de señal (como `v1/traces` o `v1/metrics`). - - Si está empleando una variable de entorno específica de la señal (como `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` y `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`), debe incluir la ruta adecuada. Por ejemplo: - - ``` - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=https://otlp.nr-data.net:4318/v1/traces - ``` - - Si la ruta no sigue la sintaxis anterior, recibirá un error `404` . Tenga en cuenta que las variables de entorno específicas de la señal tienen prioridad sobre las variables de entorno independientes de la señal. - - - -## Configuración: cifrado TLS [#tls] - -Nivel de requisito: **Required** - -Para enviar datos OTLP a New Relic, debe configurar su exportador OTLP para usar TLS 1.2 (consulte [Cifrado TLS](/docs/new-relic-solutions/get-started/networks/#tls) para obtener más información). Generalmente, los exportadores de SDK y recolectores cumplen con este requisito de forma predeterminada. - -Si bien muchos exportadores de OTLP deducen la configuración de TLS del esquema extremo `https` , algunos exportadores de gRPC pueden requerir que habilites TLS explícitamente. El mecanismo para configurar gRPC TLS variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_INSECURE=false` (consulte [los documentos de OpenTelemetry](https://opentelemetry.io/docs/specs/otel/protocol/exporter/) para obtener más información). - -## Configuración: Configuración de la clave de API [#api-key] - -Nivel de requisito: **Required** - -Para enviar datos OTLP a New Relic, debe configurar su exportador OTLP para incluir un encabezado llamado `api-key` con el valor establecido en su [clave de licencia](#prereqs). De lo contrario, se producirán errores de autenticación. - -El mecanismo para configurar los encabezados variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_HEADERS=api-key=` (consulte [los documentos de OpenTelemetry](https://opentelemetry.io/docs/specs/otel/protocol/exporter/) para obtener más información). - -## Configuración: límites de atributos [#attribute-limits] - -Nivel de requisito: **Required** - -Para enviar datos OTLP a New Relic, debe configurar su fuente de telemetría para que se ajuste a los límites del atributo New Relic . No hacerlo puede resultar en el evento [`NrIntegrationError`](/docs/data-apis/manage-data/nrintegrationerror/) durante la validación de datos asincrónicos. - -Los límites de los atributos son los siguientes: - -* Longitud máxima del nombre del atributo: 255 caracteres -* Longitud máxima del valor del atributo: 4095 caracteres -* Tamaño máximo del valor de la matriz de atributos: 64 entradas - -Consulte [límites de atributo métrico](/docs/data-apis/ingest-apis/metric-api/metric-api-limits-restricted-attributes/) y [límites de atributo de evento](/docs/data-apis/ingest-apis/event-api/introduction-event-api/#limits) para conocer otros límites. - -El mecanismo para configurar los límites de atributos variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de las variables de entorno `OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT=4095` y `OTEL_ATTRIBUTE_COUNT_LIMIT=64` (consulte [los documentosOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/)para obtener más información). - -Si se emplea el recolector, el [procesador de transformación](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/transformprocessor) se puede configurar para truncar el atributo hasta los límites New Relic . - -Notas: - -* Los atributos de recursos están sujetos a límites de atributos, pero no existen variables de entorno estándar para limitarlos. Si un atributo de recurso supera el límite permitido, considere truncarlo usando el [procesador de transformación](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/processor/transformprocessor) recolector o sobreescribir el atributo de recurso a otro valor. -* No existe un mecanismo estándar para limitar los nombres de atributos. Sin embargo, la instrumentación generalmente no produce nombres de atributos que excedan los límites de New Relic . Si encuentra límites de longitud de nombre, elimine el atributo usando el selector. - -## Configuración: procesamiento por lotes de carga útil, compresión y límites de velocidad [#payload-limits] - -Nivel de requisito: **Required** - -Para enviar datos OTLP a New Relic, su carga debe ser menor que el tamaño máximo de carga de 1 MB (10 ^ 6 bytes). Las cargas más grandes serán rechazadas con un código de estado de error. Es posible que una carga más grande tampoco pueda exportar con un tiempo de espera antes de que se devuelva un código de estado de error. - -Además, New Relic impone [límites de tarifas](/docs/data-apis/manage-data/view-system-limits/#all_products). Cuando se excede el límite de tarifa, las solicitudes se rechazarán con un código de estado de error. - -Para evitar límites de tamaño de carga útil y límites de velocidad, debe configurar su exportador OTLP para emplear un tamaño de lote apropiado que haga que los datos se exporten en un intervalo apropiado. - -El mecanismo para configurar el procesamiento por lotes variará. Los SDK de OpenTelemetry generalmente admiten la configuración de las siguientes variables de entorno (consulte [los documentos de OpenTelemetry](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/) para obtener más información): - -* `OTEL_BSP_*` para tramos -* `OTEL_METRIC_EXPORT_*` para métrica -* `OTEL_BLRP_*` para logs - -Si se emplea el recolector, el [procesador por lotes](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/batchprocessor) controla el tamaño del lote. - -Además, debe habilitar la compresión para reducir el tamaño de la carga útil y limitar la probabilidad de encontrar límites de tamaño de carga útil. New Relic admite la compresión `gzip` y `zstd` . La compresión `zstd` tiene un mayor rendimiento y se recomienda si su exportador la admite. Consulte [comparación de compresión](https://github.com/open-telemetry/opentelemetry-collector/blob/main/config/configgrpc/README.md#compression-comparison) para obtener más detalles sobre la información del punto de referencia. - -El mecanismo para configurar el extremo variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_COMPRESSION=gzip` (consulte [los documentosOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/protocol/exporter/)para obtener más información). - -Si emplea el recolector, `gzip` es la compresión predeterminada, pero `zstd` se puede configurar opcionalmente. - -## Configuración: reintentar [#retry] - -Nivel de requisito: **Recommended** - -Para enviar datos OTLP a New Relic, debe configurar su exportador OTLP para volver a intentarlo cuando se produzcan errores transitorios. Internet no es confiable y no volver a intentarlo aumenta la probabilidad de pérdida de datos. - -El mecanismo para configurar el reintento variará. Algunos SDK de OpenTelemetry pueden tener variables de entorno específicas del idioma (por ejemplo, [Java admite](https://github.com/open-telemetry/opentelemetry-java/tree/main/sdk-extensions/autoconfigure) la configuración `OTEL_EXPERIMENTAL_EXPORTER_OTLP_RETRY_ENABLED=true`), pero no existe un mecanismo general. Es posible que se requiera configuración programática. - -Si emplea el recolector, `otlphttpexporter` y `otlpexporter` lo reintentan de forma predeterminada. Consulte [exporterhelper](https://github.com/open-telemetry/opentelemetry-collector/blob/main/exporter/exporterhelper/README.md) para obtener más detalles. - -## Config: temporalidad de agregación métrica [#metric-aggregation-temporality] - -Nivel de requisito: **Recommended** - -Para enviar datos métricos OTLP a New Relic, debe configurar su exportador métrico OTLP para que prefiera [la temporalidad de agregación](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#temporality) delta. Si bien New Relic admite la temporalidad de agregación acumulativa, la arquitectura métrica New Relic es generalmente un sistema delta métrico. El uso de la configuración acumulativa predeterminada generalmente generará un mayor uso de memoria por parte de los SDK y dará como resultado una ingesta alta de datos. - -El mecanismo para configurar el extremo variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta` (consulte [los documentosOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/metrics/sdk_exporters/otlp/)para obtener más información). Si configura la temporalidad manualmente, configúrelo por tipo de instrumento de la siguiente manera: - -* Counter, Asynchronous Counter, Histogram: Delta -* UpDownCounter, Asynchronous UpDownCounter, Gauge, Asynchronous Gauge: Cumulative - -La temporalidad acumulativa se emplea para instrumentados que se asignan a [tipos de medidores New Relic ](https://docs.newrelic.com/docs/data-apis/understand-data/metric-data/metric-data-type/)y que generalmente se analizan empleando el valor acumulativo. - -## Configuración: agregación de mistogramas métricos [#metric-mistogram-aggregation] - -Nivel de requisito: **Recommended** - -Para enviar datos métricos OTLP a New Relic, debe configurar su exportador métrico OTLP para agregar mediciones desde histograma instrumentado a [histograma exponencial](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#exponentialhistogram). A diferencia de los depósitos estáticos empleados con el histograma de depósito explícito predeterminado, el histograma exponencial ajusta automáticamente sus depósitos para reflejar el rango de mediciones registradas. Además, emplean una representación altamente comprimida para enviar por cable. Los histogramas exponenciales proporcionan datos de distribución más útiles en la plataforma New Relic . - -El mecanismo para configurar el extremo variará, pero los SDK del lenguaje OpenTelemetry generalmente admiten la configuración de la variable de entorno `OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION=base2_exponential_bucket_histogram` (consulte [los documentosOpenTelemetry ](https://opentelemetry.io/docs/specs/otel/metrics/sdk_exporters/otlp/)para obtener más información). - -## Versión del protocolo OTLP [#otlp-version-support] - -New Relic emplea [la versión OTLP v0.18.0](https://github.com/open-telemetry/opentelemetry-proto/releases/tag/v0.18.0). Se admiten versiones posteriores, pero aún no se han implementado nuevas funciones. Las características experimentales que ya no están disponibles en 0.18.0 no son compatibles. - -## Carga de respuesta OTLP [#payloads] - -Tenga en cuenta los siguientes detalles sobre la carga de respuesta extrema New Relic OTLP: - -* Las respuestas exitosas de New Relic no tienen cuerpo de respuesta, en lugar de una [respuesta codificada en Protobuf](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.8.0/specification/protocol/otlp.md#success) según el tipo de datos. -* New Relic responde luego de la validación de la autenticación, el tamaño de la carga útil y la limitación de velocidad. La validación del contenido de la carga útil se produce de forma asincrónica. Por lo tanto, New Relic puede devolver códigos de estado de éxito a pesar de que la ingesta de datos finalmente falló y resultó en el evento [`NrIntegrationError`](/docs/data-apis/manage-data/nrintegrationerror/) . -* [Las respuestas de error](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.8.0/specification/protocol/otlp.md#failures) de New Relic no incluyen `Status.message` o `Status.details`. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx deleted file mode 100644 index ef488248281..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro.mdx +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 'APM: monitor aplicaciones y servicios con OpenTelemetry' -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Set up OpenTelemetry-based APM monitoring with New Relic. -freshnessValidatedDate: '2024-05-14T00:00:00.000Z' -translationType: machine ---- - -import moreintegrationsNativeOtlpNoCollector from 'images/more-integrations_diagram_native-otlp-no-collector.webp' - -import moreintegrationsNativeOtlpWithCollector from 'images/more-integrations_diagram_native-otlp-with-collector.webp' - -OpenTelemetry proporciona API y SDK de uso general para recopilar, procesar y exportar datos de observabilidad. Uno de los casos de uso más populares para estas API y SDK es el monitoreo APM , donde se instala instrumentación para monitor una aplicación o servicio. - -Esta página describe los pasos de configuración comunes para el monitoreo de APM basado en OpenTelemetry con New Relic. - - - - ## Antes de que empieces [#prereqs] - - * [Regístrese](https://newrelic.com/signup) para obtener una cuenta New Relic. - * Obtenga la [clave de licencia](https://one.newrelic.com/launcher/api-keys-ui.launcher) para la cuenta New Relic a la que desea reportar datos. - - - - ## Instrumente su aplicación o servicio con OpenTelemetry [#instrument] - - OpenTelemetry proporciona [API y SDK específicos del idioma](https://opentelemetry.io/docs/languages/) para aplicaciones instrumentadas. La mayoría de los lenguajes proporcionan un rico conjunto de [instrumentación](https://opentelemetry.io/docs/concepts/instrumentation/) para bibliotecas y marcos populares. - - Para ayudarlo a empezar, ofrecemos una aplicación de ejemplo sencilla en una variedad de idiomas. Para cada idioma, la aplicación se crea empleando framework sitio web popular para ese idioma. Los siguientes ejemplos demuestran cómo configurar: - - * El nombre del servicio que se mostrará en New Relic. - * El exportador OpenTelemetry Protocol (OTLP) para enviar datos al [extremo OTLP New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp). - * Configuraciones recomendadas adicionales para optimizar OpenTelemetry y obtener la mejor experiencia de New Relic. - - - - - - - - - - - - - - - - Para obtener más información sobre qué instrumentación está disponible y escenarios más avanzados, consulte la [documentación del lenguaje OpenTelemetry](https://opentelemetry.io/docs/languages/) correspondiente. - - - Puede emplear cualquier idioma compatible con OpenTelemetry para enviar datos a New Relic. Sin embargo, los ejemplos anteriores reflejan solo un subconjunto de los [idiomas admitidos](https://opentelemetry.io/docs/languages/). - - ¿Extrañas tu idioma? ¡Aplicar un ejemplo [abriendo una incidencia en GitHub](https://github.com/newrelic/newrelic-opentelemetry-examples/issues/new?assignees=&labels=enhancement%2C+needs-triage&projects=&template=enhancement.md&title=)! - - - - - ## Vea sus datos en la UI de New Relic [#view-data] - - Una vez que su aplicación esté instrumentada y configurada para exportar datos a New Relic, debería poder encontrar sus datos en la New Relic UI: - - * Encuentra tu entidad en - - **All entities -> Services - OpenTelemetry** - - . El nombre de la entidad se establece en el valor del atributo de recurso `service.name` de la aplicación. Para obtener más información sobre cómo la entidad de servicio New Relic se deriva del atributo de recurso OpenTelemetry , consulte [Servicios](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/#services) - - * Emplee [NRQL](/docs/nrql/get-started/introduction-nrql-new-relics-query-language/) para consultar directamente [traza](https://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gU3BhbiBTRUxFQ1QgY291bnQoKikgd2hlcmUgbmV3cmVsaWMuc291cmNlPSclb3RscCUnIFRJTUVTRVJJRVMifV0sImluaXRpYWxDaGFydFNldHRpbmdzIjp7ImNoYXJ0VHlwZSI6IkNIQVJUX0xJTkUiLCJsaW1pdCI6NzU0MiwibGlua2VkRW50aXR5R3VpZCI6bnVsbCwibGlua2VkRGFzaGJvYXJkSWQiOm51bGwsInlTY2FsZSI6eyJzdGF0aWMiOmZhbHNlLCJkb21haW4iOltudWxsLG51bGxdfSwieVplcm8iOnRydWV9fQo=), [métrica](https://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gTWV0cmljIFNFTEVDVCBjb3VudCgqKSB3aGVyZSBuZXdyZWxpYy5zb3VyY2UgTElLRSAnJW90bHAlJyBUSU1FU0VSSUVTIn1dLCJpbml0aWFsQ2hhcnRTZXR0aW5ncyI6eyJjaGFydFR5cGUiOiJDSEFSVF9MSU5FIiwibGltaXQiOjc1NDIsImxpbmtlZEVudGl0eUd1aWQiOm51bGwsImxpbmtlZERhc2hib2FyZElkIjpudWxsLCJ5U2NhbGUiOnsic3RhdGljIjpmYWxzZSwiZG9tYWluIjpbbnVsbCxudWxsXX0sInlaZXJvIjp0cnVlfX0K) y [log](https://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gTG9nIFNFTEVDVCBjb3VudCgqKSB3aGVyZSBuZXdyZWxpYy5zb3VyY2U9JyVvdGxwJScgVElNRVNFUklFUyJ9XSwiaW5pdGlhbENoYXJ0U2V0dGluZ3MiOnsiY2hhcnRUeXBlIjoiQ0hBUlRfTElORSIsImxpbWl0Ijo3NTQyLCJsaW5rZWRFbnRpdHlHdWlkIjpudWxsLCJsaW5rZWREYXNoYm9hcmRJZCI6bnVsbCwieVNjYWxlIjp7InN0YXRpYyI6ZmFsc2UsImRvbWFpbiI6W251bGwsbnVsbF19LCJ5WmVybyI6dHJ1ZX19Cg==). - - * [OpenTelemetry APM UI](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui) Consulte para obtener más información. - - Si no encuentras tu entidad y no ves tus datos con NRQL, consulta [OTLP resolución de problemas](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp-troubleshooting). - - - -## Ejecutar los agentes New Relic y las herramientas OpenTelemetry en el mismo proceso [#apm-agents] - -Las herramientas New Relic agente y OpenTelemetry (SDK, agente, etc.) se encuentran entre muchos productos APM en el mercado. - -Para un lenguaje determinado, casi todos los productos APM funcionan utilizando el mismo lenguaje de bajo nivel y los mismos enlaces de tiempo de ejecución disponibles, la mayoría de los cuales alteran el comportamiento de su código en tiempo de ejecución. Dependiendo de la arquitectura de su lenguaje, esto a menudo se logra mediante técnicas como la manipulación de códigos de bytes o parches de mono. - -Debido a las formas complejas en que los productos APM modifican el código en ejecución, no hay garantías de que un producto sea compatible con otro producto que se ejecute en el mismo proceso. En el mejor de los casos, vivirán uno al lado del otro sin que el otro lo sepa y generarán telemetría de forma independiente desde su aplicación. En el peor de los casos, se pisotearán unos a otros, lo que provocará un comportamiento impredecible. - -New Relic no puede garantizar que nuestro agente APM sea compatible con un producto APM diferente que se ejecuta en el mismo proceso. Le recomendamos que elija el que mejor se adapte a sus necesidades, y sólo uno. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx deleted file mode 100644 index 0b6813b58fc..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-ui.mdx +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: OpenTelemetry APM UI -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: The OpenTelemetry APM UI provides tools for identifying and diagnosing problems with services monitoring with OpenTelemetry. -freshnessValidatedDate: '2024-05-17T00:00:00.000Z' -translationType: machine ---- - -import opentelemetryViewSpanEvents from 'images/opentelemetry_screenshot-crop_view-span-events.webp' - -La OpenTelemetry APM UI es una experiencia seleccionada disponible para [la entidad de servicio](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/#services). Si no configuró su servicio con New Relic y OpenTelemetry, consulte [MonitoreoOpenTelemetry APM ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro/). - -Las OpenTelemetry APM UI páginas de están diseñadas para ayudar a identificar y diagnosticar problemas rápidamente. Muchos requieren que los datos se ajusten a varias [convenciones semánticas de OpenTelemetry](https://opentelemetry.io/docs/specs/semconv/), pero algunos son de propósito general. Consulte la información detallada y los requisitos para cada página a continuación: - -* [Página de resumen](#summary-page) -* [Distribución de la página de seguimiento](#distributed-tracing-page) -* [Página del mapa de servicios](#service-map-page) -* [Página de transacciones](#transactions-page) -* [Pagina base de datos](#databases-page) -* [Página de servicios externos](#externals-page) -* [Página de tiempo de ejecución de JVM](#jvm-runtime-page) -* [Página de tiempo de ejecución Go](#go-runtime-page) -* [Página de logs](#logs-page) -* [Página Errors Inbox](#errors-inbox-page) -* [Página del explorador métrica](#metrics-explorer-page) - -Los siguientes conceptos de New Relic se repiten o se superponen en todas las páginas: - -* [Señales doradas](#golden-signals) -* [Limitar datos con filtros](#narrow-with-filters) -* [Alternar métrica o tramos](#metrics-spans-toggle) - -## Encuentre servicios OpenTelemetry APM [#find-apm-services] - -Para encontrar los servicios OpenTelemetry APM , navegue a **All entities > Services > OpenTelemetry** o **APM & Services**. Haga clic en un servicio para navegar a la [página de resumen](#summary-page) del servicio. - -Dentro del explorador de entidades, puedes filtrar por [etiqueta de entidad](/docs/new-relic-solutions/new-relic-one/core-concepts/use-tags-help-organize-find-your-data/). Para obtener detalles sobre cómo se calculan las etiquetas de entidad, consulte [los recursos de OpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources). - -## Página: Resumen [#summary-page] - -La página de resumen proporciona una descripción general del estado de su servicio, que incluye: - -* **Señales doradas**: tiempo de respuesta, rendimiento y tasa de errores. Consulte [señales doradas](#golden-signals) para obtener detalles sobre cómo se calculan. -* **Entidad relacionada**: otros servicios que se comunican con este servicio e infraestructura relacionada. Consulte [el mapa de servicios](#service-map) para obtener una vista detallada. -* **Actividad**: estado de cualquier alerta activa para este servicio. -* **Rastreo distribuido información valiosa**: descubra si la entidad downstream o upstream podría estar contribuyendo a la degradación del rendimiento. Consulte [las señales de traza entidad relacionadas](/docs/distributed-tracing/ui-data/related-trace-entity-signals/) para obtener más detalles. -* **Instancia**: desglose de señales doradas por instancia cuando un servicio se escala horizontalmente. Depende del atributo de recurso `service.instance.id` (ver [atributo de entidad de servicio](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/#services) para más detalles). - -## Página: rastreo distribuido [#distributed-tracing-page] - -La página de rastreo distribuido proporciona información detallada y valiosa sobre los datos de traza de OpenTelemetry. Consulte [rastreo distribuido](/docs/distributed-tracing/ui-data/understand-use-distributed-tracing-ui/) para obtener información sobre el uso de la página. Consulte [trazas de OpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-traces) para obtener detalles sobre cómo se incorporan los datos de trazas de OpenTelemetry en New Relic. - -Al igual que con [las señales doradas](#golden-signals), los intervalos se clasifican como errores si el estado del intervalo se establece en `ERROR` (por ejemplo, `otel.status_code = ERROR`). Si el intervalo es un error, la descripción del estado del intervalo (por ejemplo, `otel.status_description`) se muestra en **los detalles del error**. - -OpenTelemetry span evento adjunta información de contexto de evento adicional a un lapso en individuo. Se emplean más comúnmente para capturar información de excepciones. Si está disponible, puedes ver el evento de un tramo en **los detalles de la traza**. Tenga en cuenta que la presencia de un evento de excepción de intervalo no considera que el intervalo sea un error por sí solo. Sólo los intervalos con estado de intervalo establecido en `ERROR` se clasifican como errores. - -Screenshot showing the right pane showing the two links for span events - -## Página: Mapa de servicios [#service-map-page] - -La página del mapa de servicios proporciona una representación visual de toda su arquitectura. Consulte [el mapa de servicios](/docs/new-relic-solutions/new-relic-one/ui-data/service-maps/service-maps/) para obtener más información. - -## Página: transacción [#transactions-page] - -La página de transacciones proporciona herramientas para identificar problemas y analizar [la transacción](/docs/apm/transactions/intro-transactions/transactions-new-relic-apm/#txn-defined) de un servicio. - -Para métrica, la consulta asume que los datos se ajustan a las convenciones semánticas [http métrica](https://opentelemetry.io/docs/specs/semconv/http/http-metrics/) o [rpc métrica](https://opentelemetry.io/docs/specs/semconv/rpc/rpc-metrics/). Los atributos `http.route` y `rpc.method` se emplean para listar y filtrar por transacción. - -Para los tramos, las consultas son genéricas y emplean únicamente el modelo de datos de tramos de nivel superior. Los intervalos se cuentan para el rendimiento de la transacción y el tiempo de respuesta, como se describe en [las señales doradas](#golden-signals). El campo de nombre de tramo se emplea para enumerar y filtrar por transacción. - -## Página: base de datos [#databases-page] - -La página de base de datos proporciona herramientas para identificar problemas y analizar las operaciones del cliente de base de datos de un servicio. - -No existe una vista basada en métricas de la base de datos ya que actualmente no hay convenciones semánticas disponibles. - -Para los intervalos, la consulta asume que los datos se ajustan a las convenciones semánticas [del intervalo de base de datos](https://opentelemetry.io/docs/specs/semconv/database/database-spans/). El nombre del intervalo y los atributos `db.system`, `db.sql.table` y `db.operation` se emplean para enumerar y filtrar operaciones de base de datos. - -## Página: Servicios externos [#externals-page] - -La página de externos proporciona herramientas para identificar problemas y analizar las llamadas externas de un servicio, incluidas las llamadas de entidad (servicios ascendentes) y las llamadas de entidad (servicios descendentes). - -No existe una vista basada en métricas de la página de servicios externos. - -Para los tramos, las consultas son genéricas y emplean únicamente el modelo de datos de tramos de nivel superior. Los intervalos se cuentan para el rendimiento del servicio externo y el tiempo de respuesta si salen de un servicio, se calcula empleando una heurística de `WHERE span.kind = client OR span.kind = producer`. La base de datos abarcada por el cliente se filtra usando `WHERE db.system is null` (consulte [la página de base de datos](#databases-page)). Al igual que con [las señales doradas](#golden-signals), los intervalos son errores si tienen un código de estado de `ERROR` (por ejemplo, `otel.status_code = ERROR`). Si están disponibles, los datos de las convenciones semánticas [http span](https://opentelemetry.io/docs/specs/semconv/http/http-spans/) y [rpc span](https://opentelemetry.io/docs/specs/semconv/rpc/rpc-spans/) se emplean para clasificar las llamadas a servicios externos. - -## Página: tiempo de ejecución de JVM [#jvm-runtime-page] - -La página de tiempo de ejecución de JVM proporciona herramientas para identificar problemas y analizar la JVM de un servicio Java. La página solo se muestra para servicios que emplean [OpenTelemetry java](https://opentelemetry.io/docs/languages/java/). Para diferenciar entre distintas instancias de servicio, la página requiere que se establezca el atributo de recurso `service.instance.id` (consulte [atributo de entidad de servicio](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/#services) para obtener más detalles). - -La página de tiempo de ejecución JVM muestra señales doradas junto con la métrica de tiempo de ejecución JVM para correlacionar los problemas de tiempo de ejecución con el uso del servicio. La palanca [span-métrica](#metrics-spans-toggle) dicta si las [señales doradas](#golden-signals) son impulsadas por datos span o métricos. No existe una vista basada en intervalos para el tiempo de ejecución JVM métrica. - -Para métrica, la consulta asume que los datos se ajustan a las convenciones semánticas [métricasJVM ](https://opentelemetry.io/docs/specs/semconv/runtime/jvm-metrics/). Tenga en cuenta que estas convenciones están incorporadas en [la biblioteca de instrumentación de tiempo de ejecución deOpenTelemetry Java](https://github.com/open-telemetry/opentelemetry-java-instrumentation/tree/main/instrumentation/runtime-telemetry/runtime-telemetry-java8/library), que se incluye automáticamente con el agente de Java de OpenTelemetry. - -## Página: Ir al tiempo de ejecución [#go-runtime-page] - -La página de tiempo de ejecución de Go proporciona herramientas para identificar problemas y analizar el tiempo de ejecución de un servicio Go. La página solo se muestra para servicios que emplean [OpenTelemetry Go](https://opentelemetry.io/docs/languages/go/). Para diferenciar entre distintas instancias de servicio, la página requiere que se establezca el atributo de recurso `service.instance.id` (consulte [atributo de entidad de servicio](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources/#services) para obtener más detalles). - -La página de tiempo de ejecución de Go muestra señales doradas junto con la métrica de tiempo de ejecución de Go para correlacionar los problemas de tiempo de ejecución con el uso del servicio. La palanca [span-métrica](#metrics-spans-toggle) dicta si las [señales doradas](#golden-signals) son impulsadas por datos span o métricos. No existe una vista basada en tramos para Go runtime métrica. - -Para métrica, la consulta asume que los datos son producidos por la [biblioteca de instrumentación en tiempo de ejecución OpenTelemetry Go](https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main/instrumentation/runtime). Tenga en cuenta que actualmente no existen convenciones semánticas para Go runtime métrica. - -## Página: logs [#logs-page] - -La página de logs proporciona herramientas para identificar problemas y analizar el log de un servicio. Consulte [UI de logs](/docs/logs/ui-data/use-logs-ui/) para obtener más información. - -## Página: Errors Inbox [#errors-inbox-page] - -La página Errors Inbox proporciona herramientas para detectar y clasificar los errores de un servicio. Consulte [Bandeja de entrada de errores](/docs/errors-inbox/errors-inbox/) para obtener más detalles. - -La página errors inbox está controlada por detalles de traza. Al igual que con [las señales doradas](#golden-signals), los intervalos se clasifican como errores si el estado del intervalo se establece en `ERROR` (por ejemplo, `otel.status_code = ERROR`). - -Los intervalos de error se agrupan por su huella digital de error, y se calculan normalizando valores de identificación como UUID, valores hexadecimales, direcciones de email, etc. Cada intervalo de error distinto es una instancia individual dentro del grupo de errores. El mensaje del grupo de errores se determina de la siguiente manera: - -* Descripción del estado del intervalo (por ejemplo, `otel.status_description`) -* `rpc.grpc.status_code` de [rpc abarca](https://opentelemetry.io/docs/specs/semconv/rpc/rpc-spans/) convenciones semánticas -* `http.status_code` desde [http abarcan](https://opentelemetry.io/docs/specs/semconv/http/http-spans/) convenciones semánticas -* `http.response.status_code` desde [http abarcan](https://opentelemetry.io/docs/specs/semconv/http/http-spans/) convenciones semánticas -* `undefined` si ninguno de los anteriores está presente - -## Página: explorador métrica [#metrics-explorer-page] - -El explorador de métricas proporciona herramientas para explorar la métrica de un servicio de manera genérica. Consulte [explorar sus datos](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer/#explore-data) para obtener más información. - -## Señales doradas [#golden-signals] - -Las señales doradas de rendimiento, tiempo de respuesta y tasa de errores aparecen en varios lugares de la OpenTelemetry APM UI. Cuando se emplean, se calculan de la siguiente manera: - -Para métrica, la consulta asume que los datos se ajustan a las convenciones semánticas [http métrica](https://opentelemetry.io/docs/specs/semconv/http/http-metrics/) o [rpc métrica](https://opentelemetry.io/docs/specs/semconv/rpc/rpc-metrics/). - -Para los tramos, las consultas son genéricas y emplean únicamente el modelo de datos de tramos de nivel superior. Los intervalos se cuentan para el rendimiento y el tiempo de respuesta si son intervalos de entrada raíz en un servicio, se calculan empleando una heurística de `WHERE span.kind = server OR span.kind = consumer`. Los intervalos son errores si tienen un código de estado de `ERROR` (por ejemplo, `otel.status_code = ERROR`). - -## Limitar datos con filtros [#narrow-with-filters] - -Varias páginas incluyen una barra de filtros, con opciones como **Restringir datos a...**. Esto le permite filtrar consultas en la página para que coincidan con los criterios. Por ejemplo, puede restringir el despliegue a un canario en individuo filtrando por `service.version='1.2.3-canary'`. Los filtros se conservan al navegar entre páginas. - -## Alternar métrica o tramos [#metrics-spans-toggle] - -Varias páginas incluyen un interruptor métrico o de tramos. Esto le permite alternar si las consultas se basan en datos de extensión o métricas según los requisitos de análisis y la disponibilidad de datos. - -Las métricas no están sujetas a ejemplificación y, por lo tanto, son más precisas, especialmente cuando se calculan tasas como el rendimiento. Sin embargo, las métricas están sujetas a restricciones de cardinalidad y pueden carecer de ciertos atributos importantes para el análisis. Por el contrario, los tramos están muestreados y, por lo tanto, están sujetos a problemas de precisión, pero tienen atributos más ricos ya que no están sujetos a restricciones de cardinalidad. - -Históricamente, OpenTelemetry API/SDK del lenguaje y la instrumentación priorizaron la instrumentación de traza. Sin embargo, el proyecto avanzó mucho y métrica está disponible en casi todos los idiomas. Consulte la [documentación](https://opentelemetry.io/docs/languages/) del idioma y la instrumentación relevantes para obtener más detalles. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx deleted file mode 100644 index 549e62a1876..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker.mdx +++ /dev/null @@ -1,194 +0,0 @@ ---- -title: Recolector para contenedor docker -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Docker - - Container -metaDescription: You can collect docker container metrics using the OpenTelemetry collector. -freshnessValidatedDate: never -translationType: machine ---- - -import infrastructureDockerOTELDashboard from 'images/infrastructure_screenshot-crop_docker-otel-dashboard.webp' - -Puedes recopilar métrica sobre tu contenedor docker con el recolector OpenTelemetry. El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - -Puede ver estos [datos métricos](#data) en un panel prediseñado, crear políticas de alertas y crear consultas y gráficos personalizados. - -Image of the dashboard available through the Docker Open Telemetry quickstart - - - Si busca ayuda con otros casos de uso del recolector, consulte el repositorio [newrelic-OpenTelemetry-examples](https://github.com/newrelic/newrelic-opentelemetry-examples) . - - -Complete los pasos a continuación para recolectar métrica del contenedor docker : - -## Paso 1: Regístrese para obtener su cuenta gratuita si aún no lo ha hecho [#signup] - - - -## Paso 2: requisitos previos [#prerequisites] - -El recolector utilizará el componente [receptor dockerstats](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/dockerstatsreceiver) (versión mínima recomendada v0.81.0), y requiere acceso al a través de docker daemon un extremo: - -* Por defecto se utiliza `unix:///var/run/docker.sock` extremo. Por lo tanto, el recolector debe ejecutarse con un usuario capaz de leer el socket de la docker . - -## Paso 3: Instale el recolector OpenTelemetry [#install-opentelemetry-collector] - -Descargue e instale el recolector OpenTelemetry siguiendo [los documentosOpenTelemetry ](https://opentelemetry.io/docs/collector/getting-started/). - -Necesitará instalar [OpenTelemetry recolector Contrib Distro](https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib) u otra distribución que incluya, al menos, los siguientes componentes: - -* [Receptor de Dockerstats](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/dockerstatsreceiver) -* [Exportador OTLP/HTTP](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter) -* [Procesador de recursos](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourceprocessor/README.md) -* [Procesador de detección de recursos](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/resourcedetectionprocessor/README.md) - -## Paso 4: Configurar el recolector OpenTelemetry [#configure-opentelemetry-collector] - -Actualice o cree un nuevo archivo llamado `config.yaml` del siguiente ejemplo. - -Reemplace el `NEW_RELIC_LICENSE_KEY` en el archivo con sus propios valores. Para obtener más información, consulte la [clave de licencia de New Relic](/docs/apis/intro-apis/new-relic-api-keys/#license-key). - -```yaml -receivers: - - docker_stats: - metrics: - container.cpu.usage.total: - enabled: true - container.cpu.throttling_data.periods: - enabled: true - container.cpu.throttling_data.throttled_periods: - enabled: true - # `container.cpu.percent` is deprecated in favor of `container.cpu.utilization` in opentelemetry-collector-contrib v0.79.0 - container.cpu.utilization: - enabled: true - container.cpu.percent: - enabled: false - container.memory.usage.limit: - enabled: true - container.memory.usage.total: - enabled: true - container.memory.percent: - enabled: true - container.blockio.io_service_bytes_recursive: - enabled: true - container.network.io.usage.rx_bytes: - enabled: true - container.network.io.usage.tx_bytes: - enabled: true - container.network.io.usage.rx_dropped: - enabled: true - container.network.io.usage.tx_dropped: - enabled: true - container.network.io.usage.rx_errors: - enabled: true - container.network.io.usage.tx_errors: - enabled: true - container.network.io.usage.rx_packets: - enabled: true - container.network.io.usage.tx_packets: - enabled: true - container.pids.count: - enabled: true - -processors: - - # resource and resource-detection processors allow decorating the metrics with host attributes - resource: - attributes: - - key: host.id - from_attribute: host.name - action: insert - - resourcedetection: - detectors: ["env", "system"] - - resourcedetection/cloud: - detectors: ["gcp", "ec2", "azure"] - timeout: 2s - override: false - -exporters: - otlphttp: - endpoint: https://otlp.nr-data.net - headers: - api-key: NEW_RELIC_LICENSE_KEY - -service: - telemetry: - logs: - pipelines: - metrics: - receivers: [docker_stats] - processors: - - resourcedetection - - resourcedetection/cloud - - resource - exporters: [otlphttp] -``` - -Para obtener más opciones de configuración, revise: - -* [Documentación del receptor Dockerstats](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/dockerstatsreceiver#configuration) -* [Documentación del recolector OpenTelemetry](https://opentelemetry.io/docs/collector/configuration/) -* [Procesador por lotes](https://github.com/open-telemetry/opentelemetry-collector/blob/main/processor/batchprocessor/README.md) - -## Paso 4: ejecuta el recolector [#run-collector] - -Ejecute el recolector OpenTelemetry (la forma de ejecutarlo puede variar según el método de instalación elegido). Ejemplo: - -```yaml -/usr/bin/otelcol-contrib --config ./config.yaml -``` - -## Paso 5: busque y utilice sus datos - -### Explorar los datos del contenedor en UI de la infraestructura [#using-ui] - -Al utilizar la configuración recomendada para el receptor docker , puede explorar [el contenedor](/docs/infrastructure/infrastructure-ui-pages/hosts-new-view/#containers) que se ejecuta en un host en la nueva experiencia [UI de infraestructura](/docs/infrastructure/infrastructure-ui-pages/infrastructure-ui-entities#access-new-ui) (nueva UI de host). - -### Aprovecha nuestras experiencias impulsadas por entidades - -Los telemetry data del contenedor que se originan en el receptor docker Open Telemetry generan la entidad del contenedor. [Las entidades](/docs/new-relic-solutions/new-relic-one/core-concepts/what-entity-new-relic/) son cualquier cosa que informe datos a New Relic y se identifique mediante un ID de entidad único. - -Su entidad de monitor son los controladores de características como entidad Explorer, carga de trabajo y Lookout. Consulte este [documento](/docs/new-relic-solutions/new-relic-one/core-concepts/new-relic-explorer-view-performance-across-apps-services-hosts/) para obtener más información sobre cómo beneficiarse de estas experiencias. - -### Explora y consulta tus datos [#data] - -Puede utilizar el [explorador métrico](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer) para comprobar la métrica que se está ingiriendo. Todas las métricas reportadas por el receptor de estadísticas docker comienzan con el prefijo `"container."`. - -La siguiente consulta NRQL muestra ejemplos que le ayudarán a consultar la métrica que recibió: - -* Listado del número de actualizaciones métricas ingeridas por nombre de métrica: - - ```sql - SELECT count(*) FROM Metric WHERE metricName LIKE 'container.%' and instrumentation.provider='opentelemetry' facet metricName LIMIT max - ``` - -* Consultar una métrica específica facetada por host: - - ```sql - SELECT average(container.cpu.percent) FROM Metric WHERE instrumentation.provider='opentelemetry' FACET host.name TIMESERIES - ``` - -* Listado de dimensiones disponibles para una métrica determinada: - - ```sql - SELECT keyset() FROM Metric WHERE metricName = 'container.cpu.percent' - ``` - -### Instalar inicio rápido [#quickstart] - -Aprovecha el docker dashboard incluido en el [docker Quickstart Open Telemetría](https://newrelic.com/instant-observability/docker-otel) para fácilmente monitor tu docker infraestructura gracias a los gráficos y filtros predefinidos. - -### Datos métricos - -Para obtener una lista de todas las métricas admitidas, consulte [la referencia métrica del receptor de dockerstats](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/receiver/dockerstatsreceiver/documentation.md). \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx deleted file mode 100644 index 25a6f660030..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul.mdx +++ /dev/null @@ -1,205 +0,0 @@ ---- -title: Recolector de monitoreo HCP Cónsul métrico -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Consul - - HCP - - Hashicorp - - Networking - - Server - - Envoy -metaDescription: You can collect metrics from HCP managed Consul using the OpenTelemetry Collector. -freshnessValidatedDate: '2024-02-26T00:00:00.000Z' -translationType: machine ---- - -Esta guía explica cómo recopilar métricas de su Cónsul administrado por HCP desplegadamente utilizando el recolector OpenTelemetry. El recolector recopila, procesa y envía telemetry data (incluidos métricas, logs y trazas) a varios servidores de observabilidad, incluido New Relic. - -El siguiente ejemplo de configuración aprovecha el receptor Prometheus dentro del recolector. Recupera el servicio métrico directamente de [la API de servicio métrico de HCP Consul](https://developer.hashicorp.com/hcp/docs/consul/monitor/metrics) y los exporta al extremo OpenTelemetry de New Relic. - -HCP Consul ofrece dos tipos de observabilidad métrica: - -* [Métricas del servidor](https://developer.hashicorp.com/hcp/docs/consul/monitor/consul-central/observability#server-metrics): rastrean el rendimiento del servidor Consul y el uso de recursos. -* [Envoy proxy métrica](https://developer.hashicorp.com/hcp/docs/consul/monitor/consul-central/observability#envoy-proxy-metrics): Estos monitorean la malla de servicios de Envoy dentro de Consul. - -Siga los pasos a continuación para recopilar y exportar HCP Consul métrica a New Relic. - - - - ## Revisa los requisitos [#requirements] - - Antes de comenzar, necesitará lo siguiente: - - * Un docker daemon servicio en ejecución - - * Una herramienta [Docker Compose](https://docs.docker.com/compose/) instalada - - * Su [token de administrador de ACL de HCP Consul](https://developer.hashicorp.com/hcp/docs/consul/hcp-managed/access#generate-admin-token) - - * Tu New Relic - - - - para la cuenta a la que deseas informar datos - - - - ## Descargue o clone la configuración de ejemplo [#download] - - 1. [Descargue la configuración de ejemplo](https://github.com/newrelic/newrelic-opentelemetry-examples). - 2. Una vez descargado, ubique el directorio llamado `hcp-consul` dentro de la carpeta `other-examples/collector` del repositorio. Este directorio contiene la configuración específica para la recolección de HCP Consul métrica. - 3. (Opcional) Consulte el [archivo README](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/hcp-consul#readme) para obtener detalles e instrucciones adicionales relacionados con el ejemplo de HCP Consul. - - - - ## Establezca variables de entorno y ejecute el recolector [#set-variables-run-collector] - - En el archivo `.env` : - - * Establecer los valores del token de acceso de HCP y de la URL de acceso - * Establezca la variable clave de API de New Relic en su clave de licencia de New Relic - - ```bash - # Open the HCP Consul example directory - cd newrelic-opentelemetry-examples/other-examples/collector/hcp-consul - - # Set environment variables. - - # run the collector in docker - docker compose up - ``` - - ### Información de variables de entorno - - Si necesita más información sobre las variables de entorno establecidas anteriormente, consulte la documentación en la siguiente tabla. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Variable - - Descripción - - Documentos -
- `NEW_RELIC_API_KEY` - - New Relic Ingest clave de API - - [Más información sobre la clave de API](/docs/apis/intro-apis/new-relic-api-keys/) -
- `NEW_RELIC_OTLP_ENDPOINT` - - El extremo predeterminado de OTLP New Relic de EE. UU. es `https://otlp.nr-data.net:4318`. - - [Revisar la configuración extrema de OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp) -
- `HCP_ACCESS_TOKEN` - - Token de administrador de ACL para HCP Consul - - [Crear un token de administrador de ACL](https://developer.hashicorp.com/hcp/docs/consul/hcp-managed/access#generate-admin-token) -
- `HCP_ACCESS_URL` - - URL para acceder a su servidor Consul específico - - [Localiza tu URL de acceso](https://developer.hashicorp.com/hcp/docs/consul/hcp-managed/access#get-access-url) -
-
- - - ## Reenviar HCP Cónsul Enviado métrica a New Relic [#forward-envoy-metrics] - - Para monitor la métrica de HCP Consul Envoy en New Relic, puede configurar el recolector OpenTelemetry integrado en su clúster HCP Consul para reenviar la métrica a su propio recolector. Esto puede incluir el recolector que se ejecuta en este ejemplo. - - 1. Agregue un receptor HTTP al recolector de OpenTelemetry. Puede agregar esto al grupo `receivers` en el archivo `collector.yaml` de ejemplo: - - ```yaml - receivers: - otlp: - protocols: - http: - ``` - - Esto agregará un receptor escuchando en `0.0.0.0:4318`. - - 2. Configure su clúster HCP Consul para reenviar Envoy métrica a este receptor. Esto se puede configurar desde la estrofa `telemetryCollector` en su archivo de configuración de HCP Consul. Por ejemplo: - - ```yaml - telemetryCollector: - enabled: true - customExporterConfig: |- - { - "exporter_config": { - "otlphttp": { - "endpoint": "0.0.0.0:4318", - "headers": { - "authorization": "" - }, - "timeout": "2s" - } - } - } - - ``` - - - - ## Ver tus datos en New Relic [#view-data] - - En New Relic, puede ver los datos de su HCP Consul en algunos lugares diferentes: - - * Navegue hasta el [mercado de New Relic](https://one.newrelic.com/marketplace) y busque "cónsul". Haga clic en uno de los paneles para instalarlo rápidamente en su cuenta. - - * Navegue hasta el explorador métrica y filtre por `consul` o `envoy` por Envoy métrica. Estos datos se pueden agregar a cualquier alerta o dashboard personalizado. - - - Para ver todas las métricas disponibles con esta integración del servidor HCP Consul, consulte la [documentación aquí](https://developer.hashicorp.com/consul/docs/agent/telemetry#metrics-reference). - - -
\ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx deleted file mode 100644 index 7a0d7c517a8..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq.mdx +++ /dev/null @@ -1,12701 +0,0 @@ ---- -title: Recolector para HiveMQ -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - HiveMQ -metaDescription: You can collect HiveMQ metrics using the OpenTelemetry Collector. -freshnessValidatedDate: never -translationType: machine ---- - -Puede recopilar métricas sobre su plataforma de mensajería HiveMQ MQTT con el recolector OpenTelemetry. El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - - - Si busca ayuda con otros casos de uso del recolector, consulte el repositorio [newrelic-OpenTelemetry-examples](https://github.com/newrelic/newrelic-opentelemetry-examples) . - - -Complete los pasos a continuación para recolectar métrica de HiveMQ: - - - - ## ¡Regístrate en New Relic! [#signup] - - Si aún no lo ha hecho, regístrese para obtener una [cuenta New Relic](https://newrelic.com/signup) gratuita y obtenga el para la cuenta New Relic a la que desea informar datos. - - - - ## Revisar los requisitos previos [#prerequisites] - - [Configure la extensión Prometheus](https://github.com/hivemq/hivemq-prometheus-extension/blob/master/README.adoc) en su plataforma de mensajes HiveMQ. - - - - ## Instalar el recolector OpenTelemetry [#install-opentelemetry-collector] - - Descargue e instale el recolector OpenTelemetry siguiendo [los documentosOpenTelemetry ](https://opentelemetry.io/docs/collector/getting-started/). - - - - ## Configurar el recolector OpenTelemetry [#configure-opentelemetry-collector] - - Cree un nuevo archivo llamado `config.yaml` del siguiente ejemplo. - - Reemplace las siguientes claves en el archivo con sus propios valores: - - * Extensión HiveMQ Prometheus: - - * HIVEMQ_PROMETHEUS_HOSTNAME - * HIVEMQ_PROMETHEUS_PORT - * HIVEMQ_PROMETHEUS_METRICS_PATH - - * [New Relic ](/docs/apis/intro-apis/new-relic-api-keys/#license-key): - - * NEW_RELIC_LICENSE_KEY - - ```yaml - receivers: - prometheus: - config: - scrape_configs: - - job_name: "hive-mq" - static_configs: - - targets: ["HIVEMQ_PROMETHEUS_HOSTNAME:HIVEMQ_PROMETHEUS_PORT"] - metrics_path: HIVEMQ_PROMETHEUS_METRICS_PATH - - exporters: - otlphttp: - endpoint: https://otlp.nr-data.net - headers: - api-key: NEW_RELIC_LICENSE_KEY - processors: - batch: - memory_limiter: - limit_mib: 400 - spike_limit_mib: 100 - check_interval: 5s - service: - telemetry: - logs: - pipelines: - metrics: - receivers: [prometheus] - processors: [batch, memory_limiter] - exporters: [otlphttp] - ``` - - Puede consultar [los documentos del recolector OpenTelemetry ](https://opentelemetry.io/docs/collector/configuration/)y [los documentos de configuración de Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) para obtener detalles de configuración adicionales. - - - - ## Ejecute el recolector OpenTelemetry [#run-collector] - - Ejecute el recolector OpenTelemetry (la forma de ejecutarlo puede variar según el método de instalación elegido). Ejemplo: - - ``` - /usr/bin/otelcol --config ./config.yaml - ``` - - - -## Explora tus datos - -Puede utilizar el [explorador métrico](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer) para comprobar la métrica que se está ingiriendo. Todas las métricas reportadas por la extensión HiveMQ Prometheus comienzan con el prefijo `com_hivemq_` . - -## Detalles de datos métricos [#hivemq-metrics] - -La siguiente tabla enumera ejemplos de los tipos de métricas que recopilamos. - - - * Es posible que no todas las métricas estén disponibles (y es posible que encuentre métricas adicionales) dependiendo de su configuración de HiveMQ, y no todas las métricas están disponibles en HiveMQ Community Edition. - * El módulo API REST solo expone métrica cuando está habilitado. - * Ciertas extensiones de HiveMQ informan métricas específicas. - * Para obtener una lista completa de HiveMQ métrica, consulte [la documentación de HiveMQ sobre métrica disponible](https://www.hivemq.com/docs/hivemq/latest/user-guide/monitoring.html#available-metrics). - - -Consulte [la documentación métrica de HiveMQ](https://www.hivemq.com/docs/hivemq/latest/user-guide/monitoring.html#available-metrics) para obtener información adicional. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_cache_internal_export_states_averageLoadPenalty` - - medidor -
- `com_hivemq_cache_internal_export_states_evictionCount` - - medidor -
- `com_hivemq_cache_internal_export_states_hitCount` - - medidor -
- `com_hivemq_cache_internal_export_states_hitRate` - - medidor -
- `com_hivemq_cache_internal_export_states_loadCount` - - medidor -
- `com_hivemq_cache_internal_export_states_loadExceptionCount` - - medidor -
- `com_hivemq_cache_internal_export_states_loadExceptionRate` - - medidor -
- `com_hivemq_cache_internal_export_states_loadSuccessCount` - - medidor -
- `com_hivemq_cache_internal_export_states_missCount` - - medidor -
- `com_hivemq_cache_internal_export_states_missRate` - - medidor -
- `com_hivemq_cache_internal_export_states_requestCount` - - medidor -
- `com_hivemq_cache_internal_export_states_totalLoadTime` - - medidor -
- `com_hivemq_cache_publish_deduplication_averageLoadPenalty` - - medidor -
- `com_hivemq_cache_publish_deduplication_evictionCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_hitCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_hitRate` - - medidor -
- `com_hivemq_cache_publish_deduplication_loadCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_loadExceptionCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_loadExceptionRate` - - medidor -
- `com_hivemq_cache_publish_deduplication_loadSuccessCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_missCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_missRate` - - medidor -
- `com_hivemq_cache_publish_deduplication_requestCount` - - medidor -
- `com_hivemq_cache_publish_deduplication_totalLoadTime` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_averageLoadPenalty` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_evictionCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_hitCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_hitRate` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_loadCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_loadExceptionCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_loadExceptionRate` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_loadSuccessCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_missCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_missRate` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_requestCount` - - medidor -
- `com_hivemq_cache_shared_queue_size_cache_totalLoadTime` - - medidor -
- `com_hivemq_cache_shared_subscriber_averageLoadPenalty` - - medidor -
- `com_hivemq_cache_shared_subscriber_evictionCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_hitCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_hitRate` - - medidor -
- `com_hivemq_cache_shared_subscriber_loadCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_loadExceptionCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_loadExceptionRate` - - medidor -
- `com_hivemq_cache_shared_subscriber_loadSuccessCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_missCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_missRate` - - medidor -
- `com_hivemq_cache_shared_subscriber_requestCount` - - medidor -
- `com_hivemq_cache_shared_subscriber_totalLoadTime` - - medidor -
- `com_hivemq_cache_shared_subscription_averageLoadPenalty` - - medidor -
- `com_hivemq_cache_shared_subscription_evictionCount` - - medidor -
- `com_hivemq_cache_shared_subscription_hitCount` - - medidor -
- `com_hivemq_cache_shared_subscription_hitRate` - - medidor -
- `com_hivemq_cache_shared_subscription_loadCount` - - medidor -
- `com_hivemq_cache_shared_subscription_loadExceptionCount` - - medidor -
- `com_hivemq_cache_shared_subscription_loadExceptionRate` - - medidor -
- `com_hivemq_cache_shared_subscription_loadSuccessCount` - - medidor -
- `com_hivemq_cache_shared_subscription_missCount` - - medidor -
- `com_hivemq_cache_shared_subscription_missRate` - - medidor -
- `com_hivemq_cache_shared_subscription_requestCount` - - medidor -
- `com_hivemq_cache_shared_subscription_totalLoadTime` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_backup_executor_completed_total` - - count -
- `com_hivemq_backup_executor_duration` - - resumen -
- `com_hivemq_backup_executor_idle` - - resumen -
- `com_hivemq_backup_executor_running` - - medidor -
- `com_hivemq_backup_executor_submitted_total` - - count -
- `com_hivemq_backup_write_executor_completed_total` - - count -
- `com_hivemq_backup_write_executor_duration` - - resumen -
- `com_hivemq_backup_write_executor_idle` - - resumen -
- `com_hivemq_backup_write_executor_pool_core` - - medidor -
- `com_hivemq_backup_write_executor_pool_max` - - medidor -
- `com_hivemq_backup_write_executor_pool_size` - - medidor -
- `com_hivemq_backup_write_executor_running` - - medidor -
- `com_hivemq_backup_write_executor_submitted_total` - - count -
- `com_hivemq_backup_write_executor_tasks_active` - - medidor -
- `com_hivemq_backup_write_executor_tasks_capacity` - - medidor -
- `com_hivemq_backup_write_executor_tasks_completed` - - medidor -
- `com_hivemq_backup_write_executor_tasks_queued` - - medidor -
- `com_hivemq_cluster_join_executor_completed_total` - - count -
- `com_hivemq_cluster_join_executor_duration` - - resumen -
- `com_hivemq_cluster_join_executor_idle` - - resumen -
- `com_hivemq_cluster_join_executor_running` - - medidor -
- `com_hivemq_cluster_join_executor_submitted_total` - - count -
- `com_hivemq_cluster_join_scheduled_executor_completed_total` - - count -
- `com_hivemq_cluster_join_scheduled_executor_duration` - - resumen -
- `com_hivemq_cluster_join_scheduled_executor_running` - - medidor -
- `com_hivemq_cluster_join_scheduled_executor_scheduled_once_total` - - count -
- `com_hivemq_cluster_join_scheduled_executor_scheduled_overrun` - - medidor -
- `com_hivemq_cluster_join_scheduled_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_cluster_join_scheduled_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_cluster_join_scheduled_executor_submitted_total` - - count -
- `com_hivemq_control_center_executor_completed_total` - - count -
- `com_hivemq_control_center_executor_duration` - - resumen -
- `com_hivemq_control_center_executor_idle` - - resumen -
- `com_hivemq_control_center_executor_pool_core` - - medidor -
- `com_hivemq_control_center_executor_pool_max` - - medidor -
- `com_hivemq_control_center_executor_pool_size` - - medidor -
- `com_hivemq_control_center_executor_running` - - medidor -
- `com_hivemq_control_center_executor_submitted_total` - - count -
- `com_hivemq_control_center_executor_tasks_active` - - medidor -
- `com_hivemq_control_center_executor_tasks_capacity` - - medidor -
- `com_hivemq_control_center_executor_tasks_completed` - - medidor -
- `com_hivemq_control_center_executor_tasks_queued` - - medidor -
- `com_hivemq_control_center_frontend_executor_completed_total` - - count -
- `com_hivemq_control_center_frontend_executor_duration` - - resumen -
- `com_hivemq_control_center_frontend_executor_idle` - - resumen -
- `com_hivemq_control_center_frontend_executor_pool_core` - - medidor -
- `com_hivemq_control_center_frontend_executor_pool_max` - - medidor -
- `com_hivemq_control_center_frontend_executor_pool_size` - - medidor -
- `com_hivemq_control_center_frontend_executor_running` - - medidor -
- `com_hivemq_control_center_frontend_executor_submitted_total` - - count -
- `com_hivemq_control_center_frontend_executor_tasks_active` - - medidor -
- `com_hivemq_control_center_frontend_executor_tasks_capacity` - - medidor -
- `com_hivemq_control_center_frontend_executor_tasks_completed` - - medidor -
- `com_hivemq_control_center_frontend_executor_tasks_queued` - - medidor -
- `com_hivemq_control_center_scheduled_executor_completed_total` - - count -
- `com_hivemq_control_center_scheduled_executor_duration` - - resumen -
- `com_hivemq_control_center_scheduled_executor_running` - - medidor -
- `com_hivemq_control_center_scheduled_executor_scheduled_once_total` - - count -
- `com_hivemq_control_center_scheduled_executor_scheduled_overrun` - - medidor -
- `com_hivemq_control_center_scheduled_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_control_center_scheduled_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_control_center_scheduled_executor_submitted_total` - - count -
- `com_hivemq_credit_accounting_service_scheduled_executor_completed_total` - - count -
- `com_hivemq_credit_accounting_service_scheduled_executor_duration` - - resumen -
- `com_hivemq_credit_accounting_service_scheduled_executor_running` - - medidor -
- `com_hivemq_credit_accounting_service_scheduled_executor_scheduled_once_total` - - count -
- `com_hivemq_credit_accounting_service_scheduled_executor_scheduled_overrun` - - medidor -
- `com_hivemq_credit_accounting_service_scheduled_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_credit_accounting_service_scheduled_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_credit_accounting_service_scheduled_executor_submitted_total` - - count -
- `com_hivemq_diagnostic_archive_write_executor_completed_total` - - count -
- `com_hivemq_diagnostic_archive_write_executor_duration` - - resumen -
- `com_hivemq_diagnostic_archive_write_executor_idle` - - resumen -
- `com_hivemq_diagnostic_archive_write_executor_pool_core` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_pool_max` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_pool_size` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_running` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_submitted_total` - - count -
- `com_hivemq_diagnostic_archive_write_executor_tasks_active` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_tasks_capacity` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_tasks_completed` - - medidor -
- `com_hivemq_diagnostic_archive_write_executor_tasks_queued` - - medidor -
- `com_hivemq_executor_topic_tree_cleanup_completed_total` - - count -
- `com_hivemq_executor_topic_tree_cleanup_duration` - - resumen -
- `com_hivemq_executor_topic_tree_cleanup_idle` - - resumen -
- `com_hivemq_executor_topic_tree_cleanup_running` - - medidor -
- `com_hivemq_executor_topic_tree_cleanup_submitted_total` - - count -
- `com_hivemq_extension_consumer_executor_0_completed_total` - - count -
- `com_hivemq_extension_consumer_executor_0_duration` - - resumen -
- `com_hivemq_extension_consumer_executor_0_idle` - - resumen -
- `com_hivemq_extension_consumer_executor_0_running` - - medidor -
- `com_hivemq_extension_consumer_executor_0_submitted_total` - - count -
- `com_hivemq_extension_consumer_executor_1_completed_total` - - count -
- `com_hivemq_extension_consumer_executor_1_duration` - - resumen -
- `com_hivemq_extension_consumer_executor_1_idle` - - resumen -
- `com_hivemq_extension_consumer_executor_1_running` - - medidor -
- `com_hivemq_extension_consumer_executor_1_submitted_total` - - count -
- `com_hivemq_extensions_cluster_discovery_executor_completed_total` - - count -
- `com_hivemq_extensions_cluster_discovery_executor_duration` - - resumen -
- `com_hivemq_extensions_cluster_discovery_executor_running` - - medidor -
- `com_hivemq_extensions_cluster_discovery_executor_scheduled_once_total` - - count -
- `com_hivemq_extensions_cluster_discovery_executor_scheduled_overrun` - - medidor -
- `com_hivemq_extensions_cluster_discovery_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_extensions_cluster_discovery_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_extensions_cluster_discovery_executor_submitted_total` - - count -
- `com_hivemq_extensions_filesystem_watch_executor_completed_total` - - count -
- `com_hivemq_extensions_filesystem_watch_executor_duration` - - resumen -
- `com_hivemq_extensions_filesystem_watch_executor_running` - - medidor -
- `com_hivemq_extensions_filesystem_watch_executor_scheduled_once_total` - - count -
- `com_hivemq_extensions_filesystem_watch_executor_scheduled_overrun` - - medidor -
- `com_hivemq_extensions_filesystem_watch_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_extensions_filesystem_watch_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_extensions_filesystem_watch_executor_submitted_total` - - count -
- `com_hivemq_extensions_managed_executor_completed_total` - - count -
- `com_hivemq_extensions_managed_executor_duration` - - resumen -
- `com_hivemq_extensions_managed_executor_running` - - medidor -
- `com_hivemq_extensions_managed_executor_scheduled_once_total` - - count -
- `com_hivemq_extensions_managed_executor_scheduled_overrun` - - medidor -
- `com_hivemq_extensions_managed_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_extensions_managed_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_extensions_managed_executor_submitted_total` - - count -
- `com_hivemq_extensions_messaging_executor_completed_total` - - count -
- `com_hivemq_extensions_messaging_executor_duration` - - resumen -
- `com_hivemq_extensions_messaging_executor_idle` - - resumen -
- `com_hivemq_extensions_messaging_executor_running` - - medidor -
- `com_hivemq_extensions_messaging_executor_submitted_total` - - count -
- `com_hivemq_extensions_start_stop_executor_completed_total` - - count -
- `com_hivemq_extensions_start_stop_executor_duration` - - resumen -
- `com_hivemq_extensions_start_stop_executor_idle` - - resumen -
- `com_hivemq_extensions_start_stop_executor_running` - - medidor -
- `com_hivemq_extensions_start_stop_executor_submitted_total` - - count -
- `com_hivemq_extensions_timeout_executor_completed_total` - - count -
- `com_hivemq_extensions_timeout_executor_duration` - - resumen -
- `com_hivemq_extensions_timeout_executor_running` - - medidor -
- `com_hivemq_extensions_timeout_executor_scheduled_once_total` - - count -
- `com_hivemq_extensions_timeout_executor_scheduled_overrun` - - medidor -
- `com_hivemq_extensions_timeout_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_extensions_timeout_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_extensions_timeout_executor_submitted_total` - - count -
- `com_hivemq_payload_persistence_cleanup_executor_completed_total` - - count -
- `com_hivemq_payload_persistence_cleanup_executor_duration` - - resumen -
- `com_hivemq_payload_persistence_cleanup_executor_running` - - medidor -
- `com_hivemq_payload_persistence_cleanup_executor_scheduled_once_total` - - count -
- `com_hivemq_payload_persistence_cleanup_executor_scheduled_overrun` - - medidor -
- `com_hivemq_payload_persistence_cleanup_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_payload_persistence_cleanup_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_payload_persistence_cleanup_executor_submitted_total` - - count -
- `com_hivemq_persistence_executor_attribute_tasks` - - medidor -
- `com_hivemq_persistence_executor_attribute_time` - - resumen -
- `com_hivemq_persistence_executor_client_events_tasks` - - medidor -
- `com_hivemq_persistence_executor_client_events_time` - - resumen -
- `com_hivemq_persistence_executor_client_session_tasks` - - medidor -
- `com_hivemq_persistence_executor_client_session_time` - - resumen -
- `com_hivemq_persistence_executor_incoming_message_flow_tasks` - - medidor -
- `com_hivemq_persistence_executor_incoming_message_flow_time` - - resumen -
- `com_hivemq_persistence_executor_queue_misses` - - medidor -
- `com_hivemq_persistence_executor_queued` - - medidor -
- `com_hivemq_persistence_executor_queued_messages_tasks` - - medidor -
- `com_hivemq_persistence_executor_queued_messages_time` - - resumen -
- `com_hivemq_persistence_executor_request_event_bus_tasks` - - medidor -
- `com_hivemq_persistence_executor_request_event_bus_time` - - resumen -
- `com_hivemq_persistence_executor_retained_messages_tasks` - - medidor -
- `com_hivemq_persistence_executor_retained_messages_time` - - resumen -
- `com_hivemq_persistence_executor_running_threads` - - medidor -
- `com_hivemq_persistence_executor_sampled_duration` - - resumen -
- `com_hivemq_persistence_executor_subscription_tasks` - - medidor -
- `com_hivemq_persistence_executor_subscription_time` - - resumen -
- `com_hivemq_persistence_executor_topic_tree_tasks` - - medidor -
- `com_hivemq_persistence_executor_topic_tree_time` - - resumen -
- `com_hivemq_persistence_executor_total_tasks` - - medidor -
- `com_hivemq_persistence_scheduled_executor_completed_total` - - count -
- `com_hivemq_persistence_scheduled_executor_duration` - - resumen -
- `com_hivemq_persistence_scheduled_executor_running` - - medidor -
- `com_hivemq_persistence_scheduled_executor_scheduled_once_total` - - count -
- `com_hivemq_persistence_scheduled_executor_scheduled_overrun` - - medidor -
- `com_hivemq_persistence_scheduled_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_persistence_scheduled_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_persistence_scheduled_executor_submitted_total` - - count -
- `com_hivemq_replication_executor_completed_total` - - count -
- `com_hivemq_replication_executor_duration` - - resumen -
- `com_hivemq_replication_executor_idle` - - resumen -
- `com_hivemq_replication_executor_running` - - medidor -
- `com_hivemq_replication_executor_submitted_total` - - count -
- `com_hivemq_rest_api_worker_executor_completed_total` - - count -
- `com_hivemq_rest_api_worker_executor_duration` - - resumen -
- `com_hivemq_rest_api_worker_executor_idle` - - resumen -
- `com_hivemq_rest_api_worker_executor_pool_core` - - medidor -
- `com_hivemq_rest_api_worker_executor_pool_max` - - medidor -
- `com_hivemq_rest_api_worker_executor_pool_size` - - medidor -
- `com_hivemq_rest_api_worker_executor_running` - - medidor -
- `com_hivemq_rest_api_worker_executor_submitted_total` - - count -
- `com_hivemq_rest_api_worker_executor_tasks_active` - - medidor -
- `com_hivemq_rest_api_worker_executor_tasks_capacity` - - medidor -
- `com_hivemq_rest_api_worker_executor_tasks_completed` - - medidor -
- `com_hivemq_rest_api_worker_executor_tasks_queued` - - medidor -
- `com_hivemq_single_writer_executor_queued` - - medidor -
- `com_hivemq_single_writer_executor_sampled_duration` - - resumen -
- `com_hivemq_ssl_context_store_executor_completed_total` - - count -
- `com_hivemq_ssl_context_store_executor_duration` - - resumen -
- `com_hivemq_ssl_context_store_executor_running` - - medidor -
- `com_hivemq_ssl_context_store_executor_scheduled_once_total` - - count -
- `com_hivemq_ssl_context_store_executor_scheduled_overrun` - - medidor -
- `com_hivemq_ssl_context_store_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_ssl_context_store_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_ssl_context_store_executor_submitted_total` - - count -
- `com_hivemq_supervision_scheduled_executor_completed_total` - - count -
- `com_hivemq_supervision_scheduled_executor_duration` - - resumen -
- `com_hivemq_supervision_scheduled_executor_running` - - medidor -
- `com_hivemq_supervision_scheduled_executor_scheduled_once_total` - - count -
- `com_hivemq_supervision_scheduled_executor_scheduled_overrun` - - medidor -
- `com_hivemq_supervision_scheduled_executor_scheduled_percent_of_period` - - resumen -
- `com_hivemq_supervision_scheduled_executor_scheduled_repetitively_total` - - count -
- `com_hivemq_supervision_scheduled_executor_submitted_total` - - count -
- `com_hivemq_view_change_executor_completed_total` - - count -
- `com_hivemq_view_change_executor_duration` - - resumen -
- `com_hivemq_view_change_executor_idle` - - resumen -
- `com_hivemq_view_change_executor_running` - - medidor -
- `com_hivemq_view_change_executor_submitted_total` - - count -
- `com_hivemq_single_writer_callback_executor0_queued` - - medidor -
- `com_hivemq_single_writer_callback_executor0_sampled_duration` - - resumen -
- `com_hivemq_single_writer_callback_executor1_queued` - - medidor -
- `com_hivemq_single_writer_callback_executor1_sampled_duration` - - resumen -
- `com_hivemq_single_writer_scheduled_check_completed_total` - - count -
- `com_hivemq_single_writer_scheduled_check_duration` - - resumen -
- `com_hivemq_single_writer_scheduled_check_running` - - medidor -
- `com_hivemq_single_writer_scheduled_check_scheduled_once_total` - - count -
- `com_hivemq_single_writer_scheduled_check_scheduled_overrun` - - medidor -
- `com_hivemq_single_writer_scheduled_check_scheduled_percent_of_period` - - resumen -
- `com_hivemq_single_writer_scheduled_check_scheduled_repetitively_total` - - count -
- `com_hivemq_single_writer_scheduled_check_submitted_total` - - count -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_internal_after_join_cleanup_attributes_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_client_events_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_client_queues_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_client_session_subscriptions_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_client_sessions_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_incoming_message_flows_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_retained_messages_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_after_join_cleanup_topic_tree_subscriptions_removal_in_progress_count` - - medidor -
- `com_hivemq_internal_attribute_persistence_vector_clocks_current` - - medidor -
- `com_hivemq_internal_cleanup_job_task_timeouts` - - medidor -
- `com_hivemq_internal_client_queue_iterations_count` - - medidor -
- `com_hivemq_internal_client_queue_local_persistence_remove_shared_publish_not_found` - - medidor -
- `com_hivemq_internal_client_queue_persistence_vector_clocks_current` - - medidor -
- `com_hivemq_internal_client_queue_put_ids_missed_unique_ids_count` - - medidor -
- `com_hivemq_internal_client_queue_replication_add_conflict` - - medidor -
- `com_hivemq_internal_client_queue_replication_add_older_or_equal` - - medidor -
- `com_hivemq_internal_client_queue_replication_clear_conflict` - - medidor -
- `com_hivemq_internal_client_queue_replication_clear_older_or_equal` - - medidor -
- `com_hivemq_internal_client_queue_replication_read_new_conflict` - - medidor -
- `com_hivemq_internal_client_queue_replication_read_new_older_or_equal` - - medidor -
- `com_hivemq_internal_client_queue_replication_remove_conflict` - - medidor -
- `com_hivemq_internal_client_queue_replication_remove_older_or_equal` - - medidor -
- `com_hivemq_internal_client_queue_set_ids_skip_bit_set_count` - - medidor -
- `com_hivemq_internal_client_session_persistence_vector_clocks_current` - - medidor -
- `com_hivemq_internal_client_session_subscription_persistence_vector_clocks_current` - - medidor -
- `com_hivemq_internal_cluster_is_coordinator` - - medidor -
- `com_hivemq_internal_cluster_join_duration` - - medidor -
- `com_hivemq_internal_cluster_joining_nodes_count` - - medidor -
- `com_hivemq_internal_cluster_late_join_count` - - medidor -
- `com_hivemq_internal_cluster_merge_minority_nodes_count` - - medidor -
- `com_hivemq_internal_cluster_merging_nodes_count` - - medidor -
- `com_hivemq_internal_cluster_not_joined_nodes_count` - - medidor -
- `com_hivemq_internal_cluster_publish_receiver_is_duplicate_meter_total` - - count -
- `com_hivemq_internal_cluster_receive_buffer_available_maximum` - - medidor -
- `com_hivemq_internal_cluster_receive_buffer_available_total` - - medidor -
- `com_hivemq_internal_cluster_receive_buffer_size_average` - - medidor -
- `com_hivemq_internal_cluster_receive_buffer_size_minimum` - - medidor -
- `com_hivemq_internal_cluster_receiver_not_coordinator_count` - - medidor -
- `com_hivemq_internal_cluster_replications_canceled` - - medidor -
- `com_hivemq_internal_cluster_replications_in_progress` - - medidor -
- `com_hivemq_internal_cluster_running_nodes_count` - - medidor -
- `com_hivemq_internal_cluster_send_buffer_size_average` - - medidor -
- `com_hivemq_internal_cluster_send_buffer_size_minimum` - - medidor -
- `com_hivemq_internal_cluster_state_change_not_member_count` - - medidor -
- `com_hivemq_internal_cluster_too_many_overlapping_leave_replications_count` - - medidor -
- `com_hivemq_internal_cluster_unknown_nodes_count` - - medidor -
- `com_hivemq_internal_cluster_vector_clock_conflicts_total` - - medidor -
- `com_hivemq_internal_connect_request_queue_amount` - - medidor -
- `com_hivemq_internal_connect_request_queue_size_exceeded` - - medidor -
- `com_hivemq_internal_connect_request_queued` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_max_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_attribute_total_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_max_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_queue_total_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_max_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_store_total_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_max_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_client_session_subscriptions_total_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_max_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_active_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_bytes_moved_by_gc` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_disk_usage` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_flushed_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_log_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_readonly_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_store_get_cache_hit_rate` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_transactions` - - medidor -
- `com_hivemq_internal_file_persistence_incoming_message_flow_total_utilization_percent` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_blob_file_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_blob_file_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_blob_file_synced` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_gc_micros_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_gc_micros_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_get_micros_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_get_micros_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_num_get` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_num_keys_read` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_num_keys_written` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_num_put` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_num_write` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_write_micros_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_blob_db_write_micros_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_block_cache_max_size` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_block_cache_pinned_size` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_block_cache_size` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_compact_read_bytes` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_compact_write_bytes` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_compaction_time_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_compaction_time_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_get_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_get_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_next` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_next_found` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_seek` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_seek_found` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_write_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_db_write_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_estimate_table_readers_size` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_flush_time_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_flush_time_sum` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_flush_write_bytes` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_iter_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_iterators_created` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_keys_read` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_keys_updated` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_keys_written` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_mem_table_max_size` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_mem_table_size` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level0` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level1` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level2` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level3` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level4` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level5` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_num_files_at_level6` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_write_stall_count` - - medidor -
- `com_hivemq_internal_file_persistence_publish_payload_store_write_stall_sum` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_block_cache_max_size` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_block_cache_pinned_size` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_block_cache_size` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_bytes_written` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_compact_read_bytes` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_compact_write_bytes` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_compaction_time_count` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_compaction_time_sum` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_get_count` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_get_sum` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_next` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_next_found` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_seek` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_seek_found` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_write_count` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_db_write_sum` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_estimate_table_readers_size` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_flush_time_count` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_flush_time_sum` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_flush_write_bytes` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_iter_bytes_read` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_iterators_created` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_keys_read` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_keys_updated` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_keys_written` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_mem_table_max_size` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_mem_table_size` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level0` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level1` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level2` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level3` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level4` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level5` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_num_files_at_level6` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_write_stall_count` - - medidor -
- `com_hivemq_internal_file_persistence_retained_messages_write_stall_sum` - - medidor -
- `com_hivemq_internal_join_replication_duration` - - medidor -
- `com_hivemq_internal_leave_replication_duration` - - medidor -
- `com_hivemq_internal_messages_dropped_on_replica_count` - - medidor -
- `com_hivemq_internal_nodes_known_offline_count` - - medidor -
- `com_hivemq_internal_nodes_known_versions_count` - - medidor -
- `com_hivemq_internal_payload_reference_error` - - medidor -
- `com_hivemq_internal_publish_expired_cache_full` - - medidor -
- `com_hivemq_internal_publish_expired_cache_size` - - medidor -
- `com_hivemq_internal_publish_expired_inflight_messages` - - medidor -
- `com_hivemq_internal_retained_message_persistence_vector_clocks_current` - - medidor -
- `com_hivemq_internal_shared_subscriptions_subscribers_cached` - - resumen -
- `com_hivemq_internal_singlewriter_abstract_persistence_close_db_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_clean_up_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_delete_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_get_local_data_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_process_delete_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_process_replication_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_process_store_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_remove_local_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_retrieve_attribute_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_retrieve_queued` - - medidor -
- `com_hivemq_internal_singlewriter_attribute_persistence_store_queued` - - medidor -
- `com_hivemq_internal_singlewriter_check_connected_clients_on_success_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_event_persistence_delete_expired_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_event_persistence_receive_add_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_event_persistence_receive_get_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_event_persistence_receive_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_event_persistence_remove_bucket_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_event_persistence_replicate_bucket_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_add_batch_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_add_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_add_replica_list_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_add_replica_single_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_add_shared_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_clean_up_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_clear_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_clear_replication_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_get_data_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_get_payload_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_on_success_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_pubrel_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_put_pubrel_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_queue_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_read_inflight_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_read_new_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_read_new_replication_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_all_qos_0_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_all_qos_0_replication_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_batched_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_batched_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_index_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_inflight_marker_node_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_inflight_marker_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_inflight_marker_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_local_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_replica_request_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_remove_shared_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_schedule_expiry_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_shared_remove_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_queue_persistence_size_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_clean_up_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_connect_client_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_delete_connected_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_disconnect_local_client_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_get_all_local_clients_chunk_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_get_all_local_clients_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_get_data_for_export_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_get_data_for_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_get_topic_tree_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_handle_force_put_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_handle_master_connected_check_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_handle_merge_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_handle_next_connected_get_session_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_handle_next_connected_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_handle_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_missing_session_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_node_left_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_pending_wills_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_process_session_expiry_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_queue_connect_request_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_remove_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_persistence_remove_will_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_add_batched_topics_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_add_subscription_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_batched_add_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_batched_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_clean_up_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_delete_connected_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_get_data_for_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_get_local_subscribers_chunk_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_get_subscriptions_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_handle_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_increment_vector_clock_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_remove_all_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_remove_all_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_remove_all_timestamp_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_remove_batched_topics_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_remove_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_client_session_subscription_persistence_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_cluster_publish_receiver_handle_queued` - - medidor -
- `com_hivemq_internal_singlewriter_disconnect_handler_send_client_disconnect_queued` - - medidor -
- `com_hivemq_internal_singlewriter_empty_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_add_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_connected_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_delete_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_disconnected_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_get_data_for_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_poll_all_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_put_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_remove_local_data_queued` - - medidor -
- `com_hivemq_internal_singlewriter_message_flow_persistence_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_messages_available_state_change_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AllClientSessionsChunkRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AllClientsRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AllClusterStatesRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AllRetainedMessagesChunkRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AllSubscribersRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeDeleteRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeReplicateDeleteRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeReplicateStoreRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeReplicationBatchedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeRetrieveAttributeRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeRetrieveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeStoreIfNewerRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_AttributeStoreRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_BatchedPublishRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_CheckConnectedClientsAtNodeRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_CheckConnectedClientsRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientConnectedRequest_4_3_3_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientConnectedRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientConnectedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientDetailConnectionGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientDetailSessionGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientDisconnectedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientEventsAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientEventsGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientEventsReplicateRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionBatchedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionForcePutRequest_4_3_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionForcePutRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionForcePutRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionGetRequest_4_3_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionPutAllRequest_4_3_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionPutAllRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionPutAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionReplicationRequest_4_3_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionReplicationRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSetTTLRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSharedSubscriptionGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionAddIfAbsentRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionAddReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionBatchedAddReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionBatchedAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionBatchedRemoveReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionBatchedRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionRemoveAllReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionRemoveReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionReplicateAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientSessionSubscriptionReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClientTakeoverRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClusterContextRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClusterPublishRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClusterStateNotification_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ClusterStateRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ConnectedClientsRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DashboardAttentionLogGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DashboardMetricGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataExportCancelRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataExportDeleteRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataExportFinishedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataExportListInfoRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataExportListRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataExportTriggerRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataImportFinishedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataImportStartRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DataImportTriggerRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DeclaredSharedSubscriptionsHashRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DisconnectedClientsRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DroppedMessageMetricClearRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DroppedMessageMetricGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_DroppedMessageMetricMapsGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ExtensionMessagingSendRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_FileChunkRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ForceClientDisconnectRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_IncomingMessageFlowPollAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_IncomingMessageFlowPutRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_IncomingMessageFlowReplicateAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_InflightMessagesRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_InvalidateSharedSubscriptionCacheRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_IsNodeConnectedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_JoinLicenseCheckRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_LeaveReplicationInProgressRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_LicenseCheckRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_LicenseInformationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_LogRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_MissingSessionsRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_NewMessagesRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_NodeInformationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_OfflineClientInformationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_OnlineClientInformationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_PingRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_PublishAvailableRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_PublishPayloadPutAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueAddReplicationRequest_4_3_2_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueAddReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueBatchedAddReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueBatchedAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueClearReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueInFlightMarkerRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueuePubrelReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueuePubrelRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueReadNewReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemoveAllQos0MessageReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemoveAllQos0MessagesReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemoveInFlightMarkerReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemovePublishBatchedReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemovePublishReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemoveReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueReplicateAllRequest_4_0_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueReplicateAllRequest_4_1_0_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueReplicateAllRequest_4_2_1_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueReplicateAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueSharedRemoveReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_QueueSharedRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_ReplicationFinishedRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RestoreTopicTreeRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageAddRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageClearRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageDetailRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageInformationBucketRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessagePutAllRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessagePutAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageReplicateAddRequest_4_4_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageReplicateAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_RetainedMessageReplicateRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SessionsExistRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SharedMessagesRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SharedPublishAvailableRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SharedQueueAddReplicationRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SharedSizeCollectRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SharedSubscriptionInformationBucketRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_SupervisionBroadcastRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_Test_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeBatchedAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeBatchedRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeGetRequest_4_5_0_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeGetSubscriberFilterRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeGetSubscriberRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeGetSubscriberTopicRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeReplicateAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeReplicateAllRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeReplicateBatchedAddRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeReplicateBatchedRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeReplicateRemoveRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeReplicateSegmentRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TopicTreeSharedSubscriberRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TraceRecordingBroadcastRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TraceRecordingChunkCleanUpRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TraceRecordingChunkGetRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TraceRecordingDeleteRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_request_eventbus_TraceRecordingListFilesRequest_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_messages_remove_replication_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_clean_up_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_clear_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_get_all_chunk_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_get_data_for_export_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_get_data_for_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_get_local_with_wildcards_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_get_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_put_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_put_replication_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_rebuild_topic_trees_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_remove_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_retained_persistence_trees_outdated_queued` - - medidor -
- `com_hivemq_internal_singlewriter_test_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_add_batched_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_add_local_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_add_topic_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_batched_add_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_batched_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_batched_replicate_add_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_batched_replicate_remove_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_clean_up_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_do_cleanup_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_find_topic_subscribers_exclude_root_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_find_topic_subscribers_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_get_local_data_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_get_subscribers_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_handle_get_subscriber_filtered_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_handle_get_subscriber_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_handle_get_subscriber_topic_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_handle_shared_subscriber_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_merge_segment_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_remove_batched_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_remove_local_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_remove_locally_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_remove_topic_replica_queued` - - medidor -
- `com_hivemq_internal_singlewriter_topic_tree_topic_tree_run_queued` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_messages_client_pending_qos_0_count` - - medidor -
- `com_hivemq_messages_client_pending_total_count` - - medidor -
- `com_hivemq_messages_client_queued_count` - - medidor -
- `com_hivemq_messages_dead_count` - - medidor -
- `com_hivemq_messages_dead_topic_dead_count` - - medidor -
- `com_hivemq_messages_dead_topic_dropped_count` - - medidor -
- `com_hivemq_messages_dead_topic_enqueued_count` - - medidor -
- `com_hivemq_messages_dead_topic_expired_count` - - medidor -
- `com_hivemq_messages_dropped_consumer_queue_full_count` - - medidor -
- `com_hivemq_messages_dropped_count` - - medidor -
- `com_hivemq_messages_dropped_extension_prevented_count` - - medidor -
- `com_hivemq_messages_dropped_internal_error_count` - - medidor -
- `com_hivemq_messages_dropped_message_too_large_count` - - medidor -
- `com_hivemq_messages_dropped_mqtt_packet_too_large_count` - - medidor -
- `com_hivemq_messages_dropped_not_writable_count` - - medidor -
- `com_hivemq_messages_dropped_qos_0_memory_exceeded_count` - - medidor -
- `com_hivemq_messages_dropped_queue_full_count` - - medidor -
- `com_hivemq_messages_dropped_rate_total` - - count -
- `com_hivemq_messages_dropped_shared_queue_full_count` - - medidor -
- `com_hivemq_messages_dropped_topic_dead_count` - - medidor -
- `com_hivemq_messages_dropped_topic_dropped_count` - - medidor -
- `com_hivemq_messages_dropped_topic_enqueued_count` - - medidor -
- `com_hivemq_messages_dropped_topic_message_created_client_count` - - medidor -
- `com_hivemq_messages_dropped_topic_message_created_consumer_count` - - medidor -
- `com_hivemq_messages_dropped_topic_message_created_shared_count` - - medidor -
- `com_hivemq_messages_expired_messages` - - medidor -
- `com_hivemq_messages_expired_pubrels` - - medidor -
- `com_hivemq_messages_expired_topic_dead_count` - - medidor -
- `com_hivemq_messages_expired_topic_dropped_count` - - medidor -
- `com_hivemq_messages_expired_topic_enqueued_count` - - medidor -
- `com_hivemq_messages_expired_topic_expired_count` - - medidor -
- `com_hivemq_messages_incoming_auth_count` - - medidor -
- `com_hivemq_messages_incoming_auth_rate_total` - - count -
- `com_hivemq_messages_incoming_connect_count` - - medidor -
- `com_hivemq_messages_incoming_connect_mqtt3_count` - - medidor -
- `com_hivemq_messages_incoming_connect_mqtt5_count` - - medidor -
- `com_hivemq_messages_incoming_connect_rate_total` - - count -
- `com_hivemq_messages_incoming_disconnect_count` - - medidor -
- `com_hivemq_messages_incoming_disconnect_rate_total` - - count -
- `com_hivemq_messages_incoming_pingreq_count` - - medidor -
- `com_hivemq_messages_incoming_pingreq_rate_total` - - count -
- `com_hivemq_messages_incoming_puback_count` - - medidor -
- `com_hivemq_messages_incoming_puback_rate_total` - - count -
- `com_hivemq_messages_incoming_pubcomp_count` - - medidor -
- `com_hivemq_messages_incoming_pubcomp_rate_total` - - count -
- `com_hivemq_messages_incoming_publish_bytes` - - resumen -
- `com_hivemq_messages_incoming_publish_count` - - medidor -
- `com_hivemq_messages_incoming_publish_qos_0_count` - - medidor -
- `com_hivemq_messages_incoming_publish_qos_1_count` - - medidor -
- `com_hivemq_messages_incoming_publish_qos_2_count` - - medidor -
- `com_hivemq_messages_incoming_publish_rate_total` - - count -
- `com_hivemq_messages_incoming_publish_retained_count` - - medidor -
- `com_hivemq_messages_incoming_pubrec_count` - - medidor -
- `com_hivemq_messages_incoming_pubrec_rate_total` - - count -
- `com_hivemq_messages_incoming_pubrel_count` - - medidor -
- `com_hivemq_messages_incoming_pubrel_rate_total` - - count -
- `com_hivemq_messages_incoming_subscribe_count` - - medidor -
- `com_hivemq_messages_incoming_subscribe_rate_total` - - count -
- `com_hivemq_messages_incoming_total_bytes` - - resumen -
- `com_hivemq_messages_incoming_total_count` - - medidor -
- `com_hivemq_messages_incoming_total_rate_total` - - count -
- `com_hivemq_messages_incoming_unsubscribe_count` - - medidor -
- `com_hivemq_messages_incoming_unsubscribe_rate_total` - - count -
- `com_hivemq_messages_outgoing_auth_count` - - medidor -
- `com_hivemq_messages_outgoing_auth_rate_total` - - count -
- `com_hivemq_messages_outgoing_connack_count` - - medidor -
- `com_hivemq_messages_outgoing_connack_rate_total` - - count -
- `com_hivemq_messages_outgoing_disconnect_count` - - medidor -
- `com_hivemq_messages_outgoing_disconnect_rate_total` - - count -
- `com_hivemq_messages_outgoing_pingresp_count` - - medidor -
- `com_hivemq_messages_outgoing_pingresp_rate_total` - - count -
- `com_hivemq_messages_outgoing_puback_count` - - medidor -
- `com_hivemq_messages_outgoing_puback_rate_total` - - count -
- `com_hivemq_messages_outgoing_pubcomp_count` - - medidor -
- `com_hivemq_messages_outgoing_pubcomp_rate_total` - - count -
- `com_hivemq_messages_outgoing_publish_bytes` - - resumen -
- `com_hivemq_messages_outgoing_publish_count` - - medidor -
- `com_hivemq_messages_outgoing_publish_qos_0_count` - - medidor -
- `com_hivemq_messages_outgoing_publish_qos_1_count` - - medidor -
- `com_hivemq_messages_outgoing_publish_qos_2_count` - - medidor -
- `com_hivemq_messages_outgoing_publish_rate_total` - - count -
- `com_hivemq_messages_outgoing_publish_retained_count` - - medidor -
- `com_hivemq_messages_outgoing_pubrec_count` - - medidor -
- `com_hivemq_messages_outgoing_pubrec_rate_total` - - count -
- `com_hivemq_messages_outgoing_pubrel_count` - - medidor -
- `com_hivemq_messages_outgoing_pubrel_rate_total` - - count -
- `com_hivemq_messages_outgoing_suback_count` - - medidor -
- `com_hivemq_messages_outgoing_suback_rate_total` - - count -
- `com_hivemq_messages_outgoing_total_bytes` - - resumen -
- `com_hivemq_messages_outgoing_total_count` - - medidor -
- `com_hivemq_messages_outgoing_total_rate_total` - - count -
- `com_hivemq_messages_outgoing_unsuback_count` - - medidor -
- `com_hivemq_messages_outgoing_unsuback_rate_total` - - count -
- `com_hivemq_messages_pending_qos_0_count` - - medidor -
- `com_hivemq_messages_pending_total_count` - - medidor -
- `com_hivemq_messages_publish_resent_total` - - count -
- `com_hivemq_messages_pubrel_resent_total` - - count -
- `com_hivemq_messages_queued_count` - - medidor -
- `com_hivemq_messages_retained_current` - - medidor -
- `com_hivemq_messages_retained_mean` - - resumen -
- `com_hivemq_messages_retained_pending_total_count` - - medidor -
- `com_hivemq_messages_retained_queued_count` - - medidor -
- `com_hivemq_messages_retained_rate_total` - - count -
- `com_hivemq_messages_shared_pending_qos_0_count` - - medidor -
- `com_hivemq_messages_shared_pending_total_count` - - medidor -
- `com_hivemq_messages_shared_queued_count` - - medidor -
- `com_hivemq_messages_will_count_current` - - medidor -
- `com_hivemq_messages_will_delayed_count_current` - - medidor -
- `com_hivemq_messages_will_published_count_total` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_rest_api_authentication_failed` - - medidor -
- `com_hivemq_rest_api_authentication_success` - - medidor -
- `com_hivemq_rest_api_authorization_failed` - - medidor -
- `com_hivemq_rest_api_authorization_success` - - medidor -
- `com_hivemq_rest_api_tls_handshake_failed` - - medidor -
- `com_hivemq_rest_api_tls_handshake_success` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_cluster_internal_barrier_in_flight_threads_count` - - medidor -
- `com_hivemq_cluster_internal_connected_replica_restored_count` - - medidor -
- `com_hivemq_cluster_internal_discovery_num_discovery_requests_sent` - - medidor -
- `com_hivemq_cluster_internal_fd_num_suspect_events_generated` - - medidor -
- `com_hivemq_cluster_internal_fd_number_of_heartbeats_sent` - - medidor -
- `com_hivemq_cluster_internal_fd_sock_num_suspect_events_generated` - - medidor -
- `com_hivemq_cluster_internal_fd_sock_num_suspected_members` - - medidor -
- `com_hivemq_cluster_internal_frag2_num_frags_received` - - medidor -
- `com_hivemq_cluster_internal_frag2_num_frags_sent` - - medidor -
- `com_hivemq_cluster_internal_gms_merge_in_progress` - - medidor -
- `com_hivemq_cluster_internal_gms_num_members` - - medidor -
- `com_hivemq_cluster_internal_gms_number_of_views` - - medidor -
- `com_hivemq_cluster_internal_gms_view_handler_size` - - medidor -
- `com_hivemq_cluster_internal_merge3_num_merge_events` - - medidor -
- `com_hivemq_cluster_internal_merge3_views` - - medidor -
- `com_hivemq_cluster_internal_mfc_average_time_blocked` - - medidor -
- `com_hivemq_cluster_internal_mfc_number_of_blockings` - - medidor -
- `com_hivemq_cluster_internal_mfc_number_of_credit_requests_received` - - medidor -
- `com_hivemq_cluster_internal_mfc_number_of_credit_requests_sent` - - medidor -
- `com_hivemq_cluster_internal_mfc_number_of_credit_responses_received` - - medidor -
- `com_hivemq_cluster_internal_mfc_number_of_credit_responses_sent` - - medidor -
- `com_hivemq_cluster_internal_nakack2_non_member_messages` - - medidor -
- `com_hivemq_cluster_internal_nakack2_num_messages_received` - - medidor -
- `com_hivemq_cluster_internal_nakack2_num_messages_sent` - - medidor -
- `com_hivemq_cluster_internal_nakack2_size_of_all_messages` - - medidor -
- `com_hivemq_cluster_internal_nakack2_size_of_all_messages_incl_headers` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_reqs_received` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_reqs_sent` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_rsps_received` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_rsps_sent` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_capacity` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_missing_messages` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_num_compactions` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_num_current_rows` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_num_moves` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_num_purges` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_num_resizes` - - medidor -
- `com_hivemq_cluster_internal_nakack2_xmit_table_undelivered_msgs` - - medidor -
- `com_hivemq_cluster_internal_response_denied` - - medidor -
- `com_hivemq_cluster_internal_response_failed` - - medidor -
- `com_hivemq_cluster_internal_response_not_responsible` - - medidor -
- `com_hivemq_cluster_internal_response_suspected` - - medidor -
- `com_hivemq_cluster_internal_stable_stability_received` - - medidor -
- `com_hivemq_cluster_internal_stable_stability_sent` - - medidor -
- `com_hivemq_cluster_internal_stable_stable_received` - - medidor -
- `com_hivemq_cluster_internal_stable_stable_sent` - - medidor -
- `com_hivemq_cluster_internal_stateTransfer_average_state_size` - - medidor -
- `com_hivemq_cluster_internal_stateTransfer_number_of_state_bytes_sent` - - medidor -
- `com_hivemq_cluster_internal_stateTransfer_number_of_state_requests` - - medidor -
- `com_hivemq_cluster_internal_tcp_open_connections` - - medidor -
- `com_hivemq_cluster_internal_transport_average_batch_size` - - medidor -
- `com_hivemq_cluster_internal_transport_bundler_buffer_size` - - medidor -
- `com_hivemq_cluster_internal_transport_different_cluster_messages` - - medidor -
- `com_hivemq_cluster_internal_transport_different_version_messages` - - medidor -
- `com_hivemq_cluster_internal_transport_internal_pool_size` - - medidor -
- `com_hivemq_cluster_internal_transport_num_batches_received` - - medidor -
- `com_hivemq_cluster_internal_transport_num_batches_sent` - - medidor -
- `com_hivemq_cluster_internal_transport_num_bytes_received` - - medidor -
- `com_hivemq_cluster_internal_transport_num_bytes_sent` - - medidor -
- `com_hivemq_cluster_internal_transport_num_internal_msgs_received` - - medidor -
- `com_hivemq_cluster_internal_transport_num_msgs_received` - - medidor -
- `com_hivemq_cluster_internal_transport_num_msgs_sent` - - medidor -
- `com_hivemq_cluster_internal_transport_num_oob_msgs_received` - - medidor -
- `com_hivemq_cluster_internal_transport_num_rejected_msgs` - - medidor -
- `com_hivemq_cluster_internal_transport_num_single_msgs_sent` - - medidor -
- `com_hivemq_cluster_internal_transport_regular_pool_size` - - medidor -
- `com_hivemq_cluster_internal_transport_regular_pool_size_active` - - medidor -
- `com_hivemq_cluster_internal_transport_timer_tasks` - - medidor -
- `com_hivemq_cluster_internal_transport_timer_threads` - - medidor -
- `com_hivemq_cluster_internal_unicast3_age_out_cache_size` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_acks_received` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_acks_sent` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_connections` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_messages_received` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_messages_sent` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_receive_connections` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_send_connections` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_unacked_messages` - - medidor -
- `com_hivemq_cluster_internal_unicast3_num_xmits` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_reqs_received` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_reqs_sent` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_rsps_sent` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_table_missing_messages` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_table_num_compactions` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_table_num_moves` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_table_num_purges` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_table_num_resizes` - - medidor -
- `com_hivemq_cluster_internal_unicast3_xmit_table_undelivered_messages` - - medidor -
- `com_hivemq_cluster_name_request_retry_count` - - medidor -
- `com_hivemq_cluster_nodes_count` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_extension_consumer_messages_async_timed_out_total_count` - - medidor -
- `com_hivemq_extension_consumer_messages_exceptional_total_count` - - medidor -
- `com_hivemq_extension_consumer_messages_incoming_total_count` - - medidor -
- `com_hivemq_extension_consumer_messages_processed_total_count` - - medidor -
- `com_hivemq_extension_overload_protection_throttling_level_none` - - medidor -
- `com_hivemq_extension_task_executors_queued` - - medidor -
- `com_hivemq_extensions_prometheus_export_MonitoredMetricServlet_get_time` - - resumen -
- `com_hivemq_extensions_services_publish_service_publishes` - - medidor -
- `com_hivemq_extensions_services_publish_service_publishes_to_client` - - medidor -
- `com_hivemq_extensions_services_rate_limit_exceeded_count` - - medidor -
- `com_hivemq_dns_cluster_discovery_extension_query_failed_count` - - medidor -
- `com_hivemq_dns_cluster_discovery_extension_query_success_count` - - medidor -
- `com_hivemq_dns_cluster_discovery_extension_resolved_addresses` - - medidor -
- `com_hivemq_extensions__license_days_till_expire` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_jvm_buffer_pool_direct_capacity` - - medidor -
- `com_hivemq_jvm_buffer_pool_direct_count` - - medidor -
- `com_hivemq_jvm_buffer_pool_direct_used` - - medidor -
- `com_hivemq_jvm_buffer_pool_mapped_capacity` - - medidor -
- `com_hivemq_jvm_buffer_pool_mapped_count` - - medidor -
- `com_hivemq_jvm_buffer_pool_mapped_used` - - medidor -
- `com_hivemq_jvm_class_loader_loaded` - - medidor -
- `com_hivemq_jvm_class_loader_unloaded` - - medidor -
- `com_hivemq_jvm_file_descriptor_ratio` - - medidor -
- `com_hivemq_jvm_garbage_collector_Copy_count` - - medidor -
- `com_hivemq_jvm_garbage_collector_Copy_time` - - medidor -
- `com_hivemq_jvm_garbage_collector_MarkSweepCompact_count` - - medidor -
- `com_hivemq_jvm_garbage_collector_MarkSweepCompact_time` - - medidor -
- `com_hivemq_jvm_memory_heap_committed` - - medidor -
- `com_hivemq_jvm_memory_heap_init` - - medidor -
- `com_hivemq_jvm_memory_heap_max` - - medidor -
- `com_hivemq_jvm_memory_heap_usage` - - medidor -
- `com_hivemq_jvm_memory_heap_used` - - medidor -
- `com_hivemq_jvm_memory_non_heap_committed` - - medidor -
- `com_hivemq_jvm_memory_non_heap_init` - - medidor -
- `com_hivemq_jvm_memory_non_heap_max` - - medidor -
- `com_hivemq_jvm_memory_non_heap_usage` - - medidor -
- `com_hivemq_jvm_memory_non_heap_used` - - medidor -
- `com_hivemq_jvm_memory_pools__committed` - - medidor -
- `com_hivemq_jvm_memory_pools__init` - - medidor -
- `com_hivemq_jvm_memory_pools__max` - - medidor -
- `com_hivemq_jvm_memory_pools__usage` - - medidor -
- `com_hivemq_jvm_memory_pools__used` - - medidor -
- `om_hivemq_jvm_memory_total_committed` - - medidor -
- `com_hivemq_jvm_memory_total_init` - - medidor -
- `com_hivemq_jvm_memory_total_max` - - medidor -
- `com_hivemq_jvm_memory_total_used` - - medidor -
- `com_hivemq_jvm_threads_blocked_count` - - medidor -
- `com_hivemq_jvm_threads_count` - - medidor -
- `com_hivemq_jvm_threads_daemon_count` - - medidor -
- `com_hivemq_jvm_threads_deadlock_count` - - medidor -
- `com_hivemq_jvm_threads_new_count` - - medidor -
- `com_hivemq_jvm_threads_peak_count` - - medidor -
- `com_hivemq_jvm_threads_runnable_count` - - medidor -
- `com_hivemq_jvm_threads_terminated_count` - - medidor -
- `com_hivemq_jvm_threads_timed_waiting_count` - - medidor -
- `com_hivemq_jvm_threads_total_started_count` - - medidor -
- `com_hivemq_jvm_threads_waiting_count` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_networking_bytes_read_current` - - medidor -
- `com_hivemq_networking_bytes_read_total` - - medidor -
- `com_hivemq_networking_bytes_write_current` - - medidor -
- `com_hivemq_networking_bytes_write_total` - - medidor -
- `com_hivemq_networking_connections_closed_graceful_count` - - medidor -
- `com_hivemq_networking_connections_closed_rate_exceeded_count` - - medidor -
- `com_hivemq_networking_connections_closed_total_count` - - medidor -
- `com_hivemq_networking_connections_closed_ungraceful_count` - - medidor -
- `com_hivemq_networking_connections_current` - - medidor -
- `com_hivemq_networking_connections_mean` - - resumen -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_overload_protection_clients_average_credits` - - medidor -
- `com_hivemq_overload_protection_clients_backpressure_active` - - medidor -
- `com_hivemq_overload_protection_clients_backpressure_active_receive_buffer` - - medidor -
- `com_hivemq_overload_protection_clients_using_credits` - - medidor -
- `com_hivemq_overload_protection_credits_per_tick` - - medidor -
- `com_hivemq_overload_protection_credits_subtracted_publishes` - - resumen -
- `com_hivemq_overload_protection_credits_subtracted_subscribes` - - resumen -
- `com_hivemq_overload_protection_credits_subtracted_unsubscribes` - - resumen -
- `com_hivemq_overload_protection_global_tasks` - - medidor -
- `com_hivemq_overload_protection_level` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_system_max_file_descriptor` - - medidor -
- `com_hivemq_system_open_file_descriptor` - - medidor -
- `com_hivemq_system_os_disks__0_read_bytes` - - medidor -
- `com_hivemq_system_os_disks__0_read_count` - - medidor -
- `com_hivemq_system_os_disks__0_size` - - medidor -
- `com_hivemq_system_os_disks__0_write_bytes` - - medidor -
- `com_hivemq_system_os_disks__0_write_count` - - medidor -
- `com_hivemq_system_os_file_descriptors_max` - - medidor -
- `com_hivemq_system_os_file_descriptors_open` - - medidor -
- `com_hivemq_system_os_global_cpu__total` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_idle` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_iowait` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_irq` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_nice` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_softirq` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_steal` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_sys` - - medidor -
- `com_hivemq_system_os_global_cpu__usage_user` - - medidor -
- `com_hivemq_system_os_global_cpu_total_total` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_idle` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_iowait` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_irq` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_nice` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_softirq` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_steal` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_sys` - - medidor -
- `com_hivemq_system_os_global_cpu_total_usage_user` - - medidor -
- `com_hivemq_system_os_global_memory_available` - - medidor -
- `com_hivemq_system_os_global_memory_swap_total` - - medidor -
- `com_hivemq_system_os_global_memory_swap_used` - - medidor -
- `com_hivemq_system_os_global_memory_total` - - medidor -
- `com_hivemq_system_os_global_uptime` - - medidor -
- `com_hivemq_system_os_network_interface__bytes_received` - - medidor -
- `com_hivemq_system_os_network_interface__bytes_sent` - - medidor -
- `com_hivemq_system_os_network_interface__in_errors` - - medidor -
- `com_hivemq_system_os_network_interface__out_errors` - - medidor -
- `com_hivemq_system_os_network_interface__packets_received` - - medidor -
- `com_hivemq_system_os_network_interface__packets_sent` - - medidor -
- `com_hivemq_system_os_process_disk_bytes_read` - - medidor -
- `com_hivemq_system_os_process_disk_bytes_written` - - medidor -
- `com_hivemq_system_os_process_memory_resident_set_size` - - medidor -
- `com_hivemq_system_os_process_memory_virtual` - - medidor -
- `com_hivemq_system_os_process_open_file_limit_hard_current` - - medidor -
- `com_hivemq_system_os_process_open_file_limit_soft_current` - - medidor -
- `com_hivemq_system_os_process_threads_count` - - medidor -
- `com_hivemq_system_os_process_time_spent_kernel` - - medidor -
- `com_hivemq_system_os_process_time_spent_user` - - medidor -
- `com_hivemq_system_physical_memory_free` - - medidor -
- `com_hivemq_system_physical_memory_total` - - medidor -
- `com_hivemq_system_process_cpu_load` - - medidor -
- `com_hivemq_system_process_cpu_time` - - medidor -
- `com_hivemq_system_sanity_checks_failed_count` - - medidor -
- `com_hivemq_system_swap_space_free` - - medidor -
- `com_hivemq_system_swap_space_total` - - medidor -
- `com_hivemq_system_system_cpu_load` - - medidor -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `com_hivemq_control_center_tls_handshake_failed` - - medidor -
- `com_hivemq_control_center_tls_handshake_success` - - medidor -
- `com_hivemq_cpu_cores_licensed` - - medidor -
- `com_hivemq_cpu_cores_used` - - medidor -
- `com_hivemq_declared_shared_subscriptions_total` - - medidor -
- `com_hivemq_exceptions_total_total` - - count -
- `com_hivemq_keep_alive_disconnect_count` - - medidor -
- `com_hivemq_keep_alive_disconnect_tasks_queued` - - medidor -
- `com_hivemq_license_days_till_expire` - - medidor -
- `com_hivemq_license_used_cpu` - - medidor -
- `com_hivemq_logging_all_total` - - count -
- `com_hivemq_logging_debug_total` - - count -
- `com_hivemq_logging_error_total` - - count -
- `com_hivemq_logging_info_total` - - count -
- `com_hivemq_logging_trace_total` - - count -
- `com_hivemq_logging_warn_total` - - count -
- `com_hivemq_mqtt_connection_not_writable_current` - - medidor -
- `com_hivemq_persistence_payload_entries_count` - - medidor -
- `com_hivemq_persistence_removable_entries_count` - - medidor -
- `com_hivemq_persistence_session_subscriptions_current` - - medidor -
- `com_hivemq_publish_without_matching_subscribers` - - medidor -
- `com_hivemq_qos_0_memory_exceeded_per_client` - - medidor -
- `com_hivemq_qos_0_memory_max` - - medidor -
- `com_hivemq_qos_0_memory_used` - - medidor -
- `com_hivemq_replication_batches_queued` - - medidor -
- `com_hivemq_replication_batches_sent` - - medidor -
- `com_hivemq_sessions_individual_queue_limit_current` - - medidor -
- `com_hivemq_sessions_overall_current` - - medidor -
- `com_hivemq_sessions_persistent_active` - - medidor -
- `com_hivemq_shared_qos_0_memory_exceeded_per_shared` - - medidor -
- `com_hivemq_shared_subscriptions_overall_current` - - medidor -
- `com_hivemq_subscriptions_overall_current` - - medidor -
- `com_hivemq_tls_handshakes_failed_count` - - medidor -
- `com_hivemq_tls_handshakes_in_progress_current` - - medidor -
- `com_hivemq_tls_handshakes_succeeded_count` - - medidor -
- `com_hivemq_tls_handshakes_total_count` - - medidor -
- `com_hivemq_tombstone_cleanup_time` - - resumen -
- `com_hivemq_topic_alias_count_total` - - medidor -
- `com_hivemq_topic_alias_memory_usage` - - medidor -
- `com_hivemq_unacknowledged_publish_messages` - - medidor -
-
-
\ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx deleted file mode 100644 index 0ebcdf5f009..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts.mdx +++ /dev/null @@ -1,261 +0,0 @@ ---- -title: Recolector para monitoreo de host -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: 'The OpenTelemetry Collector is a central tool to collect, process, and export your telemetry.' -freshnessValidatedDate: never -translationType: machine ---- - -Puede recopilar métricas y iniciar sesión desde los hosts de su infraestructura con OpenTelemetry y aprovechar las mismas experiencias de infraestructura que están disponibles para el agente New Relic. Se requieren receptores y procesadores específicos en el recolector OTel para recopilar e informar la telemetría del host. - -Si busca ayuda con otros casos de uso del recolector, consulte el repositorio [newrelic-OpenTelemetry-examples](https://github.com/newrelic/newrelic-opentelemetry-examples) . - -## Paso 1: requisitos previos [#prereqs] - -Asegúrese de haber completado lo siguiente antes de continuar: - -* Si aún no lo ha hecho, regístrese para obtener una [cuenta gratuita de New Relic](https://newrelic.com/signup). - -* Obtenga el - - - - para la cuenta de New Relic a la que desea informar datos. - -## Paso 2: Instale el recolector OpenTelemetry [#install-generic] - -Para realizar una instalación básica para hosts únicos en la nube o localmente, consulte [las instrucciones de OpenTelemetry](https://opentelemetry.io/docs/collector/getting-started/#linux-packaging) para conocer los pasos de instalación actualizados de la comunidad. Hay instrucciones disponibles para lo siguiente: - -* Linux: sistemas Debian -* Linux: sombrero rojo -* Windows -* Docker, Kubernetes y otras opciones - -Su experiencia de implementación puede variar según las distribuciones específicas del proveedor que utilice. Por ejemplo, la instalación a través de un administrador de paquetes podría estar disponible para hosts Linux. - - - Para configurar el monitoreo de infraestructura, debe instalar y configurar los componentes que se incluyen en la versión `collector-contrib` . Por ejemplo, el receptor del host debe recopilar métricas básicas del host, como CPU, memoria, disco y estadísticas de red, y solo está disponible en la versión [OpenTelemetry recolector-contrib](https://github.com/open-telemetry/opentelemetry-collector-contrib) . - - -## Paso 3: Configurar host métrica y log [#host-receiver] - -Este ejemplo de recolector está destinado a servir como punto de partida desde el cual puede ampliar, personalizar y validar la configuración antes de usarlos en producción. - -La versión `collector-contrib` incluye: - -* El receptor `hostmetrics` que genera métrica sobre el sistema extraído de varias fuentes. desplegar el recolector como agente cuando uses un receptor `hostmetrics` . -* El receptor `filelog` que sigue y analiza el log de los archivos. - -Al utilizar el receptor `hostmetrics` como parte de la configuración del recolector, New Relic detectará el host métrico como parte de una entidad `Host` . Esto significa que tendrá la misma experiencia que con el agente New Relic Infrastructure . Para que esto funcione, debe cumplir con los siguientes requisitos de configuración: - -* `host.id` El atributo está presente en el host métrico. -* `service.name` y `container.id` atributo no están presentes en host métrica. - -Obtenga más información sobre las métricas disponibles y la configuración avanzada en la [documentación de OpenTelemetry en GitHub](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver). - -Aquí hay un archivo YAML de configuración de muestra para un host Linux. Asegúrese de hacer lo siguiente: - -* Establezca la variable de entorno `$NEW_RELIC_OTLP_ENDPOINT` en el [extremo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp) apropiado. - -* Establezca la `$NEW_RELIC_API_KEY` var de entorno para su - - - - . - -* Ajuste el objetivo archivo de log en la sección del receptor de logs de archivos según sus requisitos. - -* Ajuste los valores predeterminados `memory_limiter` según los requisitos de su entorno. - -* Varios elementos de configuración son útiles para la demostración local, pero probablemente no sean necesarios para las implementaciones de producción. Revise estas secciones y comentarios explicativos y elimínelos según sea necesario. - -Consulte [Monitoreo de host con OpenTelemetry Collector Setup](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/host-monitoring) para ver un ejemplo de código funcional. - -```yaml -extensions: - health_check: - -receivers: - otlp: - protocols: - grpc: - http: - - hostmetrics: - # Mount the host file system when running in docker so we can monitor the host system, - # not the docker container. For more info see: - # https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/hostmetricsreceiver#collecting-host-metrics-from-inside-a-container-linux-only - # Delete for production deployments. - root_path: ${HOST_METRICS_ROOT_PATH} - collection_interval: 20s - scrapers: - cpu: - metrics: - system.cpu.utilization: - enabled: true - load: - memory: - metrics: - system.memory.utilization: - enabled: true - disk: - filesystem: - metrics: - system.filesystem.utilization: - enabled: true - # Reading /containers/services causes error running in docker. - # Delete for production deployments. - exclude_mount_points: - mount_points: ["/containers/services"] - match_type: strict - network: - paging: - metrics: - system.paging.utilization: - enabled: true - processes: - process: - metrics: - process.cpu.utilization: - enabled: true - process.cpu.time: - enabled: false - # Mute various errors reading process metrics running locally in docker. - # Delete for production deployments. - mute_process_exe_error: true - mute_process_user_error: true - mute_process_io_error: true - - filelog: - include: - - /var/log/alternatives.log - - /var/log/cloud-init.log - - /var/log/auth.log - - /var/log/dpkg.log - - /var/log/syslog - - /var/log/messages - - /var/log/secure - - /var/log/yum.log - -processors: - - transform/truncate: - trace_statements: - - context: span - statements: - - truncate_all(attributes, 4095) - - truncate_all(resource.attributes, 4095) - log_statements: - - context: log - statements: - - truncate_all(attributes, 4095) - - truncate_all(resource.attributes, 4095) - - memory_limiter: - check_interval: 1s - limit_mib: 1000 - spike_limit_mib: 200 - - batch: - - resourcedetection: - detectors: ["env", "system"] - system: - hostname_sources: ["os"] - resource_attributes: - host.id: - enabled: true - - resourcedetection/cloud: - detectors: ["gcp", "ec2", "azure"] - timeout: 2s - override: false - - # host.id is required for NewRelic host entity synthesis and relationships, but is - # not included by any resourcedetection detector when running with docker on macOS. - # We include a fallback value for demonstration purposes. - # Delete for production deployments. - resource: - attributes: - - key: host.id - value: localhost - action: upsert - -exporters: - otlphttp: - endpoint: $NEW_RELIC_OTLP_ENDPOINT - headers: - api-key: $NEW_RELIC_API_KEY - -service: - pipelines: - - metrics/hostmetrics: - receivers: [hostmetrics] - processors: [memory_limiter, resourcedetection, resourcedetection/cloud, resource, batch] - exporters: [otlphttp] - - metrics: - receivers: [otlp] - processors: [memory_limiter, transform/truncate, resourcedetection, resourcedetection/cloud, resource, batch] - exporters: [otlphttp] - - traces: - receivers: [otlp] - processors: [memory_limiter, transform/truncate, resourcedetection, resourcedetection/cloud, resource, batch] - exporters: [otlphttp] - - logs: - receivers: [otlp, filelog] - processors: [memory_limiter, transform/truncate, resourcedetection, resourcedetection/cloud, resource, batch] - exporters: [otlphttp] - - extensions: [health_check] -``` - -## Paso 4: vea sus datos [#view-data] - -Puede ver los datos de su recolector en una variedad de lugares en la UI de New Relic. - -### Explorar los datos del host en UI de la infraestructura [#using-ui] - -Al utilizar la configuración recomendada en el recolector, puede ver datos a través de la característica estándar en la experiencia de la [UI de infraestructura](/docs/infrastructure/infrastructure-ui-pages/infra-ui-overview) . - -### Consulta host métrica y log [#query-host-metrics] - -Una vez que la telemetría se ingiere exitosamente en New Relic, están disponibles en [métrica y evento](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer) y [generador de consultas](/docs/query-your-data/explore-query-data/query-builder/introduction-query-builder). - -La siguiente consulta NRQL muestra ejemplos para ayudarle a explorar la métrica que recibió: - -* Listado del número de actualizaciones métricas ingeridas por nombre de métrica - - ```sql - SELECT count(*) FROM Metric WHERE metricName LIKE 'system.%' FACET metricName LIMIT max - ``` - -* Consulta de métricas específicas facetadas por host - - ```sql - SELECT average(system.disk.operations) FROM Metric FACET host.name TIMESERIES - ``` - -* Listado de dimensiones disponibles para una métrica determinada - - ```sql - SELECT keyset() FROM Metric WHERE metricName = 'system.disk.operations' - ``` - -* Consultando número de log de eventos por host - - ```sql - SELECT count(*) FROM Log FACET host.name TIMESERIES - ``` - -Obtenga más información sobre [cómo consultar el tipo de datos de métrica](/docs/data-apis/understand-data/metric-data/query-metric-data-type). - -## ¿Que sigue? [#next] - -Después de configurar su recolector, consulte nuestra guía [de mejores prácticas](/docs/integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-concepts/) para obtener sugerencias para mejorar el uso de OpenTelemetry y New Relic. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx deleted file mode 100644 index cdf26f474f2..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro.mdx +++ /dev/null @@ -1,36 +0,0 @@ ---- -title: Recolector OpenTelemetry para monitoreo de infraestructura -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Using the OpenTelemetry Collector for infrastructure monitoring -freshnessValidatedDate: '2024-05-14T00:00:00.000Z' -redirect: - - /docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-redis -translationType: machine ---- - -El [recopiladorOpenTelemetry ](https://opentelemetry.io/docs/collector/)es una herramienta independiente del proveedor para recibir, procesar y exportar telemetry data. Si bien los requisitos y la configuración del recolector varían, viene con una variedad de receptores y procesadores que lo hacen popular para el monitoreo de infraestructura. También es común emplear el recolector para procesamiento de datos, pero esta documentación se centra en casos de uso de monitoreo de infraestructura. Consulte [el recopilador OpenTelemetry para procesamiento de datos](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro) para obtener más información. - -## Recepción de telemetría de infraestructura [#infrastructure-receivers] - -Los siguientes ejemplos demuestran el uso del recolector para monitor varios componentes de la infraestructura. El patrón general es configurar el recolector con un receptor de tecnología específica o de propósito general (es decir, prometheus) para extraer o sondear datos de un objetivo de infraestructura y exportar los datos a New Relic a través de OTLP. - -* [Docker](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-docker) -* [HCP Consul](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hcp-consul) -* [HiveMQ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hivemq) -* [Hospedadores](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts) -* [Nube de Kafka Confluent](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud) -* [Prometeo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus) -* [Redis](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/redis) -* [Singlestore](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore) -* [Squid](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid) -* [EstadísticasD](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd) - -## Correlación de infraestructura con OpenTelemetry APM [#infrastructure-correlation] - -Los siguientes ejemplos demuestran el uso del recolector para correlacionar [datos APM OpenTelemetry ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro)con infraestructura. El patrón general es configurar el recolector con un procesador que detecta y enriquece la telemetría APM con contexto ambiental adicional en forma de atributo de recurso, antes de exportar los datos a New Relic vía OTLP. New Relic puede detectar estos datos de correlación y construir [relaciones entre APM y la entidad de infraestructura](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-resources). - -* [Hospedadores](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-hosts) -* [Kubernetes](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s) \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx deleted file mode 100644 index 1aad353c3fb..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-k8s.mdx +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Recolector para monitoreo de Kubernetes -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: You can use the OpenTelemetry Collector to monitor your Kubernetes clusters. -freshnessValidatedDate: never -translationType: machine ---- - -Si ya tiene aplicaciones instrumentadas con OpenTelemetry en un clúster de Kubernetes, puede usar un recolector de OpenTelemetry para mejorar su telemetría actual con metadatos sobre Kubernetes. Esto puede ayudarle a ver los efectos de Kubernetes en sus aplicaciones. Por ejemplo, los tramos de seguimiento mostrarán qué clúster de Kubernetes, nodo, pod y contenedor están involucrados. - -Puede encontrar más detalles sobre cómo hacer esto en [Vincular la aplicación instrumentada OpenTelemetry a Kubernetes](/docs/kubernetes-pixie/kubernetes-integration/advanced-configuration/link-otel-applications-kubernetes). - -Si busca ayuda con otros casos de uso del recolector, consulte el repositorio [newrelic-OpenTelemetry-examples](https://github.com/newrelic/newrelic-opentelemetry-examples) . \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx deleted file mode 100644 index 59360880463..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud-k8s.mdx +++ /dev/null @@ -1,328 +0,0 @@ ---- -title: Recolector de monitoreo de Confluent Cloud y Kafka -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Kafka - - Confluent Cloud - - kubernetes - - helm -metaDescription: You can collect Kafka metrics from Confluent using the OpenTelemetry Collector on Kubernetes. -freshnessValidatedDate: '2024-05-28T00:00:00.000Z' -translationType: machine ---- - -Puede recopilar métricas sobre su Kafka administrado por Confluent Cloud desplegado con el recolector OpenTelemetry. El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - -Esta integración funciona ejecutando una configuración de receptor Prometheus dentro del recolector OpenTelemetry , que extrae [APImétrica de Confluent Cloud](https://api.telemetry.confluent.cloud/docs/descriptors/datasets/cloud?_ga=2.183807142.1264186867.1705940186-6520871.1686857317&_gl=1*1te8jue*_ga*NjUyMDg3MS4xNjg2ODU3MzE3*_ga_D2D3EGKSGD*MTcwNjAzNzYwOS41Ni4wLjE3MDYwMzc2MDkuNjAuMC4w) y exporta esos datos a New Relic. - -## Configurar el monitoreo [#set-up-monitoring] - -Complete los pasos a continuación para recopilar Kafka métrica de Confluent y exportarlos a New Relic. - - - - ### Cerciórate de estar listo para comenzar [#get-started] - - Antes de comenzar, debe tener el de la cuenta a la que desea informar datos. También debes verificar que: - - * Tienes un clúster de Kubernetes en ejecución - * (Para usuarios de Helm) Cerciorar de tener [Helm](https://helm.sh/docs/intro/quickstart/) instalado - * Tienes una [cuenta de Confluent Cloud](https://www.confluent.io/get-started/) con un clúster en ejecución - * Tienes disponible tu [clave de API y secreto de Confluent Cloud](https://docs.confluent.io/confluent-cli/current/command-reference/api-key/confluent_api-key_create.html) - - - - ### Descargue o clone el repositorio de ejemplos de socios tecnológicos OpenTelemetry [#download-repo] - - Descargue [New Relic OpenTelemetry el repositorio de ejemplos de asociación](https://github.com/newrelic-experimental/tech-partner-opentelemetry-integrations) tecnológica de ya que esta configuración emplea su configuración de recolector de ejemplo. Una vez instalado, abra el directorio [de ejemplo de Confluent Cloud](https://github.com/newrelic-experimental/tech-partner-opentelemetry-integrations/confluent-cloud). Para obtener más información, también puede consultar el `README` allí. - - - - ### Ejecute el ejemplo [#run-the-example] - - Complete las instrucciones de Helm o Kubernetes a continuación, según su entorno. - - #### Ejemplo de Helm [#run-helm-example] - - 1. Desde el directorio `./confluent-cloud/helm` , actualice las variables en el archivo `values.yaml`. Para obtener más información sobre las variables individuales, consulte la tabla [de variables locales](#local-variables) a continuación. - - 2. Ejecute el recolector usando el siguiente comando: - - ```bash - # Open the confluent cloud helm example directory - cd ./confluent-cloud/helm - - # Make sure to set environment variables. - - # Install and run helm - helm install ./helm - ``` - - #### Ejemplo de Kubernetes [#run-kubernetes-example] - - 1. Desde el directorio `./confluent-cloud/k8s` , actualice las variables en el archivo `./k8s/deployment.yaml`. Para obtener más información sobre las variables individuales, consulte la tabla [de variables locales](#local-variables) a continuación. - - 2. Una vez configuradas las variables, ejecute el siguiente comando para aplicar el recolector a su clúster de Kubernetes. - - ```bash - # Open the Confluent Cloud k8s example directory - cd ./confluent-cloud/k8s - - # Make sure to set environment variables - - # Apply the collector to the cluster - kubectl apply -f ./k8s - ``` - - #### Variables locales para Helm y Kubernetes [#local-variables] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Variable - - Descripción - - Documentos -
- `NEW_RELIC_API_KEY` - - New Relic Ingest clave de API - - [Clave de documentos API](/docs/apis/intro-apis/new-relic-api-keys/) -
- `NEW_RELIC_OTLP_ENDPOINT` - - El extremo predeterminado de OTLP New Relic de EE. UU. es [https://otlp.nr-data.net:4318](https://otlp.nr-data.net:4318) - - [Documentos de configuración de OTLP extremo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp) -
- `CLUSTER_ID` - - ID del clúster de Confluent Cloud - - [Documentos para el comando de lista de ID de clúster](https://docs.confluent.io/confluent-cli/current/command-reference/kafka/cluster/confluent_kafka_cluster_list.html#description) -
- `CONFLUENT_API_KEY` - - Clave de API en la nube - - [Documentos API de clave de nube](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#metrics-quick-start) -
- `CONFLUENT_API_SECRET` - - Secreto de la API de la nube - - [Documentos API de clave de nube](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#metrics-quick-start) -
- `CONNECTOR_ID` - - (OPCIONAL) Puede monitor sus conectores Confluent especificando el ID aquí - - [Documentos para el comando de ID del conector de lista](https://docs.confluent.io/confluent-cli/current/command-reference/connect/cluster/confluent_connect_cluster_list.html) -
- `SCHEMA_REGISTRY_ID` - - (OPCIONAL) Puede monitor su Registro de esquemas de Confluent especificando el ID aquí - - [Documentos para el comando de ID del conector de lista](https://docs.confluent.io/confluent-cli/current/command-reference/schema-registry/schema/confluent_schema-registry_schema_list.html) -
-
- - - ### Ver tus datos en New Relic [#view-your-data] - - Puede ver sus datos de Confluent Cloud de diferentes maneras. - - * Navegue hasta el [mercado de New Relic](https://one.newrelic.com/marketplace) y busque `Confluent`. ¡Puedes instalar los dashboards disponibles directamente en tu cuenta! - * Navegue hasta el explorador métrica y filtre por `confluent_kafka`. Estos datos se pueden agregar a cualquier alerta o dashboard personalizado. - -
- -## Nube Confluente métrica [#confluent-metrics] - -Esta integración cubre todas las métricas _Exportables_ dentro de la [API métrica de Confluent Cloud](https://api.telemetry.confluent.cloud/docs/descriptors/datasets/cloud). Tenemos una lista parcial de las métricas _Exportables_ a continuación: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Descripción -
- confluent_kafka_server_received_bytes - - El recuento delta de bytes de sus datos recibidos de la red. Cada muestra es el número de bytes recibidos desde la muestra de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_sent_bytes - - El recuento delta de bytes de sus datos enviados a través de la red. Cada muestra es el número de bytes enviados desde el punto de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_received_records - - El recuento delta de registros recibidos. Cada muestra es el número de registros recibidos desde la muestra de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_sent_records - - El recuento delta de registros enviados. Cada muestra es el número de registros enviados desde el punto de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_retained_bytes - - El recuento actual de bytes retenidos por el clúster. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_active_connection_count - - El recuento de conexiones autenticadas activas. -
- confluent_kafka_server_request_count - - El recuento delta de solicitudes recibidas a través de la red. Cada muestra es el número de solicitudes recibidas desde el punto de datos anterior. El recuento se realizó cada 60 segundos. -
- confluent_kafka_server_partition_count - - El número de particiones -
- confluent_kafka_server_successful_authentication_count - - El recuento delta de autenticaciones exitosas. Cada muestra es el número de autenticaciones exitosas desde el punto de datos anterior. El recuento se realizó cada 60 segundos. -
- confluent_kafka_server_consumer_lag_offsets - - El retraso entre el desplazamiento comprometido de un miembro del grupo y la marca de límite superior de la partición. -
\ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx deleted file mode 100644 index 2cec0d1ff6a..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-kafka-confluentcloud.mdx +++ /dev/null @@ -1,304 +0,0 @@ ---- -title: Recolector para monitoreo de Confluent Cloud y Kafka -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Kafka - - Confluent Cloud -metaDescription: You can collect Kafka metrics from Confluent using the OpenTelemetry Collector. -freshnessValidatedDate: never -translationType: machine ---- - -Puede recopilar métricas sobre su Kafka administrado por Confluent Cloud desplegado con el recolector OpenTelemetry. El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - -Esta integración funciona ejecutando una configuración de receptor prometheus dentro del recolector OpenTelemetry, que extrae [la API métrica de Confluent Cloud](https://api.telemetry.confluent.cloud/docs/descriptors/datasets/cloud?_ga=2.183807142.1264186867.1705940186-6520871.1686857317&_gl=1*1te8jue*_ga*NjUyMDg3MS4xNjg2ODU3MzE3*_ga_D2D3EGKSGD*MTcwNjAzNzYwOS41Ni4wLjE3MDYwMzc2MDkuNjAuMC4w) y exporta esos datos a New Relic. - -Complete los pasos a continuación para recopilar Kafka métrica de Confluent y exportarlos a New Relic. - - - - ## Asegúrate de estar configurado - - Antes de comenzar, debe tener el de la cuenta a la que desea informar datos. También debes verificar que: - - * Tienes un docker daemon ejecutándose - * Tienes [docker Compose](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/confluentcloud) instalado - * Tienes una [cuenta de Confluent Cloud](https://www.confluent.io/get-started/) - * Tienes disponible tu [clave de API y secreto de Confluent Cloud](https://docs.confluent.io/confluent-cli/current/command-reference/api-key/confluent_api-key_create.html) - - - - ## Descargue o clone el repositorio de ejemplo - - Descargue [el repositorio de ejemplos de OpenTelemetry de New Relic](https://github.com/newrelic/newrelic-opentelemetry-examples) , ya que esta configuración utiliza su configuración de recolector de ejemplo. Una vez instalado, abra el directorio [de ejemplo de Confluent Cloud](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/confluentcloud) . Para obtener más información, también puede consultar el `README` allí. - - - - ## Establezca variables de entorno y ejecute el recolector - - * Establezca la clave de API y las variables secretas para Confluent Cloud y New Relic en el archivo `.env` - * Establezca la variable `Cluster_ID` con el ID del clúster objetivo Kafka - * (Opcional) Para monitor conectores o registros de esquemas administrados por Confluent Cloud, puede quitar el comentario de la configuración en el archivo `collector.yaml` y establecer el ID correspondiente en el archivo `.env`. - - ```bash - # Open the confluent cloud example directory - cd newrelic-opentelemetry-examples/other-examples/collector/confluentcloud - - # Set environment variables. - - # run the collector in docker - docker compose up - ``` - - ### Información de variables locales - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Variable - - Descripción - - Documentos -
- `NEW_RELIC_API_KEY` - - New Relic Ingest clave de API - - [Clave de documentos API](/docs/apis/intro-apis/new-relic-api-keys/) -
- `NEW_RELIC_OTLP_ENDPOINT` - - El extremo predeterminado de OTLP New Relic de EE. UU. es [https://otlp.nr-data.net:4318](https://otlp.nr-data.net:4318) - - [Documentos de configuración de OTLP extremo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp) -
- `CLUSTER_ID` - - ID del clúster de Confluent Cloud - - [Documentos para el comando de lista de ID de clúster](https://docs.confluent.io/confluent-cli/current/command-reference/kafka/cluster/confluent_kafka_cluster_list.html#description) -
- `CONFLUENT_API_KEY` - - Clave de API en la nube - - [Documentos API de clave de nube](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#metrics-quick-start) -
- `CONFLUENT_API_SECRET` - - Secreto de la API de la nube - - [Documentos API de clave de nube](https://docs.confluent.io/cloud/current/monitoring/metrics-api.html#metrics-quick-start) -
- `CONNECTOR_ID` - - (OPCIONAL) Puede monitor sus conectores Confluent especificando el ID aquí - - [Documentos para el comando de ID del conector de lista](https://docs.confluent.io/confluent-cli/current/command-reference/connect/cluster/confluent_connect_cluster_list.html) -
- `SCHEMA_REGISTRY_ID` - - (OPCIONAL) Puede monitor su Registro de esquemas de Confluent especificando el ID aquí - - [Documentos para el comando de ID del conector de lista](https://docs.confluent.io/confluent-cli/current/command-reference/schema-registry/schema/confluent_schema-registry_schema_list.html) -
-
- - - ## Ver tus datos en New Relic - - Puede ver sus datos de Confluent Cloud de diferentes maneras. - - * Navegue hasta el [mercado de New Relic](https://one.newrelic.com/marketplace) y busque `Confluent`. ¡El panel disponible se puede instalar directamente en su cuenta! - * Navegue hasta el explorador métrica y filtre por `confluent_kafka`. Estos datos se pueden agregar a cualquier alerta o dashboard personalizado. - -
- -### Nube Confluente métrica [#confluent-metrics] - -Esta integración cubre todas las métricas _Exportables_ dentro de la [API métrica de Confluent Cloud](https://api.telemetry.confluent.cloud/docs/descriptors/datasets/cloud). Tenemos una lista parcial de las métricas _Exportables_ a continuación: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Descripción -
- confluent_kafka_server_received_bytes - - El recuento delta de bytes de los datos de los clientes recibidos de la red. Cada muestra es el número de bytes recibidos desde la muestra de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_sent_bytes - - El recuento delta de bytes de los datos de los clientes enviados a través de la red. Cada muestra es el número de bytes enviados desde el punto de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_received_records - - El recuento delta de registros recibidos. Cada muestra es el número de registros recibidos desde la muestra de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_sent_records - - El recuento delta de registros enviados. Cada muestra es el número de registros enviados desde el punto de datos anterior. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_retained_bytes - - El recuento actual de bytes retenidos por el clúster. El recuento se realiza cada 60 segundos. -
- confluent_kafka_server_active_connection_count - - El recuento de conexiones autenticadas activas. -
- confluent_kafka_server_request_count - - El recuento delta de solicitudes recibidas a través de la red. Cada muestra es el número de solicitudes recibidas desde el punto de datos anterior. El recuento se realizó cada 60 segundos. -
- confluent_kafka_server_partition_count - - El número de particiones -
- confluent_kafka_server_successful_authentication_count - - El recuento delta de autenticaciones exitosas. Cada muestra es el número de autenticaciones exitosas desde el punto de datos anterior. El recuento se realizó cada 60 segundos. -
- confluent_kafka_server_consumer_lag_offsets - - El retraso entre el desplazamiento comprometido de un miembro del grupo y la marca de límite superior de la partición. -
\ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx deleted file mode 100644 index 70000fadc74..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-prometheus.mdx +++ /dev/null @@ -1,122 +0,0 @@ ---- -title: Recolector de Prometheus -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Prometheus -metaDescription: You can collect Prometheus metrics using the OpenTelemetry collector. -freshnessValidatedDate: never -translationType: machine ---- - -Puede recopilar métrica desde cualquier [software que exponga Prometheus métrica](https://prometheus.io/docs/instrumenting/exporters/) con el recolector OpenTelemetry utilizando el [receptor comunitario Prometheus](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/prometheusreceiver). El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - - - Si busca ayuda con otros casos de uso del recolector, consulte el repositorio [newrelic-OpenTelemetry-examples](https://github.com/newrelic/newrelic-opentelemetry-examples) . - - -Complete los pasos a continuación para recolectar Prometheus métrica. - - - - ## Compruebe estos requisitos previos - - Si aún no lo has hecho: - - * [Regístrese para obtener una cuenta New Relic](https://newrelic.com/signup). - - * En su aplicación de destino, asegúrese de exponer el extremo métrico de Prometheus para que sea accesible para el componente receptor de Prometheus en el recolector OpenTelemetry. - - * El Prometheus métrica extremo podría estar habilitado de forma predeterminada o es posible que necesite realizar una configuración adicional para habilitarlo. - * Algunos programas pueden requerir que un [exportador de Prometheus externo](https://prometheus.io/docs/instrumenting/exporters/#third-party-exporters) exponga métrica. - - * Instale el recolector de OpenTelemetry siguiendo los pasos en los [documentos de OpenTelemetry](https://opentelemetry.io/docs/collector/getting-started/). - - * Puedes utilizar cualquier distribución siempre que tenga estos dos componentes: [exportador OTLP/HTTP](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter) y [receptor Prometheus.](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/prometheusreceiver) - - - - ## Configurar el recolector OpenTelemetry - - Actualice o cree un nuevo archivo llamado `config.yaml` y reemplace las siguientes claves en el archivo con sus propios valores: - - * Configuración de raspado de Prometheus: - - * `PROMETHEUS_JOBNAME` - * `PROMETHEUS_HOSTNAME` - * `PROMETHEUS_ENDPOINT_PORT` - * `PROMETHEUS_ENDPOINT_PATH` (opcional, el valor predeterminado es /métrica) - - * [New Relic ](/docs/apis/intro-apis/new-relic-api-keys/#license-key): - - * `NEW_RELIC_LICENSE_KEY` - - ```yaml - receivers: - prometheus: - config: - scrape_configs: - - job_name: "PROMETHEUS_JOBNAME" - static_configs: - - targets: [ "PROMETHEUS_HOSTNAME:PROMETHEUS_ENDPOINT_PORT" ] - labels: - label_example: VALUE_EXAMPLE - metrics_path: PROMETHEUS_ENDPOINT_PATH - - exporters: - otlphttp: - endpoint: https://otlp.nr-data.net - headers: - api-key: NEW_RELIC_LICENSE_KEY - processors: - service: - telemetry: - logs: - pipelines: - metrics: - receivers: [prometheus] - processors: [batch, memory_limiter] - exporters: [otlphttp] - ``` - - Para obtener más opciones de configuración, revise: - - * [Documentos del recolector OpenTelemetry ](https://opentelemetry.io/docs/collector/configuration/). - * [Documentos de configuración de Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) para obtener detalles de configuración adicionales. - * [Borre el documento de configuración](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#scrape_config). - - - - ## Ejecute el recolector - - Ejecute el recolector OpenTelemetry . La forma de ejecutarlo puede variar según el método de instalación elegido. Por ejemplo: - - ```yaml - /usr/bin/otelcol --config ./config.yaml - ``` - - - - ## Encuentra y utiliza tus datos - - Puede utilizar el [explorador métrico](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer) para comprobar la métrica que se está ingiriendo. Todas las métricas reportadas por el receptor OTEL Prometheus se detectan ejecutando la siguiente consulta. - - ```sql - SELECT count(*) - FROM Metric - WHERE instrumentation.provider='opentelemetry' and otel.library.name='otelcol/prometheusreceiver' - FACET metricName - ``` - - - -## Resolución de problemas: los nombres métricos no coinciden [#troubleshooting] - -El panel de control basado en Prometheus métrica y la entidad utilizan las convenciones de nomenclatura de Prometheus métrica para coincidir con la métrica que informa el extremo de Prometheus. Sin embargo, el receptor OpenTelemetry Prometheus utiliza las convenciones de nomenclatura de OpenTelemetry de forma predeterminada después de [v076.3](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.76.3). - -Para usar las convenciones de nomenclatura métrica de Prometheus, deshabilite la característica-gate `pkg.translator.prometheus.NormalizeName` cuando ejecute el recolector OpenTelemetry: - -```shell -otelcol-contrib --config ./config.yaml --feature-gates=-pkg.translator.prometheus.NormalizeName -``` \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx deleted file mode 100644 index 84d7afe25d2..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-singlestore.mdx +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Recolector OpenTelemetry para monitoreo SingleStore métrica -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Singlestore - - Database - - Cloud - - OTeL -metaDescription: You can collect metrics from SingleStore using the OpenTelemetry Collector. -freshnessValidatedDate: '2024-04-02T00:00:00.000Z' -translationType: machine ---- - -Esta guía explica cómo recolectar métrica de su SingleStore desplegándose usando el recolector OpenTelemetry . El recolector recopila, procesa y envía telemetry data (incluidos métricas, logs y trazas) a varios servidores de observabilidad, incluido New Relic. - -El siguiente ejemplo de configuración aprovecha el receptor Prometheus dentro del recolector. Recupera servicios métricos directamente desde [de administración de SingleStore API](https://docs.singlestore.com/cloud/reference/management-api/reference/) y los exporta al New Relic OpenTelemetry extremo de . - -Siga los pasos a continuación para recopilar y exportar SingleStore métrica a New Relic. - - - - ## Revisa los requisitos [#requirements] - - Antes de comenzar, necesitará lo siguiente: - - * Un docker daemon servicio en ejecución - - * Una herramienta [Docker Compose](https://docs.docker.com/compose/) instalada - - * Tu [clave de API de SingleStore](https://support.singlestore.com/hc/en-us/articles/12396018910228-Creating-Management-API-Key) - - * Tu New Relic - - - - para la cuenta a la que deseas informar datos - - - - ## Descargue o clone la configuración de ejemplo [#download] - - 1. [Descargue la configuración de ejemplo](https://github.com/newrelic/newrelic-opentelemetry-examples). - 2. Una vez descargado, ubique el directorio `singlestore` dentro de la carpeta `other-examples/collector` del repositorio. Este directorio contiene la configuración específica para la recogida métrica de SingleStore. - 3. (Opcional) Consulte el [archivo README](https://github.com/newrelic/newrelic-opentelemetry-examples/blob/main/other-examples/collector/singlestore/README.md) para obtener detalles e instrucciones adicionales relacionados con el ejemplo de SingleStore. - - - - ## Establezca variables de entorno y ejecute el recolector [#set-variables-run-collector] - - En el archivo `.env` : - - * Establecer la clave de API de SingleStore, el grupo de espacio de trabajo y las variables de organización - - * Establezca la variable clave de API de New Relic en su clave de licencia de New Relic - - Una vez configuradas las variables, puede ejecutar el ejemplo utilizando el siguiente comando: - - ```bash - # Open the SingleStore example directory - cd newrelic-opentelemetry-examples/other-examples/collector/singlestore - - # run the collector in docker - docker compose up - ``` - - ### Información de variables de entorno - - Si necesita más información sobre las variables de entorno establecidas anteriormente, consulte la documentación en la siguiente tabla. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Variable - - Descripción - - Documentos -
- `NEW_RELIC_API_KEY` - - New Relic Ingest clave de API - - [Más información sobre la clave de API](/docs/apis/intro-apis/new-relic-api-keys/) -
- `NEW_RELIC_OTLP_ENDPOINT` - - El extremo predeterminado de OTLP New Relic de EE. UU. es `https://otlp.nr-data.net:4318`. - - [Revisar la configuración extrema de OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp) -
- `SINGLESTORE_ORG` - - ID de su organización SingleStore - - [Documentación de la organización SingleStore](https://docs.singlestore.com/cloud/user-and-workspace-administration/manage-organizations/) -
- `SINGLESTORE_WORKSPACE_GROUP` - - ID del grupo de espacio de trabajo SingleStore que desea monitor - - [Documentación del grupo de espacios de trabajo SingleStore](https://docs.singlestore.com/cloud/getting-started-with-singlestoredb-cloud/about-workspaces/what-is-a-workspace/) -
- `SINGLESTORE_API_KEY` - - Tu clave de API de SingleStore - - [SingleStore clave de documentación API](https://support.singlestore.com/hc/en-us/articles/12396018910228-Creating-Management-API-Key) -
-
- - - ## Ver tus datos en New Relic [#view-data] - - Para ver sus datos en New Relic, use el [explorador de datos](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer/#explore-data) y filtre por `singlestore`. Estos datos se pueden agregar a cualquier alerta o dashboard personalizado. - -
\ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx deleted file mode 100644 index 9554d860f61..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-squid.mdx +++ /dev/null @@ -1,1915 +0,0 @@ ---- -title: Recolector de calamar -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Squid -metaDescription: You can collect Squid metrics using the OpenTelemetry Collector. -freshnessValidatedDate: never -translationType: machine ---- - -Puedes recopilar métricas sobre tu Squid Cache Manager con el recolector OpenTelemetry. El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - - - Si busca ayuda con otros casos de uso del recolector, consulte el repositorio [newrelic-OpenTelemetry-examples](https://github.com/newrelic/newrelic-opentelemetry-examples) . - - -Completa los siguientes pasos para recolectar métrica de Calamar: - -## Paso 1: Regístrese para obtener su cuenta gratuita si aún no lo ha hecho [#signup] - - - -## Paso 2: requisitos previos [#prerequisites] - -Permita que el host donde se ejecutará su exportador Squid Prometheus acceda al [administrador de Squid Cache](https://wiki.squid-cache.org/Features/CacheManager/Index) configurando la asignación en el archivo `squid.conf` . - -Ejemplo en `squid.conf`: - -``` -# Given this access list -acl localnet src 192.168.0.0/16 - -# We would allow that ip range to access the manager by setting this directive -http_access allow localnet manager -``` - -[Instale el exportador Squid Prometheus](https://github.com/boynux/squid-exporter) para su Squid Cache Manager y configúrelo para que apunte al administrador de Squid Cache que desea monitor. - -Ejemplo de ejecución de exportador: - -``` -squid-exporter -squid-hostname localhost -squid-port 3128 -listen ":9301" -squid-login admin -squid-password admin -``` - - - Se requiere Squid Prometheus exporter v1.10.4 o superior, se recomienda la última versión disponible. - - -## Paso 3: Instale el recolector OpenTelemetry [#install-opentelemetry-collector] - -Descargue e instale el recolector OpenTelemetry siguiendo [los documentosOpenTelemetry ](https://opentelemetry.io/docs/collector/getting-started/). - -## Paso 4: Configurar el recolector OpenTelemetry [#configure-opentelemetry-collector] - -Cree un nuevo archivo llamado `config.yaml` del siguiente ejemplo. - -Reemplace las siguientes claves en el archivo con sus propios valores: - -* Calamar: - - * `SQUID_EXPORTER_HOSTNAME` - * `SQUID_EXPORTER_PORT` - * `SQUID_EXPORTER_METRICS_PATH` - * `SQUID_CACHEMGR` - -* [New Relic ](/docs/apis/intro-apis/new-relic-api-keys/#license-key): - - * `NEW_RELIC_LICENSE_KEY` - -La etiqueta `squid_cachemgr: SQUID_CACHEMGR` (donde SQUID_CACHEMGR debe ser un identificador único) es necesaria para que se cree la entidad `SQUID_CACHEMGR` y se ejecute el panel asociado. - -```yaml -receivers: - prometheus: - config: - scrape_configs: - - job_name: "squid" - static_configs: - - targets: [ "SQUID_EXPORTER_HOSTNAME:SQUID_EXPORTER_PORT" ] - labels: - squid_cachemgr: SQUID_CACHEMGR - metrics_path: SQUID_EXPORTER_METRICS_PATH - metric_relabel_configs: - - source_labels: [__name__] - regex: "^process_.*" - action: drop - -exporters: - otlphttp: - endpoint: https://otlp.nr-data.net - headers: - api-key: NEW_RELIC_LICENSE_KEY -processors: - batch: - memory_limiter: - limit_mib: 400 - spike_limit_mib: 100 - check_interval: 5s -service: - telemetry: - logs: - pipelines: - metrics: - receivers: [prometheus] - processors: [batch, memory_limiter] - exporters: [otlphttp] -``` - -Puede consultar [los documentos del recolector OpenTelemetry ](https://opentelemetry.io/docs/collector/configuration/)y [los documentos de configuración de Prometheus](https://prometheus.io/docs/prometheus/latest/configuration/configuration/) para obtener detalles de configuración adicionales. - -## Paso 4: ejecuta el recolector [#run-collector] - -Ejecute el recolector OpenTelemetry (la forma de ejecutarlo puede variar según el método de instalación elegido). Ejemplo: - -```yaml -/usr/bin/otelcol --config ./config.yaml -``` - -## Paso 5: busque y utilice sus datos - -### Explora tus datos - -Puede utilizar el [explorador métrico](/docs/query-your-data/explore-query-data/browse-data/introduction-data-explorer) para comprobar la métrica que se está ingiriendo. Todas las métricas reportadas por el exportador Squid Prometheus se agrupan en una entidad `SQUID_CACHEMGR` con el nombre establecido en `SQUID_CACHEMGR` y comienzan con el prefijo `squid_` . - -### Datos métricos [#squid-metrics] - -Estos son los dos grupos de métricas reportados por el encargado del caché de calamar que se raspan: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica - - Descripción -
- `squid_client_http_errors_total` - - encimera - - El número total de errores http del cliente. -
- `squid_client_http_hit_kbytes_out_bytes_total` - - encimera - - El número total de kbytes del cliente acierto de caché -
- `squid_client_http_hits_total` - - encimera - - El número total de clientes acierto de caché -
- `squid_client_http_kbytes_in_kbytes_total` - - encimera - - El número total de kbytes de cliente recibidos. -
- `squid_client_http_kbytes_out_kbytes_total` - - encimera - - El número total de kbytes de cliente transferidos. -
- `squid_client_http_requests_total` - - encimera - - El número total de solicitudes de clientes. -
- `squid_exporter_build_info` - - medidor - - Una métrica con un valor "1" constante etiquetado por versión, revisión, rama y versión a partir de la cual se creó `squid_exporter` . -
- `squid_server_all_errors_total` - - encimera - - El número total de todos los errores del servidor. -
- `squid_server_all_kbytes_in_kbytes_total` - - encimera - - El número total de kbytes de servidor recibidos. -
- `squid_server_all_kbytes_out_kbytes_total` - - encimera - - El número total de kbytes del servidor transferidos. -
- `squid_server_all_requests_total` - - encimera - - El número total de todas las solicitudes del servidor. -
- `squid_server_ftp_errors_total` - - encimera - - El número total de errores ftp del servidor. -
- `squid_server_ftp_kbytes_in_kbytes_total` - - encimera - - El número total de kbytes ftp del servidor recibidos. -
- `squid_server_ftp_kbytes_out_kbytes_total` - - encimera - - El número total de kbytes ftp del servidor transferidos -
- `squid_server_ftp_requests_total` - - encimera - - El número total de solicitudes ftp del servidor. -
- `squid_server_http_errors_total` - - encimera - - El número total de errores http del servidor. -
- `squid_server_http_kbytes_in_kbytes_total` - - encimera - - El número total de kbytes http del servidor recibidos. -
- `squid_server_http_kbytes_out_kbytes_total` - - encimera - - El número total de kbytes http del servidor transferidos -
- `squid_server_http_requests_total` - - encimera - - El número total de solicitudes http del servidor. -
- `squid_server_other_errors_total` - - encimera - - El número total de otros errores del servidor. -
- `squid_server_other_kbytes_in_kbytes_total` - - encimera - - El número total de otros kbytes del servidor recibidos. -
- `squid_server_other_kbytes_out_kbytes_total` - - encimera - - El número total de otros kbytes del servidor transferidos. -
- `squid_server_other_requests_total` - - encimera - - El número total de otras solicitudes del servidor. -
- `squid_swap_files_cleaned_total` - - encimera - - La cantidad de archivos de caché huérfanos eliminados mediante el procedimiento de limpieza periódica -
- `squid_swap_ins_total` - - encimera - - El número de objetos leídos del disco. -
- `squid_swap_outs_total` - - encimera - - El número de objetos guardados en el disco. -
- `squid_up` - - medidor - - ¿Fue exitosa la última consulta de calamares? -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre - - Tipo de métrica -
- `squid_Cache_Hits_5` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_10` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_15` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_20` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_25` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_30` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_35` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_40` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_45` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_50` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_55` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_60` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_65` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_70` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_75` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_80` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_85` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_90` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Hits_95` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_5` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_10` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_15` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_20` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_25` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_30` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_35` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_40` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_45` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_50` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_55` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_60` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_65` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_70` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_75` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_80` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_85` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_90` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Cache_Misses_95` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_5` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_10` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_15` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_20` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_25` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_30` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_35` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_40` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_45` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_50` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_55` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_60` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_65` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_70` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_75` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_80` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_85` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_90` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_DNS_Lookups_95` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_5` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_10` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_15` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_20` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_25` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_30` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_35` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_40` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_45` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_5` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_50` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_55` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_60` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_65` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_70` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_75` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_80` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_85` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_90` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_HTTP_Requests_All_95` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_5` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_10` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_15` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_20` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_25` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_30` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_35` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_40` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_45` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_50` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_55` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_60` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_65` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_70` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_75` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_80` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_85` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_90` - - encimera - - Percentil de tiempo de servicio 5min -
- `squid_Near_Hits_95` - - encimera - - Percentil de tiempo de servicio 5min -
-
-
- -## Resolución de problemas [#troubleshooting] - -### Problema - -Los nombres métricos no coinciden. - -### Solución - -El tablero de Squids y la entidad utilizan las convenciones de nomenclatura métrica de Prometheus para coincidir con la métrica reportada por el exportador Prometheus de Squid. Sin embargo, el receptor OpenTelemetry Prometheus utiliza las convenciones de nomenclatura de OpenTelemetry de forma predeterminada después de [v076.3](https://github.com/open-telemetry/opentelemetry-collector-contrib/releases/tag/v0.76.3). - -Para utilizar las convenciones de nomenclatura métrica de Prometheus, desactive `pkg.translator.prometheus.NormalizeName` `feature-gate` cuando ejecute el recolector OpenTelemetry: - -```shell -otelcol-contrib --config ./config.yaml --feature-gates=-pkg.translator.prometheus.NormalizeName -``` \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx deleted file mode 100644 index 35b8e1dabf3..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-statsd.mdx +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: Recolector para StatsD métrica -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry - - Statsd -metaDescription: You can collect StatsD metrics using the OpenTelemetry collector. -freshnessValidatedDate: '2023-07-20T00:00:00.000Z' -translationType: machine ---- - -Puedes recolectar StatsD métrica con el recolector OpenTelemetry. El recolector es un componente de OpenTelemetry que recopila, procesa y exporta telemetry data a New Relic (o cualquier backend de observabilidad). - -Complete los pasos a continuación para recopilar StatsD métrica: - -## Paso 1: Regístrese para obtener su cuenta gratuita si aún no lo ha hecho [#signup] - - - -## Paso 2: requisitos previos [#prerequisites] - -El recolector utilizará el componente [receptor StatsD](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/statsdreceiver) . Requiere permiso para escuchar en el extremo configurado (`localhost:8125` por defecto). - -## Paso 3: Instale el recolector OpenTelemetry [#install-opentelemetry-collector] - -Descargue e instale el recolector de OpenTelemetry siguiendo los [documentos de OpenTelemetry](https://opentelemetry.io/docs/collector/getting-started/). - -Necesitará instalar [OpenTelemetry recolector Contrib Distro](https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib) u otra distribución que incluya, al menos, estos componentes: - -* [Receptor de estadísticas](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/statsdreceiver) -* [Exportador OTLP/HTTP](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter) - -## Paso 4: Configurar el recolector OpenTelemetry [#configure-opentelemetry-collector] - -Actualice o cree un nuevo archivo llamado `config.yaml` del siguiente ejemplo. - -Reemplace el `NEW_RELIC_LICENSE_KEY` en el archivo con sus propios valores. Para obtener más información, consulte la [clave de licencia de New Relic](/docs/apis/intro-apis/new-relic-api-keys/#license-key). - -```yaml -receivers: - - statsd: - is_monotonic_counter: true - -exporters: - otlphttp: - endpoint: https://otlp.nr-data.net - headers: - api-key: NEW_RELIC_LICENSE_KEY - -service: - telemetry: - logs: - pipelines: - metrics: - receivers: [statsd] - exporters: [otlphttp] -``` - -Para obtener más opciones de configuración, revise: - -* [Documentación del receptor StatsD](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/statsdreceiver#configuration) -* [Documentación del recolector OpenTelemetry](https://opentelemetry.io/docs/collector/configuration/) - -## Paso 4: ejecuta el recolector [#run-collector] - -Ejecute el recolector OpenTelemetry (la forma de ejecutarlo puede variar según el método de instalación elegido). Ejemplo: - -```yaml -/usr/bin/otelcol-contrib --config ./config.yaml -``` - -## Paso 5: busque y utilice sus datos - -### Explora y consulta tus datos [#data] - -El recolector reportará la métrica ingerida mediante mensajes de StatsD, por favor revise: - -* [Tipos métricos de StatsD](https://github.com/statsd/statsd/blob/master/docs/metric_types.md) -* [Agregación de receptores de StatsD](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/statsdreceiver#aggregation) - -Puede enumerar las métricas que informa el receptor de estadísticas: - -```sql -FROM Metric SELECT uniques(metricName) WHERE otel.library.name = 'otelcol/statsdreceiver' LIMIT MAX -``` - -## Resolución de problemas [#troubleshooting] - - - - Las contramétricas recopiladas por el receptor statsd se informan como [sumas no monótonas con agregación delta](https://opentelemetry.io/docs/specs/otel/metrics/data-model/#sums) de forma predeterminada, pero este tipo de métrica no es compatible (consulte [las mejores prácticas métricas de OpenTelemetry para obtener más detalles](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-best-practices-metrics/#delta-sums)). - - Utilice la opción de configuración `is_monotonic_counter` para informar el contador métrico como sumas monótonas. Ejemplo: - - ```yaml - # ... - receivers: - statsd: - is_monotonic_counter: true - # ... - ``` - - - - En escenarios específicos, dependiendo de cómo se informan las métricas de StatsD al receptor y qué atributo incluyen esas métricas, es posible que la agregación no funcione como se esperaba. El problema ya ha sido identificado e informado en el repositorio OTEL del receptor. Para obtener más información y realizar un seguimiento del problema, haga clic [aquí](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/23809). - - \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx deleted file mode 100644 index 3d8f2733b3f..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro.mdx +++ /dev/null @@ -1,83 +0,0 @@ ---- -title: Recolector OpenTelemetry para procesamiento de datos -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Use the OpenTelemetry collector as a general purpose telemetry data processing tool -freshnessValidatedDate: '2024-05-13T00:00:00.000Z' -translationType: machine ---- - -import opentelemetryNativeOtlpWithCollector from 'images/opentelemetry_diagram_native-otlp-with-collector.webp' - -El [recopiladorOpenTelemetry ](https://opentelemetry.io/docs/collector/)es una herramienta independiente del proveedor para recibir, procesar y exportar telemetry data. Se recomienda ejecutar el recolector en su canal de observabilidad. Si bien los requisitos y la configuración del recopilador variarán, es común enrutar [los datos APM OpenTelemetry ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro)a través de un recopilador. Esto aleja la sobrecarga de la aplicación y proporciona un lugar para enriquecer la telemetría con datos de contexto ambiental adicionales, filtrar y transformar, y más. También es común usar el recolector para monitoreo de infraestructura, pero esta documentación se enfoca en casos de uso de procesamiento de datos. Ver [recolector de monitoreo de infraestructura](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro) para más información. - -A continuación se muestra un ejemplo del recolector como puerta de enlace, pero también puede configurar el recolector como un agente que se ejecuta en el mismo host que su aplicación: - -Diagram showing OpenTelemetry using the OpenTelemetry collector and New Relic's OTLP endpoint. - -El recolector cuenta con un extenso conjunto de receptores, procesadores, exportadores, extensiones y conectores. Estos componentes están incluidos en [distribuciones](https://opentelemetry.io/docs/collector/distributions/) prediseñadas. Sin embargo, es posible crear componentes personalizados que se ajusten a requisitos específicos y crear [una distribución de recolector personalizada](https://opentelemetry.io/docs/collector/custom-collector/) para empaquetar un conjunto específico de componentes. - -Si bien la configuración varía según los requisitos, el recopilador que envía datos a New Relic debe tener ciertas cosas en común: - -## Exportador OTLP [#otlp-exporter] - -El recopilador OpenTelemetry admite la exportación de datos mediante [otlphttpexporter](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlphttpexporter). Cerciorar de que la configuración del exportador coincida con [los requisitos de New Relic OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#configure-endpoint-port-protocol). - -Tenga en cuenta que [otlpexporter](https://github.com/open-telemetry/opentelemetry-collector/tree/main/exporter/otlpexporter) es compatible, pero se prefiere el protocolo binario OTLP/HTTP a OTLP/gRPC. - -## Procesador por lotes [#batch-processor] - -Configure el recopilador para emplear el [procesador por lotes](https://github.com/open-telemetry/opentelemetry-collector/tree/main/processor/batchprocessor) para exportar registros en lotes. Cerciorar de que el tamaño y la frecuencia del lote estén [configurados para cumplir con los requisitos de New Relic OTLP](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/). - -## Ejemplo mínimo [#minimal-example] - -Para instalar el recopilador, consulte la [documentación OpenTelemetry ](https://opentelemetry.io/docs/collector/installation/). - -Ejecute el recopilador con la configuración siguiente, cerciorar de reemplazar lo siguiente: - -* Reemplace `` con el [extremo OTLP New Relic ](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#endpoint-port-protocol)apropiado -* Reemplace `` con su [clave de licencia](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/#endpoint-port-protocol/#prereqs) - -```yaml -receivers: - otlp: - protocols: - grpc: - http: - -processors: - batch: - -exporters: - otlphttp: - endpoint: - headers: - api-key: - -service: - pipelines: - traces: - receivers: [otlp] - processors: [batch] - exporters: [otlphttp] - metrics: - receivers: [otlp] - processors: [batch] - exporters: [otlphttp] - logs: - receivers: [otlp] - processors: [batch] - exporters: [otlphttp] -``` - -Para ver un ejemplo práctico, consulte el [New Relic OpenTelemetry repositorio de](https://github.com/newrelic/newrelic-opentelemetry-examples/tree/main/other-examples/collector/nr-config) ejemplos . - -Para ejemplos adicionales de recolectores, consulte [recolector para monitoreo de infraestructura](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro). \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx deleted file mode 100644 index 62ed1764ee8..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro.mdx +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: Comience con OpenTelemetry y New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Explore a variety of OpenTelemetry integration patterns with New Relic. -freshnessValidatedDate: never -translationType: machine ---- - -El proyecto OpenTelemetry tiene un amplio alcance que incluye [especificacionesAPI y SDK](https://opentelemetry.io/docs/specs/otel/), [instrumentación](https://opentelemetry.io/docs/concepts/instrumentation/), el [recopilador](https://opentelemetry.io/docs/collector/), [convenciones semánticas](https://opentelemetry.io/docs/specs/semconv/), el protocolo [OTLP](https://opentelemetry.io/docs/specs/otlp/) y más. New Relic monitoreo de IA tendrá soporte de primera clase para OpenTelemetry y tiene una amplia variedad de capacidades de plataforma que facilitan el uso de las herramientas OpenTelemetry . - -Esta documentación es una colección de patrones de integración comunes de OpenTelemetry con New Relic. No es un conjunto exhaustivo de todos los usos posibles, pero debería dar una idea de las formas en que la mayoría de la gente usa OpenTelemetry y los tipos de capacidades de la plataforma New Relic construidas sobre esos flujos de trabajo. - -[OpenTelemetry APM monitoreo](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro) analiza el uso de OpenTelemetry para realizar monitoreo APM similar al [monitoreoAPM con el agente New Relic ](/docs/apm/new-relic-apm/getting-started/introduction-apm/). - -[OpenTelemetry El recolector para monitoreo de infraestructura](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro) contiene una variedad de ejemplos del uso del OpenTelemetry recolector para monitoreo de infraestructura, incluido el raspado/sondeo de OpenTelemetry APM objetivos de infraestructura y la correlación de datos con infraestructura. - -[El recopilador OpenTelemetry para procesamiento de datos](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-processing/opentelemetry-collector-processing-intro) analiza los conceptos básicos del uso del recopilador OpenTelemetry como una herramienta general para recibir, procesar (enriquecer, transformar, muestrear, filtrar, etc.) y exportar telemetry data. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx deleted file mode 100644 index bab0b375ea9..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/opentelemetry-introduction.mdx +++ /dev/null @@ -1,119 +0,0 @@ ---- -title: Introducción a OpenTelemetry con New Relic -tags: - - Integrations - - Open source telemetry integrations - - OpenTelemetry -metaDescription: Here are some New Relic tips about when to implement OpenTelemetry. -freshnessValidatedDate: '2024-06-01T00:00:00.000Z' -translationType: machine ---- - -import moreintegrationsOtelRefArch from 'images/more-integrations_diagram_otel-ref-arch.webp' - -OpenTelemetry es un conjunto de herramientas para recopilar telemetría de aplicaciones, infraestructura (p. ej. hosts, k8s, etc.) y más. Al configurar las fuentes de datos de OpenTelemetry para exportar a New Relic, puede aprovechar una amplia gama de capacidades de la plataforma para analizar los datos y diagnosticar problemas. - -Esta página proporciona una descripción general de OpenTelemetry y New Relic. Para ver ejemplos de código de trabajo que demuestran patrones de integración comunes, incluido APM y monitoreo de infraestructura, consulte [cómo comenzar con OpenTelemetry con New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro/). Para obtener información sobre cómo New Relic recibe, procesa e ingiere datos OpenTelemetry , consulte [DatosOpenTelemetry en New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-data-overview/) y, en individuo, detalles sobre [el extremo OTLP de New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/best-practices/opentelemetry-otlp/). - -## Beneficios de OpenTelemetry [#benefits] - -OpenTelemetry es un estándar abierto independiente del proveedor para instrumentar y exportar telemetry data. El alcance del proyecto es bastante extenso e incluye: - -* Una [especificación](https://opentelemetry.io/docs/specs/otel/) de API independiente del lenguaje para instrumentar los pilares centrales de observabilidad (traza, métrica, log) y SDK para configurar cómo se exporta la telemetría fuera de proceso, con implementaciones existentes en [más de 11](https://opentelemetry.io/docs/languages/) idiomas. Existe un catálogo sustancial de instrumentación disponible construida sobre estas API. -* [OTLP](https://opentelemetry.io/docs/specs/otlp/), un protocolo de entrega telemetry data de propósito general. -* [Convenciones semánticas](https://opentelemetry.io/docs/specs/semconv/) que describen la forma de telemetry data para el dominio común (es decir, Servidores HTTP, sistemas de mensajería y muchos más). -* El [recolector](https://opentelemetry.io/docs/collector/), un canal de procesamiento y recopilación de datos altamente configurable y extensible que se emplea para monitor la infraestructura y enriquecer, filtrar y transformar la telemetría. - -Estos componentes trabajan juntos para crear distintos beneficios: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Característica - - Descripción -
- Agnóstico del idioma - - OpenTelemetry reduce la carga cognitiva de los equipos políglotas al proporcionar un vocabulario y un conjunto de herramientas. -
- Estándar abierto - - Como estándar abierto con una estructura de gobierno abierta, ningún proveedor controla la dirección de OpenTelemetry. -
- Control total de los datos de observabilidad. - - La naturaleza altamente configurable y extensible de los SDK de lenguaje y el recopilador ofrecen un control incomparable sobre su canal telemetry data . -
- Rico ecosistema de instrumentación - - Uno de los objetivos de OpenTelemetry es que, en última instancia, la API se emplee directamente en la biblioteca y el marco ascendentes. Para cerrar la brecha, OpenTelemetry proporciona un gran catálogo de instrumentación aportada por ingenieros de todo el mundo. Hay más esfuerzo de instrumentación colectiva en OpenTelemetry del que cualquier proveedor puede realizar por sí solo. -
- Prueba del futuro - - Si bien OpenTelemetry ya recorrió un largo camino, parece estar preparado para crecer en adopción gracias a su gran comunidad activa, el apoyo de la industria y el modelo de gobernanza abierta. Si bien no podemos ver el futuro, OpenTelemetry es el ganador más probable del código abierto en la industria de observabilidad. -
- -## ¿OpenTelemetry o instrumentación New Relic? [#choice] - -En muchos casos, existe una superposición entre las características y los componentes disponibles en OpenTelemetry y New Relic. Por ejemplo, [el monitoreo OpenTelemetry APM](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/apm-monitoring/opentelemetry-apm-intro/) refleja [el agente New Relic APM](/docs/apm/new-relic-apm/getting-started/introduction-apm/), y [el monitoreo de infraestructura con el recolector OpenTelemetry](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/collector-infra-monitoring/opentelemetry-collector-infra-intro/) refleja las capacidades del [agente New Relic Infrastructure](/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/). - -Le recomendamos que explore las opciones de New Relic y OpenTelemetry. Con la instrumentación New Relic , existen beneficios inherentes al desarrollo de instrumentación y plataforma característica que funcionan juntas, y la integración New Relic tiende a funcionar mejor desde el primer momento. Por otro lado, OpenTelemetry ofrece un grado incomparable de flexibilidad y control, pero esto a veces requiere investigación y esfuerzo adicionales para lograr el resultado deseado. - -## OpenTelemetry está en continua evolución [#emerging-standard] - -El proyecto OpenTelemetry tiene un gran alcance que fue creciendo a lo largo de los años. Si bien muchos componentes centrales alcanzaron la estabilidad (incluidos OTLP,API la /SDK de traza, la API /SDK de métrica, la /SDK log bridge, las API convenciones semánticas http y muchas implementaciones de lenguaje), naturalmente hay piezas que se encuentran en otras etapas. de madurez. - -New Relic monitoreo de IA tendrá soporte de primera clase para OpenTelemetry, incluida la ingesta de todos los datos OTLP en nuestra plataforma de observabilidad de propósito general y la creación de experiencia del usuario sobre los datos de OpenTelemetry para ayudar a generar información valiosa a partir de los datos listos para usar. A medida que los componentes surjan y se desarrollen, las capacidades de nuestra plataforma evolucionarán. Sin embargo, tenga en cuenta el estado de madurez de cualquier componente de OpenTelemetry con el que se esté integrando. Si bien intentamos estar al tanto de los cambios, puede resultar complicado desarrollar cambios importantes en los componentes experimentales. - -## Arquitectura de referencia OpenTelemetry [#reference-architecture] - -Con una variedad tan amplia de componentes y opciones de configuración, puede resultar difícil saber por dónde empezar con OpenTelemetry. - -El siguiente diagrama ilustra una arquitectura de referencia: una vista de alto nivel de cómo una variedad de componentes de OpenTelemetry funcionan juntos y se integran con New Relic. Los desarrolladores de software, DevOps, arquitectos y gerentes pueden usarlo para alinear conceptos. Muestra aplicaciones instrumentadas con una variedad de herramientas ( New Relic APM agente, OpenTelemetry APM instrumentación, Jaeger y Prometheus) exportando datos a New Relic y, opcionalmente, a través de un recolector intermedio OpenTelemetry . El recopilador OpenTelemetry comprende una amplia variedad de protocolos y puede procesar, filtrar y enriquecer telemetry data antes de exportarlos a uno o más destinos. Para ver ejemplos de código funcional que demuestran esta integración, consulte [Introducción a OpenTelemetry y New Relic](/docs/more-integrations/open-source-telemetry-integrations/opentelemetry/get-started/opentelemetry-get-started-intro/). - -Diagram showing a reference architecture for OpenTelemetry and New Relic - -Para obtener lecturas adicionales, familiarizar con la [demostración de OpenTelemetry](https://opentelemetry.io/docs/demo/), un proyecto mantenido por la comunidad OpenTelemetry que ilustra varios conceptos de OpenTelemetry a través de un sistema de comercio electrónico ficticio impulsado por un serial de microservicios. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx deleted file mode 100644 index 96e6059930d..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/roku/roku-open-source-video-agent.mdx +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: Agente de código abierto de Roku -tags: - - Agents - - Open-source licensed agents - - Open-source licensed agents -metaDescription: A brief introduction to New Relic's open-source Roku video agent. -freshnessValidatedDate: never -translationType: machine ---- - -Monitor el comportamiento de Roku con New Relic utilizando el [agente de código abierto de Roku](https://github.com/newrelic/video-agent-roku). El agente contiene dos partes para capturar dos categorías separadas del comportamiento de Roku: - -* Evento de aplicación como inicio de aplicación y solicitudes HTTP -* Reproducción de vídeo dentro de la aplicación. - - - Este agente se publica como código abierto en GitHub. También hay disponible un log de cambios para las últimas actualizaciones. - - -## Empezar [#get_started] - -Para obtener información sobre requisitos, instalación y configuración, consulte el [archivo README del agente Roku de código abierto](https://github.com/newrelic/video-agent-roku/blob/master/README.md) en GitHub. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx deleted file mode 100644 index 1fc8a6fcf02..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/statsd/statsd-monitoring-integration.mdx +++ /dev/null @@ -1,651 +0,0 @@ ---- -title: Integración de monitoreo de StatsD -tags: - - Integrations - - On-host integrations - - On-host integrations list -freshnessValidatedDate: never -translationType: machine ---- - -import infrastructureStatsdNrqlCondition from 'images/infrastructure_screenshot-crop_statsd-nrql-condition.webp' - -import infrastructureStatsdNrqlAlert from 'images/infrastructure_screenshot-crop_statsd-nrql-alert.webp' - -Nuestra integración de StatsD le permite obtener fácilmente datos en formato [StatsD](https://github.com/statsd/statsd)en New Relic. También puede agregar cualquier etiqueta arbitraria (pares de valores principales) a sus datos. Una vez que tus métricas estén en New Relic, podrás [consultar tus datos](#find-use-data) y crear gráficos y paneles personalizados. - -¿Quieres probar nuestra integración de StatsD? ¡ [Crea una cuenta New Relic](https://newrelic.com/signup) gratis! No se requiere tarjeta de crédito. - -## Requisitos - -Esta integración utiliza nuestra [API métrica](/docs/data-ingest-apis/get-data-new-relic/metric-api/introduction-metric-api) y nuestra [API de eventos](/docs/insights/insights-data-sources/custom-data/introduction-event-api) para ingerir datos. Para utilizar estas API, necesitará un . - -La integración cumple con los [requisitos de API métrica y los límites de datos](/docs/data-ingest-apis/get-data-new-relic/metric-api/metric-api-limits-restricted-attributes). Para ver si es posible que esté alcanzando el límite de velocidad, ejecute la siguiente consulta NRQL del [evento`NrIntegrationError` ](/docs/telemetry-data-platform/manage-data/nrintegrationerror): - -```sql -SELECT count(*) FROM NrIntegrationError - WHERE newRelicFeature ='Metrics' - FACET category, message - LIMIT 100 since 1 day ago -``` - -La integración está disponible como una imagen de contenedor de Linux en [DockerHub](https://hub.docker.com/r/newrelic/nri-statsd/tags) para amd64 y arm64 arquitectura. - -## Instalar - -Esta sección explicará cómo realizar una instalación estándar. Si desea ejecutar StatsD en Kubernetes, consulte [Instalación de Kubernetes](#kubernetes). - -Para instalar la integración de StatsD, ejecute el siguiente comando e incluya su [ID de cuenta de New Relic](/docs/accounts/install-new-relic/account-setup/account-id) y . Esto genera un archivo de configuración TOML utilizado por `gostatsd`. - -```shell -docker run \ - -d --restart unless-stopped \ - --name newrelic-statsd \ - -h $(hostname) \ - -e NR_ACCOUNT_ID=YOUR_ACCOUNT_ID \ - -e NR_API_KEY=NEW_RELIC_LICENSE_KEY \ - -p 8125:8125/udp \ - newrelic/nri-statsd:latest -``` - -Si su organización se encuentra en la [región del centro de datos de la UE](/docs/using-new-relic/welcome-new-relic/get-started/introduction-eu-region-data-center), agregue esto al comando anterior: - -```shell --e NR_EU_REGION=true \ -``` - -Después de la instalación, puedes: - -* Realizar [configuración adicional](#configure)opcional -* [Define tu métrica](#metric-format) -* [Añade una etiqueta personalizada](#add-tags) a tus datos -* [Crear alerta](#alerts) - -### Instalar para Kubernetes [#kubernetes] - -A continuación se muestran ejemplos de manifiestos de Kubernetes para implementación y objetos de servicio: - - - - A continuación se muestran ejemplos de manifiestos de Kubernetes para implementar StatsD en un entorno de Kubernetes y crear un servicio de StatsD denominado `newrelic-statsd`. Debes insertar tu [ID de cuenta](/docs/accounts/install-new-relic/account-setup/account-id) y tu . - - **deployment.yml**: - - ```yml - apiVersion: apps/v1 - kind: Deployment - metadata: - name: newrelic-statsd - namespace: tooling - labels: - app: newrelic-statsd - spec: - selector: - matchLabels: - app: newrelic-statsd - replicas: 2 - revisionHistoryLimit: 2 - template: - metadata: - labels: - app: newrelic-statsd - spec: - serviceAccountName: newrelic-statsd - containers: - - name: newrelic-statsd - image: newrelic/nri-statsd:latest - env: - - name: NR_ACCOUNT_ID - value: "NEW_RELIC_ACCOUNT_ID" - - name: NR_API_KEY - value: "NEW_RELIC_LICENSE_KEY" - ``` - - **service.yml**: - - ```yml - apiVersion: v1 - kind: Service - metadata: - name: newrelic-statsd - namespace: tooling - labels: - app: newrelic-statsd - spec: - type: ClusterIP - ports: - - name: newrelic-statsd - port: 80 - targetPort: 8125 - protocol: UDP - selector: - app: newrelic-statsd - ``` - - **service-account.yml**: - - ```yml - apiVersion: v1 - kind: ServiceAccount - metadata: - name: newrelic-statsd - namespace: default - ``` - - Para obtener detalles sobre la configuración, consulte [Configuración de Kubernetes](#k8s-config). - - - - También está disponible un [gráfico StatsD Helm](https://github.com/newrelic/helm-charts/tree/master/charts/nri-statsd) para instalar la integración. - - - - - -## Configurar - -En el [procedimiento de instalación](#install), ejecuta `nri-statsd` con variables de entorno y esto genera un archivo de configuración TOML. Además, puede establecer estas opciones de configuración: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Opciones de configuración - - Descripción -
- `expiry-interval` - - _cadena_ - - Si una métrica no se actualiza durante este período de tiempo, dejamos de informar esa métrica. El valor predeterminado es `5m`. - - Si desea enviar la métrica solo si el valor se actualizó entre los intervalos de descarga, configúrelo en `1ms`. Para nunca caducar métrica, configúrelo en `0`. -
- `percent-threshold` - - _lista de números enteros_ - - Especifica el percentil utilizado para la agregación métrica. Predeterminado: `90`. -
- `metrics-addr` - - _cadena_ - - Indica dirección en la que escuchar métrica. Predeterminado: `:8125`. Desde nri-statsd `v2.3.0` (goStatsD `v34.2.1`), se admite la conexión a través de Unix Domain Socket (UDS). Utilice "metrics-addr=/some/path/newrelic-statsd.socket" en lugar de "\[host]:port" en la configuración. -
- - - Para garantizar el cumplimiento de FedRAMP al utilizar la integración de StatsD, debe definir el siguiente extremo en la configuración personalizada: - - ``` - address = 'https://gov-insights-collector.newrelic.com/v1/accounts/ $NR_ACCOUNT_ID/events' - ``` - - ``` - address-metrics = 'https://gov-infra-api.newrelic.com/metric/v1' - ``` - - -A continuación se muestran algunos ejemplos de personalización de la configuración sobrescribiendo la configuración predeterminada: - - - - ``` - # Specify after how long do we expire metrics, default:5m - expiry-interval = '1ms' - - # percent-threshold specify a list of percentiles for metrics aggregation, default:90 - percent-threshold = [90, 99] - - backends='newrelic' - [newrelic] - # flush types supported: metrics, insights, infra - flush-type = 'metrics' - transport = 'default' - address = 'https://insights-collector.newrelic.com/v1/accounts/$NR_ACCOUNT_ID/events' - address-metrics = 'https://metric-api.newrelic.com/metric/v1' - api-key = 'NEW_RELIC_LICENSE_KEY' - ``` - - - **Disable timer sub-metrics:** - - - De forma predeterminada, `nri_statsd` calcula lo siguiente para el temporizador métrico: desviación estándar, media, mediana, suma, límites inferior y superior para el intervalo de descarga. Si deseas deshabilitar esas métricas puedes hacerlo agregando una sección de configuración `disabled-sub-metrics` y configurando `true` para las que deseas deshabilitar. He aquí un ejemplo: - - ``` - # disabled-sub-metrics configuration section allows disabling timer sub-metrics - [disabled-sub-metrics] - # Regular metrics - count=false - count-per-second=false - mean=false - median=false - lower=false - upper=false - stddev=false - sum=false - sum-squares=false - - # Percentile metrics - count-pct=false - mean-pct=false - sum-pct=false - sum-squares-pct=false - lower-pct=false - upper-pct=false - ``` - - - - Para sobrescribir la configuración predeterminada `nri-statsd` mientras se ejecuta en un contenedor, puede montar un archivo de configuración dentro del contenedor. - - Puede adoptar la siguiente plantilla según sea necesario para su situación. - - Ejemplo: - - ``` - backends='newrelic' - flush-interval='10s' - - [newrelic] - # flush types supported: metrics, insights, infra - flush-type = 'metrics' - transport = 'default' - address-metrics = 'https://metric-api.newrelic.com/metric/v1' - api-key = 'NEW_RELIC_LICENSE_KEY' - ``` - - Para ejecutar el contenedor con el archivo montado en la ruta adecuada: - - ```shell - docker run \ - ... - -v ${PWD}/nri-statsd.toml:/etc/opt/newrelic/nri-statsd.toml \ - ... - newrelic/nri-statsd:latest - ``` - - - - El mejor enfoque para configurar `nri-statsd` ejecutándose en Kubernetes es usar un `configMap` y montar el `configMap` en el contenedor. (Este es un proceso similar al de montar el archivo de configuración en docker). - - Ejemplo: - - ``` - apiVersion: v1 - kind: ConfigMap - metadata: - name: nri-statsd-config - namespace: default - data: - nri-statsd.toml: | - backends='newrelic' - flush-interval='10s' - - [newrelic] - # flush types supported: metrics, insights, infra - flush-type = 'metrics' - transport = 'default' - address = 'https://metric-api.newrelic.com/metric/v1' - api-key = '$NEW_RELIC_LICENSE_KEY' - ``` - - Para usar configMap, declare un volumen en su plantilla de especificación desplegable y luego declare un `volumeMount` en su especificación de contenedor. - - Ejemplo: - - ``` - apiVersion: apps/v1 - kind: Deployment - spec: - template: - spec: - containers: - .... - volumeMounts: - - mountPath: /etc/opt/newrelic/ - name: nri-statsd-config - volumes: - - name: nri-statsd-config - configMap: - name: nri-statsd-config - ``` - - - -## Formato métrico - -La integración recibe métrica utilizando el [protocolo StatsD](https://github.com/statsd/statsd). Opcionalmente, se puede configurar la frecuencia de muestreo y agregar una etiqueta. - -Este es el formato de datos métrico que utilizamos: - -``` -:||@|# -``` - -Aquí hay explicaciones de estos campos: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- Nombre del campo - - Descripción -
- <metric name> - `string` - - **Required.** Nombre de la métrica. -
- <value> - `string` - - **Required.** El [tipo de métrica](#metric-types): - - * `c` = contador - * `g` = medidor - * `ms` = temporizador -
- @<sample rate> - `float` - - **Optional** para contadores simples o contadores temporizadores. Cuando se deben enviar muchas métricas, se puede utilizar el muestreo para reducir el tráfico de la red. La desventaja es una reducción en la resolución de los datos. - - Un ejemplo de cómo funcionaría esto para frecuencias de muestreo inferiores a `1`: si lo configura en `0.1`, el contador enviará una medición una de cada 10 veces. -
- \#<tags> - `string` - - **Optional.** La etiqueta adjunta a su métrica se convierte en atributo (valor principal pares). Para obtener más información sobre las opciones de etiquetas, consulte [etiqueta](#add-tags). -
- -## Tipos métricos - -A continuación se detallan los tipos de métricas y cómo formatearlas: - - - - Un contador mide el número de ocurrencias de un evento. Los ejemplos incluyen el almacenamiento de caché por intervalo de informe y el número de subprocesos creados por intervalo de informe. - - Un contador se puede incrementar o disminuir durante el mismo intervalo de descarga agregando un signo al valor. En el siguiente ejemplo, el valor del contador será `2`: - - ``` - counter:4|c - counter:-2|c - ``` - - En cada descarga, el recuento actual se envía y se restablece a `0`. Si el recuento no se actualiza, en el siguiente lavado enviará el valor `0`. Puede optar por desactivar este comportamiento configurando [`expiry-interval`](#configure) en `1ms`. - - A continuación se muestra un ejemplo de un contador que se muestrea 1 de cada 10 veces: - - ``` - counter:4|c@0.1 - ``` - - - - Un medidor representa un valor que puede aumentar o disminuir con el tiempo. Ejemplos de medidor incluyen temperatura, uso de CPU y memoria. He aquí un ejemplo: - - ``` - temperature:40|g - ``` - - Si el medidor no se actualiza, en la siguiente descarga enviará el valor anterior. Puede optar por desactivar este comportamiento configurando [`expiry-interval`](#configure) en `1ms`. - - - - El tipo de métrica de temporizador mide los datos de tiempo. - - De forma predeterminada, `nri_statsd` calcula lo siguiente para el temporizador métrico: desviación estándar, media, mediana, suma, límites inferior y superior para el intervalo de descarga. Estos se envían como submétricos en el siguiente formato: - - ``` - .std_dev - .median - .summary - .sum_squares - .mean - .per_second - ``` - - El percentil configurado generará la siguiente métrica. El valor del umbral percentil se adjuntará como etiqueta. - - ``` - .sum_squares.percentiles - .sum.percentiles - .count.percentiles - .upper.percentiles - .mean.percentiles - ``` - - El umbral percentil se puede modificar con la opción de configuración [`percent-threshold`](#configure) . Estos se pueden controlar a través de la [sección de configuración`disabled-sub-metrics` ](#config-example). - - - -## Agregar etiqueta (atributo) [#add-tags] - -Puedes agregar una etiqueta a tus datos, que guardamos como [atributo](/docs/using-new-relic/welcome-new-relic/get-started/glossary#attribute) (valor principal pares). Hay dos opciones para agregar etiquetas: - -* Agregue una etiqueta predeterminada que se aplique a todas las métricas: Estas se aplican a todas las métricas. Son fijos y no cambian con el tiempo. -* Agregar etiqueta de nivel de métrica: se aplican a métricas específicas y permiten cambiar el valor entre dos envíos. - - - - Agregue etiqueta a métrica y evento definiendo una variable de entorno en el [comando de inicio](#install). - - Aquí hay un ejemplo que crearía dos etiquetas: - - ``` - -e TAGS="environment:production region:us" - ``` - - Aquí está la variable de entorno utilizada en el [comando de inicio](#install): - - ``` - docker run \ - -d --restart unless-stopped \ - --name newrelic-statsd \ - -h $(hostname) \ - -e NR_ACCOUNT_ID=YOUR_ACCOUNT_ID \ - -e NR_API_KEY=NEW_RELIC_LICENSE_KEY \ - -e TAGS="environment:production region:us" \ - -p 8125:8125/udp \ - newrelic/nri-statsd:latest - ``` - - - - Al definir el [formato métrico](#metric-format), puede agregar una etiqueta usando este formato: - - ``` - :||# - ``` - - En este ejemplo, `` es una lista de etiquetas separadas por comas. El formato de la etiqueta es: `simple` o `key:value`. - - - -A continuación se muestra un ejemplo de consulta [NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql) que incluye una etiqueta personalizada: - -``` -SELECT count(*) FROM Metric WHERE environment = 'production' -``` - -## Crear alerta [#alerts] - -Puede alertar sobre datos de StatsD usando [NRQL condición de alerta](/docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries). - - - - Este procedimiento le guiará en el envío de algunos datos de muestra y luego en la creación de una condición de alerta utilizando esos datos. - - Primero, envíe estos datos al contenedor StatsD de New Relic: - - ``` - echo "prod.test.num:32|g" | nc -v -w 1 -u localhost 8125 - ``` - - A continuación, cree una [condición de alerta NRQL](/docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries) utilizando esta consulta: - - ``` - SELECT latest(prod.test.num) FROM Metric WHERE metricName = 'prod.test.num' - ``` - - Aquí hay una imagen que muestra la creación de esta condición de alerta NRQL. Observe que los datos de muestra enviados están representados por el punto azul en la parte superior derecha del gráfico. - - StatsD NRQL alert condition query - - Ahora podemos crear la condición de alerta con esta configuración: - - StatsD NRQL alert condition creation example - - Cuando cree la condición de alerta NRQL, asegúrese de configurar **Condition name**. - - Si se envía una métrica con un valor superior a 50, se crea y notifica un incidente. El incidente se cierra automáticamente después de 24 horas. Para probar que la alerta está funcionando, ejecute este comando: - - ``` - echo "prod.test.num:60|g" | nc -v -w 1 -u localhost 8125 - ``` - - - -## Buscar y utilizar datos [#find-use-data] - -Para consultar tus datos, utilizarías cualquier [opción de consulta](/docs/using-new-relic/data/understand-data/query-new-relic-data) de New Relic. Por ejemplo, podrías ejecutar una consulta [NRQL](/docs/query-data/nrql-new-relic-query-language/getting-started/introduction-nrql) como: - -``` -SELECT count(*) FROM Metric WHERE metricName = 'myMetric' and environment = 'production' -``` - -Para obtener más información sobre cómo consultar el tipo de datos `Metric` , consulte [consulta métrica de datos](/docs/data-ingest-apis/get-data-new-relic/metric-api/view-query-you-metric-data). - -## Resolución de problemas [#troubleshooting] - -**Problema**: - -Seguiste los pasos para ejecutar la integración de StatsD pero aún necesitas ver la métrica esperada en New Relic. - -**Soluciones**: - -Siga los pasos a continuación para solucionar problemas de su configuración: - -* Asegúrese de que - - - - contenga su clave de licencia de 40 caracteres hexadecimales y que sea una licencia válida para el ID de cuenta de New Relic seleccionado. - -* Asegúrese de que se haya seleccionado el centro de datos correcto, EE. UU. o UE, para su cuenta New Relic. Consejo: Si la clave_licencia comienza con "eu", entonces debe utilizar la marca `NR_EU_REGION=true` . - -* Asegúrese de que no haya ningún [`NrIntegrationError`](/data-apis/ingest-apis/metric-api/troubleshoot-nrintegrationerror-events/) relacionado con la integración de StatsD. - -* El registro detallado se puede habilitar usando la variable de entorno `NR_STATSD_VERBOSE`, modifique el comando de ejecución docker agregando la siguiente variable: `-e NR_STATSD_VERBOSE=true`. - -* Se puede enviar una prueba métrica para confirmar que la integración está enviando las métricas esperadas. Ejemplo de uso de la utilidad NetCat `nc` : - - * `echo "example.gauge:123|g" | nc -u -w0 127.0.0.1 8125` (actualice `127.0.0.1` con la dirección IP/dirección del contenedor en ejecución). - -## Comprueba el código fuente [#source-code] - -Esta integración es software de código abierto. Eso significa que puedes [explorar su código fuente](https://github.com/newrelic/nri-statsd/) y enviar mejoras, o crear tu propia bifurcación y compilarla. \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx b/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx deleted file mode 100644 index 97dc2e0a0c8..00000000000 --- a/src/i18n/content/es/docs/more-integrations/open-source-telemetry-integrations/wordpress/wordpress-fullstack-integration.mdx +++ /dev/null @@ -1,210 +0,0 @@ ---- -title: Stack completa de WordPress -tags: - - New Relic integrations - - WordPress Full Stack integration -metaDescription: Use New Relic browser monitoring to get a dashboard with metrics from your Wordpress. -freshnessValidatedDate: '2023-06-28T00:00:00.000Z' -translationType: machine ---- - -import infrastructureWordPressIntegrationDashboard from 'images/infrastructure_screenshot-full_wordpress-dashboard.webp' - -Nuestra integración de WordPress monitorea el rendimiento de su aplicación web de WordPress, ayudándolo a diagnosticar problemas en su aplicación y optimizar su código. Nuestra integración de WordPress hace uso de nuestras integraciones PHP, Apache y MySQL, y le brinda un dashboard prediseñado con sus métricas de WordPress más importantes, como transacciones, visitantes y duración de las llamadas. - -A screenshot depicting the wordpress dashboard - -
- Después de configurar nuestra integración de WordPress, le brindamos un dashboard para su métrica de WordPress. -
- -## Instalar [#install] - - - - ### Instalar el agente de infraestructura [#infra-install] - - Puede instalar el agente de infraestructura de dos maneras diferentes: - - * Nuestra [instalación guiada](https://one.newrelic.com/nr1-core?state=4f81feab-35f7-e97e-9903-52510f8542bd) es una herramienta CLI que inspecciona su sistema e instala el agente de infraestructura junto con el agente de monitoreo de aplicaciones que mejor funcione para su sistema. Para obtener más información sobre cómo funciona nuestra instalación guiada, consulte nuestra [descripción general de la instalación guiada](/docs/infrastructure/host-integrations/installation/new-relic-guided-install-overview). - * Si prefiere instalar nuestro agente de infraestructura manualmente, puede seguir un tutorial para la instalación manual para [Linux](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux), [Windows](/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows/) o [macOS](/docs/infrastructure/install-infrastructure-agent/macos-installation/install-infrastructure-monitoring-agent-macos/). - - - - ### Instalar el agente PHP - - 1. Consulte nuestros [requisitos del agente PHP](/docs/apm/agents/php-agent/getting-started/monitor-your-php-app/) antes de instalar el agente. - - 2. Abra la [instalación de inicio rápido de PHP](https://newrelic.com/instant-observability/php). - - 3. Haga clic en - - **Install now** - - para iniciar la instalación del agente PHP. - - - - ### Instale el inicio rápido de MySQL - - 1. Consulte nuestros [requisitos de MySQL](/docs/infrastructure/host-integrations/host-integrations-list/mysql-config//). - - 2. Abra [la instalación de inicio rápido de MySQL](https://newrelic.com/instant-observability/mysql). - - 3. Haga clic en - - **Install now** - - para iniciar la instalación del agente MySQL. - - - - ### Instale el inicio rápido de Apache - - 1. Consulte nuestros [requisitos de Apache](/docs/infrastructure/host-integrations/host-integrations-list/apache-monitoring-integration/). - - 2. Abra la [instalación de inicio rápido de Apache](https://newrelic.com/instant-observability/apache). - - 3. Haga clic en - - **Install now** - - para iniciar la instalación del agente Apache. - - - - ### Configurar NRI-Flex para WordPress - - Flex viene incluido con el agente New Relic Infrastructure . Para crear un archivo de configuración flexible, siga estos pasos: - - 1. Cree un archivo llamado `read-wordpress-files-config.yml` en esta ruta: - - ```shell - /etc/newrelic-infra/integrations.d - ``` - - 2. Actualice el `read-wordpress-files-config.yml` con estos detalles: - - * `INSERT_EVENT_TYPE`. Un `event_type` es una tabla de base de datos de New Relic que puedes consultar usando NRQL. Un ejemplo de `event_type` sería `WPDirectories` - * `INSERT_WORDPRESS_PATH`. Aquí, debe ingresar el directorio de su aplicación de WordPress, como: `/srv/www/wordpress/*`. - - 3. Utilice este archivo de configuración: - - ```yml - integrations: - - name: nri-flex - interval: 180s - config: - name: linuxDirectorySize - apis: - - event_type: INSERT_EVENT_TYPE - commands: - - run: du INSERT_WORDPRESS_PATH - split: horizontal - set_header: [dirSizeKB, dirName] - regex_match: true - split_by: (\d+)\s+ - ``` - - - - ### Configurar WordPress para exponer el registro de depuración - - 1. Abra su aplicación de WordPress y luego abra el archivo `wp-config.php` . - - 2. Actualice el archivo con los valores que se enumeran a continuación: - - ``` - // Enable WP_DEBUG mode - define( 'WP_DEBUG', true ); - - // Enable Debug logging to the /wp-content/debug.log file - define( 'WP_DEBUG_LOG', true ); - ``` - - Una vez que inicie su aplicación, verá un archivo `debug.log` en el directorio `wp-content` . - - - - ### Reenviar el registro de depuración de WordPress a New Relic - - Puede utilizar nuestro [reenvío de registros](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent/) para reenviar el registro de WordPress a New Relic. - - En máquinas Linux, su archivo de registro llamado `logging.yml` debe estar presente en esta ruta: - - ```shell - /etc/newrelic-infra/logging.d/ - ``` - - Después de crear el archivo de registro, agregue el siguiente script al archivo `logging.yml`: - - ```yml - logs: - - name: wordpress-debug.log - file: /src/www/wordpress/wp-content/debug.log - attributes: - logtype: wordpress_debug - ``` - - - - ### Reiniciar el agente de infraestructura. - - Antes de que pueda comenzar a leer sus datos, utilice las instrucciones de nuestros [documentos del agente de infraestructura](/docs/infrastructure/install-infrastructure-agent/manage-your-agent/start-stop-restart-infrastructure-agent/) para reiniciar su agente de infraestructura. - - ```shell - sudo systemctl restart newrelic-infra.service - ``` - - En un par de minutos, tu aplicación se enviará métrica a [one.newrelic.com](https://one.newrelic.com). - - - -## Encuentra tus datos [#find-data] - -Puede elegir nuestra plantilla dashboard prediseñadas llamada `WordPress Full Stack` para monitor métricamente su aplicación de WordPress. Siga estos pasos para utilizar nuestra plantilla dashboard prediseñadas: - -1. Desde [one.newrelic.com](https://one.newrelic.com), vaya a la página - - **+ Add data** - - . - -2. Haga clic en - - **Dashboards** - - . - -3. En la barra de búsqueda, escriba `WordPress Full Stack`. - -4. Debería aparecer el dashboard de WordPress. Haga clic en él para instalarlo. - -Su dashboard de WordPress se considera un panel personalizado y se puede encontrar en la UI **Dashboards**. Para obtener documentos sobre el uso y edición del panel, consulte [nuestros documentos dashboard ](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards). - -Aquí hay un ejemplo de consulta NRQL para verificar el retraso de la interacción con la siguiente pintura (INP): - -```sql -SELECT percentage(count(*), -WHERE interactionToNextPaint < 200) -AS 'Good (<100ms)', percentage(count(*), -WHERE interactionToNextPaint >= 200 and interactionToNextPaint < 500) -AS 'Needs improvement (>=100 <300ms)', percentage(count(*), -WHERE interactionToNextPaint >= 500) -AS 'Poor (> 300ms)' -FROM PageViewTiming -WHERE interactionToNextPaint IS NOT NULL -TIMESERIES AUTO -``` - -## ¿Que sigue? [#whats-next] - -Para obtener más información sobre cómo consultar sus datos y crear un panel personalizado, consulte estos documentos: - -* [Introducción al generador de consultas](/docs/query-your-data/explore-query-data/query-builder/introduction-query-builder) -* [Introducción al panel personalizado](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards) -* [Administra tu dashboard](/docs/query-your-data/explore-query-data/dashboards/manage-your-dashboard) \ No newline at end of file diff --git a/src/i18n/content/es/docs/more-integrations/terraform/terraform-intro.mdx b/src/i18n/content/es/docs/more-integrations/terraform/terraform-intro.mdx deleted file mode 100644 index 87d5542b00a..00000000000 --- a/src/i18n/content/es/docs/more-integrations/terraform/terraform-intro.mdx +++ /dev/null @@ -1,482 +0,0 @@ ---- -title: Comenzando con New Relic y Terraform -metaDescription: 'Learn how to provision New Relic resources using [Terraform](https://www.terraform.io/).' -freshnessValidatedDate: never -translationType: machine ---- - -[Terraform](https://www.terraform.io/) es una popular herramienta de software de infraestructura como código creada por HashiCorp. Se utiliza para aprovisionar todo tipo de infraestructura y servicios, incluidos New Relic y alerta. - -En esta guía, aprenderá cómo configurar New Relic con Terraform. Más específicamente, proporciona una política de alertas, cuatro condiciones de alerta y un canal de notificación. Las cuatro condiciones de alerta se basan en las [cuatro señales doradas](https://landing.google.com/sre/sre-book/chapters/monitoring-distributed-systems/#xref_monitoring_golden-signals) de monitoreo introducidas en [el libro Site Reliability Engineering de Google](https://landing.google.com/sre/sre-book/toc/index.html): - -* **Latency:** - - La cantidad de tiempo que le toma a su aplicación atender una solicitud. - -* **Traffic:** - - La cantidad de solicitudes que recibe su sistema. - -* **Errors:** - - La tasa de solicitudes que fallan. - -* **Saturation:** - - El énfasis en los recursos para satisfacer las demandas de su aplicación. - -
+## AIモニタリング [#ai-monitoring] + +このセクションでは、[AIモニタリング](/docs/ai-monitoring/intro-to-ai-monitoring)のJavaエージェント設定オプションについて詳しく説明します。この機能は、`ai_monitoring`設定ファイルのスタンザで、`newrelic.config.ai_monitoring.`プリフィックス化システムプロパティ、または`NEW_RELIC_AI_MONITORING_`プリフィックス化環境変数を使用して設定できます。 + + + ディストリビューティッド(分散)トレーシングが無効になっているか、高セキュリティモードを有効にしている場合、AIモニタリングはAIデータを収集しません。 + + + + + + + + + + + + + + + + + + +
+ タイプ + + ブール値 +
+ デフォルト + + `false` +
+ + `true`に設定すると、AIモニタリングが有効化されます。 +
+ + + + + + + + + + + + + + + + +
+ タイプ + + ブール値 +
+ デフォルト + + `true` +
+ + `false`に設定すると、エージェントはLLMイベントでキャプチャされた入力および出力コンテンツ(プロンプトやレスポンスのテキスト文字列など)を省略します。これは、LLMとの間で送受信される機密データを記録したくない場合のオプションのセキュリティ設定です。 +
+
+ ## 属性 [#attributes] これらのオプションを設定するには、`attributes`セクションを使用します。[上書きする](#System_Properties)には、`newrelic.config.attributes`プリフィックス化システムプロパティを使用します。 @@ -2451,7 +2523,8 @@ APMでは、New Relic言語エージェントAPIにより[カスタム イベン - 60秒ごとにレポートされた、サンプリングされたカスタムイベントの最大数。 + * 60秒ごとにレポートされた、サンプリングされたカスタムイベントの最大数。 + * [AIモニタリング](/docs/ai-monitoring/intro-to-ai-monitoring)のエージェントを構成する場合は、最大値`100000`に設定します。 最大量のLLMイベントのキャプチャを保証します @@ -4723,7 +4796,8 @@ Javaエージェントバージョン`8.7.0`以降、エージェントは`SlowT - エージェント収集サイクル中にキャプチャできるスパンイベントの数を決定します。Javaエージェント7.4.0以降で利用可能です。 + * エージェント収集サイクル中にキャプチャできるスパンイベントの数を決定します。Javaエージェント7.4.0以降で利用可能です。 + * [AIモニタリング](/docs/ai-monitoring/intro-to-ai-monitoring)のエージェントを構成する場合は、最大値`10000`に設定します。 最大量のトレースのキャプチャを保証します スパンイベントの数を増やすと、エージェントのオーバーヘッドが増える可能性があります。 diff --git a/src/i18n/content/jp/docs/apm/agents/java-agent/features/jvms-page-java-view-app-server-metrics-jmx.mdx b/src/i18n/content/jp/docs/apm/agents/java-agent/features/jvms-page-java-view-app-server-metrics-jmx.mdx index 6d175c59b9e..f35be62c280 100644 --- a/src/i18n/content/jp/docs/apm/agents/java-agent/features/jvms-page-java-view-app-server-metrics-jmx.mdx +++ b/src/i18n/content/jp/docs/apm/agents/java-agent/features/jvms-page-java-view-app-server-metrics-jmx.mdx @@ -15,16 +15,29 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 ## JVMメトリックスを確認する [#dashboard] -アプリケーションサーバーは、APMの**JVM**ページに表示される様々なメトリクスを収集して、これを報告します。(Heroku経由でNew Relicを使用したアプリケーションに関しては、**JVM**ページが**[インスタンス](/docs/accounts-partnerships/partnerships/heroku-new-relic/heroku-instances-dashboard)**と命名されています。) +アプリケーションサーバーは、APMの**JVMs**ページに表示されるさまざまなメトリクスを収集して、これを報告します。(Heroku経由でNew Relicを使用したアプリケーションに関しては、**JVMs**ページが**[Instances](/docs/accounts-partnerships/partnerships/heroku-new-relic/heroku-instances-dashboard)**と命名されています。) 最低でも、各アプリケーションサーバーは、オンメモリのメトリックデータを収集して報告します。JMXメトリックスを有効化する方法については、ご利用のアプリケーションサーバーのドキュメンテーションを参照してください。 以下の手順に従い、JVMメトリックスを確認します。 -1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services >(アプリを選択)> Monitoring > JVM >(JVMを選択)**の順に移動します。 -2. 選択したJVMの**Memory**ページから、New Relicの標準的な[ユーザーインターフェース機能](/docs/accounts-partnerships/education/getting-started-new-relic/standard-dashboard-features)のいずれかを使用して、詳細情報を掘り下げます。 +1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > (select an app) > Monitoring > JVMs > (select a JVM)** + + に移動します。 + +2. 選択したJVMの + + **Memory** + + ページから、 New Relicの標準的な[ユーザーインタフェース機能](/docs/accounts-partnerships/education/getting-started-new-relic/standard-dashboard-features)のいずれかを使用して、詳細情報を掘り下げます。 + 3. 他のメトリックスを確認するには、 [利用可能なタブ](#dashboard-tabs)を選択します。 -4. オプション:[スレッドプロファイラー](/docs/applications-menu/thread-profiler)を使用して、スレッド実行時のデータのボトルネックを見つけるには、**Profile this JVM**を選択します。 + +4. オプション:[スレッドプロファイラー](/docs/applications-menu/thread-profiler)を使用して、スレッド実行時のデータのボトルネックを見つけるには、 + + **Profile this JVM** + + を選択します。
- **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services >(アプリを選択)> Monitoring > JVM**:アプリケーションサーバーが報告するメトリクスに応じて、1つまたは複数のタブがJVMページに表示されます。 + **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > (select an app) > Monitoring > JVMs**:アプリケーションサーバーが報告するメトリクスに応じて、1つ以上のタブがJVMページに表示されます。
## アプリケーションサーバーごとに示す利用可能なタブ [#dashboard-tabs] @@ -588,10 +601,21 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 - * **ヒープメモリ利用度:**各表は、所与のヒープに関する使用済みおよび確定のヒープ領域をMBで示しています。 - * **JVMに関する非ヒープメモリプールの利用度:**使用済みコードキャッシュおよびCMS Perm GenをMBで表記。 - * **ガベージコレクション:**ガベージコレクションのCPU時間。 - * **クラス数:**JVMに関するロード済みおよび未ロードのクラス数。 + * **Heap memory usage:** + + 各表は、所与のヒープに関する使用済みおよび確定のヒープ領域をMBで示しています。 + + * **Non-heap memory pool usage for the JVM:** + + 使用済みコードキャッシュおよびCMS Perm GenをMBで表記。 + + * **Garbage collection:** + + ガベージコレクションの CPU 時間。 + + * **Class count:** + + JVMに関するロード済みおよび未ロードのクラス数。 @@ -601,8 +625,13 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 - * **スレッド数:**JVM内のアクティブなスレッドの現在の数。 - * **スレッドプール:**プールに対するアクティブスレッドとアイドルスレッドの数。サポートされているアプリケーションサーバーの場合、表には、アプリケーションサーバー内に存在する各スレッドプールのほか、各スレッドプールに対するアクティブスレッド数と最大スレッド数の割合が表示されます。 + * **Thread count:** + + JVM内のアクティブなスレッドの現在の数。 + + * **Thread pool:** + + プールに対するアクティブスレッドとアイドルスレッドの数。サポートされているアプリケーションサーバーの場合、表には、アプリケーションサーバー内に存在する各スレッドプールのほか、各スレッドプールに対するアクティブスレッド数と最大スレッド数の割合が表示されます。 @@ -612,7 +641,9 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 - * **セッション:**アプリケーションのHTTPセッション数のうち、アクティブ、タイムアウトによる無効化、そして無効化となったもの。サポートしたアプリケーションサーバーでは、アプリケーションサーバー内に存在する各アプリケーションサーバーを示す表があります。 + * **Session:** + + アプリケーションのHTTPセッション数のうち、アクティブ、タイムアウトによる無効化、そして無効化となったもの。サポートしたアプリケーションサーバーでは、アプリケーションサーバー内に存在する各アプリケーションサーバーを示す表があります。 @@ -622,9 +653,17 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 - * **アクティブなトランザクション:**アプリケーションサーバーのトランザクションマネージャー内に存在する、アクティブなトランザクションの数。 - * **作成済みトランザクション:**アプリケーションサーバーごとの作成済みトランザクションの合計数の変化。一部のアプリケーションサーバーでは、トップレベルのトランザクションとネストされたトランザクションが分類されます。 - * **完了済みトランザクション:**アプリケーションサーバーごとの完了済みトランザクションの合計数の変化。一部のアプリケーションサーバーでは、このトランザクションは中止されたトランザクションと確定および完了済みトランザクション別に分類されます。 + * **Active transaction:** + + アプリケーションサーバーのトランザクションマネージャー内に存在する、アクティブなトランザクションの数。 + + * **Created transaction:** + + アプリケーションサーバーごとの作成済みトランザクションの合計数の変化。一部のアプリケーションサーバーでは、トップレベルのトランザクションとネストされたトランザクションが分類されます。 + + * **Finished transaction:** + + アプリケーションサーバーごとの完了済みトランザクションの合計数の変化。一部のアプリケーションサーバーでは、このトランザクションは中止されたトランザクションと確定および完了済みトランザクション別に分類されます。 @@ -642,7 +681,7 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 ## アプリケーションサーバーごとに示すデータソースメトリックス [#metrics-by-app-server] -サポート対象のアプリケーションサーバーにおいては、エージェントがJMXデータソースメトリクスを収集します。これらのメトリクスは、**[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services >(アプリを選択)> Monitoring > JVM > Data sources**で表示できます。これらのメトリクスを確認するには、ご利用のデータソースがアプリケーションサーバーにおけるJMXモニター向けに正しく設定されていることを確認してください。 +サポート対象のアプリケーションサーバーにおいては、エージェントがJMXデータソースメトリクスを収集します。これらのメトリクスは**[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > APM & services > (select an app) > Monitoring > JVMs > Data sources**の順に移動して表示できます。これらのメトリクスを確認するには、ご利用のデータソースがアプリケーションサーバーにおけるJMXモニター向けに正しく設定されていることを確認してください。 @@ -664,9 +703,17 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 @@ -676,11 +723,25 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 @@ -690,10 +751,21 @@ New RelicのJavaエージェントを使用することで、JMXを介して最 @@ -715,9 +787,24 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす 最もシンプルなアプローチは、すべての統計セットの収集を有効化することです。 1. Java 2 Securityを使用している場合は、必ず [New Relicに適切なアクセス権限を付与](/docs/agents/java-agent/installation/install-java-agent-java-2-security)したかどうかを確認してください。 - 2. WebSphereアドミンコンソールから、**Monitoring and Tuning > Performance Monitoring Infrastructure(PMI) > (ご利用のサーバー名)**を選択します。 - 3. **Enable Performance Monitoring Infrastructure (PM)I**チェックボックスを選択します。 - 4. **Currently monitored statistic set** セクションから、 **All**を選択して、変更内容を保存します。 + + 2. WebSphereアドミンコンソールから、 + + **Monitoring and Tuning > Performance Monitoring Infrastructure (PMI) > (your server name)** + + を選択します。 + + 3. **Enable Performance Monitoring Infrastructure (PMI)** + + チェックボックスを選択します。 + + 4. **Currently monitored statistic set** + + セクションから、 + + **All** + + を選択して、変更内容を保存します。 Performance Monitoring Infrastructure (PMI) > (ご利用のアプリケーションサーバー名)**を選択します。 + 2. WebSphereアドミンコンソールから、 + + **Monitoring and Tuning > Performance Monitoring Infrastructure (PMI) > (selected app server)** + + を選択します。 + + 3. **Enable Performance Monitoring Infrastructure (PMI)** + + チェックボックスを選択します。 + + 4. **Custom** + + を選択します。 カスタム統計セットリストから、以下のメトリックスを有効にします。 + + * **ThreadPool** - 3. **Enable Performance Monitoring Infrastructure (PM)I**チェックボックスを選択します。 + カテゴリから、 - 4. **Custom**を選択します。カスタム統計セットリストから、以下のメトリックスを有効にします。 + **ActiveCount** - * **ThreadPool** カテゴリから、 **ActiveCount** および **PoolSize** のチェックボックスを選択します。 - * **Servlet Session Manager** カテゴリから、 **ActiveCount** および **LiveCount** のチェックボックスを選択します。 - * **Transaction Manager**カテゴリから、**CommittedCount**、**RolledbackCount**、そして**GlobalTimeoutCount**チェックボックスを選択します。 + および - 5. **Messages**パネルから、**Save directly to the master configuration**を選択します。 + **PoolSize** + + のチェックボックスを選択します。 + + * **Servlet Session Manager** + + カテゴリから、 + + **ActiveCount** + + および + + **LiveCount** + + のチェックボックスを選択します。 + + * **Transaction Manager** + + カテゴリから、 + + **CommittedCount** + + 、 + + **RolledbackCount** + + および + + **GlobalTimeoutCount** + + のチェックボックスを選択します。 + + 5. **Messages** + + パネルから、 + + **Save directly to the master configuration** + + を選択します。 @@ -755,11 +892,15 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -820,11 +961,15 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -885,11 +1030,15 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -950,11 +1099,15 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -1015,11 +1168,15 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -1080,11 +1237,15 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -1096,7 +1257,7 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす @@ -1140,7 +1301,7 @@ New RelicがWebSphere PMIメトリックスにアクセスできるようにす ## WebLogic JMXメトリックス [#weblogic-jmx] -WebLogicでは、デフォルトでJMXが有効になっています。New Relicは、以下の**mbeans**メトリックスを収集します。 +WebLogicでは、デフォルトでJMXが有効になっています。New Relicは、以下の**mbeans**メトリクスを収集します。 追加のJMXメトリックスを収集するには、[カスタムYAMLファイル](/docs/agents/java-agent/custom-instrumentation/custom-jmx-instrumentation-yaml)を使用します。 @@ -1155,11 +1316,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1220,11 +1385,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1285,11 +1454,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1350,11 +1523,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1415,11 +1592,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1480,11 +1661,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1545,11 +1730,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1610,11 +1799,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1675,11 +1868,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1740,11 +1937,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1805,11 +2006,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1870,11 +2075,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -1935,11 +2144,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2000,11 +2213,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2065,11 +2282,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2130,11 +2351,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2195,11 +2420,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2260,11 +2489,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2325,11 +2558,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2390,11 +2627,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2455,11 +2696,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2520,11 +2765,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2585,11 +2834,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2650,11 +2903,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2715,11 +2972,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2780,11 +3041,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2845,11 +3110,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2879,7 +3148,9 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -2975,11 +3250,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -3040,11 +3319,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic @@ -3105,11 +3388,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic diff --git a/src/i18n/content/jp/docs/apm/agents/java-agent/getting-started/compatibility-requirements-java-agent.mdx b/src/i18n/content/jp/docs/apm/agents/java-agent/getting-started/compatibility-requirements-java-agent.mdx index f21c5341abe..8f725a5bddf 100644 --- a/src/i18n/content/jp/docs/apm/agents/java-agent/getting-started/compatibility-requirements-java-agent.mdx +++ b/src/i18n/content/jp/docs/apm/agents/java-agent/getting-started/compatibility-requirements-java-agent.mdx @@ -205,7 +205,11 @@ Javaエージェントをインストールする前に、お使いのシステ * Pekko 1.0.0以降 - * Play Server 2.3.0から2.x /\* Pekko-Httpをサポートすると、Playサポートが最新のものまで拡張されます \*/ + * Pekko-Http 1.0.0以降 + + * Scala 2.13 + + * Play Server 2.3.0以降/\* Pekko-Httpをサポートすると、Playサポートが最新のものまで拡張されます \*/ * Quartz Job Scheduler 1.8.3~2.2.x @@ -447,12 +451,24 @@ Javaエージェントは、他のNew Relic製品と統合され、エンドツ + + + + + + diff --git a/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux.mdx b/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux.mdx index 2e42c7056f4..665f9830914 100644 --- a/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux.mdx +++ b/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux.mdx @@ -1,5 +1,5 @@ --- -title: Linux向けInfrastructureモニタリングエージェントをインストールする +title: Linux向けinfrastructureエージェントをインストールする tags: - Infrastructure - Install the infrastructure agent @@ -21,7 +21,7 @@ import osUbuntu from 'images/os_icon_ubuntu.webp' import osDebian from 'images/os_icon_debian.webp' -[Infrastructureモニタリングエージェント](/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/)の使用を開始する際に最も迅速な方法では、[ガイド付きインストール](/docs/new-relic-one/use-new-relic-one/cross-product-functions/install-configure/new-relic-guided-install-overview/)を使用します。EUにお住まいの場合は、EUガイド付きインストールをお試しください。いずれにせよ、まだ作成されていない場合は、無料のNew Relicアカウントを以下で作成してください。 +[infrastructureエージェント](/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/)の使用を開始する際に最も迅速な方法では、[ガイド付きインストール](/docs/new-relic-one/use-new-relic-one/cross-product-functions/install-configure/new-relic-guided-install-overview/)を使用します。EUにお住まいの場合は、EUガイド付きインストールをお試しください。いずれにせよ、まだ作成されていない場合は、無料のNew Relicアカウントを以下で作成してください。 @@ -44,7 +44,7 @@ import osDebian from 'images/os_icon_debian.webp' - また、[Infrastructure監視エージェント](/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/)を開始するには、[設定管理ツール](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-configuration-management-tools)を使用することもできます。 + また、[infrastructureエージェント](/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring/)を開始するには、[設定管理ツール](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-configuration-management-tools)を使用することもできます。 ## ステップごとの説明 [#manual-install] @@ -149,7 +149,7 @@ InfrastructureをLinuxでインストールするには、次の指示に従っ -4. Infrastructureモニタリングエージェント リポジトリを追加します。 +4. infrastructureエージェントリポジトリを追加します。 + **Ubuntu 24.04 (Noble Numbat)** + + + ```bash + echo "deb https://download.newrelic.com/infrastructure_agent/linux/apt/ noble main" | sudo tee -a /etc/apt/sources.list.d/newrelic-infra.list + ``` -Infrastructureモニタリングエージェントをインストールまたはアップデートした後、[エージェントのステータスを開始、停止、または確認](/docs/infrastructure/new-relic-infrastructure/configuration/start-stop-restart-check-infrastructure-agent-status)できます。 +infrastructureエージェントをインストールまたはアップデートした後、[エージェントのステータスを開始、停止、または確認](/docs/infrastructure/new-relic-infrastructure/configuration/start-stop-restart-check-infrastructure-agent-status)できます。 ## エージェントの更新 [#update] -標準的な手順に従って[Infrastructureモニタリングエージェントをアップデート](/docs/update-infrastructure-agent)してください。 +標準的な手順に従って、[infrastructureエージェントをアップデート](/docs/update-infrastructure-agent)してください。 `sudo`を使用してエージェントのインストールもしくはアップデートを行う場合、`-E`引数を使用して環境変数の無視を許可するか、`NRIA_MODE`直後の[`sudo`](/docs/infrastructure/install-infrastructure-agent/linux-installation/linux-agent-running-modes/#set-mode)環境変数を指定します。 diff --git a/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows.mdx b/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows.mdx index 9b106b617a7..b9501385d1c 100644 --- a/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows.mdx +++ b/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows.mdx @@ -1,15 +1,15 @@ --- -title: Windows向けInfrastructureモニタリングエージェントをインストールする +title: Windows向けinfrastructureエージェントをインストールする tags: - Infrastructure - Install the infrastructure agent - Windows installation -metaDescription: 'Install the New Relic infrastructure monitoring agent for Windows with a simple headless MSI, and do basic configuration.' +metaDescription: 'Install the New Relic infrastructure agent for Windows with a simple headless MSI, and do basic configuration.' freshnessValidatedDate: never translationType: human --- -New RelicのWindows用Infrastructureモニタリングエージェントを使用すると、サーバーを個別にモニターすることに加えて、サービス全体の動作を分析することもできます。Windowsエージェントはお使いのハードウェア、またはAmazon EC2やWindows Azureのようなクラウドシステムで実行でき、Windows ServerとWindows 10および11を[サポート](/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent)します。[Chefでインストール](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-chef)することもできます。インストールする前に、[要件](/docs/infrastructure/new-relic-infrastructure/getting-started/compatibility-requirements-new-relic-infrastructurets)を必ずご確認ください。 +New RelicのWindows用infrastructureエージェントを使用すると、サーバーを個別にモニターすることに加えて、サービス全体の動作を分析することもできます。Windowsエージェントは、お使いのハードウェア、またはAmazon EC2 やWindows Azureのようなクラウドシステムで実行でき、Windows ServerとWindows 10および11を[サポート](/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent)します。[Chefでインストール](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-chef)することもできます。インストールする前に、[要件](/docs/infrastructure/new-relic-infrastructure/getting-started/compatibility-requirements-new-relic-infrastructurets)を必ずご確認ください。 ## ガイド付きインストールを使用してWindows向けにインストールする [#install-windows] @@ -101,10 +101,10 @@ New RelicのWindows用Infrastructureモニタリングエージェントを使 ## zipファイルを使用してインストール [#install-zip] -カスタム設定シナリオでは、[アシスト](https://download.newrelic.com/infrastructure_agent/binaries/windows/)または[手動](/docs/infrastructure/install-configure-infrastructure/windows-installation/assisted-install-infrastructure-windows)モードで[当社のzipファイル](/docs/infrastructure/install-configure-infrastructure/windows-installation/manual-install-infrastructure-windows)を使用して、Infrastructureモニタリングエージェントをインストールできます。これは、デフォルトのインストール設定を環境に合わせる必要がある場合に、特に有用です。 +カスタム設定シナリオでは、[アシスト ](/docs/infrastructure/install-configure-infrastructure/windows-installation/assisted-install-infrastructure-windows)または[手動](/docs/infrastructure/install-configure-infrastructure/windows-installation/manual-install-infrastructure-windows)モードで[当社のzipファイル](https://download.newrelic.com/infrastructure_agent/binaries/windows/)を使用して、infrastructureエージェントをインストールできます。これは、デフォルトのインストール設定を環境に合わせる必要がある場合に、特に有用です。 - zipファイルを使用したInfrastructureモニタリングエージェントのインストールはサポートされていません。 + zipファイルを使用したinfrastructureエージェントのインストールはサポートされていません。 @@ -121,4 +121,4 @@ New RelicのWindows用Infrastructureモニタリングエージェントを使 ## エージェントの更新 [#update] -最新バージョンにアップグレードするには、標準的な手順に従って[Infrastructureモニタリングエージェントをアップデート](/docs/infrastructure/new-relic-infrastructure/installation/update-infrastructure-agent)してください。 \ No newline at end of file +最新バージョンにアップグレードするには、標準的な手順に従って[infrastructureエージェントをアップデート](/docs/infrastructure/new-relic-infrastructure/installation/update-infrastructure-agent)してください。 \ No newline at end of file diff --git a/src/i18n/content/jp/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data.mdx b/src/i18n/content/jp/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data.mdx index e9cbb797fa8..ad4b80e3b00 100644 --- a/src/i18n/content/jp/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data.mdx +++ b/src/i18n/content/jp/docs/infrastructure/manage-your-data/data-instrumentation/default-infrastructure-monitoring-data.mdx @@ -9,7 +9,7 @@ freshnessValidatedDate: never translationType: human --- -New Relicのインフラストラクチャ監視エージェントは、6つのプライマリ[イベント](/docs/using-new-relic/data/understand-data/new-relic-data-types#event-data)を使用してデータを収集および表示します。各イベントには、各種メトリクスおよびメタデータを表す[属性](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#attribute)が関連付けられます。 +New Relicのinfrastructureエージェントは、6つのプライマリ[イベント](/docs/using-new-relic/data/understand-data/new-relic-data-types#event-data)を使用してデータを収集および表示します。各イベントには、各種メトリクスおよびメタデータを表す[属性](/docs/accounts-partnerships/education/getting-started-new-relic/glossary#attribute)が関連付けられます。 インフラストラクチャのデータについて理解すると、次のことができます。 @@ -52,7 +52,7 @@ New Relicのインフラストラクチャ監視エージェントは、6つの @@ -62,7 +62,7 @@ New Relicのインフラストラクチャ監視エージェントは、6つの @@ -129,7 +129,7 @@ New Relicのインフラストラクチャ監視エージェントは、6つの @@ -139,7 +139,7 @@ New Relicのインフラストラクチャ監視エージェントは、6つの @@ -168,7 +168,11 @@ SELECT * FROM ProcessSample インフラストラクチャエージェントのYAMLファイルに[カスタムアトリビュート](/docs/meatballs-configuring-your-agent#attributes)を作成できます。このメタデータを使用して、次のことを行います。 * [エンティティフィルターバー](/docs/new-relic-solutions/new-relic-one/core-concepts/search-filter-entities)でエンティティをフィルターする -* [**グループ別**](/docs/infrastructure/new-relic-infrastructure/filter-group/group-infrastructure-results-specific-attributes)メニューを入力 + +* [**Group by**](/docs/infrastructure/new-relic-infrastructure/filter-group/group-infrastructure-results-specific-attributes) + + メニューを入力 + * インフラストラクチャデータに注釈を付ける ## 一般的なAmazon EC2属性 [#shared-attributes] diff --git a/src/i18n/content/jp/docs/logs/forward-logs/aws-lambda-sending-cloudwatch-logs.mdx b/src/i18n/content/jp/docs/logs/forward-logs/aws-lambda-sending-cloudwatch-logs.mdx index a44f2d3147a..2254cbbc6b3 100644 --- a/src/i18n/content/jp/docs/logs/forward-logs/aws-lambda-sending-cloudwatch-logs.mdx +++ b/src/i18n/content/jp/docs/logs/forward-logs/aws-lambda-sending-cloudwatch-logs.mdx @@ -209,13 +209,19 @@ CloudWatchログをNew Relicに転送すると、ログデータの収集、処 再試行の回数が増えると、関数の実行時間が長くなる可能性があります。これにより、Lambdaのコストが高くなる可能性が高くなります。ただし、再試行の回数を減らすと、データ損失の可能性が高まる可能性があります。 -``` -MAX_RETRIES = 3 # Defines the number of retries after lambda failure to deliver data -INITIAL_BACKOFF = 1 # Defines the initial wait seconds until next retry is executed -BACKOFF_MULTIPLIER = 2 # Time multiplier between the retries -As an example, in default above configuration, first retry will happen after 1 second, second retry after 2 seconds and third retry will happen after 4 seconds. +```ini +# Defines the number of retries after lambda failure to deliver data +MAX_RETRIES = 3 + +# Defines the initial wait seconds until next retry is executed +INITIAL_BACKOFF = 1 + +# Time multiplier between the retries +BACKOFF_MULTIPLIER = 2 ``` +たとえば、上記のデフォルト設定では、最初の再試行は1秒後に行われ、2回目の再試行は2秒後に、3回目の再試行は4秒後に行われます。 + ## SAMテンプレートで作成したリソース [#sam-resources] リポジトリからアプリケーションを作成すると、次のリソースも作成されます。 @@ -232,7 +238,7 @@ As an example, in default above configuration, first retry will happen after 1 s * 当社の[ログUI](https://one.newrelic.com/launcher/logger.log-launcher) * [NRQLクエリ](/docs/chart-builder/use-chart-builder/choose-data/use-advanced-nrql-mode-specify-data)を実行するためのNew Relicツール。たとえば、次のようなクエリを実行できます。 -``` +```sql SELECT * FROM Log ``` diff --git a/src/i18n/content/jp/docs/logs/forward-logs/enable-log-management-new-relic.mdx b/src/i18n/content/jp/docs/logs/forward-logs/enable-log-management-new-relic.mdx index 6c8b4f04c1d..6158d738f9e 100644 --- a/src/i18n/content/jp/docs/logs/forward-logs/enable-log-management-new-relic.mdx +++ b/src/i18n/content/jp/docs/logs/forward-logs/enable-log-management-new-relic.mdx @@ -49,7 +49,7 @@ import logsLogForwardOptions from 'images/logs_diagram_log-forward-options.webp' @@ -93,7 +93,7 @@ import logsLogForwardOptions from 'images/logs_diagram_log-forward-options.webp' @@ -220,7 +220,7 @@ import logsLogForwardOptions from 'images/logs_diagram_log-forward-options.webp' 標準のログフォーマッターは、ログイベントを下流のユーザーやプロセスが使用できる意味のある出力(テキストファイルなど)に変換します。`NewRelicFormatter`は、ログイベントをNew Relicが期待するJSON形式に変換します。これらのファイルには、ログ情報と拡張メタデータが含まれています。 -ログフォワーダー(infrastructureモニタリングエージェント、Fluentd、Logstashなど)を設定するときに、ログデータを拡張および強化することもできます。[Logs in Context](/docs/logs/enable-log-management-new-relic/configure-logs-context/configure-logs-context-apm-agents/)を設定すると、ログエンリッチャーは、フォーマットされたログデータをアプリケーションまたはホストからの追加のトランザクション情報にリンクします。 +ログフォワーダー(infrastructureエージェント、Fluentd、Logstashなど)を設定するときに、ログデータを拡張および強化することもできます。[Logs in Context](/docs/logs/enable-log-management-new-relic/configure-logs-context/configure-logs-context-apm-agents/)を設定すると、ログエンリッチャーは、フォーマットされたログデータをアプリケーションまたはホストからの追加のトランザクション情報にリンクします。 これで、ログファイルは拡張メタデータとコンテキストに基づくロギングデータで強化されました。ログフォワーダーは、処理のためにファイルをログエンドポイントに送信します。そこからログ管理機能を使用して、New Relicで表示、クエリ、アラートの設定などを行うことができます。 @@ -230,6 +230,6 @@ import logsLogForwardOptions from 'images/logs_diagram_log-forward-options.webp' * [Logs UI](/docs/logs/ui-data/use-logs-ui)を使用して、プラットフォーム全体のロギングデータを調べます。 * [APM UI](/docs/logs/ui-data/use-logs-ui/#links)でアプリのパフォーマンスのコンテキストでログを確認する。[ディストリビューティッド(分散)トレーシング](/docs/apm/distributed-tracing/ui-data/understand-use-distributed-tracing-data)、スタックトレース、アプリケーションログなどを使用して、[エラー](/docs/apm/apm-ui-pages/error-analytics/errors-page-find-fix-verify-problems/)をトラブルシューティングします -* [infrastructureモニタリングエージェント](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent/)を使用してログを転送すると、アプリケーションとプラットフォームのパフォーマンスデータをより深く可視化することができます。UIで[インフラストラクチャログ](/docs/logs/ui-data/use-logs-ui/#links)を確認します +* [infrastructureエージェント](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent/)を使用してログを転送すると、アプリケーションとプラットフォームのパフォーマンスデータをより深く可視化することができます。UIで[インフラストラクチャログ](/docs/logs/ui-data/use-logs-ui/#links)を確認します。 * [アラート](/docs/alerts-applied-intelligence/new-relic-alerts/alert-conditions/create-alert-conditions/)の設定 * [データをクエリ](/docs/query-your-data/explore-query-data/get-started/introduction-querying-new-relic-data/)し、[ダッシュボードを作成](/docs/query-your-data/explore-query-data/dashboards/introduction-dashboards/)します。たとえば、[データパーティションルール](/docs/apis/nerdgraph/examples/nerdgraph-data-partition-rules-tutorial)と[ログ解析ルール](/docs/apis/nerdgraph/examples/nerdgraph-log-parsing-rules-tutorial)のクエリと管理については、NerdGraphチュートリアルを参照してください \ No newline at end of file diff --git a/src/i18n/content/jp/docs/logs/get-started/live-archives.mdx b/src/i18n/content/jp/docs/logs/get-started/live-archives.mdx index 6dd1e1681ba..e5982349b97 100644 --- a/src/i18n/content/jp/docs/logs/get-started/live-archives.mdx +++ b/src/i18n/content/jp/docs/logs/get-started/live-archives.mdx @@ -23,19 +23,19 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_ ライブアーカイブを使用すると、必要な期間ログを保存できます。 New Relicのログ保持期間はデフォルトで30日間ですが、ライブアーカイブを使用すると、その期間を最大7年まで延長できます。古い税務書類と同様に、データを手元に置く必要がない場合もありますが、必要に応じて参照できるように情報を保管しておくと安全です。 -ライブアーカイブが必要ですか?以下にいくつかの使用例を示します。 +ライブアーカイブが必要ですか?この機能のメリットを享受できるユースケースをいくつか紹介します。 * **Internal retention requirements** - :内部保持期間を設けてログを保存し、必要な場合にのみクエリできるようにしたいと考えていますか?ライブアーカイブは、拡張ストレージとクエリ機能に役立ちます。 + :貴社では、ログを一定期間保存することを義務付けるポリシーがありますか?ライブアーカイブの保存期間を延長することで、要件を満たすことができる場合があります。 * **Trends and long-term debugging** - :ログを長期保存すると、前年比のパフォーマンスが向上します。たとえば、小売会社を管理している場合、あるホリデーシーズンと次のホリデーシーズンのログを比較すると、パフォーマンスを向上させることができます。 + : ログを長期保存すると、前年比のパフォーマンスが向上します。たとえば、小売会社を管理している場合、あるホリデーシーズンと次のホリデーシーズンのログを比較すると、パフォーマンスを向上させる方法を確認できます。 ## ライブアーカイブの仕組み [#how-it-works] -ライブアーカイブ機能は、ストレージコスト削減のためにクエリを控えめに実行するための長期ログデータストレージを提供します。ライブアーカイブを使用すると、潜在的な監査や長期的なデバッグのためにログが長期間利用できるため、安心できます。ただし、クエリに対して料金が発生するのは、_古いデータをクエリする_場合のみです。 +ライブアーカイブ機能は、ストレージコスト削減のためにクエリを控えめに実行するための長期ログデータストレージを提供します。ライブアーカイブを使用すると、潜在的な監査や長期的なデバッグのためにログが長期間利用できるため、安心できますが、古いデータの保存とクエリには別途料金がかかります。 ## スタートガイド @@ -58,7 +58,9 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_ 3. **Request** をヒットします。弊社チームの担当者からご連絡させていただきます。 + + ライブアーカイブを有効にしたら、データ保持期間を編集する必要があります。 1. [データ管理ハブ](https://one.newrelic.com/data-management-hub)にある @@ -86,10 +88,6 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_ alt="A screenshot showing users how to edit their data retention." src={logsEditDataRetentionLiveArchives} /> - -
- **one.newrelic.com > [Data management hub](https://one.newrelic.com/data-management-hub) > Data retention > Select logging live archives > Edit data retention**に移動:アーカイブ期間を選択して、必要な期間ログを保存します。 -
@@ -97,41 +95,27 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_ パーティションは、特定の基準に基づいてログをグループ化する方法です。パーティションを作成すると、不要なログをフィルタリングして除外し、ライブアーカイブで作成したログを保持するのに役立ちます。 - 1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs** - - に移動します。 + 1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs**に移動します。 - 2. ログクエリバーの左側にある - - **Data partitions** - - をクリックし、次に - - **Create data partition** - - をクリックします。 + 2. ログクエリバーの左側にある**Data partitions**をクリックし、次に**Create data partition**をクリックします。 3. パーティション名を、Logで始まる英数字の文字列として定義します。 - 4. **Use live archives on this partition** + 4. **Use live archives on this partition**フィールドを選択します。 - フィールドを選択します。 + A screenshot showing a user how to create a partition using live archives - 5. **Total effective retention** +
+ **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs > Data partitions**に移動して、ライブアーカイブを使用してパーティションを作成します。 +
- 日は、通常の保存期間_と_[ライブアーカイブの保持期間](/docs/logs/get-started/live-archives-billing/#what-counts)を反映して更新されます。 + 5. **Total effective retention**日は、通常の保存期間_と_[ライブアーカイブの保持期間](/docs/logs/get-started/live-archives-billing/#what-counts)を反映して更新されます。 - A screenshot showing a user how to create a partition using live archives - -
- **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs > Data partitions**に移動して、ライブアーカイブを使用してパーティションを作成します。 -
- - **Data partitions**ページのアイコンをクリックして、既存のパーティションを編集することもできます。 + **Data partitions**ページのアイコンをクリックして、既存のパーティションを編集することもできます。既存のパーティションを使用する場合は、元のパーティションに選択したのと同じパラメーターがライブアーカイブデータに適用されます。 A screenshot showing a user how to edit a partition using live archives + + パーティションの使用方法の詳細については、[パーティションを使用してデータを整理する](/docs/logs/ui-data/data-partitions/)のドキュメントを参照してください。
- ### ログ構文を使用してライブアーカイブをクエリする [#query] + ## ログをクエリする + + ライブアーカイブをクエリするには、Lucene、NRQL、NerdGraph APIのNRQLなど、いくつかの方法があります。これら3つの方法すべてにおいて、ライブアーカイブをクエリするには、**Live archives query** \[ライブアーカイブクエリ]機能が必要になります。 + + ### Luceneクエリ構文を使用してライブアーカイブをクエリする [#query] - ライブアーカイブをクエリするには、LuceneまたはNRQLを使用する2つの方法があります。New Relic以外で使い慣れたログ構文を使用する場合は、 **Logs** UIでクエリを実行することをお勧めします。 ライブアーカイブをクエリするには、**ライブアーカイブクエリ**機能が必要です。 + Luceneクエリ構文に精通している場合は、 **Logs** UIで実行できます。 1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs** @@ -169,26 +159,26 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_
**[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs**に移動して、ライブアーカイブに保存されているデータをクエリします。
-
- ### NRQLを使用してライブアーカイブをクエリする [#nrql] - Errors Inboxまたはアラートに使用するのと同じ言語を使用してクエリを実行する場合は、NRQLでクエリを実行することをお勧めします。ライブアーカイブをクエリするには、**ライブアーカイブクエリ**機能が必要です。 + Errors Inboxまたはアラートに使用するのと同じ言語を使用してクエリを実行する場合は、NRQLでクエリを実行することをお勧めします。 1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs** に移動します。 - 2. 実行するNRQLクエリを入力します。 + 2. 右上隅の**NRQL**をクリックします。 - 3. まずクエリを練習して、クエリが期待どおりに動作することを確認してください。 + 3. 実行するNRQLクエリを入力します。 - 4. **Use live archives** + 4. まずクエリを練習して、クエリが期待どおりに動作することを確認してください。 + + 5. **Use live archives** を切り替えます。 - 5. ライブアーカイブをクエリしようとしていることが画面に表示されます。ライブアーカイブのクエリにはコストがかかるため、準備ができている場合にのみ + 6. ライブアーカイブをクエリしようとしていることが画面に表示されます。ライブアーカイブのクエリにはコストがかかるため、準備ができている場合にのみ **Query live archives** @@ -203,12 +193,10 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_
**[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Logs**に移動し、**NRQL**を選択して、クエリビルダーを使用してライブアーカイブに保存されているデータをクエリします。
-
- ### Nerdgraph APIを使用してライブアーカイブをクエリする [#api] - Nerdgraph APIを使用してライブアーカイブデータをクエリすることもできます。 ライブアーカイブをクエリするには、**ライブアーカイブクエリ**機能が必要です。ライブアーカイブ`eventNamespace`を指定するには、NRQLオプションに`{eventNamespaces: "Logging:Archive"}`を含める必要があります。 + NerdGraph APIのNRQLを使用してライブアーカイブデータをクエリすることもできます。ライブアーカイブ`eventNamespace`を指定するには、NRQLオプションに`{eventNamespaces: "Logging:Archive"}`を含める必要があります。 クエリの例を次に示します。 @@ -304,21 +292,17 @@ import logsEditDataPartitionUsingLiveArchives from 'images/logs_screenshot-crop_ 1. ユーザーがマシンにログインした時間枠を確認してください。 -2. **Logs** - - でクエリをテストして、期待どおりに動作することを確認します。 +2. **Logs**でクエリをテストして、期待どおりに動作することを確認します。これはドライランであり、データは返されませんが、クエリを検証するだけです。うまくいけば、アーカイブされたログに対してより負荷の高いクエリを実行できます。 -クエリの例: + クエリの例: -``` -"logtype":"linux_audit" "type":"USER_LOGIN" "hostname":"apache_svr01" -``` + ``` + "logtype":"linux_audit" "type":"USER_LOGIN" "hostname":"apache_svr01" + ``` 3. ユーザーがマシンにログインした日付を検索するには、時間セレクターを変更します。 -4. **Query live archives** - - を選択します。 +4. **Query live archives**を選択します。 ## データの削除 [#delete] diff --git a/src/i18n/content/jp/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle.mdx b/src/i18n/content/jp/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle.mdx index 45fdb96176e..fc3b89f3670 100644 --- a/src/i18n/content/jp/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle.mdx +++ b/src/i18n/content/jp/docs/mobile-monitoring/new-relic-mobile-android/install-configure/install-android-agent-gradle.mdx @@ -36,7 +36,7 @@ Androidエージェントをインストールするには、[ガイド付きイ id="project-level" title="プロジェクトレベルの「build.gradle」ファイル:" > - この例では、``エージェントのバージョン番号を表しています。[エージェントリリースノート](/docs/release-notes/mobile-release-notes/android-release-notes)を参照し、最新版を使用してください。 + この例では、`AGENT_VERSION`エージェントのバージョン番号を表しています。[エージェントリリースノート](/docs/release-notes/mobile-release-notes/android-release-notes)を参照し、最新版を使用してください。 ```groovy buildscript { @@ -45,7 +45,7 @@ Androidエージェントをインストールするには、[ガイド付きイ } dependencies { - classpath "com.newrelic.agent.android:agent-gradle-plugin:" + classpath "com.newrelic.agent.android:agent-gradle-plugin:AGENT_VERSION" } } ``` @@ -55,7 +55,7 @@ Androidエージェントをインストールするには、[ガイド付きイ id="app-level" title="アプリレベルの「build.gradle」ファイル:" > - この例では、``エージェントのバージョン番号を表しています。[エージェントリリースノート](/docs/release-notes/mobile-release-notes/android-release-notes)を参照し、最新版を使用してください。 + この例では、`AGENT_VERSION`エージェントのバージョン番号を表しています。[エージェントリリースノート](/docs/release-notes/mobile-release-notes/android-release-notes)を参照し、最新版を使用してください。 ```groovy repositories { @@ -66,7 +66,7 @@ Androidエージェントをインストールするには、[ガイド付きイ apply plugin: 'newrelic' dependencies { - implementation 'com.newrelic.agent.android:android-agent:' + implementation 'com.newrelic.agent.android:android-agent:AGENT_VERSION' } ``` @@ -81,7 +81,7 @@ Androidエージェントをインストールするには、[ガイド付きイ 3. Androidエージェントを起動します。マニフェストにあるデフォルトのアクティビティで、`NewRelic`クラスをインポートします。 - ``` + ```java import com.newrelic.agent.android.NewRelic; ``` @@ -90,13 +90,13 @@ Androidエージェントをインストールするには、[ガイド付きイ 4. `NewRelic`クラスをインポートした後、ガイド付きインストールで生成されるアプリトークンを含む追加のスニペットを`onCreate()`メソッドに追加する必要があります。スニペットは次のようになります。 ```java - NewRelic.withApplicationToken("").start(this.getApplicationContext()); + NewRelic.withApplicationToken("GENERATED_TOKEN").start(this.getApplicationContext()); ``` -5. 縮小(ProGuardやDexguardなど)を使用している場合は、`newrelic.properties`ファイルをアプリレベルのディレクトリ (projectname/app)に追加する必要があります。この手順は、ProGuardおよびDexGuardユーザーにのみ適用されます。 +5. 縮小(ProGuardやDexguardなど)を使用している場合は、`newrelic.properties`ファイルをアプリレベルのディレクトリ(_projectname/app_)に追加する必要があります。この手順は、ProGuardおよびDexGuardユーザーにのみ適用されます。 - ``` - com.newrelic.application_token= + ```ini + com.newrelic.application_token=GENERATED_TOKEN ``` 縮小の設定を完了するには、[Androidアプリ用のProGuardまたはDexGuardの設定](/docs/mobile-monitoring/new-relic-mobile-android/install-configure/configure-proguard-or-dexguard-android-apps)の手順に従います。 @@ -111,7 +111,7 @@ Androidエージェントはまだコミュニティプラグインとして利 1. このスニペットを、`pluginManagement {}`ブロックを介して`settings.gradle(.kts)`ファイルに追加します - ``` + ```groovy pluginManagement { repositories { mavenCentral() // adds repo for NewRelic artifacts @@ -128,31 +128,31 @@ Androidエージェントはまだコミュニティプラグインとして利 // for core Gradle plugins or plugins already available to the build script plugins { - id("newrelic") version "${}" + id("newrelic") version "${AGENT_VERSION}" } } ``` 2. New Relicプラグインを宣言します - ``` + ```groovy plugins { // for binary Gradle plugins that need to be resolved - id("newrelic") version "" apply false + id("newrelic") version "AGENT_VERSION" apply false } ``` 3. プラグインをアプリレベルのビルドファイルに適用します - ``` + ```groovy plugins { - id("com.android.application") - id("org.jetbrains.kotlin.android") - id("newrelic") + id("com.android.application") + id("org.jetbrains.kotlin.android") + id("newrelic") } ``` -上記のスニペットでは、 ``はエージェントのバージョン番号を表しています。 設定には最新のエージェントを使用することを強くお勧めします。 +上記のスニペットでは、 `AGENT_VERSION`はエージェントのバージョン番号を表しています。 設定には最新のエージェントを使用することを強くお勧めします。 ## Android 4.x:Multidexサポート [#4x-multidex] @@ -168,7 +168,7 @@ Android 5.0(APIレベル21)より前のAndroidバージョン用のモバイ 1. プロジェクトの`/app`フォルダー内に`proguard.multidex.config`ファイルを作成します。パッケージ名が反映するように、`mypackage`を更新します。 - ``` + ```profile #################### # keep class names # #################### @@ -180,12 +180,12 @@ Android 5.0(APIレベル21)より前のAndroidバージョン用のモバイ 2. アプリケーションレベルの`build.gradle`ファイルに、以下のコードをマージします。 - ``` + ```groovy android { - defaultConfig{ - … - multiDexKeepProguard file("proguard.multidex.config") - } + defaultConfig{ + … + multiDexKeepProguard file("proguard.multidex.config") + } } ``` diff --git a/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx b/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx index 4a63c9c6793..bbbfa7d24d4 100644 --- a/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx +++ b/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx @@ -160,9 +160,9 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト - ## スクリプト化ブラウザテストを設定して開発する [#scripted-test] + ## スクリプト化されたブラウザまたはスクリプト化されたAPIテストを設定して開発する [#scripted-test] - スクリプト化ブラウザを使用して、Selenium JavaScript Webdriverバインディングで複雑な監視ワークフローを構築できます。たとえば、アプリケーションにログインして特定のリンクにナビゲートし、ページ要素がロードされてアサーションを追加するのを待機できます。これを行うには、以下を実行します。 + スクリプト化ブラウザモニターを使用すると、 Selenium JavaScript Webdriverで監視ワークフローを簡単に構築できます。たとえば、特定のページに移動し、ページ上の要素を見つけ、期待したテキストが見つかったことを確認し、スクリーンショットを撮ることができます。これを行うには、以下を実行します。 1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Synthetic Monitoring** @@ -172,141 +172,136 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト ボタンをクリックします。 - 3. モニターの名前と詳細を入力します。 `sitename.com`のスクリプト化ブラウザなどを入力します。 - - 4. モニターを実行する場所を選択します。たとえば、ムンバイ、ソウル、コロンバス、モントリオールなどです。 - - 5. ここからモニターを実行する頻度(5分など)を選択します。 - - 6. パフォーマンスインシデントが発生した際にチームに送信するアラート通知を設定します。 - - 7. これでスクリプトを記述する準備ができました。`newrelic.com`のパフォーマンスをテストし、特定の要素が読み込まれたかどうかを確認するには、このサンプルスクリプトを参照してください。 - -```js -/** - * Script Name: Best Practices - Chrome 100 - * Author: New Relic - * Version: 1.5 - * Purpose: best practices example - * Reference: https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/scripting-monitors/synthetic-scripted-browser-reference-monitor-versions-chrome-100/ - */ - -// -------------------- CONSTANTS -const SCRIPT_NAME = "Best Practices - Chrome 100" // name to record in script log -const IMPLICIT_TIMEOUT = 3000 // default implicit timeout is 10 seconds, 3 seconds x 8 findElement operations = 24 seconds, assuming all operations time out -const PAGE_LOAD_TIMEOUT = 60000 // default page load timeout is 60 seconds, fail early to prevent long duration timeouts -const SCRIPT_TIMEOUT = 20000 // default script timeout is 30 seconds -const USER_AGENT = "default" // set the user agent for Chrome -const PROTOCOL = "https://" // set the protocol -const USERNAME = "" // username: -const PASSWORD = "" // password@ -const DOMAIN = "docs.newrelic.com" // your domain -const PATH = "/docs/new-relic-solutions/get-started/intro-new-relic/" // path to main page -const CHECK = "Need some inspiration first? Check out this intro video." // text to match on page -const AUTH = USERNAME + PASSWORD -const MAIN_URL = PROTOCOL + AUTH + DOMAIN + PATH - -// -------------------- DEPENDENCIES -var assert = require("assert") - -// -------------------- CONFIGURATION -await $webDriver.manage().setTimeouts({ - implicit: IMPLICIT_TIMEOUT, // sets element load timeout - pageLoad: PAGE_LOAD_TIMEOUT, // sets page load timeout - script: SCRIPT_TIMEOUT // sets script timeout -}) - -// -------------------- VARIABLES -var By = $selenium.By -var loc = { - video: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > article > div > div > div:nth-child(1) > div > p:nth-child(2)"), - start: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > h1"), - e: [ - { step: 'signup', selector: By.css("#sign-up-for-new-relic-if-you-havent-already") }, - { step: 'ingest', selector: By.css("#ingest-some-data") }, - { step: 'dashboards', selector: By.css("#check-out-some-dashboards") }, - { step: 'data', selector: By.css("#add-more-data") }, - { step: 'alerting', selector: By.css("#set-up-alerting") }, - { step: 'users', selector: By.css("#add-users") } - ] -} - -// -------------------- FUNCTIONS -// for backwards compatibility with legacy runtimes -async function waitForAndFindElement(locator, timeout) { - const element = await $webDriver.wait( - $selenium.until.elementLocated(locator), - timeout, - "Timed-out waiting for element to be located using: " + locator - ) - await $webDriver.wait( - $selenium.until.elementIsVisible(element), - timeout, - "Timed-out waiting for element to be visible using ${element}" - ) - return await $webDriver.findElement(locator) -} - -// -------------------- START OF SCRIPT -// Start logging -var start_time = new Date() -console.log("Starting synthetics script: " + SCRIPT_NAME) - -// confirm timeouts are set -const {implicit, pageLoad, script} = await $webDriver.manage().getTimeouts() -console.log("Timeouts are set to:") -console.log(" IMPLICIT: " + implicit / 1000 + "s") -console.log(" PAGE LOAD: " + pageLoad / 1000 + "s") -console.log(" SCRIPT: " + script / 1000 + "s") - -// Setting User Agent is not then-able, so we do this first (if defined and not default) -if (USER_AGENT && 0 !== USER_AGENT.trim().length && USER_AGENT != "default") { - $headers.add("User-Agent", USER_AGENT) - console.log("Setting User-Agent to " + USER_AGENT) -} - -// if an error happens at any step, script execution is halted and a failed result is returned -console.log("1. get: " + MAIN_URL) -await $webDriver.get(MAIN_URL) - -console.log("2. waitForAndFindElement: " + loc.video) -const textBlock = await waitForAndFindElement(loc.video, IMPLICIT_TIMEOUT) - -console.log("3. getText: " + CHECK) -const text = await textBlock.getText() - -console.log("4. assert.equal: " + text) -assert.equal(text, CHECK, "validation text not found") - -console.log("5. waitForAndFindElement: " + loc.start) -const platformMenu = await waitForAndFindElement(loc.start, IMPLICIT_TIMEOUT) - -console.log("6. takeScreenshot") -await $webDriver.takeScreenshot() - -console.log("7. findElement") -loc.e.forEach(async function (nr, i) { - let n = i + 1 - try{ - // verify each asset has loaded - console.log(" " + n + ". " + nr.step + ": " + nr.selector) - await $webDriver.findElement(nr.selector) - }catch(exception){ - console.error("Failure in Step 7." + n) - throw exception - } -}) - -// End logging -var end_time = new Date() - -// Calculate the duration -var script_duration = end_time - start_time - -// Log the times -console.log("Start time: " + start_time) -console.log("End time: " + end_time) -console.log("Duration: " + script_duration) -``` + 3. **Scripted browser** + + モニタータイプを選択します。 + + 4. 名前を入力し、実行時間を選択し、モニターの期間を選択します。 + + 5. モニターを実行する場所を選択します。たとえば、ムンバイ、ソウル、コロンバス、モントリオールなどです。 + + 6. これでスクリプトを記述する準備ができました。`newrelic.com`のパフォーマンスをテストし、特定の要素が読み込まれたかどうかを確認するには、このサンプルスクリプトを参照してください。 + + ```js + /** + * Script Name: Best Practices Example - Chrome 100+ + * Author: New Relic + * Version: 1.0 + * Purpose: A simple New Relic Synthetics scripted browser monitor to navigate to a page, find an element, and assert on expected text. + */ + + // -------------------- DEPENDENCIES + const assert = require("assert") + + // -------------------- CONFIGURATION + const PAGE_URL = "https://docs.newrelic.com/docs/synthetics/synthetic-monitoring/scripting-monitors/synthetic-scripted-browser-reference-monitor-versions-chrome-100/" + const TEXT_TO_CHECK = "Synthetic scripted browser reference (Chrome 100 and higher)" + + // Set timeouts for page load and element finding + await $webDriver.manage().setTimeouts({ + pageLoad: 30000, // 30 seconds for page load timeout + implicit: 5000, // 5 seconds for element finding timeout + }) + + // -------------------- START OF SCRIPT + console.log("Starting simplified synthetics script") + + // Navigate to the page + console.log("Navigating to: " + PAGE_URL) + await $webDriver.get(PAGE_URL) + + // Find the element with the specified text + const By = $selenium.By + const textElement = By.className("css-v50zng") + + console.log("Checking for presence of element with text: " + TEXT_TO_CHECK) + const element = await $webDriver.findElement(textElement) + const text = await element.getText() + + // Assert the text is present + console.log("Found text: " + text) + assert.equal(text, TEXT_TO_CHECK, "Expected text not found on the page") + + // Take a screenshot + console.log("Taking screenshot") + await $webDriver.takeScreenshot() + + console.log("Script completed successfully") + ``` + + スクリプト化されたAPIモニターを使用すると、Node.jsと`got`モジュールで監視ワークフローを簡単に構築できます。たとえば、APIを使用して認証し、応答コードをアサートすることができます。 + + 1. **[one.newrelic.com > All capabilities](https://one.newrelic.com/all-capabilities) > Synthetic Monitoring** + + に移動します。 + + 2. **Create monitor** + + ボタンをクリックします。 + + 3. **Scripted API** + + モニタータイプを選択します。 + + 4. 名前を入力し、実行時間を選択し、モニターの期間を選択します。 + + 5. モニターを実行する場所を選択します。たとえば、ムンバイ、ソウル、コロンバス、モントリオールなどです。 + + 6. これでスクリプトを記述する準備ができました。APIリクエストを作成して応答を処理するこのサンプルスクリプトを参照してください。 + + ```js + /** + * Script Name: Best Practices Example - Node 16.10.0 + * Author: New Relic + * Version: 1.0 + * Purpose: A simple New Relic Synthetics scripted API monitor to make a GET request and assert on statusCode. + */ + + const assert = require("assert") + + // Get secure credentials + const applicationId = $secure.APP_ID + const apiKey = $secure.API_KEY + + // The URL for the API endpoint to get information about a specific application + const URL = `https://api.newrelic.com/v2/applications/${applicationId}.json` + + // Define headers, including the API key for authentication + const headers = { + "X-Api-Key": apiKey, + } + + // Make a GET request + $http.get({ url: URL, headers: headers }, function (error, response, body) { + // If error handling is needed, check if an error occurred during the request + // if (error) { + // console.error("An error occurred:", error); + // Handle the error as needed, or rethrow to fail the monitor + // throw error; + // } + + // Assert the response status code is 200 + assert.equal(response.statusCode, 200, "Expected HTTP status code 200") + + // Log the status code to the console + console.log("Request Status Code:", response.statusCode) + + // If further processing of the response body is needed, it can be done here + // For example, parsing JSON response (if response is in JSON format) + // const jsonData = + // typeof body === "string" + // ? JSON.parse(body) + // : body + + // Log the parsed JSON to the console + // console.log("Parsed JSON data:", jsonData) + + // Check the application's health status + // const healthStatus = jsonData.application.health_status + // assert.equal(healthStatus, "green", "Expected the application's health status to be 'green'") + + // If the assertion passes, the script will continue; otherwise, it will fail the monitor + }) + ``` \ No newline at end of file diff --git a/src/i18n/content/jp/docs/new-relic-solutions/get-started/networks.mdx b/src/i18n/content/jp/docs/new-relic-solutions/get-started/networks.mdx index d843eab43f7..e0b38a1caa5 100644 --- a/src/i18n/content/jp/docs/new-relic-solutions/get-started/networks.mdx +++ b/src/i18n/content/jp/docs/new-relic-solutions/get-started/networks.mdx @@ -141,6 +141,32 @@ translationType: human + + + + + + + + + + + + + + + + @@ -691,6 +726,7 @@ New Relicにデータをレポートするためには、[Infrastructureモニ * `18.246.82.0/25` (2023年8月20日から有効) * `3.145.244.128/25` (2023年8月20日から有効) * `20.51.136.0/25` (2024年6月20日から有効) +* `152.38.128.0/19` (2024年6月20日から有効) EUデータセンター地域のネットワークブロック: @@ -698,11 +734,13 @@ EUデータセンター地域のネットワークブロック: * `159.122.103.184/29` * `161.156.125.32/28` * `3.77.79.0/25` (2023年8月20日から有効) +* `212.32.0.0/20` (2024年6月20日から有効) その他データセンター地域のネットワークブロック: * `3.27.118.128/25` (2024年6月20日から有効) * `4.197.217.128/25` (2024年6月20日から有効) +* `64.251.192.0/20` (2024年6月20日から有効) これらのネットワークブロックは、サードパーティのチケットのインテグレーションおよび[New Relicクラウドインテグレーション](/docs/integrations/infrastructure-integrations/get-started/introduction-infrastructure-integrations/#cloud-integrations)にも適用されます。ただし、[Azureモニターインテグレーション](/docs/infrastructure/microsoft-azure-integrations/azure-integrations-list/azure-monitor/)には適用されません。 diff --git a/src/i18n/content/jp/docs/new-relic-solutions/new-relic-one/core-concepts/what-entity-new-relic.mdx b/src/i18n/content/jp/docs/new-relic-solutions/new-relic-one/core-concepts/what-entity-new-relic.mdx index b1af3721853..8b88ca550fb 100644 --- a/src/i18n/content/jp/docs/new-relic-solutions/new-relic-one/core-concepts/what-entity-new-relic.mdx +++ b/src/i18n/content/jp/docs/new-relic-solutions/new-relic-one/core-concepts/what-entity-new-relic.mdx @@ -11,7 +11,7 @@ translationType: human import entitiesView from 'images/platform_screenshot-crop_entities-view.webp' -New Relicオブザーバビリティは、**エンティティ**のコンセプトを中心に構築されています。このドキュメントでは、エンティティの定義方法、エンティティを使用して何ができるか、エンティティまたはエンティティのグループを作成する方法について説明します。 +New Relicオブザーバビリティは、**entities** のコンセプトを中心に構築されています。このドキュメントでは、エンティティの定義方法、エンティティを使用して何ができるか、エンティティまたはエンティティのグループを作成する方法について説明します。 New Relicプラットフォームの入門ツアーをご希望ですか? [プラットフォームを理解する](/docs/new-relic-solutions/new-relic-one/introduction-new-relic-platform)を参照してください。 @@ -19,13 +19,13 @@ New Relicオブザーバビリティは、**エンティティ**のコンセプ ## エンティティとは? [#what-is-entity] -New Relicでは、**エンティティ**を意図的に幅広いコンセプトとして捉えています。エンティティとは、a) データをNew Relicに報告するもの、または当社がアクセスできるデータを含むあらゆるもの、b) 一意のエンティティIDで識別されたものです。ほとんどのエンティティでは、IDは[属性](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#attribute)`entityGuid`で示されます。 +New Relicでは、**entity**を意図的に幅広いコンセプトとして捉えています。エンティティとは、a) データをNew Relicに報告するもの、または当社がアクセスできるデータを含むあらゆるもの、b) 一意のエンティティIDで識別されたものです。ほとんどのエンティティでは、IDは[属性](/docs/using-new-relic/welcome-new-relic/get-started/glossary/#attribute)`entityGuid`で示されます。 エンティティは、アプリケーション、ホスト、データベースサービスなどの基本的なデータを報告するコンポーネントを指しますが、これらのコンポーネントのより大きなグループを指すこともあります。たとえば、データセンターを監視するには、このようなホストをNew Relicに集計し、[ワークロード](/docs/new-relic-one/use-new-relic-one/get-started/introduction-new-relic-one)(エンティティのカスタムグループ)にすることができます。このワークロード自体もまたエンティティです。[独自のエンティティを作成](#entity-synthesis)する機能があります。 また、[エンティティ間の関係](#related-entities)も非常に重要です。当社の背後にある関係マッピングは、エンティティがどのように接続されているか、どのように相互に影響するかを理解するのに役立ちます。これにより、お持ちのデータが既存のエンティティとどのように関連しているか、または他のエンティティとどのように関連しているかを設定できます。 -当社の目標は、**お客様のビジネス上重要なエンティティに関する実用的な情報**を提供することであり、監視対象のサービスやシステムの膨大なリストから膨大な量のデータを提供するのではなく、エンティティとその関係に焦点を当てることが重要です。エンティティレベルでより多くの洞察を得ることにより、複雑な最新のシステム監視とトラブルシューティングを改善できます。 +当社の目標は、**practical information about your business-important entities**を提供することであり、監視対象のサービスやシステムの膨大なリストから膨大な量のデータを提供するのではなく、エンティティとその関係に焦点を当てることが重要です。エンティティレベルでより多くの洞察を得ることにより、複雑な最新のシステム監視とトラブルシューティングを改善できます。
- **[one.newrelic.com](https://one.newrelic.com)**:New Relicを開くと、**All entities**ページが表示され、監視対象のエンティティの概要が表示されます。このページから、エンティティのメタデータを表示したり、エンティティをクリックしてパフォーマンスの詳細を確認したりできます。 + **[one.newrelic.com](https://one.newrelic.com)**:New Relicを開くと、**All entities** ページが表示され、監視対象のエンティティの概要が表示されます。このページから、エンティティのメタデータを表示したり、エンティティをクリックしてパフォーマンスの詳細を確認したりできます。
## エンティティのフィルタリングと探索 [#filter-entities] @@ -43,7 +43,7 @@ New Relicでは、**エンティティ**を意図的に幅広いコンセプト ## エンティティの詳細 [#find] -UIでエンティティのGUID、およびその他のメタデータを検索するには:[エンティティのリスト](/docs/new-relic-solutions/new-relic-one/core-concepts/new-relic-explorer-view-performance-across-apps-services-hosts#find)から、エンティティのアイコンをクリックし、**メタデータとタグを表示**をクリックします。 +UIでエンティティのGUID、およびその他のメタデータを検索するには:[エンティティのリスト](/docs/new-relic-solutions/new-relic-one/core-concepts/new-relic-explorer-view-performance-across-apps-services-hosts#find)から、エンティティのアイコンをクリックし、**See metadata & tags** をクリックします。 すべてのエンティティにはNew Relic固有のID番号があり、属性`entityGuid`として報告されます。GUIDを使用してエンティティの[NRQLクエリ](/docs/query-your-data/nrql-new-relic-query-language/get-started/introduction-nrql-new-relics-query-language)を実行できます。 @@ -51,9 +51,16 @@ UIでエンティティのGUID、およびその他のメタデータを検索 監視対象エンティティ間の関係を理解するためのオプションをいくつか示します。 -* UIでエンティティを表示する場合は、[**関連エンティティ**UI](#related-entities)を使用します。 +* UIでエンティティを表示する場合は、 + + [**Related entities**](#related-entities) + + [ UI](#related-entities)を使用します。 + * [サービスマップ](/docs/service-maps-dependencies-new-relic-one)を使用すると、接続を視覚的に表示できます。 + * [ディストリビューティッド(分散)トレーシング](/docs/distributed-tracing-new-relic-one)を使用して、エンティティがトランザクション内でどのように相互呼び出しを行うかを確認します。 + * [NerdGraph API](/docs/apis/nerdgraph/examples/nerdgraph-relationships-api-tutorial)を使用して、関係情報を表示します。 ### エンティティに関する技術的な詳細 [#technical-details] @@ -81,6 +88,7 @@ New Relicは膨大な数のエンティティを監視しますが、それら * `FOUR_HOURS` * `DAILY` (24時間) +* `EIGHT_DAYS`:`definition`ファイルに期限が定義されていない場合はデフォルト値が適用されます。 * `QUARTERLY` (3か月) * `MANUAL`:この設定は、作成と削除が手動で制御されているエンティティ(ワークロードやダッシュボードなど)にのみ適用されます。 @@ -105,7 +113,7 @@ New Relicがサポートしていないソースからのテレメトリをす ### 合成されたエンティティの予約済み属性 [#reserved-attributes] -これらの属性は、受信するテレメトリから合成することを意図しています。これらは、影響や結果を把握していない限り、設定**しないでください**。 +これらの属性は、受信するテレメトリから合成することを意図しています。これらは、影響や結果を把握していない限り、設定**Do not**でください。
- * **最大接続:**データソースに対して利用可能な最大接続数。通常これは設定可能なパラメーターです。 - * **アクティブ接続:**データソース内における、現在のアクティブな接続数。 - * **アイドル接続:**データソース内における、現在のアイドルな接続数。 + * **Max connections:** + + データソースに対して利用可能な最大接続数。通常これは設定可能なパラメーターです。 + + * **Active connections:** + + データソース内における、現在のアイドルな接続数。 + + * **Idle connections:** + + データソース内における、現在のアイドルな接続数。
- * **最大接続:**データソースに対して利用可能な最大接続数。通常これは設定可能なパラメーターです。 - * **アクティブ接続:**データソース内における、現在のアクティブな接続数。 - * **アイドル接続:**データソース内における、現在のアイドルな接続数。 - * **待機時間:**接続が処理されるまでに待たなくてはならない平均時間。 - * **デストロイド接続:**デストロイド接続数。 + * **Max connections:** + + データソースに対して利用可能な最大接続数。通常これは設定可能なパラメーターです。 + + * **Active connections:** + + データソース内における、現在のアイドルな接続数。 + + * **Idle connections:** + + データソース内における、現在のアイドルな接続数。 + + * **Wait time:** + + 接続が処理されるまでに待たなくてはならない平均時間。 + + * **Destroyed connections:** + + デストロイド接続数。
- * **最大接続:**データソースに対して利用可能な最大接続数。通常これは設定可能なパラメーターです。 - * **アクティブ接続:**データソース内における、現在のアクティブな接続数。 - * **アイドル接続:**データソース内における、現在のアイドルな接続数。 - * **作成済み接続:**作成された接続数。 + * **Max connections:** + + データソースに対して利用可能な最大接続数。通常これは設定可能なパラメーターです。 + + * **Active connections:** + + データソース内における、現在のアイドルな接続数。 + + * **Idle connections:** + + データソース内における、現在のアイドルな接続数。 + + * **Created connections:** + + 作成された接続数。
- **WebSphere PMIメトリックス** + + **WebSphere PMI metrics** + - **詳細** + + **Details** +
- **WebSphere PMIメトリックス** + + **WebSphere PMI metrics** + - **詳細** + + **Details** +
- **WebSphere PMIメトリックス** + + **WebSphere PMI metrics** + - **詳細** + + **Details** +
- **WebSphere PMIメトリックス** + + **WebSphere PMI metrics** + - **詳細** + + **Details** +
- **WebSphere PMIメトリックス** + + **WebSphere PMI metrics** + - **詳細** + + **Details** +
- **WebSphere PMIメトリックス** + + **WebSphere PMI metrics** + - **詳細** + + **Details** +
- stats.GlobalTimeoutCount + stats.LiveCount
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **New Relicメトリックス** + + **New Relic metric** + @@ -2891,7 +3162,7 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic
- [**タイプ**](/docs/agents/java-agent/custom-instrumentation/custom-jmx-instrumentation-yaml#attribute-type) + [**Type**](/docs/agents/java-agent/custom-instrumentation/custom-jmx-instrumentation-yaml#attribute-type) @@ -2910,11 +3181,15 @@ WebLogicでは、デフォルトでJMXが有効になっています。New Relic
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- **WebLogic JMXメトリックス** + + **WebLogic JMX metrics** + - **詳細** + + **Details** +
- インテグレーション + 機能
+ [AIモニタリング](/docs/ai-monitoring/intro-to-ai-monitoring) + + Javaエージェントのバージョン8.12.0以降を使用している場合は、特定のAIライブラリおよびフレームワークからAIデータを収集できます。 + + * [AWS SDK for Java v2 Bedrockランタイムクライアント](https://github.com/aws/aws-sdk-java-v2/)バージョン2.20.157以降 +
[ブラウザのモニタリング](/docs/browser/new-relic-browser/getting-started/introduction-new-relic-browser) diff --git a/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-core.mdx b/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-core.mdx index 4eca9ea26ca..e3398cc1391 100644 --- a/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-core.mdx +++ b/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-core.mdx @@ -319,9 +319,9 @@ Windowsまたは Linuxに、New Relic .NETエージェントをインストー id="aws-elastic-beanstalk" title="AWS Elastic Beanstalk" > - - AWS [Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk) は、サポート対象の .NET環境ではありません。 - + [AWS Elastic Beanstalk](https://aws.amazon.com/elasticbeanstalk)のインストール手順については、以下を参照してください。 + + * [AWS Elastic Beanstalkにインストールする](/docs/agents/net-agent/install-guides/install-net-agent-on-aws-elastic-beanstalk) * サポートされている最小バージョン:8.0.0 - * 確認済みの互換性バージョン: 8.0.0、8.1.0、8.1.1、8.9.1、8.9.2、8.9.3、8.10.0、8.11.0、8.12.0、8.12.1、8.13.11 + * 確認済みの互換性バージョン: 8.0.0、8.1.0、8.1.1、8.9.1、8.9.2、8.9.3、8.10.0、8.11.0、8.12.0、8.12.1、8.13.11、8.13.12 * バージョン8.10.0以降は、.NETエージェントv10.20.1以降でサポートされます。 * バージョン8.12.1以降は、.NETエージェントv10.23.0以降でサポートされます。 diff --git a/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-framework.mdx b/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-framework.mdx index a03e61c8a19..62e87ce6971 100644 --- a/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-framework.mdx +++ b/src/i18n/content/jp/docs/apm/agents/net-agent/getting-started/net-agent-compatibility-requirements-net-framework.mdx @@ -783,7 +783,7 @@ New Relicの.NETエージェントをお試しになりますか?[New Relicア * サポートされている最小バージョン:8.0.0 - * 確認済みの互換性バージョン: 8.0.0、8.1.0、8.1.1、8.9.1、8.9.2、8.9.3、8.10.0、8.11.0、8.12.0、8.12.1、8.13.11 + * 確認済みの互換性バージョン: 8.0.0、8.1.0、8.1.1、8.9.1、8.9.2、8.9.3、8.10.0、8.11.0、8.12.0、8.12.1、8.13.11、8.13.12 * バージョン8.10.0以降は、.NETエージェントv10.20.1以降でサポートされます。 * バージョン8.12.1以降は、.NETエージェントv10.23.0以降でサポートされます。 diff --git a/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx b/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx index 1c019017b88..3eb289f0467 100644 --- a/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx +++ b/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx @@ -185,954 +185,71 @@ Node.js用エージェントは、[Node Package Manager(npm)リポジトリ] -## Node.jsを備えたインストゥルメント [#instrument] - -インストール後、エージェントはサポートされているNode.jsライブラリとフレームワークのカタログを使用して自動インストゥルメントします。これにより、ウェブアプリケーションやサーバーに固有の詳細情報に即座にアクセスできます。 - -未対応のフレームワークまたはライブラリの場合、[Node.jsエージェントAPI](/docs/apm/agents/nodejs-agent/api-guides/nodejs-agent-api)を使用してエージェントを自身でインストゥルメントする必要があります。 - - - - Node.jsエージェントは、以下のデータストアに対するNode.jsアプリケーション呼び出しのパフォーマンスを監視します。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- データストア - - `npm` モジュール名 - - 最小モジュールバージョン - - エージェントの最小バージョン - - メモ -
- [Cassandra](https://www.npmjs.com/package/cassandra-driver) - - `cassandra-driver` - - 3.4.0 - - 1.7.1 - -
- [Elasticsearch](https://www.npmjs.com/package/@elastic/elasticsearch) - - `elasticsearch` - - 7.16.0 - - 11.9.0 - -
- [Memcached](https://www.npmjs.com/package/memcached) - - `memcached` - - 1.0.0 - - 1.33.0 - -
- [MongoDB](https://www.npmjs.com/package/mongodb) - - `mongodb` - - 2.1.0 - - 1.32.0 - -
- [MySQL](https://www.npmjs.com/package/mysql) - - `mysql` - - 2.2.0 - - 1.32.0 - -
- [mysql2](https://www.npmjs.com/package/mysql2) - - `mysql2` - - 1.31.1 - - 1.32.0 - -
- [Redis](https://www.npmjs.com/package/redis) - - `redis` - - 2.0.0 - - 1.31.0 - -
- [Postgres](https://www.npmjs.com/package/pg) - - `pg` - - 8.2+ - - 9.0.0 - - [ネイティブ](https://www.npmjs.com/package/pg-native)と[ピュアのJavaScript](https://www.npmjs.com/package/pg-js)パッケージを含む -
- [Prisma](https://www.prisma.io/) - - [`@prisma/client`](https://www.npmjs.com/package/@prisma/client) - - 5.0.0 - - 9.11.0 - - Prismaインストゥルメンテーションは、Prisma自体をデータストアとして扱い、Prismaが使用するように設定された基礎となるSQLまたはNoSQLをデータストアとして扱いません。つまり、メトリクスとトレースによりPrisma ORMクエリ(`find`や`updateMany`)が表示され、SQLステートメント(`SELECT`や`UPDATE`)は表示されません。例外として、未処理のPrismaクエリは、実際の未処理のSQLまたはNoSQLクエリを記録します。 -
- [イオレディス](https://www.npmjs.com/package/ioredis) - - [`ioredis`](https://www.npmjs.com/package/ioredis) - - 3.0+ - - 1.26.2 - -
-
- - - * [grpc-js](https://www.npmjs.com/package/@grpc/grpc-js)ライブラリは、単項、ストリーミング、双方向のクライアント呼び出しでサポートされています。 - - - - Node.jsエージェントは、ネイティブの`http`および`fetch`モジュールをインストゥルメントします。さらに、人気のある[undici](https://www.npmjs.com/package/undici)クライアントもサポートされています。 - - **Note**:[バージョン 11.1.0](/docs/release-notes/agent-release-notes/nodejs-release-notes/node-agent-11-1-0)以降では、 `fetch`と`undici`の両方がサポートされています。 - - [aws-sdk](https://www.npmjs.com/package/aws-sdk)を使用したAmazon Web Services(AWS)へのすべての呼び出しが追跡されます。 - - - - [さまざまなデータベースとデータベースドライバを対象にインスタンスの詳細](/docs/apm/applications-menu/features/analyze-database-instance-level-performance-issues)を収集します。APMにおいて特定のインスタンスおよびデータベース情報の種類が見えるかどうかは、エージェントのバージョンによって異なります。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- データベース - - `npm` モジュール名 - - 最小モジュールバージョン - - エージェントの最小バージョン -
- [PostgreSQL](https://www.postgresql.org/) - - [pg](https://www.npmjs.com/package/pg) - - 8.2+ - - 9.0.0 -
- [Redis](http://redis.io/) - - [redis](https://www.npmjs.com/package/redis) - - 2.0.0 - - 1.31.0 -
- [MongoDB](https://www.mongodb.com/) - - [mongodb](https://www.npmjs.com/package/mongodb) - - 2.1.0 - - 1.32.0 -
- [MySQL](http://www.mysql.com/) - - [mysql](https://www.npmjs.com/package/mysql) - - 2.2.0 - - 1.32.0 -
- [mysql2](http://www.mysql.com/) - - [mysql2](https://www.npmjs.com/package/mysql2) - - 1.3.1 - - 1.32.0 -
- [Memcached](https://memcached.org/) - - [memcached](https://www.npmjs.com/package/memcached) - - 1.0.0 - - 1.33.0 -
- [Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html) - - [Elasticsearch](https://www.npmjs.com/package/@elastic/elasticsearch) - - 7.16.0 - - 11.9.0 -
- [Amazon DynamoDB](https://aws.amazon.com/dynamodb/) - - [aws-sdk](https://www.npmjs.com/package/aws-sdk) - バージョン2と3の両方。 - - 2.380.0 - - 6.1.0 -
- [Prisma](https://prisma.io/) - - [@prisma/クライアント](https://www.npmjs.com/package/@prisma/client) - - 5.0.0 - - 11.0.0 -
- - 現在、New Relicエージェントにリストされてないデータストアからインスタンスレベルの情報をリクエストするには、[support.newrelic.com](https://support.newrelic.com)までお問い合わせください。 -
- - - [コンテキストでAPMログ](/docs/apm/new-relic-apm/getting-started/get-started-logs-context)をサポートするために、Node.jsエージェントは次のライブラリをインストゥルメントします。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ロギングライブラリ - - `npm` モジュール名 - - 最小モジュールバージョン - - エージェントの最小バージョン -
- [winston](https://github.com/winstonjs/winston) - - `winston` - - 3.0.0 - - 8.11.0 -
- [pino](https://github.com/pinojs/pino) - - `pino` - - 7.0.0 - - 8.11.0 -
- [bunyan](https://www.npmjs.com/package/bunyan) - - `bunyan` - - 1.8.12 - - 9.3.0 -
-
- - - [メッセージキューのインストゥルメンテーション](/docs/agents/nodejs-agent/troubleshooting/troubleshoot-message-consumers)は、[New Relic Node.js エージェントv2以上](/docs/release-notes/agent-release-notes/nodejs-release-notes)でのみ使用可能です。現在サポートされているメッセージキューのインストゥルメンテーション: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- メッセージキュー - - `npm` モジュール名 - - 最小モジュールバージョン - - エージェントの最小バージョン -
- [amqplib](https://www.npmjs.com/package/amqplib) - - `amqplib` - - 0.5.0 - - 2.0.0 -
- [Amazon SQS - Amazon SDK V2](https://www.npmjs.com/package/aws-sdk) - - `@aws-sdk/client-sqs` - - @aws-sdk 2.2.48 - - 6.2.0 -
- [Amazon SQS - Amazon SDK V3](https://github.com/aws/aws-sdk-js-v3) - - `@aws-sdk/client-sqs` - - @aws-sdk v3.0.0 - - 8.7.1 -
- [Amazon SNS - Amazon SDK V2](https://www.npmjs.com/package/aws-sdk) - - `@aws-sdk/client-sns` - - @aws-sdk 2.2.48 - - 6.2.0 -
- [Amazon SNS - Amazon SDK V3](https://github.com/aws/aws-sdk-js-v3) - - `@aws-sdk/client-sns` - - @aws-sdk v3.0.0 - - 8.7.1 -
- - 他のメッセージキューライブラリには、[カスタムインストゥルメンテーション](/docs/agents/nodejs-agent/supported-features/nodejs-custom-instrumentation#message-client)を使用します。 -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- ライブラリ - - `npm` モジュール名 - - 最小モジュールバージョン - - エージェントの最小バージョン -
- [ディレクター](https://www.npmjs.com/package/director) - - `director` - - 1.2以上 - - 2.0.0 -
- [ジェネリックプール](https://www.npmjs.com/package/generic-pool) - - `generic-pool` - - 2.4+ - - 0.9以上 -
-
- - - [TypeScript](https://www.npmjs.com/package/typescript)はJavaScriptにコンパイルできるプログラミング言語です。インストール後、Node.jsエージェントはTypeScriptアプリを自動インストゥルメントし、すぐにパフォーマンスデータにアクセスできるようにします。 - - [ES モジュール](https://nodejs.org/api/esm.html#introduction)は、共有/再利用のためにJavaScriptコードをパッケージ化するための公式標準です。 Node.jsエージェントは、Node.jsバージョン16.12.0を実行するESモジュールアプリケーションを**experimental**サポートします。 以降およびエージェント バージョン 9.1.0 以降。追加情報と手順については、[ESモジュールのドキュメント](/docs/apm/agents/nodejs-agent/installation-configuration/es-modules)を参照してください。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- フレームワーク - - `npm` モジュール名 - - 最小モジュールバージョン - - エージェントの最小バージョン - - メモ -
- [Express](https://www.npmjs.com/package/express) - - `express` - - 4.6.0 - - 2.6.0 - -
- [Restify](https://www.npmjs.com/package/restify) - - `restify` - - 5.0.0 - - 2.6.0 - -
- [Connect](https://www.npmjs.com/package/connect) - - `connect` - - 2.0.0 - - 2.6.0 - -
- [Hapi](https://www.npmjs.com/package/@hapi/hapi) - - `@hapi/hapi` - - 20.0.0 - - 9.0.0 - - エージェントのv9.0.0では、サポートされるHapiの最小バージョンをv20.0.0以降に更新しました。v20.0.0未満のすべてのバージョンは、セキュリティ上の理由からHapiにより非推奨とされています。[サポートポリシー](https://hapi.dev/policies/support/)を参照してください。 -
- [Koa](https://www.npmjs.com/package/koa) - - `koa` - - 2.0.0 - - 3.2.0 - - エージェントとともにロードされた[外部モジュール](https://github.com/newrelic/node-newrelic-koa) -
- [Fastify](https://www.npmjs.com/package/fastify) - - `fastify` - - 2.0.0 - - 8.5.0 - -
- [Nest.js](https://nestjs.com/) - - `@nestjs/core` - - 8.0.0 - - 10.1.0 - - `nest start`コマンドを使用してアプリケーションを起動する場合は、New Relicエージェントを読み込むように起動バイナリを変更します。 `nest start --exec 'node -r newrelic'` -
- [Next.js](https://www.npmjs.com/package/next) - - `next` - - 12.0.9- 13.3.0 - - 10.1.0 - - ミドルウェアインストゥルメンテーションにはv12.2.0以降が必要 -
- - サポートされているフレームワークをデフォルトのルーターとともに使用している場合、Node.jsエージェントはフレームワークのルート名をそのまま読み取ることができます。ただし、フレームワークが提供する名前より固有な名前が必要な場合は、New Relicが[Node.jsトランザクションネーミングAPI](/docs/nodejs/nodejs-transaction-naming-api) によって提供する1つ以上のツールを使用できます。 - - - 2021年11月に、いくつかの機能のサポートを終了しました。これには、Node.jsエージェント用のHapi 19.2より前のOracle Driver PackageとHapiバージョンが含まれています。この移行の準備方法などの詳細については、[サポートフォーラムの投稿](https://discuss.newrelic.com/t/important-upcoming-changes-to-capabilities-and-support-across-node-agents-suggested-pagerduty-responders-incident-workflows-and-kubernetes-instrumentation/164481?u=dholloran)を参照してください。 - -
-
+/\* 開始:互換性テーブル \*/ + +## インストゥルメントされたモジュール [#instrument] + +インストール後、エージェントはサポートされているNode.jsライブラリとフレームワークのカタログを使用して自動インストゥルメントします。これにより、ウェブアプリケーションやサーバーに固有の詳細情報に即座にアクセスできます。 未対応のフレームワークまたはライブラリの場合、[Node.jsエージェントAPI](https://newrelic.github.io/node-newrelic/API.html)を使用してエージェントを自身でインストゥルメントする必要があります。 + +**注意**:サポートされている最新バージョンは、サポート対象の最新バージョンを反映していない可能性があります。 + +| パッケージ名 | サポートされている最小バージョン | サポートされている最新バージョン | 導入時バージョン\* | +| --------------------------------- | ---------------- | ---------------- | -------------------------------------- | +| `@apollo/gateway` | 2.3.0 | 2.8.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `@apollo/server` | 4.0.0 | 4.10.4 | `@newrelic/apollo-server-plugin@2.1.0` | +| `@aws-sdk/client-bedrock-runtime` | 3.0.0 | 3.583.0 | 11.13.0 | +| `@aws-sdk/client-dynamodb` | 3.0.0 | 3.585.0 | 8.7.1 | +| `@aws-sdk/client-sns` | 3.0.0 | 3.583.0 | 8.7.1 | +| `@aws-sdk/client-sqs` | 3.0.0 | 3.583.0 | 8.7.1 | +| `@aws-sdk/smithy-client` | 3.0.0 | 3.374.0 | 8.7.1 | +| `@elastic/elasticsearch` | 7.16.0 | 8.13.1 | 11.9.0 | +| `@grpc/grpc-js` | 1.4.0 | 1.10.8 | 8.17.0 | +| `@hapi/hapi` | 20.1.2 | 21.3.9 | 9.0.0 | +| `@koa/router` | 2.0.0 | 12.0.1 | 3.2.0 | +| `@langchain/core` | 0.1.17 | 0.2.3 | 11.13.0 | +| `@nestjs/cli` | 8.0.0 | 10.3.2 | 10.1.0 | +| `@prisma/client` | 5.0.0 | 5.14.0 | 11.0.0 | +| `@smithy/smithy-client` | 3.0.0 | 3.0.1 | 11.0.0 | +| `amqplib` | 0.5.0 | 0.10.4 | 2.0.0 | +| `apollo-server` | 2.14.0 | 3.13.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `apollo-server-express` | 2.14.0 | 3.13.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `apollo-server-fastify` | 2.14.0 | 3.13.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `apollo-server-hapi` | 3.0.0 | 3.13.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `apollo-server-koa` | 2.14.0 | 3.13.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `apollo-server-lambda` | 2.14.0 | 3.13.0 | `@newrelic/apollo-server-plugin@1.0.0` | +| `aws-sdk` | 2.2.48 | 2.1630.0 | 6.2.0 | +| `bluebird` | 2.0.0 | 3.7.2 | 1.27.0 | +| `bunyan` | 1.8.12 | 1.8.15 | 9.3.0 | +| `cassandra-driver` | 3.4.0 | 4.7.2 | 1.7.1 | +| `connect` | 2.0.0 | 3.7.0 | 2.6.0 | +| `director` | 1.2.0 | 1.2.8 | 2.0.0 | +| `express` | 4.6.0 | 4.19.2 | 2.6.0 | +| `fastify` | 2.0.0 | 4.27.0 | 8.5.0 | +| `generic-pool` | 2.4.0 | 3.9.0 | 0.9.0 | +| `ioredis` | 3.0.0 | 5.4.1 | 1.26.2 | +| `koa` | 2.0.0 | 2.15.3 | 3.2.0 | +| `koa-route` | 2.0.0 | 4.0.1 | 3.2.0 | +| `koa-router` | 2.0.0 | 12.0.1 | 3.2.0 | +| `memcached` | 2.2.0 | 2.2.2 | 1.26.2 | +| `mongodb` | 2.1.0 | 6.7.0 | 1.32.0 | +| `mysql` | 2.2.0 | 2.18.1 | 1.32.0 | +| `mysql2` | 1.3.1 | 3.9.9 | 1.32.0 | +| `next` | 13.0.0 | 14.2.3 | `@newrelic/next@0.7.0` | +| `openai` | 4.0.0 | 4.47.2 | 11.13.0 | +| `pg` | 8.2.0 | 8.11.5 | 9.0.0 | +| `pg-native` | 2.0.0 | 3.0.1 | 9.0.0 | +| `pino` | 7.0.0 | 9.1.0 | 8.11.0 | +| `q` | 1.3.0 | 1.5.1 | 1.26.2 | +| `redis` | 2.0.0 | 4.6.14 | 1.31.0 | +| `restify` | 5.0.0 | 11.1.0 | 2.6.0 | +| `superagent` | 2.0.0 | 9.0.2 | 4.9.0 | +| `undici` | 4.7.0 | 6.18.2 | 11.1.0 | +| `when` | 3.7.0 | 3.7.8 | 1.26.2 | +| `winston` | 3.0.0 | 3.13.0 | 8.11.0 | + +\*パッケージが指定されていない場合は、`newrelic`パッケージ内でサポートされます。 + +/\* 終了:互換性テーブル \*/ ## エージェントを他のNew Relic機能に接続する [#digital-intelligence-platform] diff --git a/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/introduction-new-relic-nodejs.mdx b/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/introduction-new-relic-nodejs.mdx index 9697958a4e0..7e92af0650b 100644 --- a/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/introduction-new-relic-nodejs.mdx +++ b/src/i18n/content/jp/docs/apm/agents/nodejs-agent/getting-started/introduction-new-relic-nodejs.mdx @@ -32,6 +32,8 @@ New RelicからNode.jsを監視することにより、コードの行レベル Node.jsエージェントをインストールしたら、インストゥルメンテーションを拡張します。 +Node.jsエージェントは、さまざまな[サードパーティパッケージ](/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent/#instrumented-modules)によって自動インストゥルメントされています。ただし、[Apollo Server](https://github.com/newrelic/newrelic-node-apollo-server-plugin/blob/abfb3ede982169c4e1b1bcf9974ff3f6b01c68ea/README.md)と[Next.js](https://github.com/newrelic/newrelic-node-nextjs/blob/ea20b76a13c84f4f3c48e9544e18e568b8e41c33/README.md)のテレメトリーが必要な場合は、他に2つのモジュールが必要になります。 + @@ -55,38 +57,16 @@ Node.jsエージェントをインストールしたら、インストゥルメ * [Node.jsカスタムインストゥルメンテーション](/docs/agents/nodejs-agent/supported-features/nodejs-custom-instrumentation)を実装します。 * [API呼び出しを介してカスタムメトリクスを収集します](/docs/agents/nodejs-agent/supported-features/nodejs-custom-metrics)。 * [Node.jsエージェントAPI](/docs/agents/nodejs-agent/supported-features/nodejs-agent-api)を使用して、このエージェントの機能を制御、カスタマイズ、または拡張します。 + * [サンプルアプリケーション](https://github.com/newrelic/newrelic-node-examples)を参照して、すぐに使用できるさまざまなカスタムインストゥルメンテーションの動作を確認してください。 - - - - - - - - - - - - - + diff --git a/src/i18n/content/jp/docs/apm/agents/python-agent/getting-started/compatibility-requirements-python-agent.mdx b/src/i18n/content/jp/docs/apm/agents/python-agent/getting-started/compatibility-requirements-python-agent.mdx index d6386e85819..e9dcf54aaf7 100644 --- a/src/i18n/content/jp/docs/apm/agents/python-agent/getting-started/compatibility-requirements-python-agent.mdx +++ b/src/i18n/content/jp/docs/apm/agents/python-agent/getting-started/compatibility-requirements-python-agent.mdx @@ -47,7 +47,7 @@ New Relicアカウントをまだお持ちでない場合は、[New Relicアカ
- オープンソースのテレメトリー - - * 独自のインテグレーションを作成するには、[Node.js Telemetry SDK](/docs/data-ingest-apis/get-data-new-relic/new-relic-sdks/telemetry-sdks-send-custom-telemetry-data-new-relic)を使用します。 - * GraphQLペイロードを可視化するには、[ApolloServerプラグイン](/docs/agents/nodejs-agent/supported-features/apollo-server-plugin-nodejs)を使用します。 -
- Logs in Context + インストゥルメンテーションを拡張する - * [Winston](https://github.com/winstonjs/winston)または[Pino](https://github.com/pinojs/pino)ログデータを強化するには、Node.jsの[コンテキストの自動ログ](/docs/logs/logs-context/configure-logs-context-nodejs)ソリューションを使用します。 -
- トレース - - * [ディストリビューティッド(分散)トレーシング](/docs/apm/distributed-tracing/getting-started/introduction-distributed-tracing)を有効にします。 -
- Python(CCython/PyPy)のサポート対象バージョン:2.7、3.7、3.8、3.9、3.10および3.11。 + サポートされているPython(CPython/PyPy)バージョン:3.7、3.8、3.9、3.10、3.11、3.12。 **Recommendation:** Pythonバージョン3.7以降を当社のエージェントと共に使用します。 @@ -221,12 +221,16 @@ New Relicでは、エージェントを定期的に、少なくとも3か月ご - 未定 + 2024年4月1日(下記注記参照)
+ + Python 2.7は、今後のフレームワーク作業やメンテナンスでは公式にはサポートされなくなりましたが、エージェントからPython 2.7が削除される日付は未定です。 + + ## エージェントを他の機能に接続する [#digital-intelligence-platform] Pythonエージェントは他の機能と統合して、エンドツーエンドの可視性を提供します。 diff --git a/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/choose-infra-install-method.mdx b/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/choose-infra-install-method.mdx new file mode 100644 index 00000000000..8b7d97e9aea --- /dev/null +++ b/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/choose-infra-install-method.mdx @@ -0,0 +1,96 @@ +--- +title: infrastructureエージェントのインストール方法を選択する +tags: + - Infrastructure + - Install the infrastructure agent + - Get started +metaDescription: An overview of installation methods for New Relic's infrastructure agent and infrastructure integrations. +freshnessValidatedDate: '2024-05-21T00:00:00.000Z' +translationType: human +--- + +import osAnsibleRed from 'images/os_icon_ansible-red.webp' + +import osChef from 'images/os_icon_chef.webp' + +import osEbs from 'images/os_icon_ebs.webp' + +import osPuppet from 'images/os_icon_puppet.webp' + +import infrastructureAngetsandNr from 'images/infrastructure_diagram_angets-and-nr.webp' + +import osDocker from 'images/os_icon_docker.webp' + +infrastructureエージェントは、ホストに関するデータを収集する実行可能ファイルです。infrastructureエージェントを有効にすると、[一部のサードパーティサービス](/docs/infrastructure/host-integrations/installation/install-infrastructure-host-integrations)からのデータを報告し、[ログデータ](/docs/logs/enable-log-monitoring-new-relic/enable-log-monitoring-new-relic/forward-your-logs-using-infrastructure-agent)を収集することができます。 + +infrastructureエージェントは、Windows、macOS、および多くのLinuxディストリビューションで実行できます。このドキュメントでは、infrastructureエージェントをインストールするために使用できるさまざまな方法について説明します。開始するには、[New Relicアカウント](https://newrelic.com/signup)とライセンスキーが必要です。 + +## infrastructureエージェントを手動でインストールする [#manual-install] + +複数のホストを監視したいが、それほど複雑ではない場合は、手動インストール手順に従うことをお勧めします。通常は、コマンドラインを使用してエージェントが存在するディレクトリを作成し、ライセンスキー情報を追加します。OSによっては、設定ファイルを作成して編集する必要がある場合もあります。手動でインストールするには、ここから始めてください。 + +* [パッケージマネージャーを使用してLinuxシステムにインストールする](/docs/infrastructure/install-infrastructure-agent/linux-installation/install-infrastructure-monitoring-agent-linux) +* [macOSにインストールする](/docs/infrastructure/install-infrastructure-agent/macos-installation/install-infrastructure-monitoring-agent-macos) +* Install on Windows with [MSI install](/docs/infrastructure/install-infrastructure-agent/windows-installation/install-infrastructure-monitoring-agent-windows), [zip install](/docs/infrastructure/install-infrastructure-agent/windows-installation/zip-assisted-install-infrastructure-agent-windows), or [manual zip install](/docs/infrastructure/install-infrastructure-agent/windows-installation/zip-manual-install-infrastructure-agent-windows) + +## infrastructureエージェントをプログラミングでデプロイする [#deploy-programmatically] + +いくつかの設定管理およびデプロイツールを使用して、プログラミングでinfrastructureエージェントをデプロイできます。 + +* Ansible + + [Ansible](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-ansible) + +* Chef + + [Chef](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-chef) + +* Docker + + [Docker](/docs/infrastructure/install-infrastructure-agent/linux-installation/docker-container-infrastructure-monitoring)(コンテナとしてインストール) + +* EBS + + [Elastic Beanstalk](/docs/infrastructure/install-infrastructure-agent/config-management-tools/install-infrastructure-agent-aws-elastic-beanstalk) + +* Puppet + + [Puppet](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-puppet) + +## ガイド付きインストールを使用する [#guided-install] + +ガイド付きインストールは、インスタンスを監視するために実行できる単一のCLIコマンドです。これは、小規模な組織や、New Relicを試してみたいユーザーにとって優れた選択肢です。CLIコマンドを実行すると、 New Relicシステムを検査して、監視する必要があるその他の互換性テクノロジーが検出されます。デフォルトで[インフラストラクチャステータスAPI](https://github.com/newrelic/infrastructure-agent/blob/master/docs/status_api.md)も受け取ります。 + + + New Relic CLIはFedRAMPサーバーをサポートしません。FedRAMPP顧客の場合は、[手動のインストール手順](#manual-install)を参照してください。 + + +開始するには、[New Relicデータセンターの地域](/docs/accounts/accounts-billing/account-setup/choose-your-data-center)を選択してください。 + + + + ガイド付きインストール(米国地域) + + + + ガイド付きインストール(EU地域) + + + +## 次のステップ [#whats-next] + +infrastructureエージェントをインストールしたら、次の操作を実行します。 + +* [エージェントを設定する](/docs/infrastructure/install-configure-infrastructure/configuration/configure-infrastructure-agent)方法、または[設定テンプレート](https://github.com/newrelic/infrastructure-agent/blob/master/assets/examples/infrastructure/newrelic-infra-template.yml.example)を編集する方法を学びます +* [オンホストインテグレーション](/docs/integrations/host-integrations/getting-started/introduction-host-integrations)(ApacheやMySQLなど)をインストールします +* [infrastructureエージェントを使用したログの転送を有効にします](/docs/logs/enable-new-relic-logs/1-enable-logs/forward-your-logs-using-new-relic-infrastructure) +* [エージェントの管理](/docs/infrastructure/install-infrastructure-agent/manage-your-agent)方法を学びます +* 当社のinfrastructureエージェントは軽量の実行可能ファイルです。それが何を意味するかについて詳しくは、[こちら](/docs/infrastructure/new-relic-infrastructure/getting-started/infrastructure-agent-performance-overhead)をご覧ください。 \ No newline at end of file diff --git a/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring.mdx b/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring.mdx index b71e828b9ca..2a90e29592d 100644 --- a/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring.mdx +++ b/src/i18n/content/jp/docs/infrastructure/infrastructure-monitoring/get-started/get-started-infrastructure-monitoring.mdx @@ -5,11 +5,13 @@ tags: - Infrastructure monitoring - Get started metaDescription: 'New Relic provides flexible, dynamic monitoring of your entire infrastructure. Learn about features, installation, and use cases.' -freshnessValidatedDate: never +freshnessValidatedDate: '2024-05-21T00:00:00.000Z' translationType: human --- -import infrastructureMainUi from 'images/infrastructure_screenshot-full_main_infra_hosts_ui.webp' +import infrastructureOverviewUI from 'images/infrastructure_screenshot-overview.webp' + +import infrastructureAngetsandNr from 'images/infrastructure_diagram_angets-and-nr.webp' import infrastructureInventory from 'images/infrastructure_screenshot-full_inventory-page.webp' @@ -17,65 +19,41 @@ import infrastructureEvents from 'images/infrastructure_screenshot-full_events-p import infrastructurek8ClusterExplorer from 'images/infrastructure_screenshot-full_k8-cluster-explorer.webp' -New Relicでは、クラウドや専用ホストで実行しているサービスや、オーケストレーションされた環境で実行しているコンテナなど、フレキシブルでダイナミックなインフラストラクチャ全体のオブザーバビリティを提供します。すべてのホストの健全性とパフォーマンスを、アプリケーションのコンテキストやログ、設定変更と関連付けることができます。 - -Infrastructureモニタリングを使用して、現在の運用チームは、データセンターや数千ものAmazonやGoogle Cloud、Azureインスタンスなどの複雑なハイブリッドシステムの完全なオブザーバビリティを実現します。 - -当社のインフラストラクチャモニタリングのソリューションに関する詳細と、その開始方法を続けてお読みください。まだ作成されていない場合は、無料のNew Relicアカウントを以下で作成し、今すぐデータの監視を開始してください。 - - +New Relicを使用すると、ソフトウェアインフラストラクチャを監視できるため、信頼性の高いシステムを提供できます。クラウド、専用ホスト、またはオーケストレーションされた環境で実行されるコンテナのいずれで作業している場合でも、infrastructureモニタリングを使用して健全性とパフォーマンスの結果を向上させることができます。 New Relic - Infrastructure Monitoring
- インフラストラクチャに関する**Hosts**ページには、システム、ネットワーク、プロセス、ストレージのパフォーマンス指標が表示されます。 + **[one.newrelic.com](https://one.newrelic.com) > All Capabilities > Infrastructure**から:**Hosts**ページには、システム、ネットワーク、プロセス、およびストレージに関するパフォーマンスデータが表示されます。
- - Infrastrcutureモニタリングを効果的に使用する方法を知りたいですか?当社のガイド付き[インフラストラクチャと根本原因のラボ](/docs/infrastructure/infrastructure-monitoring/get-started/identify-root-causes-guide)をお試しください。 - - -## Infrastructureモニタリングソリューション [#infrastructure-solutions] - -当社には、幅広いInfrastructureモニタリングソリューションがあります。概要は次のとおりです。 - -* Linux、macOS、Windowsオペレーティングシステム用の[Infrastructureエージェント](/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent)。 -* [Kubernetes](/docs/kubernetes-pixie/kubernetes-integration/installation/kubernetes-integration-install-configure)と[Pixie](/docs/kubernetes-pixie/auto-telemetry-pixie/get-started-auto-telemetry-pixie)インテグレーション。 -* Amazon、Azure、Google Cloud Platform向け[クラウドインテグレーション](/docs/infrastructure/infrastructure-integrations/get-started/introduction-infrastructure-integrations/#cloud-integrations)。 -* [Prometheusのインテグレーション](/docs/infrastructure/prometheus-integrations/get-started/send-prometheus-metric-data-new-relic)。 -* MySQL、NGINX、Cassandra、Kafkaなどのサービス向けの[オンホストインテグレーション](/docs/infrastructure/infrastructure-integrations/get-started/introduction-infrastructure-integrations/#on-host-integrations)(いくつか例を挙げます)。オンホストインテグレーションのほとんどは、Infrastructureエージェントとともにインストールされ、それと連携してデータを送信します。 +## 1つのエージェントで多くの機能を実現 [#overview] -## クイック・スタート:ガイド付きインストールを使用 [#quick] +infrastructureモニタリング機能にアクセスするには、infrastructureエージェントが必要です。エージェントをインストールすると、オンプレミスまたは仮想化ホストのシステムリソース、プロセスに関するパフォーマンスデータと正常性のデータが収集されます。そこから、エージェントを、サポートされている[オンホストインテグレーション](/docs/integrations/host-integrations/getting-started/introduction-host-integrations)の1つとペアリングするように設定したり、[ログを転送する](/docs/logs/enable-log-monitoring-new-relic/enable-log-monitoring-new-relic/forward-your-logs-using-infrastructure-agent)ように設定したりできます。 -最も手っ取り早い方法は、当社のガイド付きインストールを使用することです。このインストールでは、[Infrastructureモニタリングエージェント](/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent)をインストールし、ご使用の環境でアプリケーションとログソースを検出します。 - - - - ガイド付きインストール - +Agents and New Relic - - EUガイド付きインストール - - +infrastructureモニタリングにより、現在の運用チームは、単一のデータセンターから数千ものAmazonやGoogle Cloud 、Azureインスタンスなどの複雑なハイブリッドシステムを詳細に調査できるようになります。アーキテクチャーがどのようなものであっても、当社のinfrastructureモニタリング機能は、システムのトラブルシューティングと改善に役立ちます。以下にいくつかの解決策をご紹介します。 -ガイド付きインストールは、ほとんどの設定と連動します。ただし、ご希望に添えない場合は、[その他のインストールオプション](#install)をご確認ください。 +* Linux、macOS、Windowsオペレーティングシステム用の[infrastructureエージェント](/docs/infrastructure/install-infrastructure-agent/get-started/install-infrastructure-agent) +* [Kubernetes](/docs/kubernetes-pixie/kubernetes-integration/installation/kubernetes-integration-install-configure)と[Pixie](/docs/kubernetes-pixie/auto-telemetry-pixie/get-started-auto-telemetry-pixie)インテグレーション +* Amazon、Azure、Google Cloud Platform向けの[クラウドインテグレーション](/docs/infrastructure/infrastructure-integrations/get-started/introduction-infrastructure-integrations/#cloud-integrations) +* [Prometheusのインテグレーション](/docs/infrastructure/prometheus-integrations/get-started/send-prometheus-metric-data-new-relic) +* MySQL、NGINX、Cassandra、Kafkaなどのサービス向けの[オンホストインテグレーション](/docs/infrastructure/infrastructure-integrations/get-started/introduction-infrastructure-integrations/#on-host-integrations)(いくつか例を挙げます) ## 実行可能なデータでMTTRを短縮する [#why-it-matters] -リアルタイムのメトリクスと解析により、ホストパフォーマンスの変化を設定の変更と関連付けて考察することで、[平均解決時間](https://newrelic.com/devops/how-to-reduce-mttr)(MTTR)を短縮できます。**Inventory**ページでは、エステート全体を検索し、特定のパッケージ、設定ファイル、または起動スクリプトが含まれるホストを正確に特定できます。 +リアルタイムのメトリクスと解析により、ホストパフォーマンスの変化を設定の変更と関連付けて考察することで、[平均解決時間](https://newrelic.com/devops/how-to-reduce-mttr)(MTTR)を短縮できます。インフラストラクチャデータがどのように役立つかの例を次に示します。 + +**Inventory**ページでは、主にエステートのすべてのインフラストラクチャ[エンティティ](/docs/new-relic-one/use-new-relic-one/core-concepts/what-entity-new-relic)を取り上げています。
- **Inventory**ページでは、主にエステートのすべてのインフラストラクチャ[エンティティ](/docs/new-relic-one/use-new-relic-one/core-concepts/what-entity-new-relic)を取り上げています。 + **[one.newrelic.com](https://one.newrelic.com) > All Capabilities > Infrastructure monitoring > Inventory**:システム全体を検索し、特定のパッケージ、設定ファイル、または起動スクリプトが含まれるホストを正確に特定できます。
-**Events**ページでは、設定の変更、再起動、SSHセッション、その他の[重要なイベント](/docs/infrastructure-events-page#types)の変更を追跡できます。リアルタイムフィードで、インフラストラクチャ全体の変更ログを提供します。当社のソリューションは5秒以内に[安全に](/docs/infrastructure/new-relic-infrastructure/getting-started/infrastructure-security)データを収集・表示するため、モニタリングが現実から遅れを取ることはありません。 +**Events**ページでは、設定の変更、再起動、SSHセッション、その他の[重要なイベント](/docs/infrastructure-events-page#types)の変更を追跡できます。リアルタイムフィードで、インフラストラクチャ全体の変更ログを提供します。 **Events**ページには、ホストで発生したすべてのもののリアルタイムフィードが含まれます。 -Infrastructureモニタリングツールを使用して、次のことも行えます。 +どのように使用しても、当社のソリューションは[安全に](/docs/infrastructure/new-relic-infrastructure/getting-started/infrastructure-security)データを収集・表示するため、モニタリングが現実から遅れを取ることはありません。 -* [データのクエリ](/docs/using-new-relic/data/understand-data/query-new-relic-data)を行い、[インフラストラクチャイベント](/docs/default-infrastructure-events-attributes)を掘り下げて分析し、チームと共有可能な[カスタムダッシュボード](/docs/dashboards/new-relic-one-dashboards/get-started/introduction-new-relic-one-dashboards)を構築する。 -* サーバー側かアプリケーション側かによらず、問題がどこで発生しても、[InfrastructureモニタリングとのAPMデータ接続](/docs/infrastructure/new-relic-infrastructure/data-instrumentation/new-relic-apm-data-infrastructure)により、パフォーマンスの問題のトラブルシューティングを行う。 -* 関連性のあるInfrastructureチャートから直接、[アラート設定を作成、表示、または更新](/docs/add-edit-or-view-host-alert-information)します。たとえば、アラート条件を[報告しないホスト](/docs/infrastructure/new-relic-infrastructure/configuration/create-infrastructure-host-not-reporting-condition)を作成できます。 +## Infrastructureエージェントをインストールする [#install-infra-agent] -## インフラストラクチャおよびアプリデータのログを表示 [#logs-context] +infrastructureモニタリングにアクセスするには、まずエージェントをインストールする必要があります。Infrastructureエージェントは、Linux、macOS、Windowsシステムにインストールできます。オブザーバビリティのニーズに応じて、システムにエージェントをデプロイするためのいくつかの異なるオプションがあります。ユースケースに適したオプションを決定するには、[infrastructureエージェントのインストール方法の選択](/docs/infrastructure/infrastructure-monitoring/get-started/choose-infra-install-method)を確認することをお勧めします。 -ログとインフラストラクチャのデータを統合して、トラブルシューティングをより簡単かつ迅速にできます。コンテキストのログでは、Kubernetesクラスタなど、インフラストラクチャデータのログを表示することもできます。必要な数の設定ファイルを追加できます。これらのファイルは、ログメタデータを当社のプラットフォームにプッシュするソースとして機能します。 - -エラーとトレースに関連するログメッセージをアプリケーションやホストのUIで直接表示することもできます。New Relicで別のUIページに切り替える必要はありません。詳細については、[コンテキストのAPMログ](/docs/apm/new-relic-apm/getting-started/get-started-logs-context)のドキュメントを参照してください。 - -コンテキストソリューションの自動ログをまだサポートしていない場合は、コンテキストソリューションの手動ログを引き続き使用できます。また、[infrastructureエージェント](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent/)またはその他の[サポートされているサードパーティ製ログフォワーダー](/docs/logs/forward-logs/enable-log-management-new-relic)を使用してログを転送できます。 - -## Infrastructureエージェントをインストールする [#install] - -[ガイド付きインストール](#quick)を使用しない場合、Infrastructureエージェントをインストールする最も簡単な方法は、[パッケージマネージャ](/docs/infrastructure/install-configure-manage-infrastructure/linux-installation/install-infrastructure-linux-using-package-manager)(Linux)または[MSIインストーラ](/docs/infrastructure/install-configure-manage-infrastructure/windows-installation/install-infrastructure-windows-server-using-msi-installer)(Windows)を使用することです。 - -まだNew Relicアカウントがない、またはステップごとの手順に従いたい場合は、チュートリアルを参照して[Linux](/docs/infrastructure/install-configure-manage-infrastructure/linux-installation/install-infrastructure-linux-using-package-manager) \| [Windows](/docs/infrastructure/new-relic-infrastructure/installation/install-infrastructure-windows-server) \| [Elastic Beanstalk](/docs/infrastructure/new-relic-infrastructure/installation/install-infrastructure-agent-aws-elastic-beanstalk) \| [Ansible](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-ansible) \| [Chef](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-using-chef) \| [Puppet](/docs/infrastructure/new-relic-infrastructure/config-management-tools/configure-new-relic-infrastructure-puppet)用のエージェントをインストールしてください。 +当社のソリューションのほとんどは、まずinfrastructureエージェントをインストールし、それと連携してデータを送信する必要があります。 ## Infrastructureサービスインテグレーション [#aws] @@ -128,20 +94,10 @@ Infrastructureインテグレーションにより、一般的な多くのサー * NGINX、Cassandra、MySQLなど、当社の[オンホストインテグレーション](/docs/infrastructure/host-integrations/host-integrations-list)は、Infrastructureエージェントと連携して機能します。 * [New Relic Flex](/docs/introduction-new-relics-flex-integration)と独自のインテグレーションを構築します。 -Understand your Kubernetes nodes and pods, and how the relate to each other. - -
- **[Kubernetes cluster explorer](/docs/integrations/kubernetes-integration/cluster-explorer/kubernetes-cluster-explorer)**は、大規模なKubernetesの実行に関連する問題に対する、強力で革新的な解決策となります。 -
+## インフラストラクチャおよびアプリデータのログを表示 [#logs-context] -## Infrastructureデータを詳しく調べる [#explore] +ログとインフラストラクチャのデータを統合して、トラブルシューティングをより簡単かつ迅速にできます。コンテキストのログでは、Kubernetesクラスタなど、インフラストラクチャデータのログを表示することもできます。必要な数の設定ファイルを追加できます。これらのファイルは、ログメタデータを当社のプラットフォームにプッシュするソースとして機能します。 -UI機能の詳細については、[Infrastructure UIの概要](/docs/infrastructure/infrastructure-ui-pages/infra-ui-overview)を参照してください。 +エラーとトレースに関連するログメッセージをアプリケーションやホストのUIで直接表示することもできます。詳細については、[コンテキストのAPMログ](/docs/apm/new-relic-apm/getting-started/get-started-logs-context)のドキュメントを参照してください。 - - Datadogを使用してインフラストラクチャをモニターしていますが、New Relicのモニタリング機能を無料で試してみませんか?その方法については、[Datadogからの移行方法に関するガイド](/docs/journey-migration/migrating-from-dd/)を参照してください。 - \ No newline at end of file +コンテキストソリューションの自動ログをまだサポートしていない場合は、コンテキストソリューションの手動ログを引き続き使用できます。また、[infrastructureエージェント](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent/)またはその他の[サポートされているサードパーティ製ログフォワーダー](/docs/logs/forward-logs/enable-log-management-new-relic)を使用してログを転送できます。 \ No newline at end of file diff --git a/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx b/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx index 230bae0061e..b45cefd3473 100644 --- a/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx +++ b/src/i18n/content/jp/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx @@ -183,7 +183,7 @@ Infrastructureエージェントは、メーカーの製品寿命までこれら
- [LTS](https://wiki.ubuntu.com/LTS)バージョン 16.04.x、18.04.x、20.04.x、22.04.x 中間リリース20.10、21.04。 + [LTS](https://wiki.ubuntu.com/LTS)バージョン 16.04.x、18.04.x、20.04.x、22.04.x、24.04.x中間リリース20.10、21.04。注意:Ubuntu 24.04ではログはまだサポートされていません。
- `SystemSample` には、CPU、メモリ、ディスク、ネットワークなど、サーバー全体の現在の状態を説明するデータが含まれます。このデータのスナップショットは5秒おきに記録され、`SystemSample`イベントにパッケージされます。これがNew Relicに送信されます。このデータは[**システム**UIタブ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#system)に表示されます。 + `SystemSample` には、CPU、メモリ、ディスク、ネットワークなど、サーバー全体の現在の状態を説明するデータが含まれます。このデータのスナップショットは5秒おきに記録され、`SystemSample`イベントにパッケージされます。これがNew Relicに送信されます。このデータは[**Systems** UIタブ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#system)に表示されます。
- `ProcessSample` は、単一システムで実行されているプログラムから詳細なリソース使用情報を収集します。すべてのアクティブプロセスに関して、このデータのスナップショットは20秒ごとに記録され、`ProcessSample`イベントにパッケージされ、これがNew Relicに送信されます。このデータは[**プロセス**UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#processes)に表示されます。 + `ProcessSample` は、単一システムで実行されているプログラムから詳細なリソース使用情報を収集します。すべてのアクティブプロセスに関して、このデータのスナップショットは20秒ごとに記録され、`ProcessSample`イベントにパッケージされ、これがNew Relicに送信されます。このデータは[**Processes** UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#processes)に表示されます。 プロセスメトリクスはデフォルトでは報告されません。このデータを報告するには、[プロセスメトリクスを有効にします](/docs/infrastructure/install-configure-manage-infrastructure/configuration/infrastructure-configuration-settings#enable-process-metrics)。 @@ -76,7 +76,7 @@ New Relicのインフラストラクチャ監視エージェントは、6つの - `StorageSample` は、サーバーに関連する単一のストレージデバイスを表します。各サンプルは、デバイスや使用するファイルシステムの種類、現在の使用量および容量についての分かりやすい情報を収集します。各マウントファイルシステムに関して、このデータのスナップショットは20秒ごとに記録され、`StorageSample`イベントにパッケージされ、New Relicに送信されます。このデータは[**ストレージ**UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#storage)に表示されます。 + `StorageSample` は、サーバーに関連する単一のストレージデバイスを表します。各サンプルは、デバイスや使用するファイルシステムの種類、現在の使用量および容量についての分かりやすい情報を収集します。各マウントファイルシステムに関して、このデータのスナップショットは20秒ごとに記録され、`StorageSample`イベントにパッケージされ、New Relicに送信されます。このデータは[**Storage** UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#storage)に表示されます。 サーバーが、次の表にあるサポートされているファイルシステム以外のファイルシステムを有するディスクを使用している場合、`StorageSample`イベントはこれらのディスクには生成されません。 @@ -119,7 +119,7 @@ New Relicのインフラストラクチャ監視エージェントは、6つの - `NetworkSample` は、サーバーに関連する各ネットワークデバイスの説明と状態情報を取得します。これには、デバイスのインタフェースおよびアドレス情報、ならびに現在の使用量データが含まれます。各添付ネットワークインタフェースに関して、このデータのスナップショットは10秒ごとに記録され、`NetworkSample`イベントにパッケージされ、New Relicに送信されます。このデータは[**ネットワーク**UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#network)に表示されます。 + `NetworkSample` は、サーバーに関連する各ネットワークデバイスの説明と状態情報を取得します。これには、デバイスのインタフェースおよびアドレス情報、ならびに現在の使用量データが含まれます。各添付ネットワークインタフェースに関して、このデータのスナップショットは10秒ごとに記録され、`NetworkSample`イベントにパッケージされ、New Relicに送信されます。このデータは[**Network** UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#network)に表示されます。
- `ContainerSample` は、各Dockerコンテナの説明と状態情報を収集します。この情報には、コンテナのID、名前、イメージ、イメージ名、またCPU、メモリ、ネットワークに関するメトリクスが含まれます。各コンテナに関して、このデータのスナップショットは15秒ごとに記録され、`ContainerSample`イベントにパッケージされ、New Relicに送信されます。このデータは[**コンテナ**UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#containers)に表示されます。詳細については、[Dockerモニタリング](/docs/infrastructure/new-relic-infrastructure/data-instrumentation/docker-instrumentation-infrastructure)を参照してください。 + `ContainerSample` は、各Dockerコンテナの説明と状態情報を収集します。この情報には、コンテナのID、名前、イメージ、イメージ名、またCPU、メモリ、ネットワークに関するメトリクスが含まれます。各コンテナに関して、このデータのスナップショットは15秒ごとに記録され、`ContainerSample`イベントにパッケージされ、New Relicに送信されます。このデータは[**Containers** UIページ](/docs/infrastructure/infrastructure-ui-pages/infra-hosts-ui-page#containers)に表示されます。詳細については、[Dockerモニタリング](/docs/infrastructure/new-relic-infrastructure/data-instrumentation/docker-instrumentation-infrastructure)を参照してください。
- `InfrastructureEvent` は、システムがライブ状態のときに発生する変化(デルタ)を説明します。インベントリまたはシステム状態が追加/削除/変更されると、そのアクティビティを記録する`InfrastructureEvent`が生成されます。このデータは[**イベント**UIページ](/docs/infrastructure/new-relic-infrastructure/infrastructure-ui-pages/infrastructure-events-page-live-feed-every-config-change)に表示されます。 + `InfrastructureEvent` は、システムがライブ状態のときに発生する変化(デルタ)を説明します。インベントリまたはシステム状態が追加/削除/変更されると、そのアクティビティを記録する`InfrastructureEvent`が生成されます。このデータは[**Events** UIページ](/docs/infrastructure/new-relic-infrastructure/infrastructure-ui-pages/infrastructure-events-page-live-feed-every-config-change)に表示されます。
- infrastructureモニタリングエージェント(Fluent Bit、Fluentd、Logstash、syslog/TCPなど)のソリューションを使用して、[OSからログを転送](#forward-infra)します。[infrastructureモニタリング用のガイド付きインストール](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent)を、アプリとホストのログの軽量データコレクターとして使用します。 + infrastructureエージェント(Fluent Bit、Fluentd、Logstash、syslog/TCPなど)のソリューションを使用して、[OS からログを転送します](#forward-infra)。[infrastructureモニタリング用のガイド付きインストール](/docs/logs/forward-logs/forward-your-logs-using-infrastructure-agent)を、アプリとホストのログの軽量データコレクターとして使用します。
- 当社のエージェントとinfrastructureモニタリングエージェントを使用してください。アプリのAPMエージェントにより、[APM logs in context](/docs/apm/new-relic-apm/getting-started/get-started-logs-context)を使ってログデータをNew Relicに直接転送できるようになります。追加のサードパーティソフトウェアのインストールや保守は必要はありません。 + エージェントとinfrastructureエージェントを使用してください。アプリのAPMエージェントにより、[APM logs in context](/docs/apm/new-relic-apm/getting-started/get-started-logs-context)を使ってログデータをNew Relicに直接転送できるようになります。追加のサードパーティソフトウェアのインストールや保守は必要はありません。
+ + **IAST** + +
+ バリデータサービスのURL + + `wss://csec.nr-data.net` + + `wss://csec.eu01.nr-data.net` +
@@ -385,6 +411,7 @@ translationType: human * `aws-api.newrelic.com` * `cloud-collector.newrelic.com` * `bam.nr-data.net` + * `wss://csec.nr-data.net` * `insights-collector.newrelic.com` * `log-api.newrelic.com` * `metric-api.newrelic.com` @@ -411,6 +438,7 @@ translationType: human * `aws-api.eu01.nr-data.net` * `cloud-collector.eu.newrelic.com` * `bam.eu01.nr-data.net` + * `wss://csec.eu01.nr-data.net` * `insights-collector.eu01.nr-data.net` * `log-api.eu.newrelic.com` * `metric-api.eu.newrelic.com` @@ -449,8 +477,9 @@ translationType: human 当社は、データの取り込みに以下のブロックを使用します。 -* 米国データセンターのエンドポイント: `162.247.240.0/22` -* EUデータセンターのエンドポイント: `185.221.84.0/22` +* 米国データセンターのエンドポイント:`162.247.240.0/22`、`152.38.128.0/19` +* EUデータセンターのエンドポイント: `185.221.84.0/22`、`152.38.128.0/19` +* その他のデータセンターのエンドポイント: `64.251.192.0/20` ## ユーザー向けドメイン [#user-facing-domains] @@ -672,10 +701,16 @@ New Relicにデータをレポートするためには、[Infrastructureモニ 米国データセンター地域: * `162.247.240.0/22` + * `152.38.128.0/19` EUデータセンター地域: * `185.221.84.0/22` + * `212.32.0.0/20` + + その他のデータセンター地域: + + * `64.251.192.0/20`
@@ -173,7 +181,7 @@ New Relicがサポートしていないソースからのテレメトリをす エンティティ間の接続は、テレメトリーから推測可能なものに基づき、New Relicが自動的に作成します。たとえば、HTTPを使用して通信する2つのサービスがNew Relicでインストゥルメントされる場合、それらの間で「呼び出し/呼び出され」関係を推定します。 -[エンティティエクスプローラー](/docs/new-relic-solutions/new-relic-one/core-concepts/new-relic-explorer-view-performance-across-apps-services-hosts#find)、Navigator、Lookoutビューでエンティティを表示すると、右側のペインに各**関連エンティティ**を表示できます。現在のエンティティに直接接続しているさまざまなエンティティを表示するものです。スタックのすべての接続された部分を通じて、これらの関連エンティティの重要なメトリクスを迅速に表示し、1つのエンティティから別のエンティティに移動できます。 +[エンティティエクスプローラー](/docs/new-relic-solutions/new-relic-one/core-concepts/new-relic-explorer-view-performance-across-apps-services-hosts#find)、Navigator、Lookoutビューでエンティティを表示すると、右側のペインに各**Related entities**を表示できます。現在のエンティティに直接接続しているさまざまなエンティティを表示するものです。スタックのすべての接続された部分を通じて、これらの関連エンティティの重要なメトリクスを迅速に表示し、1つのエンティティから別のエンティティに移動できます。 [NerdGraph API](/docs/apis/nerdgraph/examples/nerdgraph-entities-api-tutorial)を使用して、エンティティの関係をさらに詳しく説明します。 @@ -971,7 +979,7 @@ New Relicがサポートしていないソースからのテレメトリをす ### カスタムエンティティ関係の作成 [#create-custom-relationship] -関係が自動的に検知されない場合、[NerdGraph API](/docs/apis/nerdgraph/examples/nerdgraph-entities-api-tutorial/#manual-relationships)を使用して手動で作成するか、New Relic UIで**関連エンティティ**の**関連エンティティを追加/編集**リンクを使用して作成できます。 現在、サービスエンティティ間の呼び出し/呼び出され関係のみ、手作業で作成できます。 +関係が自動的に検知されない場合は、[NerdGraph API](/docs/apis/nerdgraph/examples/nerdgraph-entities-api-tutorial/#manual-relationships)を使用して手動で作成するか、New Relic UIで **Related entities****Add/edit related entities**リンクを使用して作成できます。現在、サービスエンティティ間の呼び出し/呼び出され関係のみ、手作業で作成できます。
+## 高度な例 - Chrome 100+ [#example] + +次の例では、コードを定数、依存関係、設定、ページ要素、関数、スクリプトの開始という機能セクションに分割します。以下に方法を説明します。 + +* タイムアウトを設定して障害時間を最小限に抑え、パフォーマンスを向上させる +* CSSまたはIDで要素を検索する +* waitForAndFindElementを定義する +* `console.log()`を使用してスクリプトログを整理し、アサートの失敗やタイムアウトに関する問題を特定する +* try/catchブロックを使用してエラーを処理し、失敗したステップを特定する有用なエラーメッセージをスローする + +```js +/** + * Script Name: Advanced Example - Chrome 100+ + * Author: New Relic + * Version: 1.6 + */ + +// -------------------- CONSTANTS +const SCRIPT_NAME = "Best Practices - Chrome 100" // name to record in script log +const IMPLICIT_TIMEOUT = 3000 // default implicit timeout is 10 seconds +const PAGE_LOAD_TIMEOUT = 60000 // default page load timeout is 60 seconds, fail early to prevent long duration timeouts +const SCRIPT_TIMEOUT = 20000 // default script timeout is 30 seconds +const USER_AGENT = "default" // set the user agent for Chrome +const PROTOCOL = "https://" // set the protocol +const USERNAME = "" // username: +const PASSWORD = "" // password@ +const DOMAIN = "docs.newrelic.com" // your domain +const PATH = "/docs/new-relic-solutions/get-started/intro-new-relic/" // path to main page +const CHECK = "Get started with New Relic" // text to match on page +const AUTH = USERNAME + PASSWORD // could be stored as secure credentials +const MAIN_URL = PROTOCOL + AUTH + DOMAIN + PATH + +// -------------------- DEPENDENCIES +const assert = require("assert") + +// -------------------- CONFIGURATION +await $webDriver.manage().setTimeouts({ + implicit: IMPLICIT_TIMEOUT, // sets element load timeout + pageLoad: PAGE_LOAD_TIMEOUT, // sets page load timeout + script: SCRIPT_TIMEOUT // sets script timeout +}) + +// -------------------- ELEMENTS +const By = $selenium.By +const loc = { + title: By.css("#gatsby-focus-wrapper > div.css-1uz5ayg > div > main > div > h1"), + start: [ + { step: 'signup', selector: By.id("sign-up-for-new-relic-if-you-havent-already") }, + { step: 'add', selector: By.id("add-your-data") }, + { step: 'explore', selector: By.id("explore-your-data") }, + { step: 'query', selector: By.id("query-your-data") }, + { step: 'dashboard', selector: By.id("set-up-a-dashboard") }, + { step: 'alerts', selector: By.id("configure-alerts") } + ] +} + +// -------------------- FUNCTIONS +// for backwards compatibility with legacy runtimes +async function waitForAndFindElement(locator, timeout) { + const element = await $webDriver.wait( + $selenium.until.elementLocated(locator), + timeout, + "Timed-out waiting for element to be located using: " + locator + ) + await $webDriver.wait( + $selenium.until.elementIsVisible(element), + timeout, + "Timed-out waiting for element to be visible using ${element}" + ) + return await $webDriver.findElement(locator) +} + +// -------------------- START OF SCRIPT +// Start logging +const start_time = new Date() +console.log("Starting synthetics script: " + SCRIPT_NAME) + +// confirm timeouts are set +const {implicit, pageLoad, script} = await $webDriver.manage().getTimeouts() +console.log("Timeouts are set to:") +console.log(" IMPLICIT: " + implicit / 1000 + "s") +console.log(" PAGE LOAD: " + pageLoad / 1000 + "s") +console.log(" SCRIPT: " + script / 1000 + "s") + +// Setting User Agent is not then-able, so we do this first (if defined and not default) +if (USER_AGENT && 0 !== USER_AGENT.trim().length && USER_AGENT != "default") { + $headers.add("User-Agent", USER_AGENT) + console.log("Setting User-Agent to " + USER_AGENT) +} + +// if an error happens at any step, script execution is halted and a failed result is returned +console.log("1. get: " + MAIN_URL) +await $webDriver.get(MAIN_URL) + +console.log("2. waitForAndFindElement: " + loc.title) +const textBlock = await waitForAndFindElement(loc.title, IMPLICIT_TIMEOUT) + +console.log("3. getText: " + CHECK) +const text1 = await textBlock.getText() + +console.log("4. assert.equal: " + text1) +assert.equal(text1, CHECK, "title validation text not found") + +console.log("5. takeScreenshot") +await $webDriver.takeScreenshot() + +console.log("6. findElement") +loc.start.forEach(async function (nr, i) { + let n = i + 1 + try{ + // verify each asset has loaded + console.log(" " + n + ". " + nr.step + ": " + nr.selector) + await $webDriver.findElement(nr.selector) + }catch(exception){ + console.error("Failure in Step 6." + n) + throw exception + } +}) + +// End logging +const end_time = new Date() + +// Calculate the duration +const script_duration = (end_time - start_time) / 1000 + +// Log the times +console.log("Start time: " + start_time) +console.log("End time: " + end_time) +console.log("Duration: " + script_duration + "s") +``` + ## Shadow DOM:要素の検索 [#shadow] このランタイムは、新しいSelenium WebDriverメソッド`getShadowRoot()`を使用してShadow DOM要素へのアクセスをサポートするようになりました。 @@ -1554,7 +1685,7 @@ WebElementリファレンスが返された場合は、[`$webDriver.findElement` 例: ```js -// Find the shadow host +// Find the shadow host let myShadowHost = await $webDriver.findElement($selenium.By.id('exampleShadowHost')); // Get the shadow root let myShadowRoot = await myShadowHost.getShadowRoot(); diff --git a/src/i18n/content/jp/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx b/src/i18n/content/jp/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx index 63458c909ce..825dfcc1a3f 100644 --- a/src/i18n/content/jp/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx +++ b/src/i18n/content/jp/docs/synthetics/synthetic-monitoring/scripting-monitors/write-synthetic-api-tests.mdx @@ -74,6 +74,99 @@ APIテストは、`$http`オブジェクトで使用できる[gotモジュール GETリクエストをするには、[`$http.get`](https://github.com/request/request#requestget)メソッドを使用してリクエストを送信します。[リクエストオプション](#request-options)を定義し、`$http.get`を使用してリクエストを行ってから、レスポンスを[検証](#validating)してエンドポイントが正しい結果を返していることを確認します。 +次の例では、以下に方法を説明します。 + +* GETリクエストの再試行とタイムアウトを処理する +* json応答本文を解析する +* アプリケーションの稼働ステータスをアサートする +* 結果をカスタムアトリビュートに保存する + +```js +/** + * Script Name: Advanced Example - Node 16.10.0 + * Author: New Relic + * Version: 1.0 + */ + +const assert = require("assert") + +// Get secure credentials +const applicationId = $secure.APP_ID +const apiKey = $secure.API_KEY + +// The URL for the API endpoint to get information about a specific application +const URL = `https://api.newrelic.com/v2/applications/${applicationId}.json` + +// Define headers, including the API key for authentication +const headers = { + "X-Api-Key": apiKey, + "Custom-Header": "CustomValue", // Example of a custom header +} + +// Define got options for retries and timeouts +const options = { + headers: headers, + timeout: { + request: 10000, // Set a global timeout of 10000 milliseconds for the request + }, + retry: { + limit: 3, // Retry a failed request up to 3 times + statusCodes: [408, 413, 429, 500, 502, 503, 504], // Common status codes to retry on + errorCodes: [ + "ETIMEDOUT", + "ECONNRESET", + "EADDRINUSE", + "ECONNREFUSED", + "EPIPE", + "ENOTFOUND", + "ENETUNREACH", + "EAI_AGAIN", + ], + methods: ["GET"], // Only retry for GET requests + }, + hooks: { + beforeRetry: [ + (options, error, retryCount) => { + console.error( + `Retrying after error ${error.code}, retry #: ${retryCount}` + ) + }, + ], + }, +} + +// Make the GET request with a callback +$http.get(URL, options, function (error, response, body) { + if (error) { + // Handle the error case + console.error(`Request failed: ${error.message}`) + return + } + + // Assert the response status code is 200 + assert.equal(response.statusCode, 200, "Expected HTTP status code 200") + + // Log the status code to the console + console.log("Request Status Code:", response.statusCode) + + // If further processing of the response body is needed, it can be done here + // For example, parsing JSON response (if response is in JSON format) + const jsonData = typeof body === "string" ? JSON.parse(body) : body + + // Log the parsed JSON to the console + console.log("Parsed JSON data:", jsonData) + + // Check the application's health status + const healthStatus = jsonData.application.health_status + assert.equal(healthStatus, "green", "Expected the application's health status to be 'green'") + + // If the assertion passes, the script will continue; otherwise, it will fail the monitor + + // This shows up in SyntheticCheck as `custom.healthStatus` + $util.insights.set("healthStatus", healthStatus) +}) +``` + ## POSTリクエストを送信する [#post] POSTリクエストをするには、[`$http.post`](https://github.com/request/request#requestpost)メソッドを使用してリクエストを送信します。[リクエストオプション](#request-options)を定義し、`$http.post`を使用してリクエストを行ってから、レスポンスを[検証](#validating)してエンドポイントが正しい結果を返していることを確認します。 @@ -206,14 +299,14 @@ POSTリクエストをするには、[`$http.post`](https://github.com/request/r }; $http.post(options, function(error, response, body) { - //Log status code to Synthetics console. The status code is logged before the `assert` function, + //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'); + assert.ok(response.statusCode == 200, 'Expected 200 OK response'); //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. + //If assertion fails, log `Expected True results in Response Body,` plus results as error message to Synthetics console. assert.ok(body.success == true, 'Expected True results in Response Body, result was ' + body.success); }); ``` From 533df86fa444fecf2c45fd5c9031d6e9934c97ab Mon Sep 17 00:00:00 2001 From: nbaenam Date: Mon, 24 Jun 2024 08:11:10 +0200 Subject: [PATCH 17/27] fix(IAST): Fixed a build error wiht a DNT tag --- src/content/docs/iast/troubleshooting.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/iast/troubleshooting.mdx b/src/content/docs/iast/troubleshooting.mdx index d46a0cbdf48..b63b0c25dbc 100644 --- a/src/content/docs/iast/troubleshooting.mdx +++ b/src/content/docs/iast/troubleshooting.mdx @@ -52,7 +52,7 @@ If you don't find your problem listed here, you can always reach out to [New Rel id="see-my-application" title="I don't see my application in IAST" > - If you don't see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Testsate>, check the following: + If you don't see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**, check the following: - Your application is up and running: Check the application process or the [APM & Services page](/docs/alerts-applied-intelligence/new-relic-alerts/advanced-alerts/advanced-techniques/view-events-their-products#products). - The application's logs to find out if there's a problem. From a457db86f61d156b03f267fd0e3e897a599be5ed Mon Sep 17 00:00:00 2001 From: lchockalingam <64921278+lchockalingam@users.noreply.github.com> Date: Sun, 23 Jun 2024 23:40:55 -0700 Subject: [PATCH 18/27] feat(whats-new): Add NVIDIA NIM integration post --- .../2024/06/whats-new-06-24-nvidianim.md | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md diff --git a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md new file mode 100644 index 00000000000..9c19d5ce2d2 --- /dev/null +++ b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md @@ -0,0 +1,28 @@ +--- +title: 'New Relic AI Monitoring now integrates with NVIDIA NIM inference microservices' +summary: 'Gain in-depth insights across the AI stack for applications built with NVIDIA NIM' +releaseDate: '2024-06-24' +learnMoreLink: '' +getStartedLink: 'https://docs.newrelic.com/docs/ai-monitoring/intro-to-ai-monitoring/#get-started' +--- + +New Relic AI Monitoring empowers engineers to quickly troubleshoot AI applications built with NVIDIA NIM and optimize their performance, quality, cost, ultimately helping organizations adopt AI faster and achieve quicker ROI. + +* **Full AI stack visibility:** Spot issues faster with a holistic view across apps, NVIDIA GPU-based infrastructure and AI layer. +* **Deep trace insights for every response:** Fix performance and quality issues like bias, toxicity, and hallucinations by tracing the entire lifecycle of AI responses +* **Model inventory:** Easily isolate model-related performance, error, and cost issues by tracking key metrics across all NVIDIA NIM inference microservices in one place +* **Model comparison:** Compare the performance of NVIDIA NIM inference microservices running in production in a single view to optimize model choice. +* **Enhanced data security:** In addition to NVIDIA’s self-hosted model’s security advantage, New Relic allows you to exclude monitoring of sensitive data (PII) in your AI requests and responses + + + + + + + + + + + + + From 10850556ad2921a5fa338be0068d2a2204d11d44 Mon Sep 17 00:00:00 2001 From: lchockalingam <64921278+lchockalingam@users.noreply.github.com> Date: Sun, 23 Jun 2024 23:54:04 -0700 Subject: [PATCH 19/27] Update whats-new-06-24-nvidianim.md --- .../whats-new/2024/06/whats-new-06-24-nvidianim.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md index 9c19d5ce2d2..c94cf45b1a8 100644 --- a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md +++ b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md @@ -1,12 +1,17 @@ --- title: 'New Relic AI Monitoring now integrates with NVIDIA NIM inference microservices' -summary: 'Gain in-depth insights across the AI stack for applications built with NVIDIA NIM' +summary: 'Troubleshoot and optimize your AI apps built with NVIDIA NIM using in-depth insights across the AI stack' releaseDate: '2024-06-24' -learnMoreLink: '' +learnMoreLink: 'https://newrelic.com/blog/nerdlog/nvidia-nim-ai-monitoring' getStartedLink: 'https://docs.newrelic.com/docs/ai-monitoring/intro-to-ai-monitoring/#get-started' --- -New Relic AI Monitoring empowers engineers to quickly troubleshoot AI applications built with NVIDIA NIM and optimize their performance, quality, cost, ultimately helping organizations adopt AI faster and achieve quicker ROI. +Building, deploying, and monitoring generative AI applications is a complex undertaking. This is where NVIDIA and New Relic join forces to provide a streamlined path for developing, deploying, and monitoring AI-powered enterprise applications in production. + +NVIDIA NIM is a set of inference microservices that provides pre-built, optimized LLM models that simplify the deployment across NVIDIA accelerated infrastructure in the data center and cloud. + +New Relic AI Monitoring now integrates with NVIDIA NIM to empower engineers to quickly troubleshoot and optimize the performance, quality, cost of AI applications, ultimately helping organizations adopt AI faster and achieve quicker ROI. +![NIM integration](./images/nim1.png "A screenshot that shows the NIM integration") * **Full AI stack visibility:** Spot issues faster with a holistic view across apps, NVIDIA GPU-based infrastructure and AI layer. * **Deep trace insights for every response:** Fix performance and quality issues like bias, toxicity, and hallucinations by tracing the entire lifecycle of AI responses From 7c900ce79a6d411eddd2d187bf0e84846636986f Mon Sep 17 00:00:00 2001 From: lchockalingam <64921278+lchockalingam@users.noreply.github.com> Date: Sun, 23 Jun 2024 23:54:53 -0700 Subject: [PATCH 20/27] feat(whats-new): Add image --- src/content/whats-new/2024/06/images/nim1.png | Bin 0 -> 426388 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/content/whats-new/2024/06/images/nim1.png diff --git a/src/content/whats-new/2024/06/images/nim1.png b/src/content/whats-new/2024/06/images/nim1.png new file mode 100644 index 0000000000000000000000000000000000000000..52a0cb86d4a3e76b6fc29c551738be477314aec5 GIT binary patch literal 426388 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%0ABNG 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�!!M(}^R;?3)L-0(Zmwf! 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

Sk-&zbR+y@}Se6jW(BeNPY2` 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%0D|KwQIEP028(M?{ism?pr2SI& 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�x> zgZ4}YW3i(C%QL!}bL;Upx^ttJl}Ms$nS=2$Ql#l?(M~V-&X{9EB}m}%0Kx~v3=g3h zeu#g*qH8bazv}$q`Y<;XhFR-Qam~~XaDFyj%$(?FYbck}z{-*jYSSak<+*gyQHq=1 zqn!e|;X0#@`CG#gK|gEVb%SR_k0}$Jr8&>ZIui+8f*xXXSp;CPg}MDL<&r6ni;2Q$ ze7xJ;+4S%(x53z^2yk!tuGvUrac#v>p)q{D3bY4CsN~N0ynT+=gYZ4wPEfcG{5JG| zaWWl{T|210e&X2#9G`{_3tgF;_=n@k` zuRcp+@U+l80%R(lq-WSp=gR2?16ey^L&k+m$9@h?yUX0L{;F##bm)7%3@LWMNRz30 zCaw26rgN2fEHibAUl3;s+gcC{Ml^ zM#kp?N7}6G!*zQnU-+DTtNs0i<>g&d42WoY5e4-{ry=7PB^u=_jJDT_;c+r&m2BxcYQYtytR0Tf_m`ICFP91{Ti8B z#mKGI;tU}nhfaETnP}!ur^ovNOZG$jhEA5ZO-H*5(YAOQx{|r(GXh(~*RaQvixkwI zwXuc@z*5;1vdk^yyr|xBdu%=ZV~*>+`jTIUbVZZ)^ZB#x*Q6HJLvMhEut#vmB}&8& zUgex`JtMx<_?I4?o1r+@g#zdq0)W4_iaekD#b4S;^KyJn(=< z7J^hG)6$9(yxtsbOz78!Aob8`oIlp2uTG5weiyKhT_=kUA1|V(>sZ3b79MF6oiaPk z4l?8cgy?Sciw=LMktz$(H}mTs@39+B{hA3^WyIt#CFW|NTPB^xz;0S0V&q9ckHXAv z0_zu0zt^0`QU+M^QXXpB6W_~wtTA6<@sClNcPx0J?#MkngukY^jC=Qg>oR2Q?!?( zj*9Kp#}rk?skz_1=z#NQ1ne}&;pH0jC~etzGPkRGT0%;6 zw>jhd&JJMXSe^WoDmqHT*C;WzbiN_(Il~L6vV6=Q(>?lnw=Kr1KB=toVTmG_pj~4+ z5&JKZR)v4eLPQR(`ZCnG0ENN^FR#QQ6MiZVHd!n{RKO8P+!?kVKSD2)$nx9FN*WO# z&o%+g>q{RR59rII{c|dcE<&GC)})#8?>JtBK%Q_RX3cjKS<%2; ze^ap1-s?o__&d|b@7#{h+G6-_0gOTEPJ03yJyInHZ^`xd>=WQ~BolVir5We5&)WeJ zXKVrm9|o3zvQ*{e+N#T;Hxc~T77&N*xPZW_=jOki1gr7jX^>T&74~`G4sS4nH?ewB|3Xe$pE6FfWpRN$Oy-6P)Zx6Z9jh&%! zAT3dTVaT;A$MeevhllS_$RlP*QZ(~EjRJ9~H{K`y63|I#5m*lsW(nxa(t&{et*2JE zRlGQy&YkaMEQ^rOVf7s$Q>S*`O^keOAfT!x53^=7kIyuQ_+X2dr-8KEB_1yp<)L{C zkfD6=1l!tW@ckZrI9={+&o^4Kk(uHH_8M|FyPHwjT7Jp&;!9#5;Mq_NaFrxE4HG%- zVk7l4BT<7_jKA<$KPbu`#U~Sn>PNlZ0)#ZX-33o5r!m4xd$|%@QBcSuqgm$k1cWNp z+rU5GeOR?Jv(1q-e%T^=s?EUNFxC^&YU2;1!%5HeA$Hg{uKE+)qP$tmI?K~79l6k}0L`b3hPSasWZb*dMp zYi?x~;-W`(#@S%PQQT@WKG8B>xz7xK2Lk{cF!T{8*pd;IhA>!Wt~MsQey(woRk!+Q z+%83M|D{Cw*FnDAmXmm8!bw!QPkcQ1AjWADN`k_fcT7>&+X@A%!>fj zVD9m#$L@&zt6=h5zrHf$uM}pxot!jWLwEjqa^QD7=cdGV1kcFO*HYh5f#m{;+X^@L zq-ym%7zzr3{$q*E!6=wUCJ495)D3W3OcY`1pYD|mJ5;!?Q@?KrHm>At-US9<5u^}? z1C~p?MeFcS#n%5sFZmDCk{7Ga$JzzfGnU_Y;G>qOQvmZL!Ij&VmZ_3(E#crK>quz` z3nX65Wlghm{q5wL&q0m`q^yibtWg6XUcjAe!7|g8X=wQ_e+g!F%_864Q$F|jY|l@> z9_dQZwgmq-mRJ!uG;OdY4f0v?O)92O-DN& z##u@z)-t90%>K7m{HN*ke|@>JPI}b?(e=E_f`o+RgE9$8SeDBj^+a~V934R5;t53o z&o*#zbv~L}TnyaOm(gonDJK^;4(c~%H;@cFEcB3Y*mbwxQCqBzzssuW|3!=-Wx$aW zYBUHz4dxW`1?1ac+tfKus)a}&y}3mAh9cW4*}Fn|2e@EEWRrpTulRG}=eeO?!}IRe z7iaz$F7*bDF2PC#UoxAR}Q)5>K| zhc5uj#9tl!H8M>O$R9hJl!wRU;JkUMT70$uI1C`_PST%5WzwC1_;+r*=5v>Wn^_u# z#Bd#*$FLtxd7-McRyqnhu4?X66;WJ*BI3Y3Y?RV#@l zdw5e@1K(d;OGrhAYn{a85Jb1B6}b7Wl^FdhxKw$3R4qOls%_QTt4!cCn5z-`Cw9%p zCVa=H7{Z8~!aAUZ!$t+*w7mgRe#>BsPZEnC7%FmrRM@Y5l+`SGH`L5lOU3o-G!<*t zS&jSLbq$9~@|ki0Udj4c8q%C#-5~l=YZSd>M?$SohHt7nG;IYSln9Q=9sbH2_21qx zuUxU3TETa}9j66hgwF$tzSPCXf+xYqsb?WySBI zPqzV`LN(ld_)qo8Kdrw1vCIBrqXM@NtK0+T$oRB-FAdbGIc5?6iQx7UhI z23{3>`1RcEV56qOng;(&8I+SJi7u7(C+|m#&mg-dgFjbC9XG(SlPdL{h>TTR^tfZ( znm%T-;T;^0AgPAz*+wzUO-{!Z^kG_-+*ff_$)b)%ba58s|M9Z_{MP?BgXW!s&TDR) zki@jOLf=@KC?<2~!eH7Wyx0(?4j?&kh+^s@b>Q;uAPwdsNMpgpx21C~n0>5WaR-22 z3=UKTQv0$!x z0~^8YLfT`L!LEXH`z_~0ja?b50A7xN z6D_6BUtHe)v3$Hdzl)SzNqoHkrnGk-g0qd!$jmo6?LiULDT*QTdq{YpKr849hiOuo zsuR|WhTP`_Qc>6iJ_Eo83xmJ?Ke!p1g|Yvl%|ulf++@+!A6Is zPXYcxrBfgH;_3DLuRm5ux-?Pc>_f%x_;#id_+($n=G1VqxZ;oOBz-J1OI1bz! zucN7fq5d0-@)e+Vc?CdJR^XU9*=!OOaNTROAtoau>qEkB10SZp9-agxugwK%#3v&o zBaMXYe_xjWb1k${j!#*??W;6CJoa$W%t9Pk#ABl$;h9^MEYG{ssXtRny&A`D8q~`) z#s79nq{{txz{Y81$b#<@YU;5TZHVWS6+-23A8+S8%!45CSHgi#AYr;QDZEXIihD;x`Vq@tK(g$z5X$6-8t6x5j>J;CKC zJIeGIQ74wIkxv-`(kReot_5p<$e3v>S#t#RKv8D}E8Be%x%|Am$-0x(MiW){5)vLv z{km;Qbv5yYGwFlZK_7Sx0Kb9n+v)GQYhz^|xL{-WS#$ZcpKTicr8FVp+J8F){>8`p zsx+-uZP^uaaHw^k}z& zsn~8L&l*=c`dPNvAh;$CG;PxSv2py*i{`)Yd;jsXZWdlv*$2!K+^RMu+R@S-;#0$v z;ZYv8W=NsY9GS%MBEDkN<+WP?cmzybbi92Qlfq|eM#CO+*o#M$?1^&f$6(g}@JD5* zox%%AL1OeCCr(G!JI#vj!O$;Ur69{EPL-t2n! zWsh>ve4dQq^h2UA+^|!TN{D0lS@Kd|5wIE}v5kXlZ>MPA#0p3eILC9Cr$4Gl z!VtKEMdD!QsYQIR-nvOIeqF%hWT>E?#lZ}{GPgvSatzAl=Ro8uL!)$_LW`t6)h)tBcYqBo<`rcH)0*q{dWUO%g@hSy?>2EceZT|A*sp_*a z)ps8d%%`se*T%|yoHl2cTe?VJL^T2NqkWn_pqZL8eMEQxuDCs7y5L41feaR>^w&K-{ht5VjS|tlkN@9c;{a(L@2DAV4Hh zm7#)uIj)cQProHp3QK%m+vC{S7P~l5{PfDsdH}G&OpT8^USQ0W(%*baNA?s&M@Oew z8j*RshRTq!(%GiJG3u`3-J{_F4d}4_JwgdzyQb5Vz566FQ@eao!=AQx^L z%om+bk2nFmA;=ZJZ?_2UEZmto*%k1$O+A{)j4rUp{)PJce>@;)i*Tl?-J+!1mGaeb z+IoPdbhU8RHv~8nj-QNVcBfq6H6WrE-nSX$FX&5)6Df>*fRy3Qbkhx_W?Xo9L5(6B zyvUZ7P8%5?aGlCu2aqofK--d%Wm_x%eOlV&K=$a(?ne)hgPDMe>9T0js)S!5(FrfJ z*+r)5s@(#>}s zJ4IlKn0toYtf`%+ zExhGYGT2{Vk9z|qsR4iVhEh$}wJD&9OI1}B?9mUJlPM`Fr_zx^!cH5P)+g}W?t-lV zJvlnc-^?a9O2@MhNXh%+qH0pj)lvV>04^PY;FTxAGUwEm7~dIj5e*TgcE&&$L)S{j zDd%^22qXNRuM=M!O;e_K{(*1F=-~ZZ4X>J7s*vm0aR~`mJ=BWp<-&y+GS&S?AW1rVYEL%_Ga9_9C!Ht`m%1e^)rd#M8vWR~tBx=eU1bTT;V#jX(J1_jfBaq3Z zr1eJp-+9?hbRrvv)|s~Q|4yt{;5U%TC27re@85aZ)B)g^o02;O|DAV?RtbDo^bHLk z{+*Zo|K|r?R{62Cv{XP)a9!xhPoo5$i6D>)5UBI)Z~al;L?F)%S<4G@AZ}jvTI^1F zsy$K^1a$9s2JCa{q#GL>UCq;C--NU)B+(9OL6E*|+a}5EcQ5`3duZ}`Si!GM$l=o3* zG9esJLm6LmJcX}SpBoebYowE~42@CyOogQy$?0xpClqC1Z$6o?{Q4SMPuY64N|lp! zecXLyCtj%M@tnkIuCwxYVb7ORq>L(w6KD?S9;ZhjsB-A!q10ESl~P^Ar`rWWwtESC zE8`g;Bkbt98Eo=7qkylRGCt2s?*o!|3ze3K zWor~$h!?5y840`v%k5F?M)eFdr+n`I^BwSH@561=%^rQa41&szc*fEzd#4H!9&uUI z^b+Mw0IZaqVzR@!TlQXt|(e zfzbxf#3uB|+kfkczU4O0eHlCkQ&;VlhICx_R(hA%4WWaC7zPIn5iYt_Wi!>Y+#@_-r?5EG6kVTyP~HR(vdIH z;dpt*!;mVN7wuRv+Xtc@QAm{k$PNMv22+s{ey^ZENG;`Qj z&DK(!KkUhnG2EwIt_oWx#JEoE>l`mMN67+3v`XR`Zht{Td<)2aph(CaHD>_^nHK3=NJ${Eba+B5_3Xbxv3tNbe`P=wNmbnluh z&&$7aAm!n7TmNy$hJ%O##Fbs_&;|Hc)BdC^SI2VX6&Snc3ovx?c}_oYtu|cOaRs<9 zLRa$vE|z-MrYuwus5biU&9 z$?!0O$AGXC$7ULuLxA@f@aB&`ycOnj-i54=6>FL%gga_8)|{>`Dmt|7n$d-MoSkU^ zjsJxCXrq5m0N=6PvAav=bL(dNd9-ZWBEDSL$pu?0K!1-j5jg#{R@a@kp#@HC6n2ig zu`{vkhQ%iBBUWOa2BCzdG=eT|2^H~(`IW-|!`getQ{Df6z~vIDv_wT{Tv3Ed$WAIz zD0@rxmSgV~O)A+t`y6}k)gbFw$8qcu$2`Wt!7=XFxxV}Rz3<;u*W>;#k4Ne=-k;Ze z4%e3gj*iiIF7>n`r+M7WLGhR?%H!)uhFywNv%h4?a(FM#4S;lUET8tN0sR;90^Xc4LTIClkoWXiFU9Hu<2jV3>@4yzS zYo6Z(S00+K5SlrmUH*6vi=bc}c+_ED;SkGHO?kekoYX}c z<1p))%>5WMO+deqi2MHKHEK@Oxq^H%e%6kvPs)GtOR~n>vm0(brh>86gLFE4nk71E z%*5(wx=Y}jnBI?QT2HfZq2pAE6S!wW$rLcR-6#B+CPm)o7lXQ%&kJ;t{G`+_UsIJw z)ymm8MmIs~d*Qr=^|)gSr#JMhS1KIqd!yHhOqU#j;u$#ZCyJFLE>mu z18H67<@)y3!Lp|0>f)yaj+q}{m2)nBV>`quadfJq5SR66dsBokLpc#OyVB1h3U{iF zrO^{2T>T$X@A+FRXFT%C)+=mR^A2X`i*Ln_-;1!$xNe3SfAli;CCE)$Eckd42=^3> zjg)0^MZZ61;D)Y}ke|r87`r83seJ-R{f6OFtvI^18rCNpo}15^s|Ncr2di%b_^I;~ z`xi4vj$DR;%O-MVZ7uvIy6nRN;7jtA`iCKS7Al(Byg2q%T3!HC-*)0xY;SIyE`n?* z9n;~ziwd1l_jG?fYDKTc{(z_%}vuG#bH|ID8M*lPN z_fw~OGL1AOU&+vCKd%_BvZ7~|Qsrtds+!<#F|xhYUt<`t9WSmc zA6K{9Yds*%GXyed^k+?5-hEb^Jt$B=)fCV3vSe@-lk^U=J`< z)JORJM|bomotd2soH^%9*C{?tAMT%yR>rLlbS7{czc@BMj4Ewb&B=Lzu{7WIyIoJ9 zET~s@T=I}TNR%G?YFKG$1c%}&)cuqEG%?3J_bby0yDgunPjh#5rKyzohEIQ{l7Fyd za^&T+S@vF$Zaf~JJ5^|cvVSd-R8v8kWu3UHJXa3>AR9(~ds#(1Gzup+lNLk0x_oNb zGxg%MN|uNK4Ev}9RBwSf$T;h7jYn@?LW?kyjgyg z;L2fjireH8X=O+um`!vdAdSCIT$c#E)mf2Z8HOJM_0xdi+cRUktR$_9d@ww8yw~$w zL9M(0VNQUAbP$1#50l5MzP4EPzynj#tyKuum1$LNI?+3?L=6b&+D$oF*eJ)S*;=;s zJK7A0q6o2D0?zSzp5y0dJkm+4xXQWy>tQLO<}k1-`RKt0f|CzQ73KqDr>Xlw2Wmn& z6`wLA9M?qZ@kQoJ+-g~(393kyiz{2D`odvIVp$q48J0m+RaJiCl}|3uyUv!`=9TOG z$(j1M9v_b4Ak)GwDoU?-dU}sS>_TDvaD=|qB(-M9zye|a$~5wU?F&yO<>GbII59^h0hFpTupMF4tpyX;=tfw#e{fYz#3nqe(G$7qi*TU_qD&umHiK^r%{e z{E$Lm@NE&OEfM3b2Dxpq5?i#>TWmusV`c2Ia`jgn34_A)Yevt&^>xPU>5=4`BJ!)9 zZEZ)_+=vN2ogZxbU6;_lzfFridedKOo&C+9R@h+5dV0k`e+#r9-KRnM2a~CN$aBr> zkf+Ep!{^1-62^4$@=jl%yDr1u-dXk`S23v0`l|xwvbq~seO<4+^j;L!sldhX>} zt&wDsjN4AN4TwvGz+e>R(jmCOYoYBIybKs9L*xiIak2lRXdcrg5$a zJl_Kl-WaSm<^SsO#dd4nvDk~u^Z7aWChbJi%R0~C?j7gVahO+bcCFF(j^QPe{eEe( zby(}PR#%UC@+AY~o9K^0^q!*~1vt|x1}`=tFONyiG}_(NY?U`wV_l0~KO!%92ODK} z%dE#MHUye?r}WiG~*xn z_)!{|l;OF`Ng`ED!w`17T|m*!O=O;BCx=8|E~r&xCKnFT>Eeb;8DqS34xOtt(pIMo-Uq0gQNjk88~lg~+P8%D6Z*IjeHS5zvf}2iTYR zTf+rjiioIY4;0O3fSXc98p0!xx~gidiPThYI{DgF^(Wgv-*ny6qtoLTygy%{mx$>o zG>;Q;c1@(U9?pu&KCzWZ7VD7CJF%O(fe}padFg-Ko1yajyU0X9>drd;Mu5P+A81qV zhoH24uE8>L%>hPuUKJ9G!!$oR&${7uqTVzlBS0W5T3!REx?Zj{&Q(HHR30>yAZeQ; zzOl9z;Hr&X<1nq#EKDQM63SLbH6a?@$os9T5ozhgHEs#DGrkt`_Clt zQyHa>;rGMi^?1-uMMgzSNabEwUtc$0ofU=-IXB*&Ak5;S0D0bRWj5*QOD68qr*9Nn zV0tQwXO_nlC2^*?8u@ zXO8oygTQ!m6o0xxyhtYWX6Ds}L8$7!yrdUQJRg!i2BOSEIhw<`)B8&-b73o2nP&GF zhR&mzN1rW?BGTJ+AygA@+)bM%g60gnSxDl`E_d8 zpaO2(^hSyt`+yk6tv=fqW4o>RTHjMO=pcKqulM#t@Jz-edU=9Mm1d>Wd~c^=<81#H zdFKgjLQ5ErA^9lB{T~Me`QV2jt1T-e~Y_qx+Q)`tLQoBI?F+`pV~boQgKw=h6WH z^gIsPM0fP}2QZE?;u5E|w#4Qjg5u@9VXHN}0Hpk(ZiNJiY|TPbZqN&m3*!o#(;p82 zcuxhZy+YL0)VUplS&gXauC%T~^QW<+#P+yKht)x0_iEc633sdBqD+vIGy}G~P&>hz z=DwpTA0J<~M!u44D96L*_ZMT`IUJGFxuG!p)-@DbBSnmOC$KHQL;Quv5wGQ&Uh}a8R+SMYIZk5YJz+GT9(yuyfQ|(bf8p&4omgR#1 zQyOV_=8X4FsMGXueXl8M)O9;ngX6L;95HS$WaVdFtjA?xU(tBmQo z`V_fRB3c|j9Q12r;J=-^cmc{mDx^DsZ+$EMf1UZs| z9PQiaPLO6-YGCJ|5y)3{+Sb;VRnkjmWM{#jLoxo8)mNBL&aPZE-SH%^4j>pF4VRgR z!l%se>R>;|{m2XeQ6kmaqAmJUp3^^!+1Du@c)(GSZ1v-AltmZJMxRjitytT+wS;Fg zZ%?I{jEKMeOK;_jubHfJdbRSqwcYw2+g0V$J>@SwJUrOU(xKHb2P7R*rM&sKIbz~V z82u!{5^B09Q~6MZYR1afP|gTCBiiiKtoBOqG#$1#UA3h|ew@JW6;tq?6((8`163bx z@BONj9m#t2l{p!aBGpQ;c8I^sn*d?VP3}Mn} zGuEv9x=juh9{;5w*FPiBWvYkF9?%L@sag}LBZ%TR#!VUAoaR0^2K?)b{)Io?GGD;i z9o3i+V*KT}0sqUb;v35u!*8~JE=>McVD-&lf(jk;VK(R&uJ@m@?IG{zk#W(2Gyitk z=)@c0mo(qQ0F68WUrRR>VT5~U6k@L5clrNnY9O!ar!Bjd{tP%_ok z)n)We`;uJV#h=fLcn;$9FkQ<5EBcvMg&hn1N5vx`>08+=0Kv?Z*8%{ z%776+Ai$}dcK-#7P)>;z?xK`DZ-wWE+u-Fdd}p}W&O9ixYY$7G&Xu~n*}Oo(}7JL@+B`lpTq>D=KhFQ)we z=-WQ%own?~MCc&CVC2T6>wC*b3Gz(aI)t!-H)!fQaa*mr!qEtMNwVGKW))&*Q+nRX z3`!hySAeF@5gYwHc{AVV|A?4B8lH1r25?qiT@m_*;-tR~kd+G0wS$}*X3+T~X!X`s3R zS)2Oa0Oz;3Oby+%`zNh(d z5KbSZz#@DEl7=2 zq(yHg%9BhQsMhoNwkPbu!@+9XHfGH1I(%^|MYk?SA;%_AH&eMPytXP>`5BYW9W~0; zF3kZ_0++tNK52UbVb+mIY1Pgnyh@upUo!D20n%8t;Fc`OP2p!^$+LaCLo)gT#Q**8 zo-VopSp-w5en@m-F|qz?*!vmbBqfG`p+eJ;n$2lT=j**HV?3H40^CELtot)u3)7}? zsM6uh5f-=Ybvy_e?TeG})XLT_>7lD-*w}o@SL{k;GJe9fT(i;})BIMv5)2CyUjmK8 zlxXsL%_@Z-jjlGmX`1ypW=9#^ecp@Rwg-DgS-_AM?w+A%5$bmZOQhZb9<4HLk?p`8 zXt{1%57eTx1T2wvR*+B`Vp9^lx@fE2F2blLdTlIZ)eBU0@@Kwy?D+TQj*Jc){&=Ps zH(kr7Rb`av6~FniQc^8TV^#0=OC~j_#*3efao|}aEbAL?ui~znv?j6*RaWBFQEHg} z*PEOBb<5puzb)5~P+*<6Fl(r?t;O6-l?zuXFp`Z!o93Fd#%9)T$IsO43@N~AJ7;J* zJmzg%#p~_u?R?o4+=-mEr`cLyx(#)lMeb|;`9qTSAyJ{al}@OSm2p;(Q$#=6^lHq$U%-kr-(jP2IGOePzkh;0P_Zc54 z*TXzhvj0s{6vZwSoRB^Srb5M*2=Ibwu=8}|RpxN#!%95e$5@n3si4(3BQ1x&L6rl! z$glD!5ytvqm!)o!D%;n`6!&B+>tLpM(u{|Bu3p zePTrS48;)%k!kA8b6tW~eTfhP2Sy?w4ZUnSI`PlE{eQevJ4N4t9otRu^eek5rNXHB z@n`IkHCvr4M?4i7!ta5M>aBEs3N+E>>>d!_+-!O;TkbYqC&e5h`yE}df#JGwX&;E&TRUcJ=?PO201j~{u~l~?Q|Tk(h27P1 zYkE}}xzru!Z5ujL<%V<4>ehG&v$zQ+_0rJmE3N9ds-$Ysb2ho%$5K&QjrI+i)+k%! z0z7r+Vy+nWlv@h1ymwkTFZ=G+@RO<)96tG)t8PnKHSgA$MMlvJQ!s9No%6&$r@qEqUVuwzv+&qeqE>2X}e` zJ9QJDW|qY9%LKa*a|ALtNZ9{yy3ohywrw!zQr%smd%3dG`u#^bRAs;KZ?wAUNx`&- zhS~UQy&=XMHrAfnD!zZA|C%zUTwzX&S!9hNTQ6UyRzBvj^q|uMTWuuQcpB2B3E5#9 zH==)pUOYw{ctD?qzpi+Y%6LBhA8+fQBfML8p&AK@jHDExVnb9XyVAR#8TeZZv_GrK zgiIsBD$=L6^J({U-rE+-!pHqc|p5%AUT zes^BpA_TTk4#?S!J_NC)V7$dTacvrdB1j;*wuge5SH>gUa!vULY>^Vjxi#hZs@4i% z?Qo9ah3*fP4aZ^tt`8_Pyc1{(u-7j3xQ9WhVsHq&N~#+@BbQPuO>Wy7RAohvFkLoPdk4vwh7se-ZtrDw7e0;AOEP)$N z=2y$t^KLB4Pd7^S(~&y3s{}OW(gj^)N>!{y7pNPSs1||bkt5ak*%bv`tZulg~{CuZMwDeamn*Okxsb1MqhcSQG!U}+N2u?PDd_3`NnBirHz ztI3qd{AceC7Mg4ii;s{gpXJVZ--Fg8Py9?u{clc`^XXI>p?(K;(M?lyAp5lqzG_3G z_+kV9jc8%OwCI$7*E8{J+p~mMe*XBj^$1wW6dR0jP#S4H{Ys}cx`eg|ACEInjwuF~ zVgG1;#muQJvDpaPgj&0s**PXR(P>eOGM!E|nM!~&a-?L;wEmjXQs)5M`FU?8_f-PD zfaIO!6I{9lDQ-1bT@V9^$ZVRmNIRNuPO0fZ)WX_v(n1y0>=CuE5eyeG^WCOqU5b)l z#nf*NG>17ibdt0T8$L>DTcjU#obAg87YyrC)UlZTL@|!0twf$5TYiM&U6-LNkOK>s zxOW!}fYY}g<-YNHrnDB8LJ_^NgndrO7-L6-NiU|vla|HDW^rQ2O24+o^BAxrR5NwH zZtEsH4Q&`$8<2GvliQxs9bgxBtMqed+GFlVodRf!SvJ9u7)c-83cyvhmj9|Sx# zCFs7R)-fb=rYyc5rmnAyQnN)VWNWKP-34Ep}6vqx4BR`6C4-G}%lE8YZhcn~aPR3msLw??ewyv~`{k0`Oyw2sL9RPFJ3U$$1Y7C1#CxFjN!{5Mtx(-8Q!LlxJ0 z)@!!NL!OYL9lUIF9Q7*|UKz&^md}mD)Yx(9hb+rr&coyiabEp$r8Kv-VNdcb7FMLo zwb+=MEj{tMXkeT@W$_TK4Z1I2gO#+mA0m1Mb9}P#3W@0u`kCI|H{P?c_^l=vxQmkaZ2Tmx#UItk}QA_nD{H_IJbq0Mj%x) zvxeDMFrXf8P5OSmW%(Of+-R`GYRH64(Ey^P7Nzy24X;5LtbH&Xr8)-A!`C)-QtS-K z9wAr3a@b|2cW&2`|ELbaukFkL)S?H!l4Jk>owx+bY=(C|q%C)0qfjikZwhP1rg z1EscEbB}p_jbzO2w&*GolvE56m^(54*6gcZBW&EFVX2lq$gxeYN@6)JeWttHa8A+I ze8D4H^ zKWdD4t~?#~BGR*5vX{SF&x1$+%kk;BaNDWI#Ss)psO5Zn&xWcayYGhNbO%BOH(24y*=n(Rt-kBkN&ddM z9bvn=!1%V?ZOj5z3G1I*h)#RUF$1>dFVT0PumCua(HlA@@5OPmEwT0Eq(L7`?Cd%y zj}3Zqlv&k~0<5I`i%n+h>ir29)4KA_IWjgCP~ikG>{kK2#0=IpF9P;ZYG5B3hity` z$Hcq4BCNlvTPuuPwO|Zbn9e+*u1x&sDrX}Cez;DU&fM%~^91LKNVOUrVdJl{xcHbc zwMNU%&2qQJr^l`IHEL%!NbGx~@`YlXnuJT) zEh@DN3IF@S&=|V?$9W2f4I7^WI^~TQGWJSTu7ategGT9xe{yO54?c-6`Do&IqGx{o z-rdykcYN0tzh^%3-HaCXP9m>Ru(3Dy?7MyjHK_%-5y2hpsj_FpF}%#{6THN+A9x;( z3k-g2bJUTdjx$Nd?I95(JJ98DD``*w?cY;NKdOXrzgGw7+j0nhi9u*cb~V{o6$ksTLCF+P&(JFV7&yzspgD};2ODLzt z&ezcN*vrn_k39dt4=EyjxYssQB=n6ETBx6uf?5GeC}zQ~>vvg7iXDHlo&OqjUM{vN zUSVU(6h<)l*-Tbc#gzWUZ;kFfzv)3y8>;*oPK7>Va$|5sxaH)i;;ieUlJTIYL7YyF zhbC-5l~!kQD#>mFJh7xwvADe4^=%8TgPitUyJ)RF$%i_?MX&F{O4E^q=>p{=IL17| zu%Oy?r&n<{T)Z)lY?q9_S~*UG?iTW1DIr=MA95FxPPKG=$O&Pk+i~-86WiYHQRkJ# zMGJ|Ck{}Tnb1S3QiRd@?2C?88g>BU=RBc@M(kZ%ogh%VL;+KZa-|5u(vBSf|l-=?R zyi24-$G76#+ATHLxLS3U9F>QZ$z0x<(vNLY_?WF>z>sjpf_G={N;TWY(Bie-Gsl^G zO7(NDV4rLTJQs0Wj-0vLI=0F>pql1zk{ksYEFGC41kl# za_>B$*OKIX)X;3LU0S4HJv=k5a%Wo#Tw<}4wl=icI()~lbi4x2H$UrplH;=XT64)C zbmY3a12h795yegOf{IlaeFpDMO@G?eQq>EJqL`!bLUVu(QCad3YK@{!(?Ypp+|va9 zF_ZWxTdlTfRRP1*Q=TGA``aP~WLPU}(l2&+yj3 zB|_nR699KBNdlZf2U*ns#I^jfj1H(G36Bh=_yGNv1j-6Db4pz4end^q6sCfx(WsOA z`&+9(L;?4}sl%)NkCg!1>l=99AtU6$81FTu54WDA%E#Q%t*lL7-_O)XdjXQGc=X{J z(Yb!hkAbgCrt>nJt*E-v?1=%-LzivRc?qY>QnwC)I?;~LvbJO{-eroExBfmutaMD6mQr|{T==Nc=jVh>%%Kk&(KCx z9civEE@icRcP6}?o?NeubQkoPGG;j|#P;QL6*0kkD;3b9xYLO1_pF`Md36Ph`s~Ox z69~Jf@$!c^G1zFNQkaESiAQ;M+U6o>l7FidNsuHkZ!8f4%nanzj zo7EuPu!DL$tUL38>*T@_&yLdCN^fA$n9px-P46tmy;17D6eZyL{km#y_i2sP+sd8x zi&c^<8`{}F#;7xf&4yL@uB%?0saklKt+bAB9a*+06j}~t$ji~JP4e(mH0!lh7MLSV z3C3FKjaTQyspL4A(=%HjWpnL=s&sONTj_N4t6XFO5a{5D8+#K%o=IfjV!7^;K_8H< zTcaWF=A9zB6VGC$*YpzDSe8pEiyKQQ+akNgqoT9ZEGy&cCDRTa0>-h;U2_99$-se` zIH=0#>^DdO78<5=t*E9iU4W|ZEZ^ujt4xi|!8=}OxDT(X*9BNBi|$Nv2U!Q=kHkrZEh(B z3Z2)e&Gd`qkhh4ls}YKx?l2Hgz9K9ieNDt;Esws3CXN9|-lNO1Gze=4^EmP*V)RDJ zFs@j!`PfCH!Gov7PF%WdEs+e#f2OHZ6jP*YNpONpo(40+jQt9eIMugg8)93erlDBd zi0%DJ;nSx__3jNq%G=HEwU)H0ur~FQuhxzvGx5no%|FhEROL!sCNGbiD|}!66CH}; zTgsO0;kF>#!Jju6rXB-@9nU&P8H>lrSFG7%P(x<<%xnG)6@z$GH8N5Fh z(96gvR3eZ#*D}(9{^6#+iob!aS?7GpN;PYqCa4H|^ zQhA~fdHGwMXKW3FmzNyqhg6~+-__C8M&&1l{SM0uLzFbE*e*VyjN{p=ZzK}MM<+WC zkJKzegJ@hszyRighscOy>Z~iY)K`ApuOd^UUFor2kZp0QH@0b*FH2m0Qj937+HqCS}O&N`T5ZT93q zcW{hrj#D#T1b|4A?|9Dzq!Lk5)glUxQ~4Hs8PBuDrU2(%JR>woZQsJ#j4&xdG&^0jJp_ zLu0v!eS+yK&mX@4l3t0;$Txz1kwa9o2oYx89~il9X%j$7@>>J2XWqA#p`zG%^#6|T z&P?=B*w4hH7SulE@a_9;)eGuh6!_gG6E23f$BJ_^ymRt2Zn7hn>$=~ba2dp^Q&uQ_ z@8;S?!?`qX!sqQo0&IMy%i@QtaPJfNgvwltH&Ue0Q-9xz#$WQ)_gcRVIz1{Lcy`Cz zX^aPkEPwQ4^ z?2bo?RqJvI4rE$m0~fRlK;K&C8v7d2B501OFBuU zZY&crVT;QB@I!!Gb|?1+0mY|s+FK8+_Lc(M{s3#zCh8bn>n~Y21x8bSOC`|M7acBi zSC4bhX^lihC6;PhuKuF~tLr{z2iz}EAW+4l6GD3KWowk*lny-jcHN!+=Q?esg=f?B zx@17vQ1H%xA*`q%xGgU(c0xyQ6nu?xR37eCK|WBJXt_pA?jsQfa)rIyFd3ctBgEAN z@AWX{A>oROs)2eM@PZdkuEn=w-zZA%FL6pno5a=HNulB{uYj+|Y@~3GR^gq`u{VlN zItwryp6>Qe9CoJakqjnFL_Q>|1EYeeOci!od{Ffrp@c?2!+#M zTQ#d3$}LfMS+Ut8iLgu&_BO#|npIJA{eYOYSbK)1j0C28%ai8@%D&3zdz0hfVU4%M zG^(ZOZQBZ1s!PiJ+aB=W*JJ+#5d3Ew^5Ji2V|KZVIp018ikz7k@U4+QvX@`TnW~H9 zl5VDbScaF(s`M`33rtP%{JDa*&o~#g!i(eXXE%kv@gBVLph87fAVXV5cX;OHw0LV_q)EfKKSmB_Pl?I1_%{6$ z_RlP-4?hd=iEuu(&L(`~Iph7?{~s6pKle2Hm1%F8n{YGxLXwJy;BFHlCKC~{SJE!M zT_PGFxwRBqVe>?`d@Y+ct zlko<7;@iqfBO(L=QhfVm1WjB!g{J)zpWi?J%Awn%NuVpx99lpjkNDI{GweNZpeGCG zeam8}MLoytODpcJ*2iBYvJ=!tlV}p;_ux&-p>~}7@|p#Gb@zPmp9h71T-85r;l}&D zVm*IgNYAdk0f71Ip3OXthzk#O#+$<_^Hl+x&9%I=3xNN&z~*FERadQ$m#6y65vGyE zhG~a6Ns5=BxZAa?izT^Zm8?MhJYQ^uX^wKfFJRF_F%A`2BBC8(2xy1B^56gUPhD)% z9yW^wTw^2WGAp~i;+F#_Ra51R_t4M)xo{^uH`g{p6rd7{E7QHjTPU^c7b*+5;vHzX z2+ST5ZnKfVNcF<6x`#sd=gA*y$NvNekTVL6Zc&rFK`>sc(^-zV1d0v)2fJX?-H>Lpir zoe)(6hbuctxp$wQQ)oDGh%XGk-yJ15$NgxJ(>88-|1kIzuGo9Wi^9K8<8o+X5_fZe zmxX-6$ioGjTOQq#`v9+aqUfG)AkE05b<2~yf(5|E(3X^9Rduy0$ks7(soVvQeb%MnY<%LfqjasN2YKmRuOilL|!tv}-d1)b?u zY=P7+4W8iBcqFN>oLa7y9o;{nq9%xm^%n$4i04{8?b3>PQYoMTz(*4v<~2_dkI4Q~ z+w|8lf>R6MJ`&Ckw{K#juVH|=!YJxwOUf1yzn2$*=%hg0r&P(<8Uydu9_6FTLFyn z{Uyz-Z4OAOAjqvo`MW2;6R#hb-G?Cbe3A{d+9l$gqf;M#pS+?Di_JJ}j&664dAHU1 zsY~q=N6ca7jfDr}FxerMdOxbcD{evb44kQP0JNXgz6_j`|B1VQ5}$od?~G<!m*(T+^B{N5xdFX;9<<&1B4_&1^Q&c+mu0_y z%29T|ANymqxYm2YwVq>7Irw&Ey!&1DgL8ioeV03V8J6Bj8=W_Sw&S+?TuL)RspWAOd$qLW02;6MRV3}KJja*?2pe39a|?&FL8)n za5>*UN557IcKXVIwJA3ENE0R3Vj#dE0YvXWSkR(ubSo{uHmNy`KZse-Dg(gR=Acww zA0G9$~&q+l_v0`{y4wzt7~-MZOO_uzjoce$-h2HY-e) zBby`ma?uhjnbqXgzy7TRF?-~wl*^^uz@uYWGS`npojP&ig7SFz=NMZHuyJuh5q#&(uCY|Uf%R|1qJRp+}j1(p*SK5OKe7z?z) zo&?FY#L^!DZ^^4O?9(M2YlE4Hls8B zH2})TA<^5UYTErrT;5aR5EGaQden!_@c)02vxkbmBO(vkhn#*AX~`ySdP}+qM#8S6 z>0klMoP?)UGy3h<14p_hrFzn3jENDlOnWlcNK4$0>MD$SG!Z?aWy!a;=htHq{DvJh zo7@7fDfn+N++zJBVS<)FH6;C?y6?ta-ykLr!Lax?^%{@$o5TFAmR#aNUvF~$g%4}* zb*e)=YqMSFJ7(XF{srhhV4b)D26?>T;9q(uE-DoHtFUXNUtx~^Bbxb=0lw=o;&AC_ zP>TPZEPQ1^!D{`XEQ0-)&j;LTnJuNwm2bTHSAH38nk{7d&fp(8ZM1XWrx%R(@*jWc z`Ft%@Xg( z_J0o7ANAU^S7Idh)C^_n&-3VJJ(!uO?@0MmsLYo~&VxRK#o`@Awodh(!ksnlR$&9j zFV7id#4DV-BJ;-_N9*eI()wzEw+yt(qZU2Ojw}r*rOXcn#%&)SCf6QxmcK>Yl_r}E z(iG;O@cPu+@2=k77k25PjxfRq3wf#d@i^Cd{Pl0~M7%yi6|82&cXT*dqMZ)eQJ4~& zGJEca;cv;ln@-uGBd@S~(zCHpo`o5esX~HMm(j)9gs|P%-!e8gJ5q4K@%+bG{D1$` zhnuI}RID1-!1d*qM zmVHCclO0Fqh6`mtNVUk5V_B!fVGTW|cfvO`kbc@694A&ABP!E46~pg;3_74xPql89 zfvc)47u?EWI(#@0*xyJ%%jEF>v2^#=I_spvi0GLTN%k0Q!M=tel%2n+Y z_`n1Z*tnAoPZ2xgSeTssampTTXI=9)>H5DPH02-Q)T|qm^|~HUxhI!MDi*=@443>5 z01_w;J|)gHs|Fe%VX>DNa)#XfR$^YlG#dA!owA_>KvlLzu^eK1Q&h!AxT0`-B`p_+ z>`GTi=zV9*ea*6+ov;PUQ>kFEV^NoQhEVf{GgDcZgw)ji3>XwBSyviI5CY^7Noj@s zPH}M90E;Q@zB=bjO1~d*_WkL z+)pRQj@iF5^VID{gq~R<4zb{*%Y)wHc$4|LZ9EzU47E+RQLg@W#iWvhC!N&}rKpH{_v z+JmerxddHIzGuuEWq;k6!w4T@ax(zBrwBs3r)RLamLSOnz_|k39WRyu!Lb~t#jf+Z z)d1C!PIqwpW2XJ5FZZ9H*J%F!2aD_Z-qd37v5N8f*45pR-&%35?##-(b#+QZ_k*jJJ;SY9b#d9KR%&Hw9y^tt6{eo_Iuh78*FTmT?niqk=_SSseo{m!%Q!aD0=n^fFPp3i;-YH{ZS{T znWDjSSS-)luMHTR`_<-fmjn$a0qp{o5yXh)0mHw5`Q8=alO~q>%ge-twj*m78 zsYS<*gUU`YtdwQ~UZJ^d2@5DO+Mz_VZ#SLf2d_Ul2C8J_VsoO2cAK#2s+CkajVJ}e z(xxrszvAlZ`g9s0Uj{UTR+kPCRrL`QH>92W{*OuVzh2iidf3xP=3%k*Des#Xj>=7* z4;Z$byghY$&+gmQ7mwb$mHMpf{bSmPdrzO9MxEVzSNVm??x||&$?Bk^d(ZoJe2c@^ zU8*$y{SEb-9oJlADBKVx6Q!1dBP&C$O#gi4|DCxhpLYtCiicOqW-MG0TXEgf(MM5% zuS8k?p#?ymr!w!!^WEfkj(17Bf03^Tc_x8GU?FrBQ5Dd$s zFMo>Kn2qXEUM@r2dn*>D*;pQ8{U`b0Uk~n&Ke43(bX+DAT@K%D{^2#tW|fot-_^eY zw(32f_8nfmir-<{f6&=l$`l8I_FEe{nrW%u{IIgK$a|@ol)3Wp8C;~S!cIp zAPV3&(+UYPGDP*En|$BLqi(|2bP|T10FX@f{e`!xU;CwRO3%L%wOKiTKk`AB);ByD z7WYYKZ(UQX>z7_G8*+#Rt(90Y*Ji@^UlZ5#mEnCe`c{AUams{A?6EH(dz!#!HnkH) z|3hHriuK0*a<477GE{}rT=Xnx>2RsLwU2AKagXXG-tg*ljMaW>Zye`*-Z>}sgKDyK zAl=={0~M9Y`2J$|kRNSv+Slx?CHXljal;{(oPg(dv?YjJ3o#iVtz4?`` z2!JQuuVpLM2FS&yp&{MigtFs-B_WGHv8?&GsaRd|(bH?289#*i;5O8#ycMF)zSehF zEpRh^3uMCEZq_^G6(QGDJzev0avWUWU-!^2qP-hWFJiq_= z03F?3j~9%N2g*SRdGo4AK#$iqSM$D6Xk9(&nh9&*B1&8m(R9AHb7$ST$)-e*j7oPowZ(}*k zjSmy9>8*Gb-~C{T99Pi{5{YMHOg1>>qqx8r(Eem$S4C<57^hrVbC}UW-L?|`^KqlW zfaf2!+ULqmxtor0ZvuVP8gEnbr>XBh0tG|{o2jZQ*%I-t2%pe%3qRJ z^5u(e3aOcirRCEAvw3$~*y!jZ%CUTp?|A}5`F+P<1=}k{`oqlX9Y`9r0I0L!)N>bX zTbq2~fu&H%FY<2y{S(CU9uho5-$D1&-ZfQSQ~sn>&qf7%;zV0s5Kd;7@Aad1r{CUJ zU=uwhgOVI-nKo7PF=jb>syZP-v6RU<1a^#tH(tDtfA?9ma<)Hz+}vbz_|NX|G}E3O zUAotwF@#HDmwVNXq$rib#Up$7?R(K1cgI;rTyO;$mV(lX(ey#bq+2f2lpJOFs6DIEuKZufMo>kty5#lz`i-H8NSo@{<1_q3Z)v zU$v=i&u?e1SD5ol`k#B0wEsWe!=KEbMz0*cdsrPiIyQE0|HKY=O%2Zn&lgg^(LSR| zHUA4^i_<#Pj-I zr<1TOHue1U`*PMSvrF%2Ax$DXfLN1mx@Ibs%LU|qpW;s+FCDpa%VqY-OzXSP_q3`y zZ&IiLFb5A_9mf&FFX^6zB|-427|qY@Pya0%K`cGJaDD$L*#%tAY8GRHVgH>FHsS-- z1cVX#3`mQ-r<55O6jn#UdwKFm#8#tgBY$doc}StD|KnpGC3x0+Lf9yAY;zyN`qv-n zl_SqqMv4Av?j?L8f=G!Ot*tGZCQy!6vLY_tFYb+GguyvYH z0c+`qH2LVJrV;N5@W7A-8}D&%$(>6vg4W@{y=a-q6$(H5^yOVD5_JKL2sO*>-cr-h z+;NNwHjIyt??Ra#(kwH38!L>sV^O>IAw@n$O;B64cxTNpYmE66L)L2$4!8$|Sa~e? zm>a>A&VDZ1l5rNsi?X0Y@R|D_6RyG$bxE&CV|8xCcH(_$&JKnqw`m!mr|V0MX?(D7 z=&B|+7I=?%tvjySbvH`>`U}|msrW_~O~RZ7npwvyGR;6w-~0@Zr{`_%8;!TQl~SIS zY3~NfRj#kF&@}@8@ri41S4>+YAJQD!R(QvGk7Fjg!ybHVQZ3TCl&Z=?JcdXt<(}jc zAm6KjD#v*c)L;bOKEr7+yH3-@=6XwB)W}POu0gJyCN2!iA{5SyLERg0nmc!ZC#V_^ z(u+~Wp!euvYR&Bu3tkTwwTdz(i(&IHVl3y%?GjfgtHAA3^O-r}HppOb?^!yYms6Z; zr~?(XY+;)GI7pw`PmW4us+ZABf_Il@42+ zPlaeB{5ZvsRq)rp*u&2(eKqJMj*}LzV99v~#@S3;d8!HeIr@s%HfILG#=!*1H{b~+ z-a9^!t_$bYHgS%^KijDE-pq$e(cG^Ya{1-4VGE2L%wRcKgsk7;3U|s&163s|%nK*r zs4;e@pE0Lb*&(7OuYwauw~#5}RHiB_+z142V6^9DOYkfKqW78k8mt-xl>?e^Z?7cF z$YQuujp}@S9|vVQ($U|ZDf98!RrnY@g0d|z0!FYpDR?|C$DOA;7!ZG4lQD(t;mLU* zjzgY#-FhuI{Oj?q6mx#aRTT$LURBxL+_(pjAfr@)T!p#*t1I)h@|QOxBAN~ULV$ZL ze_G8S4bivtDNp2%ZQ1^w(}-KXX4yx@%|?Cf#^w%+=SWRPmH@o8oZ8oM8w3$`{LoO1 z2JRQ1Da+f^GA@6R>f9r;53R2CRV@4!^s)wb-b^ z;KBPK(T5IbR%$&5Sj8s}xxa`l7Bgv&Hm2%i?v;4*J%G-UPp9l|w4nK8zaLUkQdjMN z%m)iw{m;~t5>Edsy8hRXhuNv}nLT><_r58p-C>HbBrRU#V15yNVQp~9MnlWL(;$X5 z<=_B&+}5yXjo|LFj4#j>Uu^hjK!$+K%k1TJkZI-?JzIhZ;|15Hi6@%)$B~YwC^R@Y zm{p@*O5w#lrnu9sQdNo>=OI`yoWO#+6zJ05~Z@*rB z_^us(w(2q~Tp7OcLvFY>$&cJVhzvfm8$|y!>&rw~(NmJ(vP0;V4JCsev>V<;9rWWHHQGiG6Cf00& zV>(J{3dmkVG864&^#YTXa4fUndk9aOC00?w^Pu&UTF+hiW3E*Do*eo;MDa73deza# zE@|9=+*U@Z`d^U~4P}U8vq9`_)xG&tgVw`d+G;r(Q%V>64}AYC)AjFnPY?T{-L{<8 zgo6p6jWy{P1Fip9>WmVD|S zFmyKp3JOSfij=_6-3Ur|cPKD)!%ze7njL39=XaiW>)!wP85NQF&RX}n*L7b3!OE0? zZ`lEJ)`<$w+FN9TPr>b%_(+B24EP4&iHL}p4K6yKWT-3Hg0#o91uw*DSF2p2PHXFE zFE|5fz}DJ(URi+Lj}yiA*|&;vWdq*maAsElM$W;;;d_VG=?+YTMso(uR9@RB&w@$l zK`;WRp}9&SOQv-6o&3@KwlXZz)B5v+q0qqwPxq5tXX}4^%)i#=XWgDEc8oyVzvQBv z7{}yYcLTOq_}-UQIf3UN;mKe&Jg_!E!;4GJ12ek3!odceB(c*ud?1ep`YZlC=vXn}9eB_0o4wE?-yQj6UjVpccich>3Eu4gQLCEpSZ(;{SMY3cVheS`Evom0 zZ;y3~|6+$caQofJ{61j7ejTfPdwhJiG?!CEC;FkT1f!6M)ksRZU+4XQaTwyh(?#|U zp+rKHI?2~lxvI_|$%zdgx#5&z+yCs6_J8jV;F8us0DjC;J6tudy}7&7$i#p@EAcM< z{L&IlwtR8~cre2KW?*qK0dy%s*~bTmGgZo#aejH3c2={b9eCk=KYDr_+Urh*a<}HE z{gBV^ZMH%YTI~O#)EJ=FIBijbX>BAJ)OP`!r4|zWjwHU)x_u|ekjNhVx!vN*fQ{j& zwO3&9ast>>Mqp;Xx0i>NPGlb9IanG{Ra@I7V!zx8QV2lo1a--)3&9RhI_t&?>bv!e zb{ZgGjYKP;nweVVxk^=vk3oC+0f}V*gFfN~SCGR;!#Yy1S#sW^T?v|1p%SwplZi_2 z#_0ynDcfmRk2&kJ4$w=IwrzZXPgQcjW{PanyOX%4wwzq$V_A~Rtj|(bYuz?;58%WP zE1~<(hErUZ30FtUgQ$y|+b2(P?mq+(sv)mlK@YKr`JaN8-uKp}<(n1HR`sBD_%n|g zbl5M97pv&NJTL`K`>#(4xGq1NKWzO#Z8=%Cx7T%;>6BcvkjsFy!P7decvNa~$wAlp z#T0APd`Qt290m`tHWD6>iV#J~1GtTZ-(ws#wfvJcaLVY>(WTX!;ZL*)$tfMlP+!ivLWf0M&{aGLzS;}%FplbCBoF}*LO-bVA42RlMI|M zPs-F4X3844UIlNAR}WdVEsNNm%)aYcH)8(z7V%jDBg2pee5(Ig{x0TdoH}QlJf4}V z>y?HhqJEX2r;ALkb(-NhAQ^Zs_TBZB`#$|D z3c!O7L#TaQejtu1b7(%2Q56~*Ov0w42RX0Nslp}MA`uHfyzuSr5ET5Ht-+R~m{x~8 zu)PpVre?F>^>%otziOVH8ZK)im zG`@J8gqr$et$v{j<5#W{-*thDKwYH$f6jDMWPO0+g_J#`ih$Gkv81(V9yhEfv5f== zlb;bBNw$QE%n&uHwQv=n7hnj;&+P&5Q4GgpQ)lOCHFk(fzAz0*m7^O3}B_xON5Yw11*_&mA}1dmTY{6Sin&h1YGR~ z`!RX+YaBY*7T>~BW61-sqJgsV{Wh_6J6z;^h1bOTe6I@(6?-Sg@?}iT&Sq3+1H=={z1FWvM&o(v5Fw)P)rLDGY8nb{EUtOC7KMwn8jbRg)Z`JA_Os^I<&{i3Uz+|+U18UyT!=TGk8|*xE^zh^gQ{T!`|Ox=8Q4cc57>k-LaF} z9_pCK(^JgjsU3%SPUUS+n5P;Y%c@Cje+hJUbeA+T1gufOud6C}AQ||@C7if504E*3 z5IVU86}Q6`mJ8yst}^;avRl(9X@!AMLTtk%Sh0r z|H?#}SH5g2zxZ-bJTpW+|51pQmDSNBg8dR>=|tS))ABsy^Kmwlt=LrW<@mHDoc+^PNQL<~_IMHN5KfPBAEB>; zQ`@NqV(49rtYfiQqmIGHhXeovT((O-a!)sUeX)Vu(1+y$JhHupZEJJmKyGd|k ztySwPy!q|Th#YE&WeXBnnAW(YM#!-`kCFHhVj9SpU=1%i<8JoaI1Q6Ay;WWB&3=77G( zh&B!*93M>X0z$1r)4hb z)yEYsEo`(Kt-x@^2nY*9tPtBzS{AdRogI_x8Y8h>_W@^@PePD8sN^(wZPs``9E4pWj{RIkwq|O_f(Pa+^&73l=e(T& zCROChYK~@kR{y!J?0e-t#5@%CD?8Wsqs*wR@*XYMt%xT7Pv zYTNaQMR|3dwY#g-?`I-w#sT&h2s~r&GOBe8dLJ(Y04Ggidcd?KgsrbLBF^Bk01}Ib z0oR$hVgRSbT*o5PSQsSzqcH+0HSVGX*FSqc1)YsoVP*EQR#})OYCWFt zWbW`3lNx-F(e^ru=PxnKjknn~*S(kRAziVWg|YPjDBMfj zKsZmf<(`{ij#_!H>x_qXJ&kplhcXejo38NLxeP~zs*HY)VuMbVD?L=yG1{Cf!^=-S z^JTQTT`%SqBu}YYsjAp1z`uXW$z^Uf+G*5j>S#OYGKM*8dq}}eN^QLn5Aox5E|+-+ zNXbZq0h(yy{F(DLgbvCfztpz#;3EBZke#fQ! z%I&&Tt}7QCrT8Su{Mwfv%nz+SS=I7R>VDK$&A3_bv?*cJ{`}zfalr%S!+JOgDA&n& zd}M(Iw!5WPSN~%#_Rp6*gUk6mG>&U3Azj@`^pV}kCzW+Na2g4H9m`jaUxoEO7=XP? zXr8iQiDM#7>0vSShR<9_PWew2+&nB&9OtTg;?D|!06^Cc*10;}!ws5$+{~uq z!%doU32Z(`+iYt2IN8DMotQd8^Y*llBT8KQT{iYyQF*Ef0XXC=RL_FL3L7sbRbFFb zVMQBv#dH9`ahu%~a9*=e4gh=A2$;x*7}gZ3dT`+iIjks3c8JIo=BP)1hi~sUqG!d^$ys&Lv9i@s7Gstu0m$#_zOnT)2E(Y2zRo1?M7sRo6K{Lk(0?oIEH0o zC=m^veA1(-Q@xF`xju`1q|3>lcd-ATSEA=27coTNx)+c(Lf^kuDE`FmH7uEPFkL!2 zmPY=UCJ9`UTiY0Fh?TC8V z7IM5qm!q2Q7G?O-PLYw?t3NIOoXa(L*y}{~qz&^PgwYZ$LC>Qh=Aa~3vO%NJ=haf* zkg2ax;Sw<8`4*S-pt%@}xQ+=jn$JV|(EYXl%=HsbMjDyp_KR!iJ&?k)UP@jB=Gh2j zRH~(RfzzF(54qjC*0(^)G}~SR!t>>Nai+E8P8O*?_2jS z#xvNp&Hk*R>;jprp%mMdVt3jhpHP89++PAix+kX-y1kw?K94w&9j7W39*Qk zX%(y4g~$W1mgHAUD`v{HT}RA`#xrZtNLVx^=eercY>j0ip*lt5Iyp63vXE(kRN*?% zwwQDSQQP7(RD&ru$Mrz9=LM#StI=NTKG*HrWp@T=%`0K;_}&+2RNu@(ZGtu)+$>emHQIG3!kx`!XBCW5i*MOlYdD_h2}M^>?>$Wv~9_pS@TN{vbn9oKY)x9Ev927zjW{p74~ z_xss1j+0N$`pQeY2zg!dKH@5O)f^>Pe&5Mr+cd4!@gWXl3nt^y_Lr)9qeZjBs~k%p zVJpND_>@zAp`>JY?-i7oi^-qLKm_QLoZ-}@!SY_AO`>Bps3TNbEJ-Kp=}yZJJkL(z zAC0>(-W?sw<#lWt%eFk;GDQZW`or9s<}~%CB6l=6J?W@m7xG);K)vVWI5KG z{6KJK!}}ti`8d7u63!g;>8SZ zTcz6EQl$`qTnc5XOK|l5p#WE&ImR64%m3LHI_gQjy|gd*L(Zw^EUGLBeH@ zpdUUY9F%w3nl#o6C<^j|c+S4j!{)+&>%2WdHC4I&s4#86YJMKK&B{NRaIrtFCB$>4 zAMSg-s$BO5Hh15^i9}1AR&_PNfswNhDQBL#v%aKiyNl+xH)5-t#)J$$?Of7*s)5vc z3Av^1-%!Bq>0Ouqa`e=oKwRJb?6C1R&e$h!)a-3%gwO-c5&_kw&8dEyvdx$9U!is2 z!ci738z*hO<$ICqPteZi3EItepweEuA+(OBTk@p9a?-KLw=re;l+%LKVn_7E_4vlb zM&q|Pp$?a4tUI04PSbl4moz9Wq_yV00k~k5mgT zfGd%9)g%cTdgddZF}};1CAty}HFJFCxp|}&UAGxSul$T&sVeNCq_^-YZS98(!#WI+ z^<4neC0JoeK$__7mt{+w^%uVgx?`mv;Sv0uT`TH|!Ki3M7`If!o1CZV)p^*#(H~{n z7DqR=zkBgO^F|B_SoJKts&BfNAwZFbV$Z{>bleg`~G-TDR zQ9;7f<>sSBzI{vGMW1tp)~_UIuLI4u6mW;t$rU4DaG`rgGH{Y~R%VXmMlk8Ef8!tR zI~GuVzpvpxV0Kzv2$EWEWto@FH9ck-I@n)5Nhp_{1BRkHArk`L!KCYZ)z)wUkwU%F z$ztt16FD&4wg%flkpt1fWSN)0<0Lx?)XcIwCrHq&7(Zl;8wr}k?!e&$2+xm_Y0WH# z2SUb;tbo?MVaLScbO6W5-$)ucHGJJXY6_orb#7pO(w8}smkQuL`$@T78|E)+8IC4_PW%fsclUwKrJdQX9bppEKkl8rkLx8%*t0_Jq6TT9 z^se`yem}U-u1FBZYK#GdyTJ_k&62s1+?_ZockaB1@6wDUDv}MCRw9TG=tss_b4G)t*!PX9@tWE{#`K~oubpY9l|a}XCvP!+c6tm*XohIz zjEO%^4-bHqG1nCMg$<%tZ6~g#eU+{DQ)Y_&NJ6=ZtOi~F%6Or*wQH%k{RE(jT9h*w zHz+lxoF6rklZ=q{e0_Ae0?GZd0*-p#5EtWK3x;?8hy*vRAPBBj=#*TZpnkEh9T=XM z)Vd%^AfIT$CaG%gwjcQ3?NZX0HZEjU-LI#@lJTJVAbnJvvaLcm%23>=75(OrqqU`_ z#bW)t*6v9)EX7_0&TQrx^J-kF&Ad_AwCtj&B_-WJW3w`E?jEz&Fy{Mv-1eUwi;Evg zihZgB?)XP3fCAU+3@ z%hzX*x%{m96)O5+sJGMRq-BW5aCuPO$eP@4MFaEWJfpF^vxxH@1g^cThzQWe<9@*m zckajo~^;qn@u@O_PXVy#9hvmy9c0O_3b`30_KyTG7$Ixnty zJquX(&&BMw2T4m3pbt|QsdCbAdG0FGy6R4)t%=X=L)Ek0#> z&Ef0US56MP1g=)#=c#pl6?qoV&<#2gvn*!a24HMN0zvy2)TP7t0zn~{Cu9v0G-%}$ zEYOm+Q4_NJ;%IKddP{OeV%Q%40Q5)gkw+Yfxt)<&(|MvAz)QjG(u&x%vISl3zFQ<8 z;!PuM*Sl2jGT-6tgtbnC!qqbTJEL5)*6@^bKG)m{C$h+C%yBNS7Iom~{(VK*{V2&} z1g?GJekwbZJ(jB)0b+1ygJPJtM&iX-^diReJjE}P*hg+VrJQYhF!o3DPdf_SYp5L< z&Q;U|q5`woJ!a+S+O?(#4t1~l?23VBckQd*B*#u*GJ!Fl!|LdZeOJb~O`T0mbe%>o zT^60H7ruSOiy_fR5L}(HG^DKGQh-jxlo*=O&(8Ff0A)NSy=QV%tD9G2vk6t%hffO6s=Rm$X znps*_;W6j2ZaL9l7;tcLN{qM2s`2r4cRW|isSu zAC8~TsW*I@ya)h+_<(})_T1?den*D=wi`G#-1|QrSY1VZ$r47ftQ_ZqY+p`L=;Tv4 zzsy%`dq0Hb&qER`XQSekFC(noyba#wYoLkG{{noGf2w2VOmRTO;N{fQ|Kt@! zkHU1}DfJKd7(PV@!n%`Tych5T!jR3++<-I0VmWKcsAZ`xVp?jn8v)3iQpAiqxvAlB zh(su9X>;=?&BKT7s3!XEhpM}h%LXW=@I(mtm^F?ItiFQ%yz=(4Gg_^F9w#JoT`hlV zy7GIu5M8b*;@+DvqDB^Pg+vw*1mSpVWPhcSyKc6u`p~^K8M8gaZ(us^(Jm_n7FKyf z^g^91!hO=y^l;@c=lp!#205EM@ubq7EGw~`a#|gN6Q9hnHqJVG$)Y=~4fa3__Xo9L zgSqpQWuNT3)bfo_g9$%*CuLrJg&;Kq#(jHwwMV1m`7>v_-Lmgmyoa}YDz&;Q5$8rZ zhZ3gi`JGc>#6z*k@4&fm$}7kv^9yc5Pbq*R;)deNlPf;i5-;jiZ)=hR&|azBj%IcD zIl)O;Tif7%DJzwDzqFr0qJK$}_IPJ=Z`-F@-3AN7-?-X>bif)LB_tJ>hw&hi!bdww zW)aZ;RX*sjd&^hZ8WeI&zn0`L(0n{!#GF@IS>_J6M7o{6+Buo7-nTpHG*;H++Zacm z7&|+*AB?)MAmq9hl_4M9X*`RO7g6b7In25N`SF(&V1@rTq1DxJ_NCMh5sw+?mOB$g z2H9qWw^&Z!L9y;1B(G3e?9Y{mC)5u-0ohtCpnr}5UIYo0G}5uQgt@7fx0AiUG{0S* zztPqA>%2V^Tk!mA_S5l&5|`bG8*Py26)yy$TP)9Iog4)X9X%kCJiZ$H ze4#D1yTx@7QpjUF>u5nP?4hy7Q}kqYl>DKq#vF@nD<RRS+sv*x7<$Iavdj% zu=FDQON&?3HFTW#LML(_^EdlNH!8UV9f8N2>skHLZL-i0@>sZ+r$cbH7snYM7ODZ$ zKv{sQJwhnpyg`vE?T@1&)Xt}XmckufV92lTX9=KZb_44C!OxpjBe4Jl#M83J2KIW1 z&muJOMGyZFO5lf49a|*sAQc9J(pRy_MPzT@cqjOoWXAC@)FeqnOdm8V#=_ae+%Nz|e58;Cr%Ic!1Q;-d>}M9| z@-25HcNLR6rQ4+WX0h+`cwI9B>MYs=sKG24FINLhFy=_05(qfnsV~dg?T^Y~l;j#t zh5|ZKLSTHaVT;we+j~43>?u+!5yRG7v{C0ntS!d*htbm>vo+q3|B7p+ee!)RlZ+wTE()+ffw;uemDRViQ@DFE@=r^-V_ER9P(`8KkbJ^r$NMK zh=8`*vnxJrDx!IG)<<&>W@;T{_*sRm-@f5UqyTSsHpWDbsH=>y^yOh^`QW12`ugOQ zcJx*Kg0l#fJSENRI2+`~Ty2{IP6?RbnDa4_G68l| z6lu0RT7szKk1?V^=X10!Oi!XqdI_{GH;zSUR2dXj5hrvJJkD13A$l{lQjyOJ z(f{v!fo2>?ah04 zvGO2SQvQ^qDO5JaFl#S;<99?>a62XnQ9GkPD=!HR5ch#(b{vpD+F8B+ed|A_|Nosr z@8fdMMy~(ceg_{i1Y_qj>ZE7Cl$+PEs+-reT!bbFOO|6q!y(zL4^BN+hw8?=%DNP!;NA&nrN%o&Ty>I_J(CAz`G!{a3}&x~w#{vI$Cd~&tYL2s72mTci> zQ_gLdJ7}198ECb+Yy8Cxe+Un{8wY(bep%-4uU_I}91|843oWE?#7(cpVIQY5Q^KhC z;G0yQnVF%`;mbOom1JYez zzEINIkdE*QW#Ol?0`(cJuPs?0WS~(43$+2^fQACG>nHK^`+x-0GUKb(fsKuUF_tQ# zueW;e0lLhvuhG=m=%3plW&I~cTFT|) zomwNbJj1~QN5n#Q>bIdGj%KslZ&MsU2B;$3|B%f*1G1TMl+{wBa-LsSKD?9galsNk zJ3f|_nY*`qbdIQO|2&ZXV^@vuw~VuK?jQT!Q z52!W7`iNdvzZudXF9eBNNBm9lH6CgU|MT-2pdRmixVxIY2*0WC;VS` z$VZf7G7qPMJ(6UKQu|}gJdt%O{(TpuA;Djd=oeqjuOexLrS{P-PlPm9L- zJ9^Vr?lU_%+w>;!Edd-02u{}7S8Bi50doR$O@F?hY~26)L+`vpd&zYS9Z5hS5Sbvu z6~{x{X|jBI94y03W#|)hX|PU9uRX|xb$Ztf%kv@--IesJhn)2KUiV={=2FQ z!obt!V3~gewfFQ06jE`~>RaF1Vj0O*jRYuWJ4n*ZH0dE?t0!swg$Dfpysaj~2e^6o zspU^fg#p`|LaTVf3Z6F&7z#0?E}mZFfdfZ;VAeyEBPe7HjO~=to}lHZ6n{eUbder5 zIN^6_0%gFYbrC)%Aq8gLfK=OQ2f`;b%iTVJsZSefmZObB+v@lO@xXU#3B7B{s=!7T zM5{rg@fp=tD2e{X^SL4T5hl(JUl1i-htXX)Tw!HO=sp|JWdoR zn@>&PGEbP_1O8BpAe-g8GBi%bV~bC-$R^FOoYQPj8U$ESKSpuxNEV2-m?%-*gZ0t% zY5rh0?WCr97Q$(mE>Ix5I=FW@=D7$CqY|eX{*Dx(T93meg27s6a?LuU_dn|XjXL4A zXg4Zy6{VSCu?ArALE<#Yd)u^5PZNY|n@fekoc0+6ZKYRt>)_i)%u~R0hwki^g6kVM zpXX^AlXitHf5Y5k5bU;a$D?BG@Tm7e1M^%|SQsuNYO-hpF{dJuxE^$mIReBsOtdU| z{V*T?ObPB-gP9N>d%fgildhNuz$R=X`j)iT}tk9S|)ReXhmlKUdJY) z29cq$4Raohi9BaAAT}ezw2zEsy~yw1R46vQcO!v)e%G-dnK~DYZ|HPP6x_)7=pVTfU$ z&>2)Vfm73JuEFv&S0(3V3Vd@4c0ZjMP8_&*o8nI|0Cf<{AeHijhU0|^ zBWk`OSjjq;D>k_6g%BD_1E}=IA%3 zSWH#)2$J|gKb(DF)X6B~giH>j=9NzZZ<3Qt#V@`kAh`HRUvHSjzbM(bV!yH5OP=(6 z%g5~1%GbQs>$EcARguTH&gG9K7?6Jj&_z2Ci|yfJdyBoyApI%~RPeWnHExGQ)xacV z7`gyrU)lDYLH#Q^*cg~WjRMb)bq;_LR?}4rC9R0o4}|*x88Wf*db!FHT6Mer@r|JR z?e5nqV@w&dIsKb6nqm?u$vUdca7;pC+Gcc3acc@BHH$RziXtu3}T{kmEg6 z{2XU7QN=&H%}}pip`jm%2JVJFbdM==B-r^t0DPoPj>0t8AF6kch4-~iEJ%-}cMAW} z-phET#MuALt`r$#Ga22l(OAoyf4t#QPUO&l=R~$SjgYML>rKJ;oGui1o<@u=@cx^} zDi|l~i=NoZ^sgQu#RcjO;kHyR(p8*BnPF6D5&BaM1hXzkFRyaM0-;Xr8EPR}2RH4FlA={O7JK3=W&{BEU8jpt>xw9l7~ch^9;C40c^N=RTP(j`C|O-% z{FLfZHp;an&{vpr_ayT4IE^qw8=nM5hq!{Kr^ye4S~^OD<+{F0QAc;65{2z|>Ilx9 z0G%oumQGs|WDQAi@&N+fuBCp(>ic)j%am;{f7Zq0%AoLA>x5=TZ!wE~gSp?cpnTn= zOs!b1Bu=kWG;iqGmKMv}l~R8u+r-NNT_4J=(hStZm}KVo!l;qqq8;2h%x* z=mWyA3XmX6Z}~PIAj!+WQx11DFi_D`W2yV7@e%2yzje)`Ur|mul)Tl}`ec9JMFaZ* zYL6t=5D4J)h?4Xa7|N_J2?m{G#c9y%JS|Q zT-rOK6M}a3uaiWl^=Xf}1BacQ=jFM<_qit7QnA2Fo437F<-qpTw>K%GY?VDQK!P0u zqnZL(ytpK>ghPJAG~-`;bxB~ZYpZh}Kt&i2f61;a329f>TZlb|Ql!I-KNi_T5gc;LL`0<|NQ1~U45%2aA2S`yHNFYa zd(LOOmmym;3ZE+(DK4-Q)K04#&V4Rtx71E~pT91xKr0dGF4+)YgiYuUo!feA$@3R)5J#(I{<1(#j{5n zwXe{CtrfbzWQR0*5Us-ix+-m7)}+{vABWzg{E$n=`)RptxdFTZ?+XEo|0Zv(kFq%t zYPhapP>u3V)D$jM#8Cfs#=eA*5wHteo{a?BSuym}_t~b>@j|94U{gp6Z=Mt<@#C-D zfp!6(np>B1I3<@&kK-EwdJiVgUL@@8P+Kq;+J`=_+cWNJ*N@Cj@YGd?pLrspH$+?% zW0>?Q57&od$f2&*zr9o7JM5kIP(r*3 zk$4W{k}c!RE`!4Ecw@kCVDYRewZ6Q%ORqJYdD$ILL9ba?B||O%9!b-WhaXjC4{g66 z547#>Rnh)po%4AGo=V8|J7Qq5uHyBtbzM6>jHVyTl4-o^jMC{HocfS-s^0W%@R?*e z!CKr}T7xww-ZqnFhONCmpXYM0PXb^u1|twWv4I`+HO?GqFm6kMc0gzBu8Li6pw{=8 z+;6A~ie=#dUHW`f&XCcUq=ln#rQX%|-8X8O-DD<7oRbg@$ z+9X4qcR{Wn<%#{^-B_EQ;EBuja>y9Tj|Wp472oy5mv4UgQZk_h60vklT!20MQoLzO z_^!9SUA%AyrsQ1Vsw0hjl7`i6-Rk{ZPpRgE33S!~J?=J#;F$ugu|mq-uWFf)pVzAY z^-gW+ZCLB?#hMx*9l7Q)@Y+*Z3qdNExIEhR8XZ>~$#+RY&hiIU+*p$2LPYcI&zwWZ zgqByjEL2sGBokCZ$ZE&3(aZPjfyGjYZMfx|{B{zzlM-s_xc*yx$sF0$y+B10yV?tL z=9@1|hmA4xf}Ys!z&v%<9@ue_dLH=$BP~7?b?E2?fB@px`qc~c$^(9d(Dxs2LNp1v z`ta25iGvPHcOKX*6@uw%r?Zz?wJjQZ48PFmay@Dfuy!gPUN&ukP0?daq} znPu66A3&>5ZP*&Tu-uv<)-tT+qb1hS+jDZ>i!i7J;%AziWT3D<|N1^Mg5J=-NQ_2% z6uKO@?*qEOP7DavKYiNFqC0#AZ#6+DkRs``Dc~HxUZAqe7rX9V@PrQtuwyO3+~i_& z%2^WlGVA!Z>BV!%?1G8KKDang*1|W!W7q4ciJU650e?`A=9T;9;}qwuSxW|q#+Uh< z(|T^ZXs{W{N`)jr`f6zINUvpp<945r_G7>d{jnl%t_lU55$FmVEQZdRh4GeWb9K-^ z^kMt{l)@kh+W84tD)1=6D8;VR>z2Ifik_|U)aJIDWCHe35p!+9(OWb8T>v*T@*9CE zmwi4cIs$A!CLp^unf)x%3M@XNjgA#sjE<&VKjEiwIe0M5S9R6QVc(~2)H3w<yn*kXiyHC6nHR_)_3FV44ZZ4%r)9%(+8E#9++{VE{_R+d?KhSg&DyvFct3%Z!|B$IWywcwon=I= z=y?P2_c%LBUX9uHoit9fVZ~g{=v1KpH0lrA&h(gISNi z^2vDdm6M`%iNQu|>$W)bnK;fRYmAD5bhnY*y|u2xZ{F+NtCRJy-6`BB4Kf9DMFVfj zg3j(n0!!1lUBH`)dhFL2iyYKR=<>%m$R#3{VEW#8;H{JAl2vz6-fBP_HpX~g#zJaswla{c@NXG}p z>2uo*coYDs;&~tmIdSK0$M3^K+{3N`A!N)zBjSOar*;SM8vUg6>65B!&0~a{nnsOj z)!7ha*a;vTHV}`|ya1?9y%tCSxVv?q6m-ZOJ{e>ki;KlAY>8iA{o)w~J}*Nbi24&l z#M+&&r-4kr`30k+$){l6BETG-0$Bi6!Q?_pc1Dc^lcQ@L_?^+wKr6scodDD>{@8oS zd08UTNkDR_wNMI~*9F{VLu}b*Yyf_CbSLs z*jTcNwS3$zn!oKy!L9bz7!Q|@ckzI1RS(R?G~GNejNce+7Qyjyy40e_uAXj?lSRZiViuk%peTym|mN_Kl!ZXQ{T` z&%!sFB{#@iLYgUI4rtbwwj;fpUUpbl$PvjeFcy&m*4a1zo3GN~@m11|aEw`YMX zK_ulL1GVFhDvg3We{;+GUlvRwVu zxBs7C_X#+Kla%8~{B)H4pa1BOhY7suz@`0u-3=X-U+$&;<2^k^9**YZA;0Kt@gM&Z zoJNKez?6W^<#yFSni2l_Cf;dL$oqj*P*^O;5e=wC*}OSLJ~3_+x%y9lgFly)PqsXT zfzGV$7>h1xmqIGrj0I%A8c01%rnZLqONE@^DKjNN-O(oaD@>n1zbPR400Gq%wdZ9J z67NCxCm4g_44~D&eOFu&^)B(d@xzyAO}-x~7y|2k0>|CkLUf;B&6J6rb*GCGb+a?Q z-nWnx_68M&dM9<8*3{X_$?2#PCQ}6$hGG5rN!dL0>jQ1j0DX4S_iPKl9^D@A4K{_+ z$EFJ76Z>m?t&D$uA?Uo&ZWnnEQn!1cG2~HXv;A&B>!X9lj{otNJtxQ5ZIYioHlK7# zTwMLMJMY8NDSNnZc|%a;^QRQ;O=MXP1Q?Xlq|^F3-hj_n)E4*MyWqjr^1Q$nrJ!M= z7TKa|*%w(1sHVAPQv7Z4U+ptaFtNgXdty(>|LDZtK6r7hZ*}?7EyBFvC@wj983J*8 zJ!*<-u5I#B>E;rHEYiFDZ+2zVE=^cMU1h)Z$~!d=mV*&?%K!QDCJg2mm%CcR55>x# zu&Yw3d?xQ@nsuR=@GwvJp4`@^`x8#PPi?@1YF^2tv zDNy<)*3)eM9@F>1LlVs}4y&p)|E&2Rk1>+&#^sn85SkN{eqMfln}L7`D*Ak+`dCOx z4axB$NktiW>|>5gSWpvgU>+TjmGhoHp@>e7L&-NP>>Ij6NMClZ?%&r^5=Iaj&?cR- z{#Pkjq{R}7mTp3NfOt@rWnfKCG*T@JmV%Qb}Z(?@tI&nm0 zlCBa?M#Q9{?kB{>XWre9PNA`X^E*vQbm0bSLf_2z+|vaUs#X;j7DAHGkxzW_Ar+;U z_`bONl*w+l7Z@NR>KJmP>a~MhJY16W=jFc5uJ^nDeofju0mp%G8o3A$utoj-C%h}< z^AOL?ia4c!QQH6WbCs$m_Mi9a1gOOFlm^R~XmlBs*vr}FCd0@+ZW8)PcVk9PM0be% zu{s{!^`XG?z-A-Qd5_VpwA$pLdZSlqr2noe&P|mMMYyWm`r$r4USokc*rO*jRC1F1 zQsi_Q5I6Iph?3(jG%v}Gzu7&=pHEQ~e0XT6hJPW>P2qS&(J52${rjq!VyYq!WWP*2 z>640&*Gfpr^*+il*NWh5Q|X^hF-w2-I~^44o!4jLcppg#2Z{E%x;&a`o6gA?h~sjG znw5qHAE?TuKXJ5k`P}T`<@^>MHCIkH`F=l^m>OYZ4>^a>{a!Hq0n#Z_GU4e`2QT9$h9R#?iC=C^8xJ zCVzf(|NZGTQQp|Ny!=Yq+>!Jji$T-?V;DnfER)7}_!0Yb;h=q1byLaWT|^a?xX12nvqXiNX_(jx8|Q|~)VNJP_m`E;+MfGf z+4$eu+7tfk|NlQ9TVU0dj_?N;uQka2EW2xAEF zKgOC0i^;OaQ#z>4Ij9qWc;mlneEi3rQA9oN$p!z;Ad`aFpr}zxH%+FB2cSVh4VL@&tQ!&sM^uxL> zo4qRMa*qcy%Zygp8!0~!ara+Zt)>SD-^$mjZ{60g5^yT`+%5@{LK!M4={&p-%~c(T z4#(Cawg_@xzQs(ae38Z>O!fjr)@G@`QcvB_?U2)|Szr7j#;WRwNG_gV*ZwjYRyjJE zJ*+f#lYjkOo)n+#URIBG1p^n?h=9rF>0!;P|N6m?zD5$BzFv2G@fTFo)GA=+cF!l8 z1VN+1J;GAkhL&q!6o=C7EoiwlYvh>_mgc&OmM6c(m#Y5z$rtF`yi-7Tx$(|;uz zd*V`nnU+^^N@=L|!M==Za=@kC=6{j4~e+ z7MGFhuLJ7&wFx?M0rN4|_O~1SeL}De-=t4W%JtT}5j0xW=8itS0{8s7Vp+4*m=(s} zG}4{wHjJz?AB~HTj;#$vdpZsijKzGn1b`z{-DrFs5f1ZB_@$%Agg)d3FLapJtME} zk89o94@)e&Ss!jg(`oPbfS+hjt+VvT49rZHi=MUt$ z7d^|g64mnWn&(c;PQv9gGcsOP=L93hTW}IyyO!O-!wVf{-*Zd`hP?DFEZq8rp6FQa z=k#+k4{ANtYMr!98Gr_*W~BC+d!y&Y_A}3&0lL$*L~Gs4SbgvGSbdU$E|%2-1>v)4 z0jHy+YW{3bcf`(*zFA>zTwW5NM|h9|yn7!p(=INlbt95;HKhiv7+#QJv%-GsQSRRM zc>@)dlj&59jN%*#xv^i6tEKVT{7sg5NzQ5A<+g{13V%BT>+BU~t@apIxO1Z^Av&uv4;YIqPgC6HOcUYxrkUr4`RPR2Y^ao-trCJUx zMrI*hkxPEHImAwStwnwUm!o>)6h1Lt`j>0lYzwoc2hB3+WiJLEI8VFjc|7NdW>xQn zdM3J87+&6og-lpCY`;I(>9hZ|jS!a*H|s20b%XnbCPk9|aK*tUJ&HS>cJU+Pf)=h{ zY^!ZfS1V`sxX-t)7d%f^hCuvWSrJ^e5e*`e6xA=^?iH+6z)p|K#Y;`Lgw7D5BCfU0 z@twVM!6zWKIc1%|BZbHNu@B=*cRJ&1J|w7}=*GFyuRcCNfnVN^xP|ARQp=+oGz3>C z>040w!_x4f8cL~>Z&^2LDn$H^+hynDvXe^42(ln`5Bql`8gB-Td??oVvsXu62L9(L z{p(do$(760^7LE1OSqyRUtzon2v~m$OX2o@#V=ZUR6E4l1YumLuo#$r>*=Yk+i0b$ z%8~YRZnS1;wWfCNlGFRklO7Izbsevq6fciBjPF}GTU?fd8ikGL5#MEEM}emPJ4)Af z-9;eA_ljM4W7w8iZ+#XVKS9_q%jA+EumUl|y0PY4!2Ph^pyipayQ(!7QU9EK!A#Xw zLLTR0gOBudse0oDw;ETT`q)b7?3k2sXO%67N$;q%vh74gvG;k7w@J6%)X~(J-g3hY zp$Qv!+3F<-TyIO{a^!eyaLF}p+hEx|hgWXcCXZEjhJ9FnXhM)gb}=Y9N6BY}ok-#Y|hj)>Z0i552_T~|59(oc2U!m3k`$bbSF)WT#+(uSYOR;*;+kL{u&Fwi^ z5BBcU#JRh!6&sj)n+P~hd+mEFEW+H5Ncs?m4W9z;v1mbaTFbO!Zyua}j;({kTycaE z$LW|iZuM8rAwF{Ab%(yYG1j)-xcQ`S?((2?pU?%a%aUXX>&>5-uK;w9DTcU52cN#l zoHs8X9Yb2ZY|~N z>-(&YN4=@3_UR9(bS2&UuZhW(FV0O@d&?z#uAr^5WPF^R$k54GK2wXwwKp<$Fh74b zy>J1?KJpK?C)!@E{l3>FYrJtM4^#I1$gXI< z0H=A~UYlT%dzxTJpnW}?Je@`-Uh1#Fe&$qWz85pDkPqLAdq9Iu_?Yt=vjJKevIm!0 zQVvT-Yz6{9%`6UR1x|3Rr3RCT8Fz;$V91YSa`n58S1%3mnsVC^prU$yo1YoeU)B_P zTu{C!JiV7}KIdnK+F8!tL%$>q0Q|0&6B`QJG<2i^kPXkDr7pm@+hb%b=J_$E4sf91 zJl{{80r7qW#r}ez-~D4Yq`?W-AoC-~-4ve}x*~(htF_W+OlP{nBlA@gBY!I%Lw3^W zL+aGv$I@9DdC%8Ks)_~qYaQnn8zy+n8i)uWjISqYm)2VGRR=`e6*)7x4Z`nQys6q8#h>jWi_RS=NJQ#b_3$uBt zKN!YsM%r7glc`M)N*HO|@-4NnB3)R1!u2pLEKJ{!>jkP{(I&JE(X?CaV*eWmRV~&Q z?WY}Y-#FsFnQ(?2vyoT>rI;05=zlMPUOm~LSL28QR>2*+LtXbl2zgT3=2%^COf%d< z`;+wP)7L;7ZHWdYSr2``%#?EokXg15FS=iKFG-^IV<2)4V@fZoW6nbzRXa&rtC8`s zmf-L)=koQGLNt=*t5)47im3#O-xF2r8TF4<47SU9>3O<^QB9LfQ`Qz;2H!0rB(IKD zW~Kw3`BS_ukSG*TQe)9F2I%x|>yh@AWTTpQaOQj-mh&i7K_uZoK~{jnwBOe+vn-_s z(<2E{--8BiJ5c>f8Sg|4a?_pbnBQr>b>rL`;-9Ki1-!3q)y!G>F3@<@Zw{tX5UY17 zh=n(KCUbBI*2Ba;KS-GhEP;(Ox_M0B`!gwhlHtm^MBGUB4R+p1|0^v0>-ikwA7|uR zskRhyDYkBTc49T25F4GRKeG|W&+PuN!;^&abbOnqJ4cA=MMDNWaqvwTdg=xUrqHnLCg>RozKrF9Z<6( z6#>x7f6Q={K*7-UIW|Yrw3mA#t{9cL75ZY(d_q5x5yI*$XVq9C2mmT}3ZW5cVpnA+V;!)^8l<;8`Mi zx!HhgIN6Sb^Z{^H5^3%s{sD|OP;00YeIdG#b^r1A-@iYC(7sE`SE+MzUG}?5KjzcoIXFC z8$ugv}9 zWJ%d(!zq3}p0OkvkQvmyWDGVpfjt%K2y~V_u${ZnkOCkkIxoi)Q~=d7(>B?Wu()?0 z=qUSPeF(_T^JgBf{ri3peoT)1c|RT^ID_KN;WYX;|E+i$f7{<;Nbc{L-n*y-c9l!N zUdCj-v7^X(ZHe1^{iPcBks}it0|n+3Gi^s=r`>iG@6W$GQbWO8dk@*{WoKWR6;V_) z>57+@zJkAA=t$hyB|d75Hj*;n_ae~d=KJ;S#C3$sjvYHjbmep(BY9CZcYSqf|J1oq z6U6?QQ7G1-%LN!{i!~aE?$D5sFL5x!xgK4pX^lq`X5H%bZe>~Bv(dt7VDz!xMaJVx zq2auOtLDX@<4KSOrKEd#nc~v}*Uf#Hq0q@4MPU2x?6aiQ=+}(UQN|{NIOGNFuxsAC zEQX!~YNqtcs2>@t{Gj`p`~8HT2qyMJe$I3ICR~~sTvaD)YYZ?M!i=n#!GujI%FE*u z%!p#kU=me+?YjtT(okVeAX_w{cnzdp%Pj;-by4Y1xjV5+v)E$nhF+0b7o`|NQc@++ ztN5L0hS2INUshbUnW-_#p}#@o1p}zD?W|&Z9vdF><704+f0z>Dd^eHI)&bkQ{!9G{ za%Y>pceJ*qIi(xODG%Mxp8rehJg`%i+e+7ic-P0ERKL1Y`jec~0*m-}d21EFiW1<# zS`$Hr$!sNy&${>zCF8ZW`!H;5Y^?c;Cr_HFYBoV2Y^&H?y*<2@Fbg+N; z@I8^SUOAi`W5ZP^Lb|Yy#-OMF4Gupo&Ev_Lm4o-o zLFHA1xqKCr>YWPAFBu(&dAY{sb6hgi3ze10K?y3WJ*@LM{tD7`KnakS>n}Gj&FSmY z6*EQ+E7Vb1UK^GseFaJHxA}^)oR7mpKSo2uFuKCni5*3Ph>bY)s29DbTJrTnkBdOB zetJeht3f1c`t%;4&iY(h-v?dmVLmg79a<;(QGPIZv)&Z04EbeyIml%OEL`7FShvWW zb1>EE7<2EJB6|6w15PtrBiWfPbSJ{ut6JigwMdor|*v)%QGe%DCJI^f1=fVn}XHE4b=nYFp+P>eh%8 zn(8yxRiT(wz3n;lsr$uf~2y?o<6Ov5i*=TH6&x{(DS(rYp2kEgT-v-hhCC04tP zi?I9Iq!-q#=dujYzGkKAp{Lu{XPf9IFYx-G(WP4|u*(gG+PsTjIvl9Tn)RxuaeM+ zsvwUUf*fj~IX-p3Knkya#|-l@1L?DDA$F;O@WJmj719MGkUvxAcT_XNFzc(#3hu*) zzatwoD~R(2wY4C9Vp763k2}%%*C$6RhU4wsVQ^x*ULI#G^#OlVm!x<5^D+{A#(kyE zv)B-qeB6n|EOhLQNgJ60HPR%JcSU2*s?$*Q3S)psss%y`WOf6*H@VQ%d$}!3%At|u zr3JBR*F`V27*{jjDS5k1KAUGs`nG7WdriJk#3pQF_ZLX{BY2~bm%TzfXW@cAlOosY zn5Dfu=_m?`tX4Z2Ktf)*d-sj){W>Jv9KQYp;J<2j0Y|DVkO0KyuCAD5xG_kKy3I{v z-Y#s#7#h#HJSeh`^f1fPnqaw-IsxsGXIdhT@aGK-ZUhF2Ot1)`x)SAX=i&0(oP|wm z+%78fu#|aq9MO!wjCa&XPH@l#TB0i(3kO3&Ur7pv2+xFJFKu}g*U??vE zm=$qcRR6nl-%5owaoAU-Mbes>v}mu2wsKl~v2IjYY+bre ze^qS<{D9SmBV(Dxz$j*7lmDV;;a0FI&@fHg%PnF(JNSV$QT4C0vtP#xYN{trV6J8` zUp`NBzFr7APR(Ycebwwz&>+7(*%usgH3CHfFLoV_J9X*gRe0oE4tdWgHo?I72L@Lg z!xUTJi5loDc+Bd$xVRw4I9325Bc(mTZgAB7#tkjMJH~}4-HX{Q9&?J3$tK1xQrx6qrAy~=$yhvASc^d; z3f%ZM=}()|T%HfhJ|}q!MjDqWkF_u_4(KivO%`qyura}y zA5*s!;d|xP#MX>b#KUJFab|wc=uS>f#a7tZd8G?|>0bNTFZwx;4&@bjv=WlsQTsgL ztWd%WNo6u{%AWA9TU`h4g~%6pR|PjP_W4!+;uO~RXp2E_6SWP_m>GP$H|D~p3F%rhX>&xPlN0ijDDtMmyynzcAX(yjN3MsmSc30_Akt zjJEQ07{ZtP;6bzR^C_A$1H_(E)5L$=#oM_pWvi3AFI;vscCNTT)o*hRY6@#4(!72x zhyP|JhrnDp93_kUg~T#?bnl=O)swW9ZCc~WW6fO`#xw;zRPi3U{WnIhaqVGe@4qea z+KGE*j#V3ppvg%&3|x&d8BhiJ_&`6-%u!@lmi#*;MBE^{Jvv8t zv0TF%twQd1uJT#M3~v)eT*4&?WCT4#c3*5B+2lg&+*Y_C_S+cvV8m8NFbCtBo9A?m-` znxWLKOpa-1GvlDPn*qDTA58Nb?<`hsUT_++j=#E{O;H;H!0(&E=cdrP4gzTFhNUwJ27SzhDAhl}x6JDVKi z?6zH`at%v^@`RKZFjt7w*_LQ@Vb3v`Q9|9}i23=?Tt~22-&M`;rIx<(NJ7Jk&qiC8 zEot+-0dp+`30a;nc4WNngqH%Xeuw(LoZcmY`!Cdh^( z-GtDGT|t*(HO*{I9vA5Rzch>ga5AWjJ_i6VpR0;i4*!DIjo#e%B%quo?^wrl2#bMl zJ>z^_S5o0%S~DG&gl-e&^glRGM2QBEVyjzhixeq6b z4AX+HUcIVozGBip4MGl@I>0Mpj;Zw&sIe%*70w--cCqk`ej%Fbs*pGaaVWB^Q(9lu z!Fi(CjuRFN&wi{0jFAzK8L|1nv&o2ws|1g;=g!?^ZhF=LO@I}Uae23r=}N=T<$Puk zp9ANSv#Anw>qCKU3?d@Icx+0{$hy5RM=o)k#C_mEij`(U+it(DBpK}1=)qyhz;!90 z@$Ig(rO30VqJdm;Ht9Pu5Dje&pYIK!KTtDMV)v9;6Z3oYjdH$WY_Zb! ztJ`&_R?0xrn&)1*|3i`luUUD)bG8f0%cBQ)yixtpMYYqmD^=tA1%@^H8yEWzqo2NG`U<-N~wa*c4&vM+;h-P>uhDf6vMe7rR5 zy%_}VO{Urp+V%ntZ;vZBya$@5j05@rZZloJCiVULNX)nPygrPo8hW!OVg4|05K8aG z9Fr)siojl82lEj(I)tSR_~bbzQ(AB&pS<++(>QR3@py5T+Ytr=k+9aY$@BX(1>1d} zoZWCtYaNfNDggObrFy^g#;gsxaPlj@le!Y6V;fiOm7i0r*voq!OMQM-QP!*du#7Q~ zeS5?*SYTA{#(4SirOt;pw}un$MA zfohVH(H9fe-*;;?c26yJg136^U4m<^hgqwO;!ojP#%J)-#y~O#GNMod+@IFRvjjO- zk2`7m$xQg@wBdr1VQ|F9J(}@~*SDu1plyShndw_J;d$zzphObz-C$#`k!A50C>>zC zAcq9aTVUp&UCmQ)yOSt>qdx(G&3e5A0U1Pq0%AoEjV7-;EThM?&_G+Y+Oy{Yj=5Zl zomw7%xh-bI)U`=M(MGNYHgWu5dRAzu{5TP3@ z!{ehhh)hoP3Ik4c2?`G6w7)~mY)2ob%ew-?Cz>m_E4JT2HfqN8L8_1j@|!fXMKfX$ z5?0!}FRd$1!GQgEUra#@pP*n7U>8l;4FSs^@79&-Z+lHWrZODrfMPCjGbCEXb}Unq z=v(u_>GM^}X4rFn;@qcCdn!x|Y^CV&iHZ4V1>k+~T2OsE)I4n7Tj=eium6rd2o$2q zA5Gn(V4$bYUAPI2EuKq(v*z9!>oxhobL)dDr!ca_Mqw0K#YxAKXu zs03Q+=QPa}nO@lTV?AJH4(UhEq1dgH@r4B=eZYdO4w}aQ ztN2MRpQIECvK2W`UT>5h3Re2l+6D@UBScGae}qjkoDvEy!FGueZbJ+PFgW*BhEi`mzn%ZWdGRW(KnS z3Up58&F?5c0?C{Zqw7tU_rLMmwD5cUNa4hMoh{a*=5AULt(l<69Xa-puJ@cKaDlh2 zO_(^c{F)_iv!$iEdQAESj0J<~k}N8?oK$S-XYJh@_9Mx{fdOKD-zT0M=T4q%)GI|< z81pV|l3*3pV{u9iQ!HBDX_f=Ccq4!ypHB476`vi@JfqP=&_{G%pkG?2O4LFHz`|;U zy?(8W6X$v2vGS>j)2qT)#+z2Tk2{I2hOaTp?5Y^Pt+m!@b+o zb16z#1V+?Zv!Si++P!;S?-Um6B^Ua^!i$jzYIRq6jcq@`-yXdG^hjm#Sr|yph=q2A zHD*9}#Df8NH1j5u276w^Exl{q19Ky$6%OcJ-NJm((96*zNTOZw?R6+4M=h~4QY%mA zS$A`Kq>@2+$`bW9&w#*bpY&hRb|<^uS5r}`-$DJ}xA?g=dGbvvXO1aB^00Yz8SfIg z(izcTz&Wm@h%32b!HYnNiHUU?UmtQEHo8xq?$6B`pAvi2)GQ}8bDx$TY2v;R6~*+Y zCbkIVDDk?W=sE>PdY)_y6EfC31qCg0X0S4>@-7oZhLAnW4J~B%;h?^z#>O(>%3T}e z3I_J)A6=m*BsK>vO-BUs?5OMP72u{eaUhfja**%}PDs6lm4>ByAN z<{A;qUl@(U()VX=&fI?I=Km0mFq=zoY^`*vEKnawzhx=2Jf^KgRT#fB-z0e@yhFk@ zp{=dWcIbV^bf4oSy+4oMk4&w859OqI&_X9N0|3%uDVu{>xo9J<2xIBPn6vXre^N>U z26{w%iwXT?F$Ipx6%+SSY=sC z?)|hLs#Tw<@eckI%1e9|DaHa#~SpWL81n*~VJwC(J&s@To0_>MLiy zeLDMO81>Q73W`Xzyv4D^P=IIeB>_a8A>a#wEJ9Dqwjx9f>8^ z&&J&;LWjQ+pUvE4*k*usIQ~5T{>rcrps*boL+P_#jQk7f~RHMmyBt*&0QGN z!p8Cfmn5AUw4*W}ibRV6NDG*yx?`~d2~lEul6-x%7*w848SeK45h0-)HJ+4io12*R z_GmG3i`WJ3tiMHcZyyzWnma_41T|rWfxp*JPQ&{Ysl(Lmn%}7Q$x9MiXm&8Q?yOc{ z1gpTkidW(Tora~gt&9<`m>cM&+z0SitYLqEzP9B`7OXM@Iaf0@?8Vr%!(X0sH5#284yuKS=WP%u4PrO!AB; z2Zu+ns}PRx@#TY*n(|>-T50_|7bO*|v~_iRy5L*m41#_R&7QmpfK#)#!(hui=9QZu zvjnLDov#(7ox=q)$;TvJ6%l3fXSL&|(S3)LVUFZ0(pFgH+znvpD3#*iZ(}W4Gw_9SCN#`&n^ukmyGD0>zVZizZ-hcO!5wchtLg zxu9b{VdsO`y=&L5sYg0%czs=BLR3_;&PK~%k89xGam`q{Yd||iUtfQIOZ3{KN9iK^ z`Po1jsM0B)bS=2bwUX|f9pm_=^25C@$u&C3D_H*e8(E197w&K>t)@sj4&}d*2vQIvv`1Hn;xeQVr#rFJ@TgFC$95|IVB?IOnWlCvvn&F}e4T z;JOn${y-MF4Z)pWU|xqg(L|LR(7y}XzSl7=6PG{jPQn#*kg93(BY9_TZ{(ShFOyT3 z`R9H4+NI{?B&`Gp>e%4w`C0N~E34^JZDpN01XCB|v*r`L=u5UCVbE_io@}-zBbMi^ zewk1H^~vp@cJjaz-NMG}|8cyBRn^z7Q7_X;Rq{o>Uc1b01K0CzIR>BaT7QiCty{ti zYl(jwPC=Zl{|fAfluWMtM`9E5rXHH?n+ZxP5ou|ZN}dBTzbfw##B1sM&ZO1{zaMgc zaqD|;pQtPrdMNPkzw7^AqS&TaXhd=pxl_XJTl&iq^Ix&*|MBtu<7HU%58TP&(Tcd= zfz{+4IJ-0XgvtLeY5;Xk{NPZc2Z^wGKaJ2wBXn{5C7E?DjcvgH}9`~PLdPLM#q z4w(D>m+~&Ztf8#_cC+vQn~j#G?ezEe7dgmdkP`SjI8azbq(p^$VOt>R-#_jD{_>nH zxSLl)To#aDQqu1~^-K+OOv4!kUaw^r?tnSQ<)y%{B|EJD8v^?s6TpPz!JTcbKB$t? z^P~4lr3okdvGmc=(W?oi+1k1l-8tK{&gPbnt71}@FMnJy@2!b3uN#p=Uw38azXT)> zoDfD8;z{lRl0}AEhgsU!dw%j|Spm>y+n%SJww^Z<_*(gMx;0vL8ALhzqu!G&^aK?*nF6!Y z8+sxJ1D4_Y_44d#V?rAl`)WMyg7cDY^51X={lA@d`W7W4rllQN4s=WIa#;g3;;y)q zxiUYi?Av7Oqo&leR|(bb3Gc*>3y*ZgPlr2?p(}>pdr6)-b4FBLTq~?o?!qlkLvT7^ykzV})* zF1ivL4j|2Fcp(AhNbiP<-sY@jXhE36PGaUC?lCE|c|cUa8YFsNt(WcZkRY7K`~+gK zdoqA!(M5Ms&`KJXTz;*sq0wjSD&fKLUmZz&yLP@BdvCa{;&A8a z&c(%y{*vpi%!OWwFrYK4<3-4xOhs+3!C5Ccra1_hroova)&s!uW3K zFzd!;g#MyC=)1TEttH>Meq(w>#;m^z6f|x+n%=X5e$^2RpAKTZT4w>&8wl(yFmmr; z64?xrzvYS({JRpQKii!$*IjcNHyM?~xCw`PfAvcGTpjI+1cT_QPRZ_`CeC3>K&vDa zJ0O>NX(3MnoiaK)tW3Iue;y0FIkejmR%%yhP!T4ih0MPdnKivUp^3&7N2k(bix-Cd z$W@q`!YXxu4YA(&5xz3xXsK7~?H;;0>6@gR`I^pGb5}^o>=e@1NTCzGDTfG%D~&S) zu&Eh3?_{YYjjqhi%bR8fMn)+)Eps*?g^yQskN0`j&T0&b|EF-ov)wdLFf|)gHYvB} z?Q?i^wN3iTEJ0khC=xhiWdfvJ&HTFiOl~}z2i&MvD0HPIJ4WM0O(J5`J^y4V-cF+K zoUz<+?`$m29C2$g@v7ARsMdSyty zlyw;QIDCFOD@#Lf6d;l3)={x4Qz<)`dcdTHr*j)HrCqm~seQvQ6*dtI+X9Gj12s%a zd$dSZI|e0E%3Qk4+lZm%iuTjzcMMh8#n_jBgKAW+cQ|7DBeAplGzjetzK&=^ZHTnS zoPxW)x_XEL`d&szbtw*QRBc~HNVX6W<@B2n=CL=k&b>zNvtM~^45{)e6%zkw$5I1A zMdtd#{=i_h$%Y1c)o59{jn&RU9nE?|&=YN`pGFAl!|6&DbgDiQMPD1plbE3yuTT01 z2YX3)x^fRjr}$B!+tadRpul@#?O=7Y$ymFnIBu2A zZ>H#0De>8$TJ{@nBF0Tc`*wrR<^-hu5<8@LFE)QS)8Z1B56Bv zIBGtgBby(cYVm>QLg>@ZakC5|VPX8r2J(@#G+Xz@Nl6{tu1 z7CDgX9LF_|t}LnrO&55Qa360)nidr(@&T%eCy`O_nN9TCQZ+a>xZ4i`8*9-7)9AT` zN4au@2q$)(mvR+Ws=boXE{{|zh0MU51x0wb$(*LTOLTNomMl#Y1)bfHM@t&>-iP@mZA`29xTq>PuoSW2GU;+SQA;2M&$rVh;{nv!dr$) z_2A9L7T~A5QI8*4Jqf-R`_!AJguTMxD>aDF(!3>=N*m5ohj)*2|2NrL2p|}UhiC^% zfs+3qPqweRSby$a)way)`6ORQSKPk+`(27q?F(Gml)U0u!xvd4B>-eIr2Yx{F5^5l zlV0AM5tGdbG&SviOqj}P;X69I701Q<8Zo5nWCn6CGcTqlWz8cLwNA3RgW@DG*$D~-*Gn_k+W;~f&@hrf&-o3T zs*EeH)ZbKl0dIy2s%&M_B6(*RUAT`lVE@-bFD96kdzZIILvDTk{8?RN*c>g(P=R;u zZkUVVcg(w`Y?&)eub%LR8b-Jewh!P5%f}=`=Z?6`)A@LWD*BV>AQHxylZ-nRjzuwG z^uW$5Gx22D0|{W&3bYY}WU_3g%eeYH9=$oCAiiKvX^juvvU{I*0R3p{3m>*LiB|^Z z(yIRMTq@{nRL_C`U5UH2_*ml;qJ}^NpKf-AcLR5vpZ^T++pK>wZ27G)Z@znia?QlK z_SC>Of%R>8NYY^)_6=^2f8dBE;@b5$SIRUKq!XrVEkZ(G_aV`6$cXp_ULIai z_=ZygyCi9`j-Z?60psc^OuZE;NY%2*Ga-ypIe?tPj5z?bDp;vjh#C|OgvwC%y@qRl zvN)xrwE2{H>G8L6AjnL2uWvAsmyU<~j($~hzcHh4J5rLdPl@LdznrFBLEYBkS$sVe zE{Mnv3B8FGKb(mN~7)Ke1QW!wr9;dD9OfVO7 z;}bpN_kHqPZ&0XChdKf->zB~BO|gdOBe176&)JmV@deqira{!h)yC_u6i4REL)Z+r z9tI3!0Q~q%eBFaoM;^leJhpys5B|3Bzx|5Jhl2|e3P$$tx~_ss*I$)q&;I>=Yf0Vi z(a*O$p?)jq8376|8b?eiF1{e;(6`Vd@u1s&Fa^biZiwp z9M^g9io$Bo1(w1?#gwOBTf1}#$j>bm#xSF#LZINrRPggR-%6c5Z&=+K=;T;e9)8GU zwx_ZA6}ngBQUiJS%JlRsn9w}pilCMGb@}R@GuJv6cWmB-_glF+NXfWu8%Ho*VG331 zk4fSH%R2PjjfZ^vyx;T(wPk!TWj)E#^Wpn6Zf@=jF=M)(0yv{MVrT2Z0O0?#UN>g7 z(V;}Iz;9zMW;iI`wrAf+Jl49m-BBZ9K+Ii}Vpiyg^b(T3U=HBW$_Wp2ya>B7bBub- zR=f=CTdl|JU=C@EFAL$xc|os+tADc-g>Yre4|>7+$$*};=20WkZ>kxg4ES9Hb8_EM zrn-lrXJ@ZXIOy?7VMF?nA8P+4LGc%D^k4Vs`dt9Mzw0BC4}@pKvQ=i@W#zf$+*=2h z8Jv}21wnSt+L0kWtouJfgW2n)^UbyAG_2)>goboiVCf7B|EMQTSZELA$tYyqa`*{P z5Nsg*gQEF1Z6xFqrFJWI9>mU{&xI%mfDRvbA*uMTukj3_UXm8wN=Jp2iR$+^+8Ht)02b(CwqpioVq*4%w2(ROF;*(!BxQMmVA>2r$C zUmnTSo|sukB6$+@3sE~(Ha%(mBr7uoKL_Atea+yYH>m0h<=xuep6RRByA4^YKhS)f zg>Xpo30^-OF_=F>%;LAqvr(q^jm=l#7d}W~GO(J*X#kb*P~0;2Az`$v;Pf0@4H*># zus6APn|33D&EaEW(K0)z1i&9ZE|r@X$EHW}g(@>QIvlqPYR~)vdxvLJ(igP;%dFAK z+2pd_wx|||+V)wdal$RYFCX1 zWgyZDqZX_*2|-&1yPCL90oqm!a|!0j$@g7k$2PPtv)VOfo%9*IE4kwA>B$)L*6As- z+A4=~K8)8EGrFM_Z!Mz8kTy1xROhdx-~mA$qCc&nT%M7~>Rm$Z zm^CaV$8N&QTyf$u)nKpUHlKD~ByFAGwL%rK+R?lQr@MfkY%p8^45ZfA36$lfydtFbEdXnGNGKiM#6D8yRf-f`d=DnF*FpB%xu%gMZ%Xl9NG0jQj4HlVviaG}_;Hsq zIZFN-l>P6A-(eR2r>lFTOF|mt4NvaebNDBJof+xA#AA%y`6Cl0?Yi0bVtct?R-HU` zQa4khcA(H$g7>siqLrwiBOsgT?N>_l+Djd-uU7%AUwsfByQ!P@_hmulCR2C<7asE3 zZO0f;J@!&EmTiaZsHyzCqrUqEUSR$IWR&AECkimn*F**15ue0-V$cBemN*p+NEF;v;fS(b_ z*UbG~^tS3Z$$qqM8Acj+;q>&|1~)Mk2jjP zWi*_58Vm|+WkxTyG5!Bib#A(j9 zxK4=w9~#8x26i?yd#{`q_}7*FefC^y{n(DUe!cnJ>C>kLp%=FOlVvw|efjdG42pF) zGfy1Hgl#EIaQxl%QYt~OUwmFWV&z|W$?w8F9L=3LL>8EWOs4jJFZLF&z>vqWJ zx_&}d_Ws3-&bhi(xzdg%MF7KyJXg`}`*#6LGs3x;%ajPMLXKQlAq-rCwn?~P%xzno41#JSdq;=zL0UH|$R zCnB`{2L}(S-_|^{oTx1k1oHWp!Vi@B9{TAICCB~!7$xQ0_R_R#2bcdVN98L~0TAnx zC)0ohWw$Ew8P_jsQoosBrY!mQLs*r&KP`Z|?s)wVgk^ng4&I|J(igla1bMa3aMi%ToH6hc2Y{hdM^c z#;J$?zZEzCBYyn+MzabCBEQm)fBnJ=?Ar5`KU_N+{1s zx7YAQM<=w-`j;C>JhyXWUg0kCGX1YZoYQGA4img(I`OY_^q)V={#Orz1L)lApY;g& zc>T8%k{7Q;dzzb?8V_@G8>YA(-7c+96q}!*MS1Vt&rTq{>Ck`R^rG=w$2nOM`Iv)@ z>Sv8jBeINmgHr0?+H5VWoquX-NS-PEL6dCQpD*EmF7V-PoxSF1=bsfr>djMntN8oq zG-IX$XNkdwhr2?3EGq4P_{C!Nj+6gK?%Rj&V%`Rv>AhBt~$`Df3ay!wV) z#D*S{p|+&n8T!vI%;yd+td^9x@8naJyIhm~V=j=(k0Jt|J$p6uWywSvND)<=59%fR zNDn!h{5J1npZr-?;ok>-n%2MHUT2x^8Aqd{;(LpG!(NEUe}!^+b4XjvI+YftYw||L z#TzXojP3tt=UmF3eTR#p%nt@V0+Hm7;;vukg2Ez~?)h!VnSnu^p1s3&V0Rgfe3ROI zn`W?FW-*z{IV=GO(oNd>q0{~SD*@f!6IEa1FF($u6K8#iPIFT0i)3>EGMSizvTPqM zKtSVITbnu_qnYY_Mq|NHom8XN-rkOD`|09`y&U@t?%aH_vn$vkKx5bD!ld=CSUJgi z_o9%y}PMJZ@};M_Yl8sgS+BvDsI0eZ-yXQ6d=^B&GX&WY2t@WsNKPf!BwFT`zwP&!48D zlOfl&D>+irNe=%!#gl?hGi75NDuvn2zgm}A<~zidrOOqir9G5DIp8rL>GBU_mLDR0tS+Er5w&|5}oK4iE<- zE&@Ed5!yR+mha~s^jAH6fg5T1X)saXkinP0P}5aBwEAiNiRo|CR)6JpIgM15yr2+w8lSP zrQvk#d7dJ3Yj%Y7!Qp-)eUaqg&3RfyMgE>%amqs;^pS{%Ro>k2=E8G>yhqLt7BYH?n(D4r6Ovvfwc&LeI`NUPM%;5G zi+JrH^1pvC;QrW0QDJg9;p&XPg@F^>Kb|c;D=VkkWrJ2WsJ`Fdp2@@K`j4m5gFlp=wb8oF+e(x7T8p!t<9l(&lIM}*p1^2wb0CAT1eE4l-BtXRFj;7w% zxzdMpoXE#FDAicx1r-{h)w|jQ6J@NdL{6PLWq*F#Bjbmi<%b6kA;i0g>61ZIAs3Wi zv2?+%b_GcH1yIKwoDK#y?Lza&pwfRhy@)>9axs9YWEUo!;%PVg! zB_N-;#VTzsyB3(Nc^1nppZ2eJF*8FH*W|E0BD{l%1iW*c!8tmK+zzHePV$}CqM6%TFjLhS1FD&HB?`2OTsAD+Pq zO2(Otz4=^2*q@~y>QQW~>LGf?J~{W~=koMh`LZfY?p1Y43{+}3Rh3w6$*Y78y_@pj zufXNCh}Tu~`31NNz?H6IrS3iYXBKCDEC3{mdlvjj3r@eoF*=O*XQKj`8Gw<>8V#{*;2a7S4(ks(Hay`LpA!~M; zT2S(;H$KzxU#rW^k7VZcD) zNUhf3j$aTMD8qXGW2t>Ynuqz1ohkByIf&z5xQ;K93z9|Lw44+!-D_KPw#8?bPl(4$ zm>c2;c)p(dn@aK5bmWdU5F5osvbMptKj@F^%k$$JpW3?g5(WyIgp!9U!U6e3cuiHr zjp#xRwf&O*p<9V^a?J-*yy#(a;xfPN0iKGgldccyO6ZyiC5iL!dA}arh|Ld;5smK~ z_xk#W<>#Nz5^>9AQ(`sJ*GGlCdi9v4A0SrtxG7M?j4$H`*S`AN*x1A?I3fmRfBC4n zJWi}EU0*FnK7VePO{qCab@?v#`p&f`w>8avXq-sb=8HXNfgx&>P~03eR8EN6A>+|I zPSe|eli-ZPg}r+DM){|^g|nLK7yHu*d>)nWHe^lBs4+W5?36fDC)-UX|50<&zgiez zSsavP3IPWLrCLAdk%zl=c5+3AG*Bv0dl+>uraNhQehZz+0`$v@>acEME0ByBtr?tw zfr)RDbX>jj8p?LXmJ8{SvAld4HXJ*}r<4w-FExqG#>7VqZS2~Y)ZS|zwkiK)SU(0u z-hxf!KQLco=S89Pk_qLov}4LlK1D_B^8`lx9Xc3nK5LlkPLdaC(iJRk-PtwnvJFdF zM{GP-;i3Gzky3|W>|M)Pra)dnE)o%*@2vZ7w|}b&6g7U|r``b?W_Lex9szLSSHFe;pw4h{*oej>8{;QC0f4_oEWX!4oCykeZWS%2lwQs`Spbi|{Uq%ERP|oR6=? zx;k8QA<)*AHYjbx>Y9&B$y+Y2sKmFqPm){ZVwB~rT%S~*Fc-P(cd%af4Qj{qo>GUj z@7Ko9oDp`Mi{Fd8{*SZZYcQXD&e0$-Rd)c6{9Op-2EOa=!6pR z+PIapS~Lc7$TUBGT(4K4R^{4&0+<3`6Em#V1t_T(g>^I$$lBnkbxRuGh!=&qzTD)g z8f;JvabDuArZiYoPi|1%#@r1OOcHMcqs?CTXS*GxmhE|X*T$_OTcoqmwvAnQJidE< zW}pbCv*oMLWUPF)Y!cAbawxRwTs3q=b0Ngk_z-?FUyG5pm5cA zg06X(OvBiVFNe5p((J{**oP|g zM-SgBu6ZpT;pw1R37rvb+c>G&Yt_|vLiqFAIB%VtgXm_BdWh!YWLJL@Y*nsBKSBDZ zsbTJp?^1r657a6eWZ3Ury&BM>9h-7%qBPCNZm2A$uyXcZ79(^EuG7)Q9P#cr&>WA& zW^}xp>Z%}$D>vgE@g*7Jn1!8C_-qBqc4%2}g#yq;N~ZF5EAdj^Csn+5Pg{p;6-BCLjX1PdJGQ}S)mwqP`{SXnOPEE5f$?aosA$PrwGZF(y#f3HiQn$c~ zAbmLL@y-E(qGJ_Ugu0mU8-gQB^Ha5tYeMmh`MvA@$MDHD1+)fNH{ync*&(D?b4#4^=)u?>% z>JC?uu5C0zr9FOiMCgvv;My7Cnys|8id_v*(JTKTNDW5*I1K;N<+6>$sqa3r=Q*-s zT+z@FFU0|29oSm!)lLeD@n`nXeRSAMeJ1e&+LAlUWk}wwIhn`gkw05c`NOzgXlgl& zF!X7XGQ|(yux&cTDr>u_#cjRZ>*lyJ5=M;^`7AoIk(#flGgmci&47z_Q&6!I&L1wS zU-sMa04mKZg!ul|LQ1}w#~d;B`ju3FKAfhA`XVQN6h;WxwXfXi>wERq=N?0K_ZHT9 z!INcgEeimG9 z56ClSw|-Q`M)PNJ{`Ls}MWe?bas_bxkPA^&YCj&xuGkqDm$1AN`=PwL4seQX-{&B1 z{k*b+2>*Csmfz9^gP{z`Y8^TbgJa?htRP8roR1V-YhrQMfIA&006}_Zi z&@%+IoxX>;HDaZIV0vEkgK8f%3qLeA#tkckLZywTR)<}?b7+Uh&T8m7I21}2dKQ^+ zw@^k3lZGhhie6=x+c&ElQ(X9g3PS(0CIJsKmZEASR=TVSeYj$+h-YJFb!@r5htb}Z z?OkzetVMn~;#txT@W-5poN|>lmo8n(Md~&mtQlaI%X)Hm$d0gUt}K8DFQ+l$99Mwy z3<;_`ne}sH<8S)8{t(UW^`U*NGXFhz`|}GOcr0>U?Yi1+rDQG_)D?2iglCm*RC3X` z+4E~%N6l?sF2!u*qqo^V_s4uSf7+T%3j<;S)N?>(my4$*m_rBt_hWMVKjFlKm zUfa>enyZm$SWsNtW4KNuID#{)0OcKDQgX?+bezXE3^HNe99>hWQVumf!|1r1hN>PI z;J{Gl;od9dxTK#vG-DPEZ_V_Q4_A#iL?0y)D3!NCMbnKi?=?@*w-)gtz$abR9arXh zv!r!IUw5_P`3@^Psx&|FDvH#8$9|n0*G~FJ%^2Dv&ffVopJ;p@b*f`m zENof&K;4SkwcL--EjyN^gN^3eHUz?#HjPqN(MBSTz_av5&0&jxKDI7nVG4HFQk=8D z6`4HFlikU0Vc_%-t2HWjp}tlvq3ZL+=-?dHAQ*K*?bHqH?%}Es8QjLl1vT!27DXA; z(o3%-5}!#g+c#lTyLNlQ7~?VKpdg;^Q7tEKTFp+>`9uKhk#vDE&Kj|W@lA5(64Lqt z2AY>GzFmXXnUjVBW3~X%7R~Ig=^kcKY7CBP#`jHbM6(}XY&*N;jh-elPqf@yKr{> z1D5CW0^UaDa+yL7?Qbo$P7f+SOzJOcobJ8*K9nw}b$$ri85z3qnFH1$TW}M1Uzd~K zogWPmc8;?y2zn8`yQACybLkR-POPCnANJ2N6Nf3JN{2d8Z_K;qK56q9>dQe-18Rv+ z#9lN;&|`>@_Q|jA!Gi}0%yhga5AjN*ZOgoMZHrs8m~i^Vkn<9rKJ&sQhr&ce_%@%Q z%T1S#vqro3ypox#wBMuVK&L_4hZ+NGSet3jT~)v1_azo@7$hzu zNPP9;Mcvx%rXl-Jez~M+_uc6Jqg?7mlwxr>%7j8W0gbkI0=tWHa&fzx(&IHyi`OMF&VJwkoPw& z=vBmLKR_IN6lD&fk1!ydl3yNJuS8WXrF7d5aop}nmoqm;mguo4Y~5s6%Toc-p*$Xq zqLdgqUSzpgT_bc#XNd3I&y4g+dYpWot02$-V)DQ0C;5ekK(tz?>=Jx*N}xA@#Qd?Y zdMtqQMvGsp$49B72@p{$c9FQG0t{BQb53<7PF!X0)t_7dM?ZNYWJc?6@qF0Z$mh^f zq`Wt+%^VjVBQzCCFMv1Da$<{D3g82yilUMd)Xz~w8cSwb0Y93rk~mbOlzMNCd~4a zSDE#i0m3$+v+a5KijbdaO(sDjGmL`R8W#lPEZ{f7@&+rIZfygs?rEW1>mn_K@N z@kY5jOYQsyNlg4{9+iMh%tQ0#fHk)E;iNC2INEct3lV{N4wWsr2IxYp(pHpE6l&GA zb&VX+7H@7`+?%6rK68*pxaGXvQk|Aq+ZjFgSq6zbV}*o4FZ;DGDJhpch$!!Fx)SC1%-#SFYm1Ddj$1;>L@QjTaZg6lpEz^G!L3NZ4Vw$GyKgoEc>t#eS45ea zAMrmVEjL}Rr+6RumyLY0mjAq}Wnu#^m&Rjh_#4SS8-%M-&YT4p&xD zva<;Rb+CJG&MI}yhVqWnZ6}P}`njy{y*euAr8GosCnJ3b+rLFgX&c0gBQd&CGdbPr zU{3F{i78Li8Ca+!>H<9u+nfyT3Wpe@w(W*<5YvT`l2>{b)VG1>-06C6Kp_`JG<+>_n18tT0xELOzqh3O)u5Z-13I_<^`7>kk@rXAkw zg>8~n3Q2(_LyPK_lpIZbCRd`e1Q||1Qa|v!v0Hb#Z)In;TM!Am@d!VD{HYU+6Ri(S zqSN0^s+6}vz3-#ED3avDg}mJ$tJ>yl(69W>G@LdU{|-@rrrYf4JYI5G}~9@uEVnMtr~W z+ijiL$x%9*7au=77og_qK3FuXS!VMpsI|D7IEuMA!^Ud!gRu3h?Rbmbsf`2^#clE( z`&AjbV-9m&s)e2jx)aNMjQyF9T4JdU89=P^5JCRs3#6z|WosltGxr4;W?1MprGhkA z5kESXLxotCmnFqTz9uX ziS|_F75g^2ExC^qDSSDyhS)X(yx;SF4Jj6u&k?ZFG_uuc$iPbnZE5>**+^`9+lEqh z76U#g=xxwZW|%YK0--mtot`!|68N9C9oIU~{n0`1!6UyhXP6+S;k;f8xr4F>798YG zy~cVRoG+69D9iq*75r%^^D5q5Paq3K2B4^(K4T(QjZvC2fN<2fxTp@gh;fRP>73C&aA<%TCR@E8mOx zT|(;5Z~E>4`}@uG7<+%(cDEm<|0^u~g-k>%$wWClDE8?U7H(Zm1lPO+XPjSHSmcn3 zR~Y+MHE6ey(Ga{oR}NHgsOae{Adzo!{Q{_ZucXGDtV*+snM17*CpU-*ONDJJ)}K{d zuy*Vy6>m;n^v~qM`ztV42yi&tI}YUne;J53Bj@p$ml}`Td@4nm`Aw2$t`Jb>5c!fe z+7nmR-BSn)C{)DIDr;jCo6+JrTWgzYG9`Odw5umX+o`GXD%-_-oDi$9;$*C!AanY= zD}A^T2AB1%NqO1Vt<{)n_jHWViwDeh?5xJc+KQb)yoiqJtDk5_41Z=eA8h8#?)@Un z>cqsCZ;6LfvE&_XZGYvr(a&rFK%b7^;zDU@D}!?jE#u`<%6ml1&3^J&TG}ZUQ~u&O z+K~&YpF_JQuX1wN87m`&npfY(94Vxfk%?QoELS#QXf6^r*CB6dtTj6@!3VnW73N)b6>yC7fSzBI4|)5-=b#rwuL-ZPH<3FjU_6B*CH3znPPWWUX=i zXL_}~hmT)@O4nTLMUH4={yj1pt3U<>wA-3`0R7geUGbr2Iv=}w>@|l?A+p;pKNCOg zZ~oN%&A+Kq&iZZh>u?@FL7(II79PptRq|Gr4k7C7=YC?ECbuje+E$07q!9~T6!I;3 z8h<;bJk2|EY`!xQia+{k^d@YiIp!K}7Uw$zNXv z<&mMx7f03MFA=%2iC><;ccy?0nqk%l^2mb+W;EYIN8R!KOBT0!J{ql5gvMyDcZajF zbK12l7eW2)M?aO3v+7q7tl#qdufFK-AMC|HyLwaR`_h@W<;nh&&@lOXs`sW3yUL9T zb-1UcHEUMf@uz%oUshhpC+i3!g#L0A`f?PC{_N>>s~k}Zb4ly0vpU*JDL!A^r>1k& zY&}5~=xu~DM$tzOK5VxAtgLcj>$bTRh4ji#B7J&1zydk$owK9(wm^G+wQoD@Rg{A6 z+ZV{qlx5bdZpzh`>ytF6;M#ec0j5C;a;om``z%+qw2++VnODm3?84HX^bY*JDfpb+ zqC3p~{%pJmvO=fMblLKh6k5PnFwVfFOnM~rDCoYttx|X5t$Gyg%b9O>@h?~2Pyov- z*A$)sH#~cvrM5Q{?)~cm-sbAP+}1(+u?MP&5LhwLFh3WfQ%4`?%LUqHo>@@!~lQBOM}oo%$}eP1#*Cn37A6QK_j-vI|G8>;|%7So9yEmOQK zMwqm5obS*zN5j<-o*9QwH6j+g7;`Rs>7qDvdjQ+O*`)St;c+6NZiJ=_G}ZYmx5L47 zprTDH=!Tip`S{E0ZwD);`jRZZHo5K2wC8k^!!l%<=>=3o`n0qy>YID_ayL#*wp5#S zRRRy8BUs9E``piz$@cxTExCOF+VgwPjpzwy)1jy%^csK8pd0uc4)2QDZSyrR>zbTB@r_$cbe7jQw=!TIg$h*aH9Whi^(iT1 z?<>k4vx`Z9_F|F6mK{~)`r*jfqe&&@+MGJJvmYzE{gN#mu{x^bu3A)H@yiiRZY#56 ztCR13tJ+-&26Xmuj@=xk6hw36tJv6-5=%|>=)QDEb`rmRx)ExCl$|zMyYfngArElR zvdmYYL??Iw(}vlSr8ArJ1LpYy#;`Q+D81}*0v1Gf_Kx$9yjtH@EgoE71n4KxpS9($ zo@6cv7<9$TyE1w5GE-T#))3s79&1BWFvg52SRr?4<^{`*wP7^IV^47 zV`V^Grjd|si{7!e*HufG3p3xMiM{lN?gp@gO8@ zs3<9&JgYQL0*&%U)mi%@I1_w8#?H7s35V!Bgr&AA(Q{unB^A58H(2SFY~c zCr;uw#BJ7d+^S2I%BmKVX{ftvTR2rq^N4d_*z?qQl%1Jv14E9a0YV@9}W;)Y}yc2Lx~FwlfO3DM_ie8x^sz%?VMn>h&zO?K1kPfS!lpOwb-M=p$}EFYnDx#RuP_D-HQi~8!o)69YGu| zeQ>7Ow3p4o!|go3D8sq(tqpT<(5cAB6ijyP{H(z&#)wV!kzamp#MD{$^r&z8m0z z-oS6|BvIB>FZYQ+7e4L@8H|#~Zj0G0>a;tl>a~j#FlIH*A_;DthRwXmszVlhb0-$7 zEXj&kMGg!#PcNAJpscHjo`!+h_?%e}b>z!)Hg)CLOvB)5VchVsVjvP?+>AD8oEzD5 z<2ZXQ@3XKsH~5$SdYKZyIp*&-;QCxkvNCtT!M&P8d2VRkKkJ>SRjbLG;Htg{|H=b7 z-UCkbN2*s-j`4o!Mjd=0GPDoVgxJyG5uXWE*Pi6?hi}d=@*N}@GssPGd_%*Oik{8BJH56j-Gb3VKXR(?@^1I({8(p0yR)xh?m&Y%*Du_9fqo)p$QHtcBR9CREN$F zlP)l`u*@tZ)2Imds#%qcI}BM!%}dYD?$gKzJ-9FXi<|vYRo4rx*<7&jvasu}cKST? z9&@YbeTnwdZT2M@{;T^_w(@!naB>(t3XP@8GZ6UlWFnrlLMkcD&%B$Jb+vuDHmd7& z7hO3;BjG0#ldtL1JT<6AI0t6b@`3&qC#^==i~?)faMo=KxOO?4%K~M(Fd=uqKAzOV zReg6K;p@~yjW2fCS{W;=Z3G0#hU_$@H)!7l2L&Za7U0=27BHQL5+}<+L4$*;aR&|5 zb2ZNO=dM;MH&M&?j(U1P)dd#_ME2DIYWns>FnKTJ9C$xm9sMYR2zVh(9a{vOEQ{y# zJV&%$g&gXSPFRPlqAhGTk`B_?1XvEfNeh?Ql7+Cybpgqp?D#=&R5*e|CJX0D6h?gx zb1c_pIfBo&lUJp%h%}@ZL@aC_o*vS-HH3d4N3@hmI@$~^3hW^&N}NW7`R>XAw4D*& zC=lQ;Wu=yu?stO2L$k`rvfqWC4v-n>Xq^8YaQvTP^51jLKR>Nq-~?rAXRlk@02w=P z;|(OrNySfJK%SGVhBwEy4XR0_17U#8CKRokDpBH>gpNrvH5?yaEecqP>sSWuTvanR z?xA0D;L_UF1Ge^9E}IJVTUEUqFwB zUcEb^RW8nK)!n>ebUj21=>(tOFmZRUJbLU{LRvvVfng1T=SFOFK5=@nxK;>6ka_R5 zs`tqL#CPgPIsaVd_0?-9$sh4!?VbC;Z2t-@F(~+loFgW*3*j)rlVc0Cr$wx52Y_1l z4cZ_t`>?h|k$rd2s|);0sMy@6%OGkzI)%lG)M2H(cGFVBg)dpirmi|T&h;pQW|!kO zHs)bA{DZq0M!CK*!EWW=W8#!^yg87hEG#HAyj|w4o}zq9NGGB4H+rw#V0?XL;tl_dbjj$1OO z7hC>xdwY_=#fxt`7Zm!UQ&EN~k4GMlVBI6;LS~9H;>8UDC^=D`sWf6q#=0)|0GJ8A zEaqlb>($=FxG{XDG8@1y1(Y7nE!c=M@8|N;+(-ED_ZT0f>0XqZH+2<;hVP?t8ZIZ5xx11tW*{wHFCdJ$r0;-#)I~|AP#;6IGrf-mj z7I_@+BO)Bo_)?R3=Lv_q8@>)M;kWDiifGdmW*rL_$|v|q07(+9?^;Buqi5726&O0C zC}J>-?$&c-n{=2BeE&KwRpw=ClrT8=_Ag{b=WsOY$UG%UEd=O29f5LcaA zL&>i9bPNHxG9CbF)PFj@mM+U3^rwMHuIh3@=z{arm0p6xyo z>dUv8PQQRHn&TTHbI0|V>(gfmY;Q5&2E68>a zipGFy^lG&Pi zxrVBNPEao;r4);fQZSE{gDp_?Q&v_kvNf1iYf4K?6B?fe4ig@BjA7Us{G7a;a^0*+6Jq|Fvg#w4p2!efvrWL~Njcz)A zmB)(77HhbK5s<<6)T>mKB#*%pPyuz9+xmU#>*;iqEMeB6r{NzjM75;tfdqn59JM)% zJ<0=toQ!vSe_*e}=r$20MtHMOVVtRkcm#ny$9rj9;1s`UuFgpeL_9$!imQ2!{Lw;_ z-}zFZT@??>I$2)7UFz86X#~Gf;#w{=R6$PIcQInOE?gCoa^tg3+p;&tpV%NO3{U25 z&l6b}LhXMr8vigx($uzXMI*8eo*f>9QvKWk@D^@wB*7?5=mL6TSp^Vn9aE*fR^r_| zP9rg+a>jFcN3+CD4>0%CeQBhH|`OqMguiRQBorMF$ zr?I~dT{Ngn?<$7#>*y4EZ@^_n8`LxBwgSQjUETOQc6NgIl!54V8tZ4SE15+S9Aa|T z)oawr*!zw%KTpK#J)#2ub_=_HW#XXCqfW-3zdce$S%E9LC`{_{+#fRovn1AR7tYMK zy9H*u`;S5$3B#?_w3+wrR_{=PXz403<=deBKgSy1dk@Eb)*BsnGi?A!>M`}UZuA74 zF6|w=0L?Mc7+N$p)w>_Q+S%FTRy}N&f3&y%-szi{1$Ao?<)~s%sr6NRFj{poLBlTQPm z6&wK%Z+?JS*tOgG?#HW#-0v2SY|YwOep`>BYx)P>%Y_EO1{j#;iv|p)N9M1RtsAG2 zVt$8={_8zE?YBUXgzoXdZ#M~mgaQIu-0yAgTlYLg_C3C_Usi=3nn&IJFYeQ8!_C=K zSo>SAwbqI9)Fk$*{e*B@nt-CayU)ss-Q==MiMbrh{>%GmIK{F@i5gy~m6RRNVK&!+u4wI#ik6F=(rCVyX6dI z`d!KR$5iLYtLh=`w&@H;@$8k>Se--czYk94=V4IwM{pvq|ss9lfPIgIX2$HyN#stYSdiC1eIN{A7 z6yM+-&SN!kSF#jUT$WsK$Ee4Q*Bo4>(Pqr}_6PpaaFQ1G`?eyeAojng+2B z#nq~tJO~d_i8Hx6Fh%nx+r76iM@PpFpD#bRRodH}&B}tFoL;6~1s=!kal0RQHKfY3 zy^4|tMW^qYK9K4Dnd}F zx^!zd{pKrFMp~M<<#kx#4}ry*F~96N!j0rZzVagczFq6cq&%Zezu7D5|Kq z_!eJArb=-0rbG+5V*fwBw7>R*WYS@>oiinL-?OIZV~<>0yJKRMtR5$tm=AG~d){mN z!jsP_P&%a{ApiGPO05-F$EErlNW}1<2*2>WCi*RO)$Ns@d8Joia>L<2e(C$u?b|m0 zdKJ0f3w+}b%ISaHpSRA%heq-@ia({5`=_nM&P92@opH)Bw#$V!x<*cJBPDF&|42HW zoV^co!l1014kk(=Us|!6Nv=CUVc}s4CTQg7UNNlp$afg=CHgaNm1`A^W5Ab6S_7e4M2k5>a;^;)P@b82?(y zzd!1qZ`zFI_@lzd-|b{ceJo|}byY4I>|0Yr<`YMS5al;5Q}NesaWY1q#mx(R;_Tf_ zIRf7(pTf9C)i?is#}*OKNRwtK#(QhNc+880)()|l8Q>>Yd)>-ax;$d`IQwZ> z%Z6zp>n;D?wkGE&9QJn`S=T;5RHs}IUYXIm$H^GMkddya`1mXn1e*BhVJ^z9Qge(_ z;xzxuA1%)D{%jCOz*lU(i6!W(Q@)9TgmQ(c?4&DE-L=osv2eJ)V}VF^lr3tP4OVID zebjvllaImR*~+ig8qRY@76w0)-#uDB>#O?OY|;?i|Ya;ImrF^bguyv=GN9B zFde{`*dR$h7c1#a$?c_VviCwWg@=B-_aeWvVqOiq2y5*1f$@9Gb0@LA?vP7yI+LBR zl}wB8y|P>_kHpz$eaao@zGqV3;fSBLuLAG7c7a`A;zdepl%Vo}&_}#_>JeCMOn8n{ zCnx^Q`Ly-vD96{AF0lJcv*sk>vI^} zZptzUT;J~?kS5SWpd-%u$sA#fuUMPwT`cn2iJd>h+xDqruWI|XuFEWKC<7m~w2Z~= zMAMq6bjw>r=5c6=XW*J(Px%7Ob62X{c;_jbD3$_2B!!FjjW`ddcj|eib}1=;c^e=p zb~-;2)^tkB)VEYN;|=Xh{s#@iJ2GlVq6W-5&M7Lk=P=pZn16jgj(2MfJPAfprZMT0 zktQmMyohV}r)ePj*vx-+CVzaOPjSRAs(t9du>$h_i1-Zo*V){ft$;A$FE*qt^pmN{ z$+=Z!B2KIuT_T68usJ3_vo&*>2E&oJmg@!Mr1uoxd)?x=;2*Vf8Qqg@c+6vUA#O0| zQTN!^vEU%tvP}ihArqbD-aWF=;V@H9mzb4!|l!0Fk*;Y*ghHJM*>(9Ugb zU-OF|)dR2{O=Y$8<#Ki(h8uEMvGg|`CR@|d_ZPTzep+T`<77BB z*EN;W%_GI3+^UJGsizFs#Q#uU-ef%#)Vk;O#4$_8EAq{3=`Dok6+82+KsMCgB+vNp zzd!z(IU)(pv z4;DkQBpNpN-}DCa{T~w@{*cDbzE4awR^F zFBvm>82A6;Ip`bzuLjayQ%_dFo<) zhg+_Gm zDYlV|Z5sjDn$zCzSv1_HXERIzJ&kO%t4@dEKD@{hY1`pVG2_1{p0*5Oox^b(^g4o~ znirz-9X$nRuC>@ev&bZGB1}wLW_2d{Gs~SypcFa;Z*7&USlT(ja)osBx_-j(^VU8^ zdz}*s5)&cs>jw5YYe4-?02}?3?SMd6LMgQ(1>~LQTnsjWTNS>@@avXRL^0^`tnCh2 zo2{ifE({=+GjFNKTnLutX3p2!5wD9UF;-2AI?2@yG;C1krh zWf+qw7OGmJUDtXA3=(VsZ3YydhAjsDZcHdW;w^{f%-cF&F#bj_w$*AMwzWwavAWo; z(7Q@4OTS$`<3o5_L%|}Km;!(qa8UfuAaIq}Q~C_q_U%Mp z4)593LB^WLW>@ZruHi?tD46nVcI`*~SE6m4|5#jv49f)pk;IOQF>5fb@O>fCCRmNM-WkVt0ordVa7P6 z2qC1hv{jyzTM`w=7{>JqbBgZPhWRFSxxga{&pb?rvgnskED7 zGuAf5iBR0C?s*DdpkT^$fLvm-8E39*{#a;)vL)+qx=PBZ5Q8P39E|2@$Dvr6aSydTsd9tc_|R;@F0oD11@Q z=UC}Ct5%zH3>*4NNaE&iIcp{_WyBHyiZ6ix2-{^~o~M7+8!|pSXc39aq0r5{Sc;h< zFTrzbB@6~+FCvN5RF%`)V@uO*8(m2UN@r0ur$sz!cGr=Ko;%zb+XPUjRt0V(*^d4k z%VvDko^!FWTfbUidviOdfYM<8twFK%jkhlGjACVg7$x&+}b zM06N!T$*C_IUQ90JDracW&fCc%+}LoOEjD8w<*GZjwHPCAa1Ix@@WNhBEnbm0pG$t zLJXoSCYiC0!;za%&{XL1&%5pA%c!WRSY%U{sshyy_q_8==sc=aQs(snEMw>mg{0t<*u&nQ2tXSKtp!Ox2dH2Fw}Ai!^!fF z{)o7GNp+#*r>NLmKIdJsjFT(0QQFt&cT1>icDA)_B7N#_u>vLC4}b{2E54i%Z`PAc z8{zBgJk~gQRk=Yej(3Y9p$j*u4}%x&Y%1?j1tj9Vxn#WXl|H^^`L>d!R`SJ$S~0>M z?$Zj9HERn*=%zRE)QJ-p5$HFIJZ)-ZGyrF?TXfzy+Qu=4;PKcO)%$2rD6+V$|Ll~d z>#p}i3Df~lPU#D5>T0OWSTucXJVd;IpI_ZSj1LE5vn0C%#F~$~Pf(E)9bY5qe~VOp zKgfF?gS^XebKG_o#N8w^iMS4g$3QLaz0CQvA?xx-&KS=e<>fNvruBA8X%GICE=aLS zr>KT)X;IO;F7A>!0_flL=F0>EG6`KVY9S54K@iBpe>wF9h;tnF#GF-yOQi_Yb-USp zG{0ufYR06St-zf}Q_W?2CwNeTav*-~07|C03NoH2ex=2DU=CI+#Imoo(<9i}*@v>U zNz)>WLXmj~u|u7UQ|uScoIWi?n~ryljcsn^cd2%H@Noh!40j44pP_Dl-&SZf#gsp;51D-~jZhMADK@~&I~lrOUZBArb?N7m|2L(yz|{yx#t1|V8`sGLF4 z@XRLb^<-zre3!~^?jc}R*(eu%g`Q0OOFk2w%Rm|!;8Y)RLRYmn167rdUNnsoVcKnW z%$M3BTMOp!rKTqbGh5L6%6xDhcCfUKaeTD${gk=(Fs3)Sfm-E#M7e2%vVS># zu?6&Ix&bX@09ZmEHRzT*KCrk!0dw^~pz5Gv{Ahqz%Mhu9EO{K*7d>VVPvuA&Q@9!o71nC&}N1U%^fjzn`%}CS!GlOVKjLk_O?Ef@gNe5n6CvGw1kD*Gz(0k z!{FS*>u|2pi)wrfs4Cru1p!>=HH$m!kfTfvB)H?yX)a5GOkI#9tMyJ9c~NzkQqF=Eq*h&T|%ATeJ6_YJUSh&Sv*KNqia7!JBPuZ zY8snmW#Z`#7ErIqYtuy4tQKr;ZJL>p1YP4d-li;=h@+_ zf=|a&r096oMRcH_rR4hu0xA$?t0(s%BD$XVwJ||tXW9efw)i!f{}Mcuc;R?C>+o-1 z!=5*1%C-Y;R!qFDtC;A!SQk`hF3UX1x=YLjFrA69B>=6GibB4dQM{2 zJMg??iSNPE0&Y^%x#qSuRW_Gq0v)NrDPpee?`UjQCFm<%Y zMrTr8>0#oJ>e+v*SgfBqpbjmZ-W8iN`s%E?$r36YdUN$M7NbAjQZohJ{ZFHL14XKF z8)khfu3LwixxIVfd|IZ0pa%`AYg+UrZA}(ZrZAKq-mzzrd>k30?mC{=N@#xR<=2KkXQ&w~{@ z1|wVMc0+Bx8$SBxVE^&T;=~mW&f)RX02U~C_1L9{dxz$fm&$h~I2LT2X$8U2qG_2O z!u6=2s4;54GzBI$3X82s7}X?m(HL)J@qTl4d)dbJKmPU}YSiPIj3WFogV(`izYg;m zor)`Rk|!QQRbM{&7@87Ng)^y4m zmw4eHlobEzUYz&G5JaXTr+;qZ>TkAi{BAu+z$2D|o3eh2Qugns`u{!jkBXsxUu*!g z_`f&(FY`VG8_upK}BRjNWzPEdD5QyyV1HxXu ze0fEop{YqmJx|-#8ljQwV>i`oy0PWBAPVrioGLc$SN*Mz0uix#54!5=YBr^J&u&dv%ylH+)JEmpm8tV(+?=W|J)MZSI8F-nyLr4 zH3>0Lw z@mThFNqTJvO}8g#;dRYf3)}okHJlI=esa3Tx>UNZx+G(Tk zCl~gE%7sU=6gU3HSCVojQ!67(+Do8|5h`x`#cy{TXU!-C?OBKxP+$r@N2+2n?`t(r zse@7VjG@F;B_%)P7ols(bzQf!GK!t>nm`@}<-r0}qF-j&h&jwWEcU9Zs%F?u>q?i) z;k0&qf6)Y8+ZHEaj!G0W8_6!t2{!&~nZ7O9KU`hd*Zns5`0;yf`AcU$y=D&HUZ1sW zs7_8!p6eutMIuxlacD~9HLIR~h(wFbw8ro_xos@yL|#>9*|@Vsn6l?$?eo7R6_g3o zlVT;js)?t9&v4}_F+Uin_UhZYY(D~c+d8{2QOz!=t~{(2>$?{1!LF8@882iHT`TnY zyVLvMmifaSQ1_O7bN0Kb!dgdiI{r)qxSb)z%hilo?YSMF472)v*eak(zxt@)xiywv zz%0|cnkjwD9&6H5dU^HBF%-M&%H+aUYk^RJtBT#NPYJ?K9rH0fykirdx{ob3sL`jv zX3H^X3NzhE99fV?zCV|)mB#*N@TZC+o>8VSw|I=af zKYu1EOYUxPmwJAS4qA{F4)nWT_c%n6kzKWCK|H>mGJ|9;SWS2U(4kvBi|~e z-8YPqyHH`3AUs%ZAEo0=x*Nw2PnV0yb$2CHRH!81a-C|9e6YAShhM;vcHN-cS*#;C z|D&f>)+lna@*upPD>3{fmkPtf!^Hy5z2Ui#u~3Z+VT3V1Fml9?HdG<7K0=rqhRr6s zK6}|>arlcDFAi3FAh8dp?6cL;ws{wU?)i|ji#5_=_BGJ4%5hsPS5K9Zv6|#N_mdC) zEKu^pNn0lRN8e###+*)Ps=U7yucN#C<>S0Ipl^SljQPYuO-0pPcRO%C{g(gHL9BDd zT1PdBh+jz*b6YivDqU-t7t%$>jS(&y*RX{17KQ^?G>GS5GGEA>*50bVztBMd!j(Ol zpD#meHug@PKApZY)iV2{4_-CR%g(Y|`6;VUbh0IxZW(_iM&Ir!hfEm5x*!EL!*h#5 zJiB70-{IBsNr{W=MTAvSK7v!Pn&I(|H;LkD9;?Up>WPw0@1NV>cUVD;BFtFw%_IKi z>b+RanCyh8J~``nr<9|MF=dvwH%d;#an6A^6-d|XBgKHO>iU4+8wCc5$5Fmv=h1Jn zx{Cm7?-Bb-lDq&3`PkP(cH1>*#EMPI*e3f<+`0=+ZGC_|0po#);UTG4dUiNlFj@#|{cdn+2VyF*aGJKq{UaNvO1 zKuTIy+JiHXO*)n@3}It=>VNqTLG!1R{s*7)3vk@-sWTbhQGIw1-5Nvn=8V)~xdJ_= zs#zdV{x*y7U?aA3*iVTglq6kv7=!BCQ}r?D#cB_3@p=DaXNoYXg9TY^c(ZiqiY@DP zo&4I~qg`MR&S6!woQf-5SNcB=m)n1CYHI4WgsJbXmCDl2;fleJhAuWKFofI99Ay*; z#M?dzIHMCVhUj0>LA2~o>jyU8RI%1?21n(!kN{+yTQV9ZgV|Xkq>~>H=GkcSYsBMU4cz>TWyFwe~N)&ey*g6-%CN3 zZ*Ga>g3L3#Fc9gEA1^KZ$-%8V%wVWG^XXS0(!zxU5FeuZ*e~?a!EJ`6ZfWpXUbC}t zI$wbjzePU-?@-9Qj9M&C$SX!nrX>n-Jy@P^HYoP`0&8#PZqmwRJDixK)_WzR*wX%O?x*kds5}aga)W4q&g))mJj}cG)UffW3$TuDy$d zR-wDsU3Z`7+7)4)&@0Q3CVUDIUFEOg^{fEV$J$Z@jhj=>(-*IsWBGEN=7-07t<}iv zbQ31P!SdhumnFUO(i!RZ`;)n4RENmO>}FmyhQ`~d+0qLR6}bkp$i-wsSmjx=bMV8- z2@41%DLBltk1-?|2XW5?PJaNYpjB!~h^^??ky1@t@o1hUAKBF=MXBvBXDE+vg}Al$ zQ$l(R-PGIc>OHyPbaSIIhd>x|;Q+aIBy0lLF@nKoSqFHfrAP(M=z_BUrxTbvf<2=i z#GW*BbuB|o@p5h5K{oXTUD|6JlJsaq?>iW44whJ@9cQpAI-T(zTIt9>)e@yZB6?&- z=|OLv<9V8Y;HiB$)8cTUb&=&@(dUI&a7>|3wM22CZ}Xj3f(M!p;2sqkg%%j2@|t2L z(t)0=T=exi^U6ouv@p32H(Uw)zga)9XJ#Dw0d}_(E;)c~F`3^;Rl)CO4^|sw$R`NH zjly|*73B4jeGZ-MbzB@lVh+FN(y5pfN4#nX%vx`tDMwoyT?BCiw8#_!2DEP=OtXj8 z@10+th0C7f0im&^*l2bdbYuP^&uFg`eh?1)JL{5Kckjo2u1p)5W6=-oQ(3}iT9O+a z#%gcsl-qs8pK#gCm-dj*q@v^R>w}M;=RL=5_r}M^XI=vc(tvTT1=5oWoAvoee3pIM zHSGx*FJB&~y{fHoE`E#<6q(aA8(LaqN|=t8r+qy90>WD4yr?_X7Kb(;+ImT#<8^si zVvWgb1dN**kR2J1JhLRwL+>gALC4gC&TQE3qfcy#TSX85)H*w>G z6{|EW@(Ww1Z|QaAF4H_ zgbQp}zn%4eWjg;50Ct@@LM3ztd*5Q*b=HmxNu8H#6!&O|pK=4OO?P&B=H5@!?U;IbkUr`cgBkfW*_bY|)_F|I zR_cOd;lmUSZYq194@P>ZwPy?iYo6g&v7);&T3LmrsR47H#leiqMR!ji!znLrxMT$D z@DqlW*R7E8%=Shi?Q5x$-a91{6>NRwc2hm$mt}^NjSH>Qj?%uVryOgG6>H*)loyFi z$Y_h6RdHU=f&kAe`M%IFPJc1=U14aU^4pKpp;N1-}Jg zAecTP-t-j=}bDy2K5o3$(pQN7So_tG111&NRm|2LmY-^x@Cd z#A$Z1&05j|H&6raZj!&SJ&*zG>9ZUHBjnOzK-8m}H1{CJGCk6XP5ZP%whNSBS+(3Q zE$9ZVxSTzlW-}Av{(8$~yH)ShX}au6S3>4|asC>J0gClIpNMz@9q#|f-g|~MnQdXi zc109a!~z0VP!JH14gs;C(o{;MtMn3z0YZ<6h>A23kQx=~CDMfuK#<;RXdx6K5J&=q z5FnIqGjryhIq#e~XXfvBy??lJT@iVn{p@G$d)@0^_i|fVe$BC!UrVICwN*0ea)7T} zKSby3KQ4F?ZhXHme*1Pgr;(31OOBVrW6dW?rwCwrclq@g35y4$?sPo9F1|4_{Xufx zIz{u?FUZS5&ChwfF5P=&p%J{KS!lHK#tuP)FKPVh@rP!7`oV_(ZvgGLZ?EitcDX&= zT35t}%Cru%_e!QFEz2Iy_11F@nxHwIV}vNu$fxTLEF1MaXdb>Kj6w0G? z|5{yWrd_o3;vlujo-i(K*eBSoRpep9MDKoO)v}>$%C^z1_hf^KlBCF*<9 zgTQMu<)N+da-%P@s*96UL;G{$H3Nvo7`H(Sj#{afW;2z(Uk6hSLLV_Gc!MJQm<-*_ z6tMnvBo)4_jgONpsMK?<#RvYU^zK)-$&dT+$1z%PS}xEh0*HRy&(C(SJjuid8=;vf zmmHml)RRb6?^gBkY-pp}N{&|r?3dO3AklZX4TPbHnR#X&r?~DrjR~`^#%PRcQ1oTj zz(fs#h`@>7k2dfc;A6dHT;`JQ@y0c7zUdTqr4-T9ApPBi_X1iDEo&BT1@M(*O$#A? zFE;T#(IUnRvw2M*{N%U!rmqhTf~aZ0DOV`L{)_p>$kOo>>(x^a0~3QAr#hsI2xQSl z&i~Ox_G|L3tiBt7LG4SmKwt;E^mUbrH0Rxdtid2N92|7auqsA$uVaS+Ka_@@jM3%? zUX~uT$z0BmAiS;)2Y*ct$>Ix#$;<)lvGXAg>gI!6C?VvOVn%5pUoS#w%{o&Fj5EFo zknkJ(Zy3=lbFcEu8)i+US@*K<7Cf!$hKA(7JL9uw5OHxX%*(K}z=pgqTCFqZlJxbj zxPkxp?jIroa$`LHJAj^CIOnYh`dg92^&}d_%(A}sZOno_ufYgmptQ(#JX<;PD!W;yP`XWv_ku}>HAPgH?7_f{ylcY;xuqL+ zMX_>TPWw1shi3;c+M+2+m;W+spjIPJC;iFpgUe{d`h&c01`N5&S61(EwEaTK1 zjmAp8zodOD@}i#lPA2k8 zB7Qg=uoOIu@jjNu4`TkSGUIQKiOlK*x90E~W71rM>dXZN;+EQC3kC0;t{5gS6&+M4 zMiypg=;fFfh2locwpr&lJxkZj|dLDtK~=kVjrD&UAHaKn3|A$tGdNrT0C zWd{n%&ccn}`%Z_Q-(@n>r=Pj8tc@p3f7aI)uo+?}q&ruyuDZ+}3SQgT%aA;<@gyxp z6O}IF=+a#!n}2l@a~MFA_rtRTc)b9ro$Rul5%T3LMO)A}SLto%?6kH{k&6v>(ZDN# zjjaf-ktk&hj3D%?JzXWOE9*1^CWg4CPR-mJJWVW9uk>83cZ}cWYJs+~l+i_LC*Msz znQ!SuS1o*!V>SFdAmibuGF(`PnQu1%iSE$Wg5>zM$`avKZ75ly_ww9fh75A^YAMF$ zl1745HU8J5{`WKZe|?%iGZG;QO%$3J69Y}Jm1LoNWk2x-3`V0&MWuboLd{A%F0Ne% z)|w!c`n)Z^=aRs-Q^u_O>K_YT41Dq8hHNu|V0!7n@-2OvejEu-hBt(y+3->q`JwPxkyYVFF~Utj4n zenQY3>rFp@F}d-|%4!@BLh7BP9P z^4=vLdDrRATv`U;Gz< zK8@bdF!oe@^7jt2KZV|Zk5>N{vB$0hBHBAm{Er2bzj5Wi{*xc+pqMB#VJ`kp&Vk=9 z<`p{#5%ZrKPdiyOOI=y^~FQfUt&olmye|XytXV8x+t0^1vyC3|&J<9*S6#wr*|6%+5#RC7^ zPW=DtgLcxWtg90k7Ivr+8(TjsvlYt^sqPr!7~l8K=FeNm@5aTExP5J}wf_)a0Nm+J zQ4^)jF|<;TUV89jdPse%2mHLQAK;`C6uGk`zNeDUiJ<+N4o0@($9L=-V%u?CPj4|JTQA)E0&S#*TJb9b~? z-1@MSEFi4Lcg(vIu=5g6fMD}aue;y3BjBxuzH9!ynin>;OTDH;T|bZ1*HOI`KBXDP zv9*9l9*+E&Kh6C?g3;LiwLLCpt=UJ~&-5M}=wWi*+TpLSgvn%wL6?W2-x75 zZ~vjm`Scx@L*AMXM2`#n`ZtwlcRxr`PcPWm$Q|e)CXv) z`}fo%gXzu?@EDapb6jEEg}0T()cPXUE6Qh$C2vhFBh; z3Wv_@aCRnOucv)e|MSA1z5`@5nny%A1bz*tmBFko_M5S!?i|ic7GB@9lwsd|c-GS6 zD?46mi~v67Zur>%n&jAVj^8iD2`}L|`NIhAM8KZBxpZ@zpZvATApw99eYB%JLFqz% zFJma~i8-i1f4dF_36y&U-gA!m^UhR$cW6%Ih*iU#E%-ElK1|fnL^t~>N)Vcn2F8%v z)->uGl#sLlRt-r#Ck}hUIrTdyEj6t2u6XRks1FTr@8Zd7z_v#eE4BM){pcD6s@HI& zrqH>|QrI;2fnOjyrmlI#HIdh5=ym`rXLm>fW@!ELKZ$BATa|(r?}*<3d>h%p-jkMd ziNm*(221Rn?)u*NPBtG9wx8yeLiCEV^f}hnWc&<;z9Oi;FkmxIXy?~wjphpIL4q^rGzaSbpT`Z>cJQFlU7z7zg+iG z4v+3K5VEP)O>QZN2W=)kSKZcjxl$HF+^GF#%oaDOA;uwr0?+uA zIzf0I^x|&{61Gm~+sfMsyA-4Xw-U-D>K}~#>Q*(5?Vy1jc^!gXcA0xe7G_Pm|)++kyFrO;wV zFZjd?mW@w#jF+ZIWE&`g1%{wxKJf>0UCh_E@uZs~?Usv^hI(G&{S}XS`}p)srVHqN z@|N{#<`jb3yn%beTXUjn+q5*eq;)3lM#j@LErpge<7Ar>(I>}CqtL2vyJHJyj4_cDy5)~*~@r^!eGG^(I+#uv{rToccN6t^mv4$ID5eAn+g zb?+mOV^s(Lz61%YXGJi=Xrli=;XzKH*_E~&e~5Gnfc_&omAhosqAunH1V!E0CmhEi z|8y~}H+vJBtQJ*3w5f%##QE?>`M2M$9CjmafJ%FNgMj?Qb=pOVyXx2 zc-rkxDzVF5?2U=SabEE;jE#SbC2)Nw`jAFvm(AV~lD^>Z@R+2R6L{de8 z^}J*2DUI&&gv}+fPnHrXEfHGQ#MXoXP&zXx_Ez`bvlx-SW*0kSAa2$8)AbeLdHe1a zXLiLW^%u8jhuRf#Oc~F(f6xQ$GMCsa>+YZXzJ4FQYSU@G+mG^C5nYX#*7lden95PR2Z-LQ*EPQ7&y3 zf*Y}ojeLtURJOj-z4ELZnw87n_fnt?hNryW_=;N>wJAC?w#!QJnyHK638jvVfW|1S zVRoW-?Mqn8$Ja_)9Y1oFruwZCJEb*mPWKgnGu(EiTY>_=svD?8#z7zg0=S!kIxdj2ljXUNn(rLbj~DC*#CaVl zRtqr6#idJMX&-1CHjB4YZ9yx8MXS*uam5U9Q<^f%pLy+;Uh%6Ze#T=MeJ%Xf>#sR} zBr3p4Asgl&$=nidWpZUpZ&s1Zezv`^kF1*a`mSojN<3y#%~iTP3TM_u-eXd;3<|Bm z0vZBP}DeaK({*CAjXDWQ*=N;|^ zH^e_8V$X+xer=9@iPdMHDOa(4QHyTnRakzDINeQqtBGRMd$|a$D_ON_NgQX}9#?MB z1hu7>uM29IzUO(0=C}t+aA8HT!JNfbvF2(~S6gAY;9``BZk1%P&qh=F=h^-D;z9^f z8xGZdvhm6;=H%HDxaKpr(1T-9f*!6pmDQ^DU;AGqYDm-QG7wuO=Hvn>LU`OM6@5Lo<-OjjH>J=&#dC7#7r{nU4{|@>EJSYl-EK>E&;6`9 z*NZv32(#F6o) z_AS>ZAP=ye6wRlve?Zw!nB|AcZoIe?ac;I8l+Jq4+5#$@bUBrT%1kQ>T3jXhQ>Aj7 z1A3zGgge)?%{H&vm}fX)Vp+1lU7A>W85LtSWhyjt zpBzqUIeF;NC($jY{(%;N>zy)0FUr6Qughxlilwu!XoxK5cVnPCXP-e|9#Hh?*+%4X8DC74=3}jG%;%bnjDZwI`&lUc~#B#t!sw-UeQoW*dVXl zPCJq*=#foqjL`;S!tRt7L;KANZYe=%>o((3?*_fcY;wLs5UZBho0qgx76+t@gf=!d zGEB(6F_n4g4-_p14$$2ziWRjuI;CL#@HN3mDlOxQeJ#N>Id231ts_LNCqiT2YWW+^ z+0vEAf}63Y>GXk=mN;0z$X*J1OmcA}BXSF}*_(QEx$`Uz+*Qw!&0BxcjhL`?oqn(B z)YoIATbZfoRFT;PA(&1;E@&kVIS>Er;X5ug$ptDXA2A6Zfh6<_Ji&k+qnG6Erc0F4 zO)@4wqcP2%&uDN-I=S`}18sGR*DW!b6K$wA6WsUfn*pDU2mirhZr|mw)#YI*+&T~P z_xt58Ng=To)X8H`9KO-UJ%wfEoL@fpuLv{kT7@e!wp8Va^xL$h%mA z7c^m@!m_%Re;;$UOH1(TRUP?wQcucOX%#3r(@dytTZN4J7sdqgYEkx~_3^%Wx3??v zpmLI7iViXH&IzVu>fGN6AqiD<`%=jFg?H^mb%26i8pW|<;)MfWUR?(1MFz7Br#+ou zCn*d$cvc?$!31v3G(kI3H`aRr%+k;qGpL!!w`w!+2gRPR6{7sz8%`};q<%6_FlsR$ zXjgKiVOhoKhxEY7R@0Addlt1-iF9edb#y!-{lisSEU>aL1Q2$dmv>A@fe-TJ3kjE< zG#M(TTVCd&i*|q&dS{i8r3a0(0m21<=24kZ^vnr`f6{y*#yJ-}tqf|PKt$bJ@< zT(j%ftGlPOi-Dek!nM{=cNfTStE#FNY42@T7cxf=PX=iOrt{)6+X6i&l8-NTb7aFJ zC&B5E4r7MMc~RmM8jYG}5{5em9o;&$2%!aLQZk&cwn{o6!J2^#sje&Of)4RTQj;j@ zM?(Y`byo_4+Ml$SFO9^@(Nh)n$+Z7Xr?DL39m{&G9ZJq8<)!a>F#f{UGfDl|Goe1` z*tTI^nMzu?B~a+lVI)bq+76_K<_F#hXr&a(xfblH(~55&@?gC>lK&wf9E}*78$`=Q zrg|-HC~FnirZ+NlyA?HGd5pdzxU{pJM|M)H=c>9DmN{96)_W#+z|-`Q#jjyAWQy|q&@v;OQ10ytF(<8Du>L<&7L@a)3*W+@4Z(N?uF$1pv`ZuC0Vw@65MUcM-la z=ky*3e?ZK=;btOMGFiWbF+r7t{92W=52d!lqncwRDS=cS?7&Wnwq#F{p_G?SX8dUy zJ;bpH2{K4V`RMVptcr1BHl1HOh^7aEq6wpO#L9otuXTuHJK@8DCkOsjP&)rsxqW_o z)r@Y+)wg+$$E9i!2qmB$X9Eg->evptJ#P@RF)VTjYPfRz?az3l>6^6fqBPjYP4|5|GN1e|O5` zFElJg$Il!=3V{C)lchfsc3bpQmcAfpVEd!pP^3eW! z^Rf<#F@GLMbmWur?T25bcDHtQj3k678uu0i=!lr+-!AU(VD2+-e18WtKgoG5&645w zjadHMhIQHtnEi5p6MGTP-?zSB-~KZCEvpqK)2?HzW)(I~J?z#NBav$2JHLBSiG-mR zA_x#H&Fy$HKxP=mYzHF=`RZ%vbbYiaD$$Pi7B7VuRscP8cS9u|w;HLYfY5H$@<*{- zTxMI25%Y1CZQzcbz!>W(c^F#Ko$?n<01DV3BauhsEixOn4m|W#bwO znWLSmiNPfqehY^$#ESyPGy}8<@n-31)QW;W9iYVO{@I|tl~xh&p(hG#x-v}grM(xC z8*2bUJ(F@60-C%OQdIz}iJ6ejMf6Mh%wRc?%}mwhnqiB)a)w-?_knmhk}T)_^Huq( z=QpBd)ZuT!yIKPid&?s>FUtH(YkjfDhA=NF$LHBOGqB$xGj`;=RU0#UCXwX&uJvxD zV5DxUp0IKG)0;k!smy23wiWtJ-;}p+aICPIe@CdIKEd&2Ej_dCO?w<2D9`A--iqyY z4K)RW)+Sp_9{~}MVk@m|e6`##>6WW5f)XueGcKUnJ=tRT`IJG1`5leKtJeV4?wO{? z1G?_6Hs;!cBUJu+C2hl1h>E#|_)#AY^p%g^w~JORf2Ns;RXU)qIKPvE4ckYb!yr^; zS-AfqviJ?&1Fj^n<N}QNPf#DoPiv9T8q6`Z zY|H&l1bULRYwMl>DR$ft_~J}i^Jp`kT}TSO>PnS%TXP?Tu79_+?fY2Xi{8ZXc)QVW zei$*RL&J#~W<+TiT@&}=?Md-(M5)K*dSF9A>U9nkV}g8Ccf3~1N#ih?791a8R|Qbb zbRAzgboxQEkuin1gvMsH1$uu%zeJ8x;KD=D^mmZy&D^KN)(O&6rHWySB(^I%FluAN z^a{4m7*T?5D`U&|UAZZsmGG20UNYCoDw^hzuL{HUW)JRzc#VCH|FS#Bs3a?b$ZiX5 z=i9GPsDHBar%qooYhzT=*So|lv|=4pp7Y~z(rmzKq8!@D>-_8mui=VjpU*uUT3Z0h zM8IOT#RsEhNE_+d18$pgG;SZ1bk2s+cCKxs=g%uHD{XGP1-!*ox@`cK(&*I~^mRlo1c%tQ8 zZF{ox&vp8!Ul}M6HY{p<0Yl@|?>YWVqs~^pps7cicY#L2BvA<8W$l}?QrR{U{3g|L zR~=>xc_SkG5+mkMh^+~6dzO#s*sde0_i#Vuoz`iTicD--D#ny0_huV-@&J07G4Qp3 zMKR9lGt1;bw;i1v0_#~c&9osMFCM8y)<_W^F?ATfI86$3%zi1hPrqU0#Wsz;_?MOB zi-%m?LXW|CGR#{y*B+SPvn9CPjh4&Y(RsY9(b(*LwTDPtYOXgJBl14lwA@=3>z(}$ z?jqnm-FczK1v2!=VCCrqU;&EuRcqYrdc!H$x1nFr9Mw}<`baMTDim!y_U=f)D3m5)S5-VkwQ%dIshLFlwPuHHY+)2Ti7g;u-=t|r_ zL}EGwO}4xjxA=+lHz;6QZA8_Q+ z>~HQruGew)rai8}?u<-i@=S@*9;3hI5`K2}*-Y0aPyofw3#rcw7&Mn>h0F?O9l8z|F|6_=0Y zeDrMmFm^^hR>30UpsavelseW6D?sz649QA5_BXz)F_!n0^!~;l!kr1aUo(Lycc#H= z;G2|(VjQl;+Xus92SF-;l_TOA)Eg8D~v(26Xi4)K8|7!p4tbig`EU z*o5!JzCRgx*29(ug4LDn#3xsOH{_VGKv4RwsYR_#<}94-xuc1KTyHD%s2vs}$#IgA zCum8ycHm?*2up#lzTJFYZQ@^*{bPyuxB~*+6IVjbSsiDO3C!$CH&zSgmdwi}1oMJ< zJZz;>{Y0QhZ)g)O)I6p1>71tItWn9+^c(YI;tVg^wL`S+?|zmyz`&4cndUg@P#}Ic zX9!btnnd+xMHuCY9C6IA>1jMqAvXpQvvWh{(OqBem=VQ=CU+`M`r4ImKNH7s!*r8c z0mdl>eP!p_cV5qL9~F^6Ai^JqR}kpoq3cesL))^^=)*XwYs-u?i2Rf5hS*Zq1m;2y z`@vFQK6Q)LsMbI+>%Vx%x9tdL9a`N~m0O^F1O@otjs(B+mkx2c=~W}`k{zRpLKY9Z zd&1w9<;)4dREkqvXO==1h;4kn`M6RRM9Ye64mtDw`Za-Plf**2E@;@TQV>FT9(?n? z@dF>S^Od9OK)9tQ4(ey>h`SZcHLz`DH*uy0>;Jy(^KZQoAuZ|aPBHf>x*){k`k7Y>9gY&+R~j&uRra3)7s?bn;MHK?Ajx+c3I#f z0;=p9+0b=Q2oa(eGeqyntFp?_86i~!{BXff5^`874z8IizvsMWOvHfUVC4S%x|~u< zZVqg+B%VPTOhxu)ZBf4yX%uH%+<6EUGa9Psq>OAyl&#ilqR=W#R(%@I`q1cC zfVSms%JcGmOJ3Oo+Z9fs_r*;)vdvhWz1`rF1vL7g8avnW>ka+&z!a^RtP;3y2cJ+> zx@vKb2@;_|Y>gC3^-WMzQ#&Ty{)J_{V2Rq}`6ZnpeefH5<&GV9lt;Y#Yz~HwVJYlF zrcwRA@&zFBE4q?0`n9!gtTDAKOca@)q=r#=whCRNo&Op2{Rjly-SRz)KiH@bnvDD` z@n7{}78_s@pYKj)Wj|fv)&7(f$$7-B_N9{gwjT;2rX|+Gd)RriAU>;obsw+!yL6|k zfTo$dbn+n1L7MYoARAA{{CJ(+H|-k4OYIeMD$2KWFQ4}#J`{4J#Hi;LlR-sqH7>8K zn^yR)Uw!)Xc52@AggYE{#pa!q{ZQIf%~va3+xfQ2;T^no1B=sc7;p&8S#!|*QiDH(fNbXdWV8L&UYMm zGaC>1z6QPHl9(1$#pzD$*66ddHFx_0)8{~KK*2WF19trKL+j}3%?~ouR)yYcEQP*f zm$;uU4LMZdwNo_njYs_@`S%%reY73ZwiqLpxot*Px@q6}-F~0@GpGHk+HCL}Ck4aD zA6w8wKPG*bFC^EC>t1d*uo69m`=%ssT@ym(z)vi0{?txT^y(enJ3KWsUrLlF8(biQ z^W`Ei6`;)P=b7i~k~LJ9Gd@$U5a{qrq*Rht9lx7y(d&2ya87D!#l z?rEGIQq>6lfvypk<7?fpmd$)x|47n#!{Gya)MeB1sy%hV)2wYusR%C@1bLFa*3&K; zdCBY+K-4Wuad*3RLMX(I(?PgLdWUZR*m2E@(Z|4S&c@jjsCxB;yRx0fX`X2Arybtz zq&J{>&Vi60%K%Yk<^>DKtYY(JN4#fY#s+}V^!YlzK}JCeGKn_aNjJfjRp7rq_U~Dq z&2O7!n&&^+Ap0&f2yls;ziLG(ITqL9LcumoSfsUy^WDoF@!mF`gL&g={BA~Z@Y_5` z*{c3uwkm%E`o|c;zdX!;iC9n0I88KKkQGWF~!th3Swd&4&QRB z!e#n_+mL9!)gV#7!pKJ|GLrSUpbK6$M;cUD_t%G4V+U)4kE>VqD;RCZo(*6f zJOdKB9@)^Zp#T{^HE-h`4F`nxoHi*ncii5TY*0Asj@t%Jvm97FDfQteiFnd)P~)Rh z5tDvz9v3NR;b~lYgrARyv{DJN9gR9;@NESSPRpM3p|~NB^EsPA=7jR~Rl;7V(kU7k ztR~;{TIdF|QysA(90wR$aZvvmR4j5J4^Y@M)lt4QzNcW55+M)Ivlfq)b2mJW6g4$* zon1>2)XT}>V#gIl(yK!y_@+Dx@iPOt@KpTO1q_v3%5pxow^UaxW?Ny2fD&zp=9$rw zZ#(=sa@eb)7_{NWS?Pe5T(^E&o!`#Ax)XkTb&Ic^Q`{WusfgykLC%<@%0^l2I+9d5 zArxJJUwKwP6pWIiA~J;{9l4l^2)v)ZAl17MZ4e%Pc1S`4IH5C!yDI&5T0rI)-)P_c zA6LIjM^J~C6thcOkDIuEUl|!Rm2;U2^IV#>@o$}6$wZfTKHI)Cp7E41ML=#A@{tTd zmsPS@8^8K`t31`ZE`(>kaVyuF^jTQ5o{{1w`;FB3=AX+qBg}eHc~Uizp%Bpnq}%#=s;mI%bEMlb3S_OH{SH5 z9ORZN@H?oT(7#Li&2do?BoYa1I9m27sejEV;DLPRWc6 z+waKZzXub90NW7L6hRm7BADiditQ-2g21WnQM$DdG!`Bw3yun#Jxhum>9m41yp(z%pgTQCP!X3f*+cx2wD@YzgOLKTl);e7@WI|2hsBPukHj~ ze77$YO(?5PjSuruk4wK|JJ6slfOQi)L*{IXy5&AZ-9@S{)`*iH+@H+vf&*^t7+KJQ zBYw@gt2Tt&5w+r1NxmG`D4qRAX8Y8e6+?MH?C}JzC3(-ua>vD|h4Z#vhXJyk5WjY zx&%SwDR?c0^mpPg<;=uz~DBSj;bm%K{P?w7+rg&XO(PVzY&e#CWw z0|`={YGQmt5|Qz&GK3$Ghl|~&J8OLBsGtHa=dtibP%mq$5LHqUd{W{Ta$_YGD4{;y zX)S*HE!Kn3ool9wUF=jV#jT9siwV9n14kX(iWkb|-G*emctRna-M-5mS>IIJC%Nyi z$r5H&{*xf|7k=v1MW7b{%%b>*ZFb{Q*mu#?y#Bd5-ei{yLV$@J8e6yNR@F|;G|!Q1 z#rcJ{M>a*fASk!)hAR}}6jJUwZsD-L^f9~Vr*_8be29p zpX*H5fHjYOMurJY2*Ciy z!cfpViD4R_aYED;2IQKdU&d+BA80wGf zt1dk9TwjE_m#kOD3gtXU;*T|(qzBtAP5lhNl5J9crvbfe2UbE{SFL4TD!0HvakvLy zok-w*M4#ZKH0pq^GqZaV-PMQ0*qz+Roy~^C|`{JwH3XgeKL74 zF*1fRAkFfD30p359qfVNPPCEtvhyw)^_1IvC(a?qv3qi#E1x}5|AD_aZ<&b580UjS z+{1^;9r35WRhAR7KU72lpIe&7g{kNIf;VOCl!!j2AXd+MWdc36>s0%9U!ev-*v!(Z z*_BQ`=A)I1$I(7rrX{v|f2-<|lII%+ZO7Sn<@lCud$VF*vh(G9{CFBS>F!mo%fKgB zh<0t+&jcFq+I0SSiPG3NP{4=wF;guwKF{%2{PUfMfZjghJ1^r35{uJftRFVhP*SmP zT*4DD6-X|`+~qv-FWus=uT{Q?;e%)3VTx;Uq$tv7o;tlW-GDY1P6SDx6je zW&Pm=c<;MVTE$c>%g5MCnoR1zAUH

Uc>p6J_DIXv8*LgcigmbHt)85wB_UyesAG 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 Date: Mon, 24 Jun 2024 09:14:56 +0200 Subject: [PATCH 21/27] fix(IAST): Fixed path errors --- src/content/docs/iast/troubleshooting.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/content/docs/iast/troubleshooting.mdx b/src/content/docs/iast/troubleshooting.mdx index b63b0c25dbc..2bfffc9c712 100644 --- a/src/content/docs/iast/troubleshooting.mdx +++ b/src/content/docs/iast/troubleshooting.mdx @@ -78,8 +78,8 @@ If you don't find your problem listed here, you can always reach out to [New Rel When the security agent is working correctly: -All capabilities > IAST > Tests - - You see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. The application is started and there is traffic generated. + + - You see your application in **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. The application is started and there is traffic generated. - In the `nr-security-home/logs` directory, search for the `LANGUAGE-security-collector-init.log` file. Replace `LANGUAGE` in the filename with the one you are using. Search for these steps to see where the problem is: - [STEP-1]: The security agent is starting. - [STEP-2]: The security agent generates a unique identifier. For web socket connection, you'll see Node auth headers. @@ -107,8 +107,8 @@ All capabilities > IAST > Tests > You can check if IAST is working, even if you're seeing your application in the IAST UI and the security agent started successfully. Follow these steps for checking it: -All capabilities > IAST > Tests - 1. Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. + + 1. Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. 2. Search for your application in the **Application tests** tab and click on it. @@ -187,8 +187,8 @@ All capabilities > IAST > Tests > Update the status of your vulnerability if you think IAST has reported a false positive. Follow these steps: -All capabilities > IAST > Tests - - Search your application: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests & Applications**. + + - Search your application: Go to **[one.newrelic.com](https://one.newrelic.com) > All capabilities > IAST > Tests**. - Click on the all applications tab and select the vulnerability that is not an actual vulnerability. @@ -230,7 +230,7 @@ All capabilities > IAST > Tests ``` - You can skip this step if you're on a linux environment. + You can skip this step if you're on a Linux environment. - For a specific case of **Outbound HTTP Request** or calls to external services, you need to [update your application method](/docs/apm/agents/go-agent/instrumentation/instrument-go-segments/#go-external-segments). From 76da69418198106c64b60bd2d03792e32c3ac390 Mon Sep 17 00:00:00 2001 From: Sammie downing Date: Mon, 24 Jun 2024 07:49:27 -0700 Subject: [PATCH 22/27] fix(alerts): added redirect --- .../create-alert-condition/create-nrql-alert-conditions.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/content/docs/alerts/create-alert/create-alert-condition/create-nrql-alert-conditions.mdx b/src/content/docs/alerts/create-alert/create-alert-condition/create-nrql-alert-conditions.mdx index 11830e0c365..c9365780eb7 100644 --- a/src/content/docs/alerts/create-alert/create-alert-condition/create-nrql-alert-conditions.mdx +++ b/src/content/docs/alerts/create-alert/create-alert-condition/create-nrql-alert-conditions.mdx @@ -14,6 +14,7 @@ redirects: - /docs/alerts/new-relic-alerts/configuring-alert-policies/create-alert-conditions-nrql-queries - /docs/alerts/new-relic-alerts/defining-conditions/create-alert-conditions-nrql-queries - /docs/alerts-applied-intelligence/new-relic-alerts/alert-conditions/create-nrql-alert-conditions + - /docs/alerts-applied-intelligence/new-relic-alerts/alert-conditions/queries-nrql_screenshot-full_nrql-alert-conditions/ freshnessValidatedDate: never --- From 98a1b172a7b9319a81362d91c7bbd12f007cdc2f Mon Sep 17 00:00:00 2001 From: Shawn Kilburn Date: Mon, 24 Jun 2024 09:42:06 -0700 Subject: [PATCH 23/27] fix(node.js agent): Added missing header ID (#17731) --- .../getting-started/compatibility-requirements-nodejs-agent.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx b/src/content/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx index 1437ebb4183..a2ba677e498 100644 --- a/src/content/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx +++ b/src/content/docs/apm/agents/nodejs-agent/getting-started/compatibility-requirements-nodejs-agent.mdx @@ -190,7 +190,7 @@ The following are proposed time ranges for EOL on older Node.js versions. The ac {/* begin: compat-table */} -## Instrumented modules +## Instrumented modules [#instrumented-modules] After installation, the agent automatically instruments with our catalog of supported Node.js libraries and frameworks. This gives you immediate access to From 7223bdd787711846b61e436f0377e2f64f00cea8 Mon Sep 17 00:00:00 2001 From: Shawn Kilburn Date: Mon, 24 Jun 2024 09:42:19 -0700 Subject: [PATCH 24/27] fix(Infra): Added missing header tag (#17730) --- .../get-started/requirements-infrastructure-agent.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx b/src/content/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx index af9ef69d903..fc3acb1144d 100644 --- a/src/content/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx +++ b/src/content/docs/infrastructure/install-infrastructure-agent/get-started/requirements-infrastructure-agent.mdx @@ -58,7 +58,7 @@ The infrastructure agent supports these processor architectures: * **ARM**: arm64 architecture including [AWS Graviton 2 processor](https://aws.amazon.com/ec2/graviton/) is supported on compatible Linux operating sytems. On-host integrations are also supported (with the exception of the Oracle integration). * **macOS**: both 64-bit x86 and Apple silicon. -## Operating systems +## Operating systems [#os] The infrastructure agent supports these operating systems up to their manufacturer's end-of-life. From b2426ef75e27ece63ab35e8b9c62c55537403444 Mon Sep 17 00:00:00 2001 From: alexa <81787716+akristen@users.noreply.github.com> Date: Mon, 24 Jun 2024 14:20:12 -0500 Subject: [PATCH 25/27] light copy changes and style guide edits --- .../whats-new/2024/06/whats-new-06-24-nvidianim.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md index c94cf45b1a8..157b75c1602 100644 --- a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md +++ b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md @@ -1,16 +1,17 @@ --- -title: 'New Relic AI Monitoring now integrates with NVIDIA NIM inference microservices' +title: 'New Relic AI monitoring now integrates with NVIDIA NIM inference microservices' summary: 'Troubleshoot and optimize your AI apps built with NVIDIA NIM using in-depth insights across the AI stack' releaseDate: '2024-06-24' learnMoreLink: 'https://newrelic.com/blog/nerdlog/nvidia-nim-ai-monitoring' getStartedLink: 'https://docs.newrelic.com/docs/ai-monitoring/intro-to-ai-monitoring/#get-started' --- -Building, deploying, and monitoring generative AI applications is a complex undertaking. This is where NVIDIA and New Relic join forces to provide a streamlined path for developing, deploying, and monitoring AI-powered enterprise applications in production. +Building, deploying, and monitoring generative AI applications is complex. This is where NVIDIA and New Relic can provide a streamlined path for developing, deploying, and monitoring AI-powered enterprise applications in production. -NVIDIA NIM is a set of inference microservices that provides pre-built, optimized LLM models that simplify the deployment across NVIDIA accelerated infrastructure in the data center and cloud. +NVIDIA NIM is a set of inference microservices that provides pre-built, optimized LLM models that simplify the deployment across NVIDIA accelerated infrastructure, both in the data center and cloud. + +New Relic AI monitoring now integrates with NVIDIA NIM to help engineers quickly troubleshoot and optimize the performance, quality, cost of AI applications, ultimately helping organizations adopt AI faster and achieve quicker ROI. -New Relic AI Monitoring now integrates with NVIDIA NIM to empower engineers to quickly troubleshoot and optimize the performance, quality, cost of AI applications, ultimately helping organizations adopt AI faster and achieve quicker ROI. ![NIM integration](./images/nim1.png "A screenshot that shows the NIM integration") * **Full AI stack visibility:** Spot issues faster with a holistic view across apps, NVIDIA GPU-based infrastructure and AI layer. From 04a943ad3f4baf113b09fcc98dcd485edc5081ec Mon Sep 17 00:00:00 2001 From: Sunny Zanchi Date: Mon, 24 Jun 2024 16:00:38 -0400 Subject: [PATCH 26/27] fix MDX issues --- .../synthetic-monitoring-best-practices-guide.mdx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx b/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx index bbbfa7d24d4..6876441333d 100644 --- a/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx +++ b/src/i18n/content/jp/docs/new-relic-solutions/best-practices-guides/full-stack-observability/synthetic-monitoring-best-practices-guide.mdx @@ -46,9 +46,9 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト このオプションは、SSL証明書チェーンの有効性を検証します。次の構文を実行することによって複製することができます。 - ```sh - openssl s_client -servername {YOUR_HOSTNAME} -connect {YOUR_HOSTNAME}:443 -CApath /etc/ssl/certs > /dev/null - ``` +```sh + openssl s_client -servername {YOUR_HOSTNAME} -connect {YOUR_HOSTNAME}:443 -CApath /etc/ssl/certs > /dev/null +``` * **Bypass HEAD request (for ping monitors).** @@ -182,7 +182,7 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト 6. これでスクリプトを記述する準備ができました。`newrelic.com`のパフォーマンスをテストし、特定の要素が読み込まれたかどうかを確認するには、このサンプルスクリプトを参照してください。 - ```js +```js /** * Script Name: Best Practices Example - Chrome 100+ * Author: New Relic @@ -227,7 +227,7 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト await $webDriver.takeScreenshot() console.log("Script completed successfully") - ``` +``` スクリプト化されたAPIモニターを使用すると、Node.jsと`got`モジュールで監視ワークフローを簡単に構築できます。たとえば、APIを使用して認証し、応答コードをアサートすることができます。 @@ -249,7 +249,7 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト 6. これでスクリプトを記述する準備ができました。APIリクエストを作成して応答を処理するこのサンプルスクリプトを参照してください。 - ```js +```js /** * Script Name: Best Practices Example - Node 16.10.0 * Author: New Relic @@ -302,6 +302,6 @@ Syntheticsモニタリングを使用すると、アプリを監視しテスト // If the assertion passes, the script will continue; otherwise, it will fail the monitor }) - ``` +``` \ No newline at end of file From 127b0780f76880eec8ad99ea701bc4a494fad74d Mon Sep 17 00:00:00 2001 From: alexa <81787716+akristen@users.noreply.github.com> Date: Mon, 24 Jun 2024 15:25:52 -0500 Subject: [PATCH 27/27] Update src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md --- src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md index 157b75c1602..14cf1001d5a 100644 --- a/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md +++ b/src/content/whats-new/2024/06/whats-new-06-24-nvidianim.md @@ -2,7 +2,7 @@ title: 'New Relic AI monitoring now integrates with NVIDIA NIM inference microservices' summary: 'Troubleshoot and optimize your AI apps built with NVIDIA NIM using in-depth insights across the AI stack' releaseDate: '2024-06-24' -learnMoreLink: 'https://newrelic.com/blog/nerdlog/nvidia-nim-ai-monitoring' +learnMoreLink: 'https://newrelic.com/blog/how-to-relic/ai-monitoring-for-nvidia-nim' getStartedLink: 'https://docs.newrelic.com/docs/ai-monitoring/intro-to-ai-monitoring/#get-started' ---