All Products
Search
Document Center

Elasticsearch:Kelola data Heartbeat menggunakan ILM

Last Updated:Aug 20, 2026

Data pemantauan time-series yang dihasilkan oleh Heartbeat terus bertambah seiring waktu, sehingga meningkatkan jumlah shard dan beban kluster. Anda dapat menggunakan Index Lifecycle Management (ILM) untuk menetapkan kebijakan rollover pada indeks heartbeat-*. Kebijakan ini memungkinkan Anda melakukan rollover indeks pada fase hot, mengurangi jumlah shard dan melakukan force-merge segmen pada fase warm, memigrasikan data ke node warm pada fase cold, serta menghapus data kedaluwarsa secara berkala pada fase delete.

Prosedur

  1. Langkah 1: Buat dan konfigurasikan kluster hot-warm

    Buat kluster yang berisi node hot dan warm, aktifkan pembuatan indeks otomatis, dan konfigurasikan daftar putih IP untuk akses publik.

  2. Langkah 2: Konfigurasikan ILM di Heartbeat

    Aktifkan fitur ILM dan konfigurasikan parameternya dalam file heartbeat.yml. Setelah menjalankan Heartbeat, Elasticsearch secara otomatis menghasilkan templat indeks Heartbeat.

  3. Langkah 3: Buat kebijakan ILM

    Gunakan API kebijakan ILM untuk membuat kebijakan yang menentukan kondisi rollover dan pengarsipan indeks.

  4. Langkah 4: Kaitkan kebijakan ILM dengan templat indeks

    Kaitkan kebijakan ILM dengan templat indeks Heartbeat.

  5. Langkah 5: Kaitkan indeks dengan kebijakan ILM

    Kaitkan kebijakan ILM dengan indeks Heartbeat pertama agar kebijakan tersebut diterapkan pada semua indeks yang dicakup oleh templat indeks.

  6. Langkah 6: Lihat indeks di setiap fase

    Lihat indeks yang diarsipkan di setiap fase: hot, warm, cold, dan delete.

Langkah 1: Buat dan konfigurasikan kluster hot-warm

  1. Buat kluster hot-warm yang terdiri dari node hot dan warm, lalu periksa atributnya. Tabel berikut menjelaskan perbedaannya.

    Jenis node

    Kebutuhan data

    Kinerja baca/tulis

    Spesifikasi

    Penyimpanan

    hot node

    Data terbaru, seperti data log dari dua hari terakhir.

    Tinggi

    Tinggi, misalnya 32-core 64 GB.

    Disk cloud SSD direkomendasikan.

    warm node

    Data historis, seperti data log yang lebih dari dua hari.

    Rendah

    Rendah, misalnya 8-core 32 GB.

    Disk Ultra direkomendasikan. Anda juga dapat menggunakan OpenStore untuk menerapkan penyimpanan arsitektur tanpa server bagi jumlah besar data dingin.

    Di Alibaba Cloud Elasticsearch, nilai box_type untuk node warm adalah warm, bukan cold. Hal ini karena node warm di Alibaba Cloud Elasticsearch sesuai dengan tier warm dalam arsitektur Elasticsearch asli.
    1. Saat membuat instans Alibaba Cloud Elasticsearch, aktifkan Warm nodes untuk membuat kluster hot-warm.

      Setelah mengaktifkan dan membeli node warm, sistem akan menambahkan parameter -Enode.attr.box_type ke parameter startup node:

      • Hot node: -Enode.attr.box_type=hot

      • Warm node: -Enode.attr.box_type=warm

      Mengaktifkan node warm menetapkan node data yang sudah ada sebagai node hot.
    2. Masuk ke konsol Kibana kluster tersebut. Untuk informasi selengkapnya, lihat Terhubung ke kluster menggunakan Kibana.

    3. Di panel navigasi sebelah kiri, klik Dev Tools.

    4. Di Console, jalankan perintah berikut untuk melihat atribut node hot dan warm di kluster.

      GET _cat/nodeattrs?v&h=host,attr,value

      Jika output berisi node hot dan warm, kluster mendukung arsitektur hot-warm.

  2. Aktifkan pembuatan indeks otomatis untuk kluster. Untuk informasi selengkapnya, lihat Aktifkan pembuatan indeks otomatis dengan mengonfigurasi parameter YML.

  3. Konfigurasikan daftar putih IP untuk akses publik ke kluster dan tambahkan alamat IP server tempat Heartbeat diinstal ke daftar putih tersebut. Untuk informasi selengkapnya, lihat Konfigurasikan daftar putih IP.

Langkah 2: Konfigurasikan ILM di Heartbeat

Untuk informasi selengkapnya tentang cara mengonfigurasi ILM, lihat Set up index lifecycle management.

  1. Unduh dan ekstrak paket instalasi Heartbeat.

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

    Contoh berikut menunjukkan konfigurasi sampel.

    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.template.overwrite: true
    
    setup.kibana:
      host: "https://es-cn-4591jumei00xxxxxx.kibana.elasticsearch.aliyuncs.com:5601"
    
    output.elasticsearch:
      hosts: ["es-cn-4591jumei00xxxxxx.elasticsearch.aliyuncs.com:9200"]
      ilm.enabled: true
      ilm.rollover_alias: "heartbeat"
      ilm.pattern: "{now/d}-000001"
      username: "elastic"
      password: "<your_password>"

    Tabel berikut menjelaskan beberapa parameter tersebut. Untuk informasi selengkapnya, lihat Heartbeat configuration documentation.

    Parameter

    Deskripsi

    index.number_of_shards

    Jumlah shard utama. Nilai default-nya adalah 1.

    index.routing.allocation.require.box_type

    Menentukan bahwa data indeks ditulis ke node hot.

    setup.template.overwrite

    Menentukan apakah akan menimpa templat indeks asli. Jika Anda telah memuat versi templat indeks ini ke Elasticsearch, Anda harus mengatur parameter ini ke true untuk menimpa templat asli. Ini merupakan item konfigurasi tingkat atas yang berada pada level yang sama dengan setup.template.settings.

    host

    Ganti nilainya dengan titik akhir publik layanan Kibana Anda. Anda dapat memperoleh titik akhir tersebut dari halaman konfigurasi Kibana.

    hosts

    Ganti nilainya dengan titik akhir publik atau pribadi kluster Elasticsearch Anda. Anda dapat memperoleh titik akhir tersebut dari halaman Informasi Dasar kluster. Untuk informasi selengkapnya, lihat Lihat informasi dasar instans. Jika Anda mengatur parameter ini ke titik akhir publik, Anda harus mengonfigurasi daftar putih IP untuk akses publik ke kluster. Untuk informasi selengkapnya, lihat Konfigurasikan daftar putih IP. Jika Anda mengatur parameter ini ke titik akhir pribadi, pastikan kluster dan server yang menjalankan Heartbeat berada dalam VPC yang sama.

    ilm.enabled

    Atur parameter ini ke true untuk mengaktifkan ILM.

    ilm.rollover_alias

    Alias untuk indeks yang dihasilkan saat rollover. Nilai default-nya adalah heartbeat-{beat.version}.

    ilm.pattern

    Pola untuk indeks yang dihasilkan saat rollover. Parameter ini mendukung date math. Nilai default-nya adalah {now/d}-000001. Saat rollover dipicu, penghitung numerik dalam nama indeks akan bertambah 1. Misalnya, jika rollover pertama menghasilkan indeks bernama heartbeat-2020.04.29-000001, rollover berikutnya akan menghasilkan indeks baru bernama heartbeat-2020.04.29-000002.

    username

    Username default-nya adalah elastic.

    password

    Password untuk pengguna elastic. Password ditentukan saat Anda membuat instans. Jika Anda lupa password-nya, Anda dapat mengatur ulang. Untuk informasi selengkapnya, lihat Atur ulang password akses instans.

    Penting

    Jika Anda mengubah ilm.rollover_alias atau ilm.pattern setelah memuat templat indeks, Anda harus mengatur setup.template.overwrite ke true untuk menimpa templat tersebut.

  3. Jalankan layanan Heartbeat.

    sudo ./heartbeat -e

Langkah 3: Buat kebijakan ILM

Anda dapat membuat kebijakan ILM di Elasticsearch menggunakan API atau konsol Kibana. Contoh berikut menunjukkan cara membuat kebijakan heartbeat-policy menggunakan API.

Heartbeat dapat memuat dan menulis kebijakan default ke Elasticsearch dengan perintah ./heartbeat setup --ilm-policy. Untuk membuat kebijakan kustom, ekspor kebijakan default dengan ./heartbeat export ilm-policy, lalu modifikasi.

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": {}
        }
      }
    }
  }
}

Fase

Deskripsi

hot

Rollover dipicu ketika ukuran indeks mencapai 5 MB, usia indeks mencapai 1 hari, atau jumlah dokumen mencapai 100. Aksi rollover mendukung kondisi max_docs, max_size, dan max_age, dan terjadi jika salah satu kondisi tersebut terpenuhi. Setelah rollover, indeks lama memasuki fase warm setelah penundaan 60 detik.

warm

Indeks diperkecil menjadi satu shard, lalu dilakukan force-merge menjadi satu segmen. Indeks kemudian memasuki fase cold tiga menit setelah rollover.

cold

Indeks dimigrasikan dari node hot ke node warm dan memasuki fase delete satu jam kemudian.

delete

Indeks dihapus.

Nama kebijakan tidak dapat diubah setelah kebijakan dibuat. Anda juga dapat membuat kebijakan di konsol Kibana. Namun, satuan minimum untuk max_age di Kibana adalah jam. Jika menggunakan API, Anda dapat menentukan satuan minimum dalam detik.

Langkah 4: Kaitkan kebijakan ILM ke templat indeks

Setelah menjalankan Heartbeat, templat indeks Heartbeat secara otomatis dibuat di Elasticsearch. Kaitkan kebijakan heartbeat-policy yang Anda buat di Langkah 3: Buat kebijakan ILM dengan templat indeks ini.

  1. Masuk ke konsol Kibana instans Alibaba Cloud Elasticsearch Anda. Untuk informasi selengkapnya, lihat Terhubung ke kluster menggunakan Kibana.

  2. Di panel navigasi sebelah kiri, klik Management.

  3. Di area Elasticsearch, klik Index Lifecycle Policies.

  4. Di daftar Index lifecycle policies, temukan kebijakan heartbeat-policy dan pilih Actions > Add policy to index template pada baris kebijakan tersebut.

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

  6. Klik Add policy.

Langkah 5: Kaitkan indeks dengan kebijakan ILM

Setelah menjalankan Heartbeat, Elasticsearch secara otomatis membuat indeks. Anda harus mengaitkan kebijakan ILM secara manual dengan indeks pertama ini untuk mengganti kebijakan default-nya. Hal ini diperlukan meskipun kebijakan tersebut sudah dikaitkan dengan templat indeks seperti yang dijelaskan di Langkah 4: Kaitkan kebijakan ILM ke templat indeks.

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

  2. Di daftar Index management, temukan indeks target dan klik nama indeks tersebut.

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

  4. Di kotak dialog yang muncul, klik Remove policy.

  5. Kemudian, pilih Manage > Add lifecycle policy.

  6. Di kotak dialog yang muncul, pilih kebijakan heartbeat-policy yang Anda buat di Langkah 3: Buat kebijakan ILM dari daftar Lifecycle policy. Di kotak teks Index rollover alias, masukkan alias indeks yang Anda definisikan di Langkah 4: Kaitkan kebijakan ILM ke templat indeks. Lalu, klik Add policy.

Langkah 6: Lihat indeks di setiap fase

Di halaman Index management, klik daftar drop-down Lifecycle phase dan pilih fase siklus hidup, seperti Hot, Warm, atau Cold, untuk menyaring dan melihat indeks di fase tersebut.

FAQ

Bagaimana cara menyesuaikan frekuensi pemeriksaan kebijakan ILM?

Secara default, ILM memeriksa indeks yang sesuai dengan kebijakan setiap 10 menit. Selama interval ini, jumlah data dapat melebihi ambang batas yang ditentukan. Misalnya, di Langkah 3: Buat kebijakan ILM, max_docs diatur ke 100, tetapi rollover mungkin tidak dipicu hingga jumlah dokumen sudah melebihi 100.

Anda dapat mengontrol frekuensi pemeriksaan dengan memodifikasi parameter indices.lifecycle.poll_interval:

Penting

Frekuensi pemeriksaan yang tinggi meningkatkan beban node. Konfigurasikan parameter ini dengan hati-hati sesuai kebutuhan bisnis Anda.

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