[role="xpack"] [[example-using-index-lifecycle-policy]] === Tutorial: Customize built-in {ilm-init} policies ++++ Tutorial: Customize built-in policies ++++ {es} includes the following built-in {ilm-init} policies: - `logs` - `metrics` - `synthetics` {agent} uses these policies to manage backing indices for its data streams. This tutorial shows you how to use {kib}’s **Index Lifecycle Policies** to customize these policies based on your application's performance, resilience, and retention requirements. [discrete] [[example-using-index-lifecycle-policy-scenario]] ==== Scenario You want to send log files to an {es} cluster so you can visualize and analyze the data. This data has the following retention requirements: * When the write index reaches 50GB or is 30 days old, roll over to a new index. * After rollover, keep indices in the hot data tier for 30 days. * 30 days after rollover: ** Move indices to the warm data tier. ** Set replica shards to 1. ** <> multiple index segments to free up the space used by deleted documents. * Delete indices 90 days after rollover. [discrete] [[example-using-index-lifecycle-policy-prerequisites]] ==== Prerequisites To complete this tutorial, you'll need: * An {es} cluster with hot and warm data tiers. ** {ess}: Elastic Stack deployments on {ess} include a hot tier by default. To add a warm tier, edit your deployment and click **Add capacity** for the warm data tier. + [role="screenshot"] image::images/ilm/tutorial-ilm-ess-add-warm-data-tier.png[Add a warm data tier to your deployment] ** Self-managed cluster: Assign `data_hot` and `data_warm` roles to nodes as described in <>. + For example, include the `data_warm` node role in the `elasticsearch.yml` file of each node in the warm tier: + [source,yaml] ---- node.roles: [ data_warm ] ---- * A host with {agent} installed and configured to send logs to your {es} cluster. [discrete] [[example-using-index-lifecycle-policy-view-ilm-policy]] ==== View the policy {agent} uses data streams with an index pattern of `logs-*-*` to store log monitoring data. The built-in `logs` {ilm-init} policy automatically manages backing indices for these data streams. To view the `logs` policy in {kib}: . Open the menu and go to **Stack Management > Index Lifecycle Policies**. . Select **Include managed system policies**. . Select the `logs` policy. The `logs` policy uses the recommended rollover defaults: Start writing to a new index when the current write index reaches 50GB or becomes 30 days old. To view or change the rollover settings, click **Advanced settings** for the hot phase. Then disable **Use recommended defaults** to display the rollover settings. [role="screenshot"] image::images/ilm/tutorial-ilm-hotphaserollover-default.png[View rollover defaults] Note that {kib} displays a warning that editing a managed policy can break Kibana. For this tutorial, you can ignore that warning and proceed with modifying the policy. [discrete] [[ilm-ex-modify-policy]] ==== Modify the policy The default `logs` policy is designed to prevent the creation of many tiny daily indices. You can modify the policy to meet your performance requirements and manage resource usage. . Activate the warm phase and click **Advanced settings**. + -- .. Set **Move data into phase when** to **30 days old**. This moves indices to the warm tier 30 days after rollover. .. Enable **Set replicas** and change **Number of replicas** to **1**. .. Enable **Force merge data** and set **Number of segments** to **1**. [role="screenshot"] image::images/ilm/tutorial-ilm-modify-default-warm-phase-rollover.png[Add a warm phase with custom settings] -- . In the warm phase, click the trash icon to enable the delete phase. + [role="screenshot"] image::images/ilm/tutorial-ilm-enable-delete-phase.png[Enable the delete phase] + In the delete phase, set **Move data into phase when** to **90 days old**. This deletes indices 90 days after rollover. + [role="screenshot"] image::images/ilm/tutorial-ilm-delete-rollover.png[Add a delete phase] . Click **Save Policy**.