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
-
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.
-
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.
-
Dizin devretme ve arşivleme koşullarını tanımlayan bir ilke oluşturmak için ILM ilke API'sini kullanın.
-
Adım 4: ILM ilkesini bir dizin şablonuyla ilişkilendirme
ILM ilkesini Heartbeat dizin şablonuyla ilişkilendirin.
-
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.
-
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
-
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_typedeğeriwarmşeklindedir,colddeğildir. Bunun nedeni, Alibaba Cloud Elasticsearch'teki warm düğümlerin yerel Elasticsearch mimarisindeki warm katmanına karşılık gelmesidir.-
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_typeparametresini ekler:Hot düğüm:
-Enode.attr.box_type=hotWarm düğüm:
-Enode.attr.box_type=warm
Warm düğümlerin etkinleştirilmesi, mevcut veri düğümlerinizin hot düğüm olarak atanmasına neden olur.
Kümenin Kibana konsolunda oturum açın. Daha fazla bilgi için bkz. Kibana kullanarak bir kümeye bağlanma.
Sol gezinme bölmesinde Dev Tools seçeneğine tıklayın.
-
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.
-
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.
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.
Heartbeat kurulum paketini indirin ve sıkıştırılmış dosyayı açın.
-
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 parametreyitrueolarak ayarlamanız gerekir. Bu,setup.template.settingsile 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 parametreyitrueolarak ayarlayın.
ilm.rollover_alias
Devretme sırasında oluşturulan dizin için takma ad. Varsayılan değerheartbeat-{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 devretmeheartbeat-2020.04.29-000001adlı bir dizin oluşturursa sonraki devretmeheartbeat-2020.04.29-000002adlı yeni bir dizin oluşturur.
username
Varsayılan kullanıcı adıelasticşeklindedir.
passwordelastickullanı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.ÖnemliDizin şablonunu yükledikten sonra
ilm.rollover_aliasveyailm.patterndeğerlerini değiştirirseniz şablonun üzerine yazmak içinsetup.template.overwritedeğerinitrueolarak ayarlamanız gerekir. -
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": {}
}
}
}
}
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
İ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.
Alibaba Cloud Elasticsearch örneğinizin Kibana konsolunda oturum açın. Daha fazla bilgi için bkz. Kibana kullanarak bir kümeye bağlanma.
Sol gezinme bölmesinde Management seçeneğine tıklayın.
Elasticsearch alanında Index Lifecycle Policies seçeneğine tıklayın.
Index lifecycle policies listesinde heartbeat-policy ilkesini bulun ve ilke satırında Actions > Add policy to index template seçeneklerini belirleyin.
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.
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.
Management sayfasında Elasticsearch alanında Index Management seçeneğine tıklayın.
Index management listesinde hedef dizini bulun ve dizin adına tıklayın.
Summary sayfasında Manage > Remove lifecycle policy seçeneklerini belirleyerek Heartbeat ile gelen varsayılan ilkeyi kaldırın.
Görüntülenen iletişim kutusunda Remove policy seçeneğine tıklayın.
Ardından Manage > Add lifecycle policy seçeneklerini belirleyin.
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:
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"
}
}