全部产品
Search
文档中心

Elasticsearch:Gunakan ILM untuk mengelola indeks Heartbeat

更新时间:Jul 02, 2025

Data deret waktu bertambah seiring waktu. Anda dapat menggunakan fitur manajemen siklus hidup indeks (ILM) untuk memindahkan data secara berkala ke indeks baru, memastikan efisiensi kueri yang tinggi dan mengurangi biaya kueri. Saat indeks semakin tua dan lebih sedikit kueri yang diperlukan, Anda dapat memigrasikan indeks ke disk yang lebih murah serta mengurangi jumlah shard utama dan replika. Topik ini menjelaskan cara menggunakan ILM untuk mengelola indeks Heartbeat.

Informasi latar belakang

Skenario pengujian berikut digunakan dalam topik ini:

Sejumlah besar indeks deret waktu dengan nama yang dimulai dengan heartbeat- ada di kluster Elasticsearch Anda, dengan ukuran setiap indeks sekitar 4 MB. Jumlah shard meningkat seiring dengan volume data, yang dapat menyebabkan beban berlebih pada kluster. Dalam kasus ini, Anda harus mengonfigurasi kebijakan rollover yang berbeda untuk indeks dalam empat fase berikut: panas, hangat, dingin, dan hapus. Pada fase panas, data dalam indeks pemantauan historis yang namanya dimulai dengan heartbeat- dipindahkan ke indeks baru. Pada fase hangat, indeks dikurangi ukurannya, dan segmen dalam setiap indeks digabungkan. Pada fase dingin, data dipindahkan dari node panas ke node hangat. Node hangat digunakan untuk memproses data dingin. Pada fase hapus, data dihapus secara berkala.

Perhatian

  • Kebijakan ILM hanya dapat dilampirkan ke indeks setelah template indeks dan alias dikonfigurasikan untuk indeks tersebut.

  • Jika Anda memodifikasi kebijakan ILM selama rollover, kebijakan baru akan mulai berlaku dari rollover berikutnya.

Prosedur

  1. Langkah 1: Buat kluster Elasticsearch yang menggunakan arsitektur hot-warm.

    Buat kluster Elasticsearch yang menggunakan arsitektur hot-warm, aktifkan fitur Auto Indexing untuk kluster tersebut, dan konfigurasikan daftar putih alamat IP publik untuk kluster tersebut.

  2. Langkah 2: Aktifkan dan konfigurasikan fitur ILM di file heartbeat.yml.

    Di file heartbeat.yml, aktifkan dan konfigurasikan fitur ILM untuk kluster. Setelah konfigurasi selesai, sistem menghasilkan template indeks Heartbeat untuk kluster.

  3. Langkah 3: Buat kebijakan ILM.

    Panggil API pembuatan kebijakan ILM untuk membuat kebijakan ILM. Kebijakan ini mendefinisikan kondisi untuk memindahkan data dan mengarsipkan indeks.

  4. Langkah 4: Lampirkan kebijakan ILM ke template indeks.

    Lampirkan kebijakan ILM ke template indeks Heartbeat.

  5. Langkah 5: Lampirkan kebijakan ILM ke indeks.

    Lampirkan kebijakan ILM ke indeks pertama yang dibuat menggunakan template indeks Heartbeat. Dengan cara ini, kebijakan dapat diterapkan ke semua indeks yang dibuat menggunakan template ini.

  6. Langkah 6: Lihat indeks dalam fase yang berbeda.

    Lihat indeks yang diarsipkan dalam fase panas, hangat, dingin, dan hapus.

Langkah 1: Buat kluster Elasticsearch yang menggunakan arsitektur hot-warm

  1. Buat kluster Elasticsearch yang menggunakan arsitektur hot-warm dan lihat atribut panas atau hangat dari node dalam kluster.

    Kluster Elasticsearch yang menggunakan arsitektur hot-warm berisi baik node panas maupun node hangat. Arsitektur ini meningkatkan performa dan stabilitas kluster Elasticsearch. Tabel berikut menjelaskan perbedaan antara node panas dan node hangat.

    Tipe Node

    Jenis data yang disimpan

    Kinerja baca dan tulis

    Spesifikasi

    Disk

    Node panas

    Data terbaru, seperti data log selama dua hari terakhir.

    Tinggi

    Tinggi, seperti 32 vCPU dan 64 GiB memori

    Kami merekomendasikan Anda menggunakan SSD standar. Anda dapat menentukan ruang penyimpanan berdasarkan volume data.

    Node hangat

    Data historis, seperti data log sebelum dua hari terakhir.

    Rendah

    Rendah, seperti 8 vCPU dan 32 GiB memori

    Kami merekomendasikan Anda menggunakan ultra disk. Anda dapat menentukan ruang penyimpanan berdasarkan volume data.

    1. Buat kluster Elasticsearch yang menggunakan arsitektur hot-warm. Saat Anda membeli kluster Elasticsearch, Anda dapat membeli node hangat untuk membuat kluster Elasticsearch yang menggunakan arsitektur hot-warm.

      Setelah Anda membuat kluster yang berisi node hangat, sistem menambahkan parameter -Enode.attr.box_type ke parameter startup node.

      • Node panas: -Enode.attr.box_type=hot

      • Node hangat: -Enode.attr.box_type=warm

      Catatan
      • Node data menjadi node panas hanya setelah Anda membeli node hangat.

      • Dalam contoh ini, kluster Elasticsearch V6.7.0 milik Alibaba Cloud digunakan. Semua operasi yang dijelaskan dan gambar yang disediakan dalam contoh ini hanya cocok untuk kluster versi ini. Jika Anda menggunakan kluster versi lain, operasi yang diperlukan di konsol Elasticsearch berlaku.

    2. Masuk ke konsol Kibana kluster.

      Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.

    3. Di panel navigasi sisi kiri halaman yang muncul, klik Dev Tools.

    4. Pada tab Console halaman yang muncul, jalankan perintah berikut untuk melihat atribut panas atau hangat dari node dalam kluster:

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

      Jika perintah berhasil dijalankan, hasil yang ditunjukkan pada gambar berikut dikembalikan. Gambar ini menunjukkan bahwa kluster Elasticsearch berisi tiga node panas dan dua node hangat untuk mendukung arsitektur hot-warm.冷热架构集群

  2. Aktifkan fitur Auto Indexing untuk kluster Elasticsearch.

    Untuk informasi lebih lanjut, lihat Konfigurasikan file YML.

  3. Konfigurasikan daftar putih alamat IP publik untuk kluster Elasticsearch dan tambahkan alamat IP server tempat Heartbeat diinstal ke daftar putih.

Langkah 2: Aktifkan dan konfigurasikan fitur ILM di file heartbeat.yml

Untuk mengelola indeks Heartbeat menggunakan fitur ILM Elasticsearch, Anda dapat mengonfigurasi fitur tersebut di file heartbeat.yml. Untuk informasi lebih lanjut, lihat Atur manajemen siklus hidup indeks.

  1. Unduh paket instalasi Heartbeat dan ekstrak.

  2. Tentukan konfigurasi heartbeat.monitors, setup.template.settings, setup.kibana, dan output.elasticsearch di file heartbeat.yml.

    Konfigurasi berikut digunakan dalam contoh 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>"

    Tabel berikut menjelaskan beberapa parameter dalam konfigurasi sebelumnya. Untuk informasi lebih lanjut tentang parameter lainnya, lihat dokumentasi konfigurasi Heartbeat open source.

    Parameter

    Deskripsi

    index.number_of_shards

    Jumlah shard utama. Nilai default: 1.

    index.routing.allocation.require.box_type

    Menentukan apakah akan menulis data ke node panas.

    host

    Alamat IP publik yang digunakan untuk mengakses layanan Kibana. Anda dapat memperoleh alamat IP pada halaman Konfigurasi Kibana.

    hosts

    Titik akhir internal atau publik yang digunakan untuk mengakses kluster Elasticsearch. Anda dapat memperoleh titik akhir pada halaman Informasi Dasar kluster. Untuk informasi lebih lanjut, lihat Lihat informasi dasar kluster.

    Catatan

    Jika Anda menyetel parameter hosts ke titik akhir publik kluster, Anda harus mengonfigurasi daftar putih alamat IP publik untuk kluster. Untuk informasi lebih lanjut, lihat Konfigurasikan daftar putih alamat IP publik atau pribadi untuk kluster Elasticsearch. Jika Anda menyetel parameter hosts ke titik akhir internal kluster, Anda harus memastikan bahwa kluster berada di virtual private cloud (VPC) yang sama dengan server tempat Heartbeat diinstal.

    ilm.enabled

    Menentukan apakah akan mengaktifkan fitur ILM. Jika parameter ini disetel ke true, fitur diaktifkan.

    setup.template.overwrite

    Menentukan apakah akan menimpa template indeks asli. Jika Anda telah memuat template indeks versi tertentu ke Elasticsearch, Anda harus menyetel parameter ini ke true untuk menimpa template indeks asli dengan template yang dimuat.

    ilm.rollover_alias

    Menentukan alias indeks yang dihasilkan selama rollover. Nilai default: heartbeat-\{beat.version\}.

    ilm.pattern

    Pola indeks yang dihasilkan selama rollover. date math didukung. Nilai default: {now/d}-000001. Jika kondisi rollover terpenuhi, sistem menambah digit terakhir dalam nama indeks dengan satu untuk menghasilkan nama indeks baru.

    Sebagai contoh, indeks yang dihasilkan setelah rollover pertama bernama heartbeat-2020.04.29-000001. Jika kondisi rollover lain terpenuhi, Elasticsearch membuat indeks bernama heartbeat-2020.04.29-000002.

    username

    Nama pengguna default adalah elastic.

    password

    Kata sandi ditentukan saat Anda membuat kluster. Jika Anda lupa kata sandi, Anda dapat menyetel ulang. Untuk informasi lebih lanjut tentang prosedur dan perhatian untuk menyetel ulang kata sandi, lihat Setel ulang kata sandi akses untuk kluster Elasticsearch.

    Penting

    Jika Anda mengubah pengaturan ilm.rollover_alias atau ilm.pattern setelah template indeks dimuat, Anda harus menyetel setup.template.overwrite ke true untuk menimpa template indeks asli dengan template indeks yang dimuat.

  3. Mulai layanan Heartbeat.

    sudo ./heartbeat -e

Langkah 3: Buat kebijakan ILM

Elasticsearch memungkinkan Anda menggunakan API atau konsol Kibana untuk membuat kebijakan ILM. Dalam contoh ini, API pembuatan kebijakan ILM digunakan untuk membuat kebijakan ILM.

Catatan

Heartbeat memungkinkan Anda menjalankan perintah ./heartbeat setup --ilm-policy untuk memuat kebijakan default dan menulisnya ke Elasticsearch. Anda dapat menjalankan perintah ./heartbeat export ilm-policy untuk mengekspor kebijakan default ke stdout. Kemudian, Anda dapat memodifikasi kebijakan default untuk membuat kebijakan ILM secara manual.

Jalankan perintah berikut di konsol Kibana kluster Elasticsearch 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": {}
        }
      }
    }
  }
}

Parameter

Deskripsi

panas

Rollover dipicu jika indeks yang dilampirkan kebijakan ILM memenuhi salah satu dari kondisi berikut: Volume data dalam indeks mencapai 5 MB, indeks telah digunakan selama lebih dari satu hari, dan jumlah dokumen dalam indeks melebihi 100. Selama rollover, sistem membuat indeks dan mengaktifkan kebijakan ILM untuk indeks baru. Indeks asli masuk ke fase hangat 60 detik setelah rollover.

Penting

Jika nilai max_docs, max_size, atau max_age tercapai selama rollover, Elasticsearch mengarsipkan indeks.

hangat

Setelah indeks masuk ke fase hangat, sistem mengecilkan ukurannya menjadi indeks yang hanya memiliki satu shard utama dan menggabungkan segmen dalam indeks menjadi satu segmen. Indeks masuk ke fase dingin 3 menit setelah rollover dimulai.

dingin

Setelah indeks masuk ke fase dingin, sistem memigrasikan indeks dari node panas ke node hangat. Indeks masuk ke fase hapus 1 jam kemudian setelah rollover dimulai.

hapus

Setelah indeks masuk ke fase hapus, indeks tersebut dihapus.

Catatan
  • Setelah kebijakan ILM dibuat, Anda tidak dapat mengubah nama kebijakan.

  • Dalam langkah ini, Anda dapat menentukan parameter max_age dalam satuan minimum detik. Jika Anda menggunakan konsol Kibana untuk membuat kebijakan ILM, Anda hanya dapat menentukan parameter ini dalam satuan minimum jam.

Langkah 4: Lampirkan kebijakan ILM ke template indeks

Setelah Anda memulai Heartbeat, sistem membuat template indeks Heartbeat di kluster Elasticsearch Anda. Anda harus melampirkan kebijakan ILM yang dibuat di Langkah 3: Buat kebijakan ILM ke template indeks ini.

  1. Masuk ke konsol Kibana kluster Elasticsearch.

    Untuk informasi lebih lanjut, lihat Masuk ke konsol Kibana.

  2. Di panel navigasi sisi kiri, klik Management.

  3. Di bagian Elasticsearch, klik Index Lifecycle Policies.

  4. Di bagian Index lifecycle policies, temukan kebijakan ILM yang Anda buat dan pilih Actions > Add policy to index template.

    Add policy

  5. Di kotak dialog yang muncul, pilih template indeks dari daftar drop-down Index template dan masukkan alias untuk indeks di bidang Alias for rollover index.

    Add policy

  6. Klik Add policy.

Langkah 5: Lampirkan kebijakan ILM ke indeks

Setelah Anda memulai Heartbeat, sistem membuat indeks Heartbeat di kluster Elasticsearch Anda. Anda harus melampirkan kebijakan ILM yang dilampirkan ke template indeks yang Anda buat ke indeks pertama yang dibuat menggunakan template tersebut. Untuk informasi lebih lanjut, lihat Langkah 4: Lampirkan kebijakan ILM ke template indeks.

  1. Di bagian Elasticsearch halaman Management, klik Index Management.

  2. Di bagian Index management, temukan indeks yang diinginkan dan klik namanya.

  3. Di tab Summary panel yang muncul, pilih Manage > Remove lifecycle policy untuk menghapus kebijakan default Heartbeat.

    移除Heartbeat自带的默认策略

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

  5. Pilih Manage > Add lifecycle policy lagi.

  6. Di kotak dialog yang muncul, pilih kebijakan ILM yang Anda buat di Langkah 3: Buat kebijakan ILM dari daftar drop-down Lifecycle policy dan atur Index rollover alias ke alias yang Anda tentukan di Langkah 4: Lampirkan kebijakan ILM ke template indeks. Lalu, klik Add policy.

    Add policy

    Jika kebijakan ILM dilampirkan ke indeks, informasi yang ditunjukkan pada gambar berikut muncul.关联成功

Langkah 6: Lihat indeks dalam fase yang berbeda

Untuk melihat indeks dalam fase panas, pilih Hot dari daftar drop-down Lifecycle phase di bagian Index management.过滤Hot阶段索引

Anda dapat menggunakan metode ini untuk melihat indeks dalam fase lainnya.

FAQ

Bagaimana cara mengonfigurasi interval pemeriksaan untuk kebijakan ILM?

Sistem secara berkala memeriksa indeks yang sesuai dengan kebijakan ILM. Interval default adalah 10 menit. Jika indeks yang cocok terdeteksi, sistem akan memindahkan data untuk indeks tersebut. Sebagai contoh, Anda menyetel max_docs ke 100 saat Anda membuat kebijakan ILM. Dalam kasus ini, jika sistem mendeteksi bahwa jumlah dokumen dalam indeks mencapai 100 selama pemeriksaan, itu memicu rollover untuk indeks tersebut. Anda dapat menggunakan parameter indices.lifecycle.poll_interval untuk mengontrol interval pemeriksaan. Ini memastikan bahwa data dipindahkan untuk indeks secara tepat waktu.

Penting

Tetapkan parameter ini ke nilai yang sesuai. Nilai kecil dapat menyebabkan beban berlebih pada node. Dalam contoh ini, parameter ini disetel ke 1m.

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