From c828d243db2ecfa359027e25ecffac0fd1a73ad9 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Tue, 26 Sep 2023 13:56:50 +0200 Subject: [PATCH 01/24] [Profiling] Improve docs on how to manage storage With this commit we restructure the Universal Profiling documentation and add a new menu item about managing storage. It contains a new section that explains how to customize the ILM policy (usually to customize the retention period or to take advantage of data tiers) and moves the probabilistic profiling documentation also into this section. --- .../profiling-create-component-template.png | Bin 0 -> 85088 bytes docs/en/observability/index.asciidoc | 5 +- .../profiling-advanced-configuration.asciidoc | 4 +- ...filing-index-lifecycle-management.asciidoc | 136 ++++++++++++++++++ .../profiling-manage-storage.asciidoc | 6 + 5 files changed, 147 insertions(+), 4 deletions(-) create mode 100644 docs/en/observability/images/profiling-create-component-template.png create mode 100644 docs/en/observability/profiling-index-lifecycle-management.asciidoc create mode 100644 docs/en/observability/profiling-manage-storage.asciidoc diff --git a/docs/en/observability/images/profiling-create-component-template.png b/docs/en/observability/images/profiling-create-component-template.png new file mode 100644 index 0000000000000000000000000000000000000000..9f4bd9709cd5376f9fafd6c27605b032a3a3cfa9 GIT binary patch literal 85088 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 y@XxFMo$K)bpZ&L9Jzd&8@i>: Tag data collected by the host-agent into multiple logical groups so they can be queried in Kibana. * <>: Push symbols to your cluster so you can see function names and line numbers in traces of applications written in programming languages that compile to native code (C, C++, Rust, Go, etc.). * <>: Set up an HTTP proxy if your infrastructure host-agent installation needs one to reach {ecloud}. -* <>: Configure the Universal Profiling agent to run in probabilistic profiling mode. - -* <>: Configure the Universal Profiling agent to bypass the kernel version compatibility check. +* <>: Configure the Universal Profiling agent to bypass the kernel version compatibility check. diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc new file mode 100644 index 0000000000..17d08e0356 --- /dev/null +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -0,0 +1,136 @@ +[[profiling-index-lifecycle-management]] += Index lifecycle management + +Index lifecycle policies allow you to automate the lifecycle of your profiling indices as they grow and age. A default policy is applied, but can be customized depending on your business needs. + +See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn more. + +[discrete] +[[profiling-ilm-default-policy]] +== Default policy + +Below we describe the default index lifecycle policy applied in Universal Profiling. Each policy includes a rollover and delete definition: + +* **Rollover**: Using rollover indices prevents a single index from growing too large and optimizes indexing and search performance. Rollover, i.e. writing to a new index, occurs after either an age or size metric is met. +* **Delete**: The delete phase permanently removes the index after a time threshold is met. + +[cols="1,1,1",options="header"] +|=== +|Rollover after +|Warm tier after +|Delete after + +| 30 days / 50 GB +| 30 days +| 60 days + +|=== + +NOTE: The {ref}/ilm-rollover.html#_rollover_condition_blocks_phase_transition[rollover condition blocks phase transitions] which means that indices are kept 30 days *after* rollover on the hot tier. + +The Universal Profiling index lifecycle policy can be viewed in {kib}. Navigate to *{stack-manage-app}* / *Index Lifecycle Management*, and search for `profiling`. + +TIP: Default {ilm-init} policies can change between minor versions. This is not considered a breaking change as index management should continually improve and adapt to new features. + +[discrete] +[[profiling-ilm-custom-policy]] +== Configure a custom index lifecycle policy + +[discrete] +[[profiling-ilm-custom-policy-create-policy]] +=== Step 1: Create an index lifecycle policy + +. Navigate to **{stack-manage-app}** > **Index Lifecycle Policies**. +. Click **Create policy**. + +Name your new policy, for example `custom-profiling-policy`. Customize the policy to your liking, and when you're done, click **Save policy**. + +[discrete] +[[profiling-ilm-custom-policy-apply-policy]] +=== Step 2: Apply the index lifecycle policy + +To apply your new index lifecycle policy for Universal Profiling, create a new component template named `profiling-ilm@custom`. + +NOTE: The custom {ilm-init} policy will only be applied if the component template is named `profiling-ilm@custom`. Other names are not supported. + + +. Click on the **Component Template** tab and click **Create component template**. +. Pick `profiling-ilm@custom` as the name and click **Next**. +. In **Index settings**, set the {ilm-init} policy name created in the previous step: ++ +[source,json] +---- +{ + "lifecycle": { + "name": "custom-profiling-policy" + } +} +---- +. Click **Next** until the **Review** step and ensure your request looks similar to the image below. +If it does, click **Create component template**. ++ +[role="screenshot"] +image::images/profiling-create-component-template.png[Create component template] + +[discrete] +[[profiling-ilm-custom-policy-rollover]] +=== Step 3: Rollover indices + +To confirm that Universal Profiling is now using the new index template and {ilm-init} policy, navigate to **{dev-tools-app}** and run the following: + +[source,bash] +---- +GET _ilm/policy/custom-profiling-policy <1> +---- +<1> The name of the custom {ilm-init} policy chosen in step 1 above. + +The result should include the following: + +[source,json] +---- +{ + "in_use_by": { + "indices": [ + ... + ], + "data_streams": [ + ... + "profiling-events-all", + ... + ], + "composable_templates": [ + "profiling-stackframes", + "profiling-symbols-global", + "profiling-metrics", + "profiling-stacktraces", + "profiling-executables", + "profiling-hosts", + "profiling-events" + ] + } +} +---- + +New {ilm-init} policies only take effect when new indices are created, so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: + +[source,bash] +---- +POST /profiling-events-5pow01/_rollover/ +POST /profiling-events-5pow02/_rollover/ +POST /profiling-events-5pow03/_rollover/ +POST /profiling-events-5pow04/_rollover/ +POST /profiling-events-5pow05/_rollover/ +POST /profiling-events-5pow06/_rollover/ +POST /profiling-events-5pow07/_rollover/ +POST /profiling-events-5pow08/_rollover/ +POST /profiling-events-5pow09/_rollover/ +POST /profiling-events-5pow10/_rollover/ +POST /profiling-events-5pow11/_rollover/ +POST /profiling-events-all/_rollover/ +POST /profiling-executables/_rollover/ +POST /profiling-hosts/_rollover/ +POST /profiling-metrics/_rollover/ +POST /profiling-stackframes/_rollover/ +POST /profiling-stacktraces/_rollover/ +POST /profiling-symbols-global/_rollover/ +---- diff --git a/docs/en/observability/profiling-manage-storage.asciidoc b/docs/en/observability/profiling-manage-storage.asciidoc new file mode 100644 index 0000000000..843c388ef5 --- /dev/null +++ b/docs/en/observability/profiling-manage-storage.asciidoc @@ -0,0 +1,6 @@ +[[profiling-manage-storage]] += Manage Storage + +Universal Profiling uses lifecycle management to automatically age data. It ships with a default index lifecycle policy but it is possible to customize the index lifecycle to your requirements. With <> it is possible to configure the Universal Profiling agent to run in probabilistic profiling mode and reduce storage even further. + + From d569df823407085ac93eedde024933487af08864 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Tue, 26 Sep 2023 15:04:46 +0200 Subject: [PATCH 02/24] Minor tweaks --- .../profiling-index-lifecycle-management.asciidoc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 17d08e0356..0dc4374c1c 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -9,9 +9,9 @@ See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn m [[profiling-ilm-default-policy]] == Default policy -Below we describe the default index lifecycle policy applied in Universal Profiling. Each policy includes a rollover and delete definition: +Below we describe the default index lifecycle policy applied in Universal Profiling. The default policy includes a rollover and delete definition: -* **Rollover**: Using rollover indices prevents a single index from growing too large and optimizes indexing and search performance. Rollover, i.e. writing to a new index, occurs after either an age or size metric is met. +* **Rollover**: Using rollover prevents a single index from growing too large and optimizes indexing and search performance. Rollover, i.e. writing to a new index, occurs after either an age or size metric is met. * **Delete**: The delete phase permanently removes the index after a time threshold is met. [cols="1,1,1",options="header"] @@ -84,7 +84,7 @@ GET _ilm/policy/custom-profiling-policy <1> ---- <1> The name of the custom {ilm-init} policy chosen in step 1 above. -The result should include the following: +If the custom policy is already applied, the result should include the following: [source,json] ---- @@ -111,7 +111,7 @@ The result should include the following: } ---- -New {ilm-init} policies only take effect when new indices are created, so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: +If the result is empty, then the custom {ilm-init} policy is not yet in use. New {ilm-init} policies only take effect when new indices are created, so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: [source,bash] ---- @@ -134,3 +134,5 @@ POST /profiling-stackframes/_rollover/ POST /profiling-stacktraces/_rollover/ POST /profiling-symbols-global/_rollover/ ---- + +After the rollover, the custom {ilm-init} policy will be applied to new indices and data streams. From 927421cab86aa320f7b8cfe77b687222eb6296d9 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:52:00 +0200 Subject: [PATCH 03/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 0dc4374c1c..3a1881a68f 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -9,7 +9,8 @@ See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn m [[profiling-ilm-default-policy]] == Default policy -Below we describe the default index lifecycle policy applied in Universal Profiling. The default policy includes a rollover and delete definition: +The default Universal Profiling index lifecycle policy includes the following rollover and delete definitions: + * **Rollover**: Using rollover prevents a single index from growing too large and optimizes indexing and search performance. Rollover, i.e. writing to a new index, occurs after either an age or size metric is met. * **Delete**: The delete phase permanently removes the index after a time threshold is met. From 9d4b47433236f42efdd3a4936298e2cb18b60d10 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:52:17 +0200 Subject: [PATCH 04/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 3a1881a68f..f54ebf080b 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -1,5 +1,10 @@ [[profiling-index-lifecycle-management]] -= Index lifecycle management += Universal Profiling index life cycle management + +++++ +Index lifecycle management +++++ + Index lifecycle policies allow you to automate the lifecycle of your profiling indices as they grow and age. A default policy is applied, but can be customized depending on your business needs. From 48adda0008cd9f66f6dcf2664ec17a8fb2b47200 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:52:37 +0200 Subject: [PATCH 05/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index f54ebf080b..c1ba726ac0 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -6,7 +6,8 @@ ++++ -Index lifecycle policies allow you to automate the lifecycle of your profiling indices as they grow and age. A default policy is applied, but can be customized depending on your business needs. +Index lifecycle policies allow you to automate the lifecycle of your profiling indices as they grow and age. A default policy is applied, but you can customize it based on your business needs. + See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn more. From aa4785501bde4415c07702e5fb29805de5bb3c1b Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:52:51 +0200 Subject: [PATCH 06/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index c1ba726ac0..3388ffbf1b 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -18,7 +18,8 @@ See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn m The default Universal Profiling index lifecycle policy includes the following rollover and delete definitions: -* **Rollover**: Using rollover prevents a single index from growing too large and optimizes indexing and search performance. Rollover, i.e. writing to a new index, occurs after either an age or size metric is met. +* **Rollover**: Rollover prevents a single index from growing too large and optimizes indexing and search performance. After an age or size metric threshold is met, a new index is created and all subsequent updates are written to the new index. + * **Delete**: The delete phase permanently removes the index after a time threshold is met. [cols="1,1,1",options="header"] From b58fcebcb4790087f1dfd81e19436dbd2188a9fa Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:53:06 +0200 Subject: [PATCH 07/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../observability/profiling-index-lifecycle-management.asciidoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 3388ffbf1b..415aab8aec 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -22,6 +22,8 @@ The default Universal Profiling index lifecycle policy includes the following ro * **Delete**: The delete phase permanently removes the index after a time threshold is met. +The following table lists the default thresholds for rollover and delete: + [cols="1,1,1",options="header"] |=== |Rollover after From eb2ec23bbbbd1833d25db2752634f25e4c2605d2 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:53:29 +0200 Subject: [PATCH 08/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 415aab8aec..712236e670 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -26,13 +26,14 @@ The following table lists the default thresholds for rollover and delete: [cols="1,1,1",options="header"] |=== -|Rollover after -|Warm tier after -|Delete after +|Rollover +|Warm tier +|Delete + +| after 30 days or 50 GB +| after 30 days +| after 60 days -| 30 days / 50 GB -| 30 days -| 60 days |=== From 41d4ab51ea5402bb0ceff2f5b77fd8eea1c23575 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:56:42 +0200 Subject: [PATCH 09/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 712236e670..f517500ec9 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -77,7 +77,8 @@ NOTE: The custom {ilm-init} policy will only be applied if the component templat } } ---- -. Click **Next** until the **Review** step and ensure your request looks similar to the image below. +. Continue to the **Review** step, and ensure select the *Request* tab. Your request should look similar to the following image. + If it does, click **Create component template**. + [role="screenshot"] From a9c0a7621250748c21e4a34157d79e29e15b1f2e Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:56:55 +0200 Subject: [PATCH 10/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index f517500ec9..f324b57d34 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -94,7 +94,8 @@ To confirm that Universal Profiling is now using the new index template and {ilm ---- GET _ilm/policy/custom-profiling-policy <1> ---- -<1> The name of the custom {ilm-init} policy chosen in step 1 above. +<1> The name of the custom {ilm-init} policy chosen in <>. + If the custom policy is already applied, the result should include the following: From 0461ec9a7debc517b1358ad5ff08d910c365a5b6 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:57:17 +0200 Subject: [PATCH 11/24] Update docs/en/observability/profiling-manage-storage.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- docs/en/observability/profiling-manage-storage.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-manage-storage.asciidoc b/docs/en/observability/profiling-manage-storage.asciidoc index 843c388ef5..792470613f 100644 --- a/docs/en/observability/profiling-manage-storage.asciidoc +++ b/docs/en/observability/profiling-manage-storage.asciidoc @@ -1,5 +1,6 @@ [[profiling-manage-storage]] -= Manage Storage += Manage data storage + Universal Profiling uses lifecycle management to automatically age data. It ships with a default index lifecycle policy but it is possible to customize the index lifecycle to your requirements. With <> it is possible to configure the Universal Profiling agent to run in probabilistic profiling mode and reduce storage even further. From 9c928be427ac57b237a034f680ccff6c537c9326 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:57:37 +0200 Subject: [PATCH 12/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index f324b57d34..4fbf660fac 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -124,7 +124,8 @@ If the custom policy is already applied, the result should include the following } ---- -If the result is empty, then the custom {ilm-init} policy is not yet in use. New {ilm-init} policies only take effect when new indices are created, so you either must wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: +If the result is empty, the custom {ilm-init} policy is not yet in use. New {ilm-init} policies only take effect when new indices are created, so either wait for a rollover to occur (usually after 30 days or when the index size reaches 50 GB), or force a rollover using the {ref}/indices-rollover-index.html[{es} rollover API]: + [source,bash] ---- From 633c5f0e0bc4f92ea956b7c4183d57e914f685fb Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:58:09 +0200 Subject: [PATCH 13/24] Update docs/en/observability/profiling-manage-storage.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- docs/en/observability/profiling-manage-storage.asciidoc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-manage-storage.asciidoc b/docs/en/observability/profiling-manage-storage.asciidoc index 792470613f..ff82306abb 100644 --- a/docs/en/observability/profiling-manage-storage.asciidoc +++ b/docs/en/observability/profiling-manage-storage.asciidoc @@ -2,6 +2,10 @@ = Manage data storage -Universal Profiling uses lifecycle management to automatically age data. It ships with a default index lifecycle policy but it is possible to customize the index lifecycle to your requirements. With <> it is possible to configure the Universal Profiling agent to run in probabilistic profiling mode and reduce storage even further. +Universal Profiling provides the following ways to manage how your data is stored. + +* <> automatically manages your indices according to age or size metric thresholds. Universal Profiling ships with a default index lifecycle policy, but you can create a custom policy to meet your requirements. +* <> mode uses representative samples of profiling data to reduce storage needs even further. + From c7335a8e8a085c60cfe4cd21904b4c72d37d22ab Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:58:34 +0200 Subject: [PATCH 14/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 4fbf660fac..08f43ff9f3 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -39,7 +39,8 @@ The following table lists the default thresholds for rollover and delete: NOTE: The {ref}/ilm-rollover.html#_rollover_condition_blocks_phase_transition[rollover condition blocks phase transitions] which means that indices are kept 30 days *after* rollover on the hot tier. -The Universal Profiling index lifecycle policy can be viewed in {kib}. Navigate to *{stack-manage-app}* / *Index Lifecycle Management*, and search for `profiling`. +To view the Universal Profiling index lifecycle policy in {kib}, navigate to *{stack-manage-app}* → *Index Lifecycle Management*, and search for `profiling`. + TIP: Default {ilm-init} policies can change between minor versions. This is not considered a breaking change as index management should continually improve and adapt to new features. From f908b7d275dc64ebb0a3aab0de13c436f19640e4 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:58:50 +0200 Subject: [PATCH 15/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 08f43ff9f3..eac9e8f0f9 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -52,7 +52,8 @@ TIP: Default {ilm-init} policies can change between minor versions. This is not [[profiling-ilm-custom-policy-create-policy]] === Step 1: Create an index lifecycle policy -. Navigate to **{stack-manage-app}** > **Index Lifecycle Policies**. +. Navigate to **{stack-manage-app}** → **Index Lifecycle Policies**. + . Click **Create policy**. Name your new policy, for example `custom-profiling-policy`. Customize the policy to your liking, and when you're done, click **Save policy**. From 60d5af0e07e1b65e6c49f39bfea399221f42dcf0 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:59:08 +0200 Subject: [PATCH 16/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index eac9e8f0f9..98cf1c453b 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -55,8 +55,10 @@ TIP: Default {ilm-init} policies can change between minor versions. This is not . Navigate to **{stack-manage-app}** → **Index Lifecycle Policies**. . Click **Create policy**. +. Name your new policy, for example `custom-profiling-policy`. +. Customize the policy to your liking. +. Click **Save policy**. -Name your new policy, for example `custom-profiling-policy`. Customize the policy to your liking, and when you're done, click **Save policy**. [discrete] [[profiling-ilm-custom-policy-apply-policy]] From d5fadfc4aa703ebaa3282a9c08d52e79e6054c7d Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:59:19 +0200 Subject: [PATCH 17/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../observability/profiling-index-lifecycle-management.asciidoc | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 98cf1c453b..bc25783ef3 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -68,7 +68,6 @@ To apply your new index lifecycle policy for Universal Profiling, create a new c NOTE: The custom {ilm-init} policy will only be applied if the component template is named `profiling-ilm@custom`. Other names are not supported. - . Click on the **Component Template** tab and click **Create component template**. . Pick `profiling-ilm@custom` as the name and click **Next**. . In **Index settings**, set the {ilm-init} policy name created in the previous step: From 6f011712fba2a6d6c2aafb116329d74a87b99b8a Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 06:59:41 +0200 Subject: [PATCH 18/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index bc25783ef3..1bab79e2e4 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -66,7 +66,8 @@ TIP: Default {ilm-init} policies can change between minor versions. This is not To apply your new index lifecycle policy for Universal Profiling, create a new component template named `profiling-ilm@custom`. -NOTE: The custom {ilm-init} policy will only be applied if the component template is named `profiling-ilm@custom`. Other names are not supported. +NOTE: To apply a custom {ilm-init} policy, you must name the component template `profiling-ilm@custom`. Other names are not supported. + . Click on the **Component Template** tab and click **Create component template**. . Pick `profiling-ilm@custom` as the name and click **Next**. From 926cbdb66681aeb85294fa09fe2e5fd03b6b3f0d Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 07:00:11 +0200 Subject: [PATCH 19/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 1bab79e2e4..07d279aac3 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -69,7 +69,8 @@ To apply your new index lifecycle policy for Universal Profiling, create a new c NOTE: To apply a custom {ilm-init} policy, you must name the component template `profiling-ilm@custom`. Other names are not supported. -. Click on the **Component Template** tab and click **Create component template**. +. From the *Index Management* page, select the **Component Template** tab and click **Create component template**. + . Pick `profiling-ilm@custom` as the name and click **Next**. . In **Index settings**, set the {ilm-init} policy name created in the previous step: + From cadef0b5e3a816a6aea688914d35132decd8569e Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 07:00:22 +0200 Subject: [PATCH 20/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 07d279aac3..bd413df803 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -71,7 +71,8 @@ NOTE: To apply a custom {ilm-init} policy, you must name the component template . From the *Index Management* page, select the **Component Template** tab and click **Create component template**. -. Pick `profiling-ilm@custom` as the name and click **Next**. +. Enter `profiling-ilm@custom` as the name and click **Next**. + . In **Index settings**, set the {ilm-init} policy name created in the previous step: + [source,json] From 38fb4e23857fb4391d832687fdd9fdce92787dd5 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 07:03:40 +0200 Subject: [PATCH 21/24] Keep user on the page --- .../profiling-index-lifecycle-management.asciidoc | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index bd413df803..9e6a12a56c 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -8,9 +8,6 @@ Index lifecycle policies allow you to automate the lifecycle of your profiling indices as they grow and age. A default policy is applied, but you can customize it based on your business needs. - -See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn more. - [discrete] [[profiling-ilm-default-policy]] == Default policy From cd5341fc9eed5db51eec12290b3af5a7bf401448 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 07:05:53 +0200 Subject: [PATCH 22/24] Move ILM reference docs to a tip --- .../observability/profiling-index-lifecycle-management.asciidoc | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 9e6a12a56c..3a125b6a9e 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -56,6 +56,7 @@ TIP: Default {ilm-init} policies can change between minor versions. This is not . Customize the policy to your liking. . Click **Save policy**. +TIP: See {ref}/index-lifecycle-management.html[Manage the index lifecycle] to learn more about {ilm-init} policies. [discrete] [[profiling-ilm-custom-policy-apply-policy]] From 5a526751ffae32999d7251b003593b355a149dc0 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 11:54:27 +0200 Subject: [PATCH 23/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Christos Kalkanis --- .../profiling-index-lifecycle-management.asciidoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 3a125b6a9e..12c4a8f11a 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -81,7 +81,8 @@ NOTE: To apply a custom {ilm-init} policy, you must name the component template } } ---- -. Continue to the **Review** step, and ensure select the *Request* tab. Your request should look similar to the following image. +. Continue to the **Review** step, and select the *Request* tab. Your request should look similar to the following image. + If it does, click **Create component template**. + From e976631633c269deddf5bb1cfb68ffddc35072e9 Mon Sep 17 00:00:00 2001 From: Daniel Mitterdorfer Date: Wed, 27 Sep 2023 14:57:05 +0200 Subject: [PATCH 24/24] Update docs/en/observability/profiling-index-lifecycle-management.asciidoc Co-authored-by: Mike Birnstiehl <114418652+mdbirnstiehl@users.noreply.github.com> --- .../observability/profiling-index-lifecycle-management.asciidoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/en/observability/profiling-index-lifecycle-management.asciidoc b/docs/en/observability/profiling-index-lifecycle-management.asciidoc index 12c4a8f11a..e7622a1a49 100644 --- a/docs/en/observability/profiling-index-lifecycle-management.asciidoc +++ b/docs/en/observability/profiling-index-lifecycle-management.asciidoc @@ -45,6 +45,8 @@ TIP: Default {ilm-init} policies can change between minor versions. This is not [[profiling-ilm-custom-policy]] == Configure a custom index lifecycle policy +Complete the following steps to configure a custom index lifecycle policy. + [discrete] [[profiling-ilm-custom-policy-create-policy]] === Step 1: Create an index lifecycle policy