全部产品
Search
文档中心

Elasticsearch:Mengelola data Heartbeat menggunakan manajemen siklus hidup indeks

更新时间:Feb 11, 2026

Topik ini menjelaskan cara menggunakan Index Lifecycle Management (ILM) untuk mengelola data time-series Heartbeat dengan secara otomatis memindahkan data pemantauan yang menua dari node panas ke node hangat guna mengoptimalkan kinerja dan mengurangi biaya penyimpanan.

Prasyarat

Pengelolaan data Heartbeat dengan ILM memerlukan hal-hal berikut:

  1. Kluster Alibaba Cloud Elasticsearch telah dibuat.

  2. Node hangat telah dikonfigurasi untuk kluster tersebut.

    Anda dapat memperoleh node hangat melalui salah satu dari dua cara berikut:

Catatan Penggunaan

  • Persyaratan templat dan alias: Tetapkan templat indeks dan alias sebelum menetapkan kebijakan siklus hidup.

  • Waktu modifikasi kebijakan: Jika Anda mengubah kebijakan siklus hidup selama rollover, kebijakan baru akan berlaku pada event rollover berikutnya.

Prosedur

Langkah 1: Konfirmasi konfigurasi node hangat

Sebelum melanjutkan, verifikasi bahwa kluster Anda telah dikonfigurasi dengan benar menggunakan node hangat.

Konsol Alibaba Cloud Elasticsearch

Buka halaman informasi dasar kluster Elasticsearch Anda dan periksa arsitektur kluster di bagian Node Visualization.

image

Kibana

Buka konsol Kibana, pilih Dev Tools, lalu jalankan perintah berikut di Console:

GET _cat/nodeattrs?v&h=node,attr,value&s=attr:desc

Tanggapan yang berisi atribut box_type:warm menunjukkan bahwa kluster telah dikonfigurasi dengan node hangat.

Langkah 2: Konfigurasikan ILM di Heartbeat

Untuk mengintegrasikan Heartbeat secara mulus dengan ILM Elasticsearch, tentukan konfigurasi ILM dalam file heartbeat.yml. Untuk detailnya, lihat Set up index lifecycle management.

  1. Unduh paket instalasi Heartbeat dan ekstrak isinya.

  2. Edit file heartbeat.yml untuk menentukan heartbeat.monitors, setup.template.settings, setup.kibana, dan output.elasticsearch.

    Konfigurasi berikut digunakan dalam topik ini.

    heartbeat.monitors:
    - type: icmp
      schedule: '*/5 * * * * * *'
      hosts: ["47.111.xx.xx"]
    
    setup.template.settings:
      index.number_of_shards: 3
      index.codec: best_compression
      index.routing.allocation.require.box_type: "hot"
    
    setup.kibana:
    
      # Kibana Host
      # Scheme and port can be left out and will be set to the default (http and 5601)
      # In case you specify and additional path, the scheme is required: http://localhost:5601/path
      # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
      host: "https://es-cn-4591jumei00xxxxxx.kibana.elasticsearch.aliyuncs.com:5601"
    
    output.elasticsearch:
      # Array of hosts to connect to.
      hosts: ["es-cn-4591jumei00xxxxxx.elasticsearch.aliyuncs.com:9200"]
      ilm.enabled: true
      setup.template.overwrite: true
      ilm.rollover_alias: "heartbeat"
      ilm.pattern: "{now/d}-000001"
    
      # Enabled ilm (beta) to use index lifecycle management instead daily indices.
      #ilm.enabled: false
    
      # Optional protocol and basic auth credentials.
      #protocol: "https"
      username: "elastic"
      password: "<your_password>"

    Parameter:

    • index.number_of_shards: Jumlah shard utama. Nilai default-nya adalah 1.

    • index.routing.allocation.require.box_type: Menulis data indeks ke node panas.

    • host: Ganti dengan titik akhir publik layanan Kibana Anda. Dapatkan titik akhir tersebut dari halaman konfigurasi Kibana.

    • hosts: Ganti dengan titik akhir publik atau internal kluster Elasticsearch Anda. Dapatkan titik akhir tersebut dari halaman Informasi Dasar kluster. Untuk informasi lebih lanjut, lihat View the basic information of an instance.

      Catatan

      Jika Anda menetapkannya ke titik akhir publik, konfigurasikan daftar putih akses jaringan publik untuk kluster tersebut. Untuk informasi lebih lanjut, lihat Configure a public or private access whitelist for an instance. Jika Anda menetapkannya ke titik akhir internal, pastikan kluster dan server tempat Heartbeat diinstal berada dalam VPC yang sama.

    • ilm.enabled: Tetapkan ke true untuk mengaktifkan ILM.

    • setup.template.overwrite: Menentukan apakah templat indeks asli akan ditimpa. Jika Anda telah memuat versi templat indeks ini ke Elasticsearch, tetapkan parameter ini ke true untuk menimpa templat asli.

    • ilm.rollover_alias: Alias untuk indeks yang dihasilkan selama rollover. Default-nya adalah heartbeat-\{beat.version\}.

    • ilm.pattern: Pola untuk indeks yang dihasilkan selama rollover. Mendukung date math. Default-nya adalah {now/d}-000001. Saat rollover dipicu, digit terakhir nama indeks baru akan bertambah 1. Misalnya, rollover pertama membuat indeks bernama heartbeat-2020.04.29-000001. Ketika kondisi rollover terpenuhi lagi, Elasticsearch membuat indeks baru bernama heartbeat-2020.04.29-000002.

    • username: Nama pengguna default adalah elastic.

    • password: Kata sandi untuk pengguna elastic ditetapkan saat Anda membuat kluster.

    Untuk informasi lebih lanjut tentang parameter lainnya, lihat dokumentasi konfigurasi Heartbeat resmi.

    Penting

    Jika Anda mengubah ilm.rollover_alias atau ilm.pattern setelah memuat templat indeks, tetapkan setup.template.overwrite ke true untuk menulis ulang templat indeks.

  3. Jalankan Heartbeat.

    sudo ./heartbeat -e

Langkah 3: Buat kebijakan ILM

Buat kebijakan heartbeat-policy menggunakan API ILM atau konsol Kibana. Contoh ini menggunakan API ILM.

Catatan

Heartbeat mencakup kebijakan default. Muat kebijakan tersebut dengan ./heartbeat setup --ilm-policy atau ekspor dengan ./heartbeat export ilm-policy. Anda dapat memodifikasi kebijakan yang diekspor untuk konfigurasi khusus.

Di konsol Kibana, jalankan perintah berikut untuk membuat kebijakan ILM.

PUT /_ilm/policy/heartbeat-policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_size": "5mb",
            "max_age": "1d",
            "max_docs": 100
          }
        }
      },
      "warm": {
        "min_age": "60s",
        "actions": {
          "forcemerge": {
                "max_num_segments":1
              },
          "shrink": {
                "number_of_shards":1
              }
        }
      },
      "cold": {
        "min_age": "3m",
        "actions": {
          "allocate": {
            "require": {
              "box_type": "warm"
            }
          }
        }
      },
      "delete": {
        "min_age": "1h",
        "actions": {
          "delete": {}
        }
      }
    }
  }
}
Catatan
  • Nama kebijakan tidak dapat diubah setelah dibuat.

  • Anda juga dapat membuat kebijakan di konsol Kibana. Namun, satuan minimum untuk max_age di Kibana adalah jam. Jika Anda menggunakan API, Anda dapat menentukan satuan minimum dalam detik.

Langkah 4: Terapkan kebijakan ILM ke templat indeks

Setelah menjalankan Heartbeat, templat indeks Heartbeat secara otomatis dibuat di kluster Elasticsearch Anda. Terapkan kebijakan ILM yang dibuat di Langkah 3: Buat kebijakan ILM ke templat ini.

  1. Masuk ke konsol Kibana.

  2. Di bilah navigasi kiri, klik Management.

  3. Di area Elasticsearch, klik Index Lifecycle Policies.

  4. Di daftar Index lifecycle policies, pilih Actions > Add policy to index template.

    Add policy

  5. Di kotak dialog, pilih templat indeks dari daftar dropdown Index template, lalu masukkan alias indeks di kotak teks Alias for rollover index.

    Add policy

  6. Klik Add policy.

Langkah 5: Hubungkan indeks dengan kebijakan ILM

Setelah menjalankan Heartbeat, sebuah indeks secara otomatis dibuat di kluster Elasticsearch Anda. Anda harus menghubungkan kebijakan ILM yang sesuai dengan indeks tersebut secara manual untuk inisialisasi.

  1. Di halaman Management, di area Elasticsearch, pilih Index Management.

  2. Di daftar Index management, temukan indeks target lalu klik namanya.

  3. Di halaman Summary, klik Manage > Remove lifecycle policy untuk menghapus kebijakan default yang disertakan Heartbeat.

    移除Heartbeat自带的默认策略

  4. Di kotak dialog, klik Remove policy.

  5. Kemudian, pilih Manage > Add lifecycle policy.

  6. Di kotak dialog, pilih kebijakan siklus hidup yang dibuat di Langkah 3: Buat kebijakan ILM dari Lifecycle policy. Di kotak teks Index rollover alias, masukkan alias indeks yang ditentukan di Langkah 4: Terapkan kebijakan ILM ke templat indeks, lalu klik Add policy.

    Add policy

    Setelah kebijakan ILM dikaitkan dengan indeks awal, hasilnya ditampilkan pada gambar berikut.关联成功

Langkah 6: Lihat indeks di setiap fase

Untuk melihat indeks di fase hot, di halaman Index management, pilih Lifecycle phase > Hot.过滤Hot阶段索引

Anda juga dapat menggunakan metode yang sama untuk melihat indeks di fase lainnya.

FAQ

T: Bagaimana cara mengubah interval pemeriksaan ILM?

J: Secara default, kebijakan ILM diperiksa setiap 10 menit. Data dalam suatu indeks mungkin melebihi ambang batas yang ditentukan selama interval ini. Misalnya, di Langkah 3: Buat kebijakan ILM, max_docs diatur ke 100, tetapi rollover hanya dipicu setelah jumlah dokumen melebihi 100. Untuk mengubah frekuensi pemeriksaan (misalnya, menjadi 1 menit), konfigurasikan pengaturan kluster indices.lifecycle.poll_interval:

Penting

Ubah parameter ini dengan hati-hati. Interval pendek dapat menambah beban node yang tidak perlu. Contoh ini menetapkannya ke 1m.

PUT _cluster/settings
{
  "transient": {
    "indices.lifecycle.poll_interval":"1m"
  }
}