From de1bb2c7fa21cfd8fb7b966b3d77d4064bfcd7f6 Mon Sep 17 00:00:00 2001 From: Colleen McGinnis Date: Wed, 23 Oct 2024 08:10:20 -0500 Subject: [PATCH] [apm] Update APM docs to reflect changes related to the Elasticsearch apm-data plugin (#4333) * update getting started docs * update upgrade guide * fix build * audit mentions of the apm integration * audit mentions of data streams * audit mentions of index templates * audit mentions of index mappings * address feedback from @carsonip * update diagram * address more feedback from @carsonip * update ilm guide * address more feedback from @lahsivjar * address more feedback from @lahsivjar * add link * fix table formatting * address more feedback from @lahsivjar (cherry picked from commit 27fc737c18736cb1be114902687522cd051174c1) --- .../apm/configure/general.asciidoc | 2 +- .../apm/configure/outputs/console.asciidoc | 7 -- .../apm/configure/outputs/kafka.asciidoc | 5 -- .../apm/configure/outputs/logstash.asciidoc | 7 -- .../apm/configure/outputs/redis.asciidoc | 5 -- ...et-started-with-apm-server-binary.asciidoc | 63 ------------- ...get-started-with-fleet-apm-server.asciidoc | 2 +- .../apm/getting-started-apm/index.asciidoc | 5 +- docs/en/observability/apm/images/bin-ov.png | Bin 103628 -> 38766 bytes .../apm/manage-storage/data-streams.asciidoc | 2 +- .../apm/manage-storage/ilm-how-to.asciidoc | 83 +++++++++--------- .../manage-storage/ingest-pipelines.asciidoc | 2 +- .../apm/shared-kibana-endpoint.asciidoc | 18 ---- ...stall-apm-integration-no-internet.asciidoc | 32 +++++++ .../troubleshooting/common-problems.asciidoc | 75 +--------------- .../apm/upgrading-to-8.x.asciidoc | 23 +---- .../mobile-session-explorer.asciidoc | 2 +- 17 files changed, 83 insertions(+), 250 deletions(-) delete mode 100644 docs/en/observability/apm/shared-kibana-endpoint.asciidoc create mode 100644 docs/en/observability/apm/shared/install-apm-integration-no-internet.asciidoc diff --git a/docs/en/observability/apm/configure/general.asciidoc b/docs/en/observability/apm/configure/general.asciidoc index 16d889230a..66decd46fe 100644 --- a/docs/en/observability/apm/configure/general.asciidoc +++ b/docs/en/observability/apm/configure/general.asciidoc @@ -173,7 +173,7 @@ Defaults to `debug/vars`. === Data stream namespace Change the default namespace. -This setting changes the name of the integration's data stream. +This setting changes the name of the data stream. For {fleet}-managed users, the namespace is inherited from the selected {agent} policy. diff --git a/docs/en/observability/apm/configure/outputs/console.asciidoc b/docs/en/observability/apm/configure/outputs/console.asciidoc index 1fbafe9c0f..1b21d63ea1 100644 --- a/docs/en/observability/apm/configure/outputs/console.asciidoc +++ b/docs/en/observability/apm/configure/outputs/console.asciidoc @@ -26,13 +26,6 @@ output.console: pretty: true ------------------------------------------------------------------------------ -ifdef::apm-server[] -[float] -=== {kib} configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] -endif::[] - [float] === Configuration options diff --git a/docs/en/observability/apm/configure/outputs/kafka.asciidoc b/docs/en/observability/apm/configure/outputs/kafka.asciidoc index 317a220487..295c71e081 100644 --- a/docs/en/observability/apm/configure/outputs/kafka.asciidoc +++ b/docs/en/observability/apm/configure/outputs/kafka.asciidoc @@ -37,11 +37,6 @@ output.kafka: NOTE: Events bigger than <> will be dropped. To avoid this problem, make sure APM Server does not generate events bigger than <>. -[float] -=== {kib} configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] - [float] [[apm-kafka-compatibility]] === Compatibility diff --git a/docs/en/observability/apm/configure/outputs/logstash.asciidoc b/docs/en/observability/apm/configure/outputs/logstash.asciidoc index 66800273c0..11a65ccb8c 100644 --- a/docs/en/observability/apm/configure/outputs/logstash.asciidoc +++ b/docs/en/observability/apm/configure/outputs/logstash.asciidoc @@ -21,7 +21,6 @@ protocol, which runs over TCP. To send events to {ls}, you must: . <> -. <> . <> [float] @@ -43,12 +42,6 @@ output.logstash: <1> The `hosts` option specifies the {ls} server and the port (`5044`) where {ls} is configured to listen for incoming APM Server connections. -[float] -[[apm-ls-kib-config]] -=== {kib} endpoint configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] - [float] [[apm-ls-config-pipeline]] === {ls} configuration pipeline diff --git a/docs/en/observability/apm/configure/outputs/redis.asciidoc b/docs/en/observability/apm/configure/outputs/redis.asciidoc index 833415813e..058ef0ae21 100644 --- a/docs/en/observability/apm/configure/outputs/redis.asciidoc +++ b/docs/en/observability/apm/configure/outputs/redis.asciidoc @@ -30,11 +30,6 @@ output.redis: timeout: 5 ------------------------------------------------------------------------------ -[float] -=== {kib} configuration - -include::../../shared-kibana-endpoint.asciidoc[tag=shared-kibana-config] - [float] === Compatibility diff --git a/docs/en/observability/apm/getting-started-apm/get-started-with-apm-server-binary.asciidoc b/docs/en/observability/apm/getting-started-apm/get-started-with-apm-server-binary.asciidoc index 82b7b23a53..06b350b4a1 100644 --- a/docs/en/observability/apm/getting-started-apm/get-started-with-apm-server-binary.asciidoc +++ b/docs/en/observability/apm/getting-started-apm/get-started-with-apm-server-binary.asciidoc @@ -165,69 +165,6 @@ See <> for deploying Docker containers [[apm-server-configuration]] == Step 2: Set up and configure -// This content is reused in the upgrading guide -// tag::why-apm-integration[] -Starting in version 8.0.0, {fleet} uses the APM integration to set up and manage APM index templates, -{ilm-init} policies, and ingest pipelines. APM Server will only send data to {es} _after_ the APM integration has been installed. -// end::why-apm-integration[] - -[float] -=== Install the APM integration - -// This content is reused in the upgrading guide -// tag::install-apm-integration[] -[%collapsible%open] -.**If you have an internet connection** -==== -An internet connection is required to install the APM integration via the {fleet} UI in {kib}. - -// lint ignore elastic-agent -. Open {kib} and select **Add integrations** > **Elastic APM**. -. Click **APM integration**. -. Click **Add Elastic APM**. -. Click **Save and continue**. -. Click **Add Elastic Agent later**. You do not need to run an {agent} to complete the setup. -==== - -// tag::install-apm-integration-no-internet[] -[%collapsible] -.**If you don't have an internet connection** -==== -If your environment has network traffic restrictions, there are other ways to install the APM integration. -See {fleet-guide}/air-gapped.html[Air-gapped environments] for more information. - -Option 1: Update `kibana.yml`:: -+ -Update `kibana.yml` to include the following, then restart {kib}. -+ -[source,yaml] ----- -xpack.fleet.packages: -- name: apm - version: latest ----- -+ -See {kibana-ref}/settings.html[Configure Kibana] to learn more about how to edit the Kibana configuration file. - -Option 2: Use the {fleet} API:: -+ -Use the {fleet} API to install the APM integration. To be successful, this needs to be run against the {kib} -API, not the {es} API. -+ -["source","yaml",subs="attributes"] ----- -POST kbn:/api/fleet/epm/packages/apm/{apm_server_version} -{ "force": true } ----- -+ -See {kibana-ref}/api.html[Kibana API] to learn more about how to use the Kibana APIs. -==== -// end::install-apm-integration-no-internet[] -// end::install-apm-integration[] - -[float] -=== Configure APM - Configure APM by editing the `apm-server.yml` configuration file. The location of this file varies by platform--see the <> for help locating it. diff --git a/docs/en/observability/apm/getting-started-apm/get-started-with-fleet-apm-server.asciidoc b/docs/en/observability/apm/getting-started-apm/get-started-with-fleet-apm-server.asciidoc index f68f9a49e1..fa430fca08 100644 --- a/docs/en/observability/apm/getting-started-apm/get-started-with-fleet-apm-server.asciidoc +++ b/docs/en/observability/apm/getting-started-apm/get-started-with-fleet-apm-server.asciidoc @@ -32,7 +32,7 @@ include::{observability-docs-root}/docs/en/observability/tab-widgets/add-apm-int An internet connection is required to install the APM integration via the Fleet UI in Kibana. -- -include::{observability-docs-root}/docs/en/observability/apm/getting-started-apm/get-started-with-apm-server-binary.asciidoc[leveloffset=+2,tag=install-apm-integration-no-internet] +include::{observability-docs-root}/docs/en/observability/apm/shared/install-apm-integration-no-internet.asciidoc[] -- **** diff --git a/docs/en/observability/apm/getting-started-apm/index.asciidoc b/docs/en/observability/apm/getting-started-apm/index.asciidoc index 44dca348f9..a1fb35315f 100644 --- a/docs/en/observability/apm/getting-started-apm/index.asciidoc +++ b/docs/en/observability/apm/getting-started-apm/index.asciidoc @@ -12,9 +12,8 @@ The {es} Service is available on AWS, GCP, and Azure. *To get started in minutes, follow the steps in <>.* **** -// TODO: MOVE THIS -IMPORTANT: Starting in version 8.0.0, {fleet} uses the APM integration to set up and manage APM index templates, -{ilm-init} policies, and ingest pipelines. APM Server will only send data to {es} _after_ the APM integration has been installed. +IMPORTANT: Starting in version 8.15.0, the {es} apm-data plugin manages APM index templates, +lifecycle policies, and ingest pipelines. The APM Server receives performance data from your APM agents, validates and processes it, and then transforms the data into {es} documents. diff --git a/docs/en/observability/apm/images/bin-ov.png b/docs/en/observability/apm/images/bin-ov.png index 7702dd7d765e856af6235e0fc05e416d351690da..848294ab8234d1a23149387295a7297f4e86771d 100644 GIT binary patch literal 38766 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