Tüm Ürünler
Search
Belge Merkezi

Elasticsearch:Manage Heartbeat data using ILM

Son Güncelleme:Oct 04, 2026

Heartbeat tarafından oluşturulan zaman serisi izleme verileri zamanla artar; bu durum parça sayısını ve küme yükünü yükseltir. heartbeat-* dizinleri için bir devretme ilkesi tanımlamak üzere İndeks Yaşam Döngüsü Yönetimi'ni (ILM) kullanabilirsiniz. Bu ilke sayesinde hot aşamasında dizinleri devredebilir, warm aşamasında parçaları daraltabilir ve segmentleri zorla birleştirebilir, cold aşamasında verileri warm düğümlere taşıyabilir ve delete aşamasında süresi dolan verileri periyodik olarak silebilirsiniz.

Prosedür

  1. Adım 1: Hot-warm kümesi oluşturma ve yapılandırma

    Hot ve warm düğümler içeren bir küme oluşturun, otomatik dizin oluşturmayı etkinleştirin ve genel erişim için bir IP izin listesi yapılandırın.

  2. Adım 2: Heartbeat'te ILM'i yapılandırma

    ILM özelliğini etkinleştirin ve heartbeat.yml dosyasındaki parametrelerini yapılandırın. Heartbeat'i başlattığınızda Elasticsearch otomatik olarak bir Heartbeat dizin şablonu oluşturur.

  3. Adım 3: ILM ilkesi oluşturma

    Dizin devretme ve arşivleme koşullarını tanımlayan bir ilke oluşturmak için ILM ilke API'sini kullanın.

  4. Adım 4: ILM ilkesini bir dizin şablonuyla ilişkilendirme

    ILM ilkesini Heartbeat dizin şablonuyla ilişkilendirin.

  5. Adım 5: Bir dizini ILM ilkesiyle ilişkilendirme

    İlkeyi dizin şablonunun kapsadığı tüm dizinlere uygulamak için ILM ilkesini ilk Heartbeat diziniyle ilişkilendirin.

  6. Adım 6: Her aşamadaki dizinleri görüntüleme

    Hot, warm, cold ve delete aşamalarında arşivlenen dizinleri görüntüleyin.

Adım 1: Hot-warm kümesi oluşturma ve yapılandırma

  1. Hem hot hem de warm düğümler içeren bir hot-warm kümesi oluşturun ve niteliklerini görüntüleyin. Aşağıdaki tabloda farklar açıklanmaktadır.


    Düğüm türü


    Veri gereksinimleri


    Okuma/yazma performansı


    Teknik özellikler


    Depolama


    hot düğüm


    Son iki güne ait günlük verileri gibi güncel veriler.


    Yüksek


    Yüksek; örneğin 32 çekirdek 64 GB.


    SSD bulut disk önerilir.


    warm düğüm


    İki günden eski günlük verileri gibi geçmiş veriler.


    Düşük


    Düşük; örneğin 8 çekirdek 32 GB.


    Ultra disk önerilir. Büyük miktardaki cold veriler için sunucusuz depolama uygulamak amacıyla OpenStore da kullanabilirsiniz.

    Alibaba Cloud Elasticsearch'te warm düğüm için box_type değeri warm şeklindedir, cold değildir. Bunun nedeni, Alibaba Cloud Elasticsearch'teki warm düğümlerin yerel Elasticsearch mimarisindeki warm katmanına karşılık gelmesidir.
    1. Bir Alibaba Cloud Elasticsearch örneği oluştururken Warm nodes seçeneğini etkinleştirerek bir hot-warm kümesi oluşturun.

      Warm düğümleri etkinleştirip satın aldığınızda sistem, düğüm başlatma parametrelerine -Enode.attr.box_type parametresini ekler:

      • Hot düğüm: -Enode.attr.box_type=hot

      • Warm düğüm: -Enode.attr.box_type=warm

      Warm düğümlerin etkinleştirilmesi, mevcut veri düğümlerinizin hot düğüm olarak atanmasına neden olur.
    2. Kümenin Kibana konsolunda oturum açın. Daha fazla bilgi için bkz. Kibana kullanarak bir kümeye bağlanma.

    3. Sol gezinme bölmesinde Dev Tools seçeneğine tıklayın.

    4. Console alanında kümedeki hot ve warm düğümlerin niteliklerini görüntülemek için aşağıdaki komutu çalıştırın.

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

      Çıktıda hot ve warm düğümler yer alıyorsa küme hot-warm mimarisini destekler.

  2. Küme için otomatik dizin oluşturmayı etkinleştirin. Daha fazla bilgi için bkz. YML parametrelerini yapılandırarak otomatik dizin oluşturmayı etkinleştirme.

  3. Kümeye genel erişim için bir IP izin listesi yapılandırın ve Heartbeat'in yüklü olduğu sunucunun IP adresini izin listesine ekleyin. Daha fazla bilgi için bkz. IP izin listesi yapılandırma.

Adım 2: Heartbeat'te ILM'i yapılandırma

ILM yapılandırma hakkında daha fazla bilgi için bkz. Set up index lifecycle management.

  1. Heartbeat kurulum paketini indirin ve sıkıştırılmış dosyayı açın.

  2. heartbeat.yml dosyasını düzenleyerek heartbeat.monitors, setup.template.settings, setup.kibana ve output.elasticsearch bölümlerini tanımlayın.

    Aşağıdaki örnek bir yapılandırma göstermektedir.

    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>"

    Aşağıdaki tabloda bazı parametreler açıklanmaktadır. Daha fazla bilgi için bkz. Heartbeat configuration documentation.


    Parametre


    Açıklama


    index.number_of_shards


    Birincil parça sayısı. Varsayılan değer 1'dir.


    index.routing.allocation.require.box_type


    Dizin verilerinin hot düğümlere yazılacağını belirtir.


    setup.template.overwrite


    Orijinal dizin şablonunun üzerine yazılıp yazılmayacağını belirtir. Bu sürümdeki dizin şablonunu zaten Elasticsearch'e yüklediyseniz orijinal şablonun üzerine yazmak için bu parametreyi true olarak ayarlamanız gerekir. Bu, setup.template.settings ile aynı düzeyde bulunan üst düzey bir yapılandırma öğesidir.


    host


    Değeri Kibana hizmetinizin genel uç noktasıyla değiştirin. Uç noktayı Kibana yapılandırma sayfasından edinebilirsiniz.


    hosts


    Değeri Elasticsearch kümenizin genel veya özel uç noktasıyla değiştirin. Uç noktayı kümenin Temel Bilgiler sayfasından edinebilirsiniz. Daha fazla bilgi için bkz. Örneğin temel bilgilerini görüntüleme. Bu parametreyi genel uç nokta olarak ayarlarsanız kümeye genel erişim için bir IP izin listesi yapılandırmanız gerekir. Daha fazla bilgi için bkz. IP izin listesi yapılandırma. Bu parametreyi özel uç nokta olarak ayarlarsanız küme ile Heartbeat'i barındıran sunucunun aynı VPC içinde olduğundan emin olun.


    ilm.enabled


    ILM'i etkinleştirmek için bu parametreyi true olarak ayarlayın.


    ilm.rollover_alias


    Devretme sırasında oluşturulan dizin için takma ad. Varsayılan değer heartbeat-{beat.version} şeklindedir.


    ilm.pattern


    Devretme sırasında oluşturulan dizin için desen. Bu parametre date math kullanımını destekler. Varsayılan değer {now/d}-000001 şeklindedir. Devretme tetiklendiğinde dizin adındaki sayısal sayaç 1 artırılır. Örneğin, ilk devretme heartbeat-2020.04.29-000001 adlı bir dizin oluşturursa sonraki devretme heartbeat-2020.04.29-000002 adlı yeni bir dizin oluşturur.


    username


    Varsayılan kullanıcı adı elastic şeklindedir.


    password

    elastic kullanıcısının parolası. Parola örneği oluştururken belirlenir. Parolayı unutursanız sıfırlayabilirsiniz. Daha fazla bilgi için bkz. Örneğin erişim parolasını sıfırlama.

    Önemli

    Dizin şablonunu yükledikten sonra ilm.rollover_alias veya ilm.pattern değerlerini değiştirirseniz şablonun üzerine yazmak için setup.template.overwrite değerini true olarak ayarlamanız gerekir.

  3. Heartbeat hizmetini başlatın.

    sudo ./heartbeat -e

Adım 3: ILM ilkesi oluşturma

Elasticsearch'te bir ILM ilkesini API veya Kibana konsolu aracılığıyla oluşturabilirsiniz. Aşağıdaki örnekte API kullanılarak heartbeat-policy ilkesinin nasıl oluşturulacağı gösterilmektedir.

Heartbeat, ./heartbeat setup --ilm-policy komutuyla varsayılan bir ilkeyi yükleyip Elasticsearch'e yazabilir. Özel bir ilke oluşturmak için ./heartbeat export ilm-policy komutuyla varsayılan ilkeyi dışa aktarın ve ardından düzenleyin.

Kibana konsolunda bir ILM ilkesi oluşturmak için aşağıdaki komutu çalıştırın.

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


Aşama


Açıklama


hot


Dizin boyutu 5 MB'a ulaştığında, dizin yaşı 1 güne geldiğinde veya belge sayısı 100'e ulaştığında devretme tetiklenir. rollover eylemi max_docs, max_size ve max_age koşullarını destekler; bu koşullardan herhangi biri karşılandığında gerçekleşir. Devretmeden sonra eski dizin 60 saniyelik bir gecikmeyle warm aşamasına geçer.


warm


Dizin tek bir parçaya daraltılır ve ardından tek bir segmentte zorla birleştirilir. Dizin daha sonra devretmeden üç dakika sonra cold aşamasına geçer.


cold


Dizin hot düğümden warm düğüme taşınır ve bir saat sonra delete aşamasına geçer.


delete


Dizin silinir.

İlke oluşturulduktan sonra ilke adı değiştirilemez. İlkeyi Kibana konsolunda da oluşturabilirsiniz. Ancak Kibana'da max_age için en küçük birim saattir. API kullanıldığında en küçük birim saniye cinsinden belirtilebilir.

Adım 4: ILM ilkesini bir dizin şablonuyla ilişkilendirme

Heartbeat'i başlattığınızda Elasticsearch'te otomatik olarak bir Heartbeat dizin şablonu oluşturulur. Adım 3: ILM ilkesi oluşturma bölümünde oluşturduğunuz heartbeat-policy ilkesini bu dizin şablonuyla ilişkilendirin.

  1. Alibaba Cloud Elasticsearch örneğinizin Kibana konsolunda oturum açın. Daha fazla bilgi için bkz. Kibana kullanarak bir kümeye bağlanma.

  2. Sol gezinme bölmesinde Management seçeneğine tıklayın.

  3. Elasticsearch alanında Index Lifecycle Policies seçeneğine tıklayın.

  4. Index lifecycle policies listesinde heartbeat-policy ilkesini bulun ve ilke satırında Actions > Add policy to index template seçeneklerini belirleyin.

  5. Görüntülenen iletişim kutusunda Index template listesinden dizin şablonunu seçin ve Alias for rollover index metin kutusuna bir dizin takma adı girin.

  6. Add policy seçeneğine tıklayın.

Adım 5: Bir dizini ILM ilkesiyle ilişkilendirme

Heartbeat'i başlattığınızda Elasticsearch otomatik olarak bir dizin oluşturur. Varsayılan ilkesini geçersiz kılmak için ILM ilkesini bu ilk dizinle manuel olarak ilişkilendirmeniz gerekir. İlke, Adım 4: ILM ilkesini bir dizin şablonuyla ilişkilendirme bölümünde açıklandığı gibi dizin şablonuyla zaten ilişkili olsa da bu işlem gereklidir.

  1. Management sayfasında Elasticsearch alanında Index Management seçeneğine tıklayın.

  2. Index management listesinde hedef dizini bulun ve dizin adına tıklayın.

  3. Summary sayfasında Manage > Remove lifecycle policy seçeneklerini belirleyerek Heartbeat ile gelen varsayılan ilkeyi kaldırın.

  4. Görüntülenen iletişim kutusunda Remove policy seçeneğine tıklayın.

  5. Ardından Manage > Add lifecycle policy seçeneklerini belirleyin.

  6. Görüntülenen iletişim kutusunda Lifecycle policy listesinden Adım 3: ILM ilkesi oluşturma bölümünde oluşturduğunuz heartbeat-policy ilkesini seçin. Index rollover alias metin kutusuna Adım 4: ILM ilkesini bir dizin şablonuyla ilişkilendirme bölümünde tanımladığınız dizin takma adını girin. Ardından Add policy seçeneğine tıklayın.

Adım 6: Her aşamadaki dizinleri görüntüleme

Index management sayfasında Lifecycle phase açılan listesine tıklayın ve o aşamadaki dizinleri filtreleyip görüntülemek için Hot, Warm veya Cold gibi bir yaşam döngüsü aşaması seçin.

SSS

ILM ilkesi denetim sıklığını nasıl ayarlayabilirim?

Varsayılan olarak ILM, bir ilkeyle eşleşen dizinleri her 10 dakikada bir denetler. Bu aralıkta veri miktarı belirtilen eşiği aşabilir. Örneğin, Adım 3: ILM ilkesi oluşturma bölümünde max_docs değeri 100 olarak ayarlanmıştır ancak belge sayısı zaten 100'ü aşana kadar devretme tetiklenmeyebilir.

indices.lifecycle.poll_interval parametresini değiştirerek denetim sıklığını kontrol edebilirsiniz:

Önemli

Yüksek bir denetim sıklığı düğüm yükünü artırır. Bu parametreyi iş gereksinimlerinize göre dikkatli bir şekilde yapılandırın.

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