ืฉืื ืืืืืจ ืกืืืืจื ืงื, ืื ื ืืืืื ืืื ื ืืฆืืืช ืืื ืืืื ืฉืืชืืืง ืืช ืื ืืชืฉืชืืช ืฉื Domclick.
ืื ื ืจืืฆื ืืืืืง ืืช ืื ืืกืืื ืฉืื ืืืืืจืช ืืืกืื ื ืชืื ืื ืืืืืจ ื- Elasticsearch. ื ืืื ืืืื ืืืืจืืช ืืฆืืชืื ืืืจืืืืช ืืืคืฆื ืฉื ืจืกืืกืื, ืืื ILM ืขืืื ืืคืืขื.
ืื ืฉืขืืื ืขื ืืืื ืื, ืืืจื ืื ืื ืืืจืช, ืืชืืืื ืขื ืืืขืื ืฉื ืืืกืื ืืืืื ืืจืื ืืฆืืจื ื ืืชืื ืืืืืจ ืืืชืจ. ื- Elasticsearch ืื ื ืืื ืืืืืื, ืื ืืื ืืื ืืฆืขืจ ืขื ืคืื ืงืฆืืื ืืืืช ืืืืฆืจ. ืืจืกื 6.6 ืืฆืืื ืคืื ืงืฆืืื ืืืืช ILM. ืื ืืืจืื ื-4 ืฉืืืื:
- ืื - ืืืื ืืงืก ืืชืขืืื ืืฉืืืืชื ืืืืคื ืคืขืื.
- ืื - ืืืื ืืงืก ืืืจ ืื ืืขืืืื, ืืื ืขืืืื ื ืืฆื ืืฉืืืืชื.
- ืงืจ - ืืืื ืืงืก ืืื ื ืืขืืืื ืืืชืจ ืืืขืชืื ืจืืืงืืช ื ืฉืืืช ืฉืืืืชื. ืืืืืข ืขืืืื ืืืื ืืืืืช ื ืืชื ืืืืคืืฉ, ืื ืืืชืื ืฉืืฉืืืืชืืช ืืืื ืืืืืืช ืืืชืจ.
- ืืืง - ืืื ืฆืืจื ืืืชืจ ืืืื ืืงืก ืื ืืชื ืืืืืง ืืืชื ืืืืื.
ื ึธืชืึผื
- Elasticsearch Data Hot: 24 ืืขืืืื, 128 ื'ืืื-ืืืื ืืืืจืื, 1,8 TB SSD RAID 10 (8 ืฆืืชืื).
- Elasticsearch Data Warm: 24 ืืขืืืื, 64 GB ืืืืจืื, 8 TB NetApp SSD Policy (4 ืฆืืชืื).
- Elasticsearch Data Cold: 8 ืืขืืืื, ืืืืจืื ืฉื 32 ื'ืืื-ืืืื, RAID 128 HDD 10 TB (4 ืฆืืชืื).
ืืขื
ืืืืจืืช ืืื ืืื ืืืืืืืืืืืช, ืืื ืชืืื ืืืงืื ืืฆืืชืื, ืืืกืคืจ ืืืื ืืงืกืื, ืืืืื ืื ืืื'. ืืฉ ืื ื 2-3 TB ืฉื ื ืชืื ืื ืืืื.
- 5 ืืืื - ืฉืื ืื (8 ืจืืฉื / 1 ืืขืชืง).
- 20 ืืืื - ืฉืื ืื (
ืืืืืฅ ืืื ืืงืก 4 ืืขืชืง ืจืืฉื / 1 ืืขืชืง). - 90 ืืืื - ืฉืื ืงืจ (
ืืื ืืงืคืื 4 ืืขืชืง ืจืืฉื / 1 ืืขืชืง). - 120 ืืืื - ืฉืื ืืืืงืช.
ืืืืจืช Elasticsearch
ืืื ืืืคืืฅ ืจืกืืกืื ืขื ืคื ื ืฆืืชืื, ืืชื ืฆืจืื ืจืง ืคืจืืืจ ืืื:
- ืึทื-ืฆืืชืื:
~]# cat /etc/elasticsearch/elasticsearch.yml | grep attr # Add custom attributes to the node: node.attr.box_type: hot
- ืื-ืฆืืชืื:
~]# cat /etc/elasticsearch/elasticsearch.yml | grep attr # Add custom attributes to the node: node.attr.box_type: warm
- ืงืจ-ืฆืืชืื:
~]# cat /etc/elasticsearch/elasticsearch.yml | grep attr # Add custom attributes to the node: node.attr.box_type: cold
ืืืืจืช Logstash
ืืื ืื ืื ืขืืื ืืืื ืืืืขื ื ืืช ืืชืืื ื ืืื? ื ืชืืื ืืืื ืกืช ืืืื ืื ืื Elasticsearch. ืืฉื ื ืฉืชื ืืจืืื:
- Logstash ืืืื ืืืื ื ืงืคืงื. ืืืื ืืืจืื ื ืงื ืื ืืืืืจ ืืฆื ืฉืื.
- ืืฉืื ืืขืฆืื ืืืชื ืื Elasticsearch, ืืืฉื, ืฉืจืช APM.
ืฉืงืื ืืืืื ืื ืืืื ืืื ืืงืกืื ืืืืฆืขืืช Logstash. ืื ืืืฆืจ ืืื ืืงืก ืืื ืขืืื
k8s-ingress.conf
input {
kafka {
bootstrap_servers => "node01, node02, node03"
topics => ["ingress-k8s"]
decorate_events => false
codec => "json"
}
}
filter {
ruby {
path => "/etc/logstash/conf.d/k8s-normalize.rb"
}
if [log] =~ "[warn]" or [log] =~ "[error]" or [log] =~ "[notice]" or [log] =~ "[alert]" {
grok {
match => { "log" => "%{DATA:[nginx][error][time]} [%{DATA:[nginx][error][level]}] %{NUMBER:[nginx][error][pid]}#%{NUMBER:[nginx][error][tid]}: *%{NUMBER:[nginx][error][connection_id]} %{DATA:[nginx][error][message]}, client: %{IPORHOST:[nginx][error][remote_ip]}, server: %{DATA:[nginx][error][server]}, request: "%{WORD:[nginx][error][method]} %{DATA:[nginx][error][url]} HTTP/%{NUMBER:[nginx][error][http_version]}", (?:upstream: "%{DATA:[nginx][error][upstream][proto]}://%{DATA:[nginx][error][upstream][host]}:%{DATA:[nginx][error][upstream][port]}/%{DATA:[nginx][error][upstream][url]}", )?host: "%{DATA:[nginx][error][host]}"(?:, referrer: "%{DATA:[nginx][error][referrer]}")?" }
remove_field => "log"
}
}
else {
grok {
match => { "log" => "%{IPORHOST:[nginx][access][host]} - [%{IPORHOST:[nginx][access][remote_ip]}] - %{DATA:[nginx][access][remote_user]} [%{HTTPDATE:[nginx][access][time]}] "%{WORD:[nginx][access][method]} %{DATA:[nginx][access][url]} HTTP/%{NUMBER:[nginx][access][http_version]}" %{NUMBER:[nginx][access][response_code]} %{NUMBER:[nginx][access][bytes_sent]} "%{DATA:[nginx][access][referrer]}" "%{DATA:[nginx][access][agent]}" %{NUMBER:[nginx][access][request_lenght]} %{NUMBER:[nginx][access][request_time]} [%{DATA:[nginx][access][upstream][name]}] (?:-|%{IPORHOST:[nginx][access][upstream][addr]}:%{NUMBER:[nginx][access][upstream][port]}) (?:-|%{NUMBER:[nginx][access][upstream][response_lenght]}) %{DATA:[nginx][access][upstream][response_time]} %{DATA:[nginx][access][upstream][status]} %{DATA:[nginx][access][request_id]}" }
remove_field => "log"
}
}
}
output {
elasticsearch {
id => "k8s-ingress"
hosts => ["node01", "node02", "node03", "node04", "node05", "node06", "node07", "node08"]
manage_template => true # ะฒะบะปััะฐะตะผ ัะฟัะฐะฒะปะตะฝะธะต ัะฐะฑะปะพะฝะฐะผะธ
template_name => "k8s-ingress" # ะธะผั ะฟัะธะผะตะฝัะตะผะพะณะพ ัะฐะฑะปะพะฝะฐ
ilm_enabled => true # ะฒะบะปััะฐะตะผ ัะฟัะฐะฒะปะตะฝะธะต ILM
ilm_rollover_alias => "k8s-ingress" # alias ะดะปั ะทะฐะฟะธัะธ ะฒ ะธะฝะดะตะบัั, ะดะพะปะถะตะฝ ะฑััั ัะฝะธะบะฐะปัะฝัะผ
ilm_pattern => "{now/d}-000001" # ัะฐะฑะปะพะฝ ะดะปั ัะพะทะดะฐะฝะธั ะธะฝะดะตะบัะพะฒ, ะผะพะถะตั ะฑััั ะบะฐะบ "{now/d}-000001" ัะฐะบ ะธ "000001"
ilm_policy => "k8s-ingress" # ะฟะพะปะธัะธะบะฐ ะฟัะธะบัะตะฟะปัะตะผะฐั ะบ ะธะฝะดะตะบัั
index => "k8s-ingress-%{+YYYY.MM.dd}" # ะฝะฐะทะฒะฐะฝะธะต ัะพะทะดะฐะฒะฐะตะผะพะณะพ ะธะฝะดะตะบัะฐ, ะผะพะถะตั ัะพะดะตัะถะฐัั %{+YYYY.MM.dd}, ะทะฐะฒะธัะธั ะพั ilm_pattern
}
}
ืืชืงื ื ืฉื Kibana
ืืฉ ืืคืืก ืืกืืก ืฉืืชืืื ืืื ืืืื ืืงืกืื ืืืืฉืื. ืืื ืงืืืข ืืช ืืชืคืืืืช ืืืื ืืงืกืื ืืืืื, ืืกืคืจ ืืจืกืืกืื, ืืขืชืงืื ืืื'. ืืฉืงื ืืชืื ืืช ื ืงืืข ืืคื ืืืืคืฆืื order
. ืชืื ืืืช ืขื ืืฉืงื ืืืื ืืืชืจ ืขืืงืคืืช ืคืจืืืจืื ืงืืืืื ืฉื ืชืื ืืืช ืื ืืืกืืคืื ืืืฉืื.
GET_template/default
{
"default" : {
"order" : -1, # ะฒะตั ัะฐะฑะปะพะฝะฐ
"version" : 1,
"index_patterns" : [
"*" # ะฟัะธะผะตะฝัะตะผ ะบะพ ะฒัะตะผ ะธะฝะดะตะบัะฐะผ
],
"settings" : {
"index" : {
"codec" : "best_compression", # ััะพะฒะตะฝั ัะถะฐัะธั
"routing" : {
"allocation" : {
"require" : {
"box_type" : "hot" # ัะฐัะฟัะตะดะตะปัะตะผ ัะพะปัะบะพ ะฟะพ ะณะพัััะธะผ ะฝะพะดะฐะผ
},
"total_shards_per_node" : "8" # ะผะฐะบัะธะผะฐะปัะฝะพะต ะบะพะปะธัะตััะฒะพ ัะฐัะดะพะฒ ะฝะฐ ะฝะพะดั ะพั ะพะดะฝะพะณะพ ะธะฝะดะตะบัะฐ
}
},
"refresh_interval" : "5s", # ะธะฝัะตัะฒะฐะป ะพะฑะฝะพะฒะปะตะฝะธั ะธะฝะดะตะบัะฐ
"number_of_shards" : "8", # ะบะพะปะธัะตััะฒะพ ัะฐัะดะพะฒ
"auto_expand_replicas" : "0-1", # ะบะพะปะธัะตััะฒะพ ัะตะฟะปะธะบ ะฝะฐ ะฝะพะดั ะพั ะพะดะฝะพะณะพ ะธะฝะดะตะบัะฐ
"number_of_replicas" : "1" # ะบะพะปะธัะตััะฒะพ ัะตะฟะปะธะบ
}
},
"mappings" : {
"_meta" : { },
"_source" : { },
"properties" : { }
},
"aliases" : { }
}
}
ืืืืจ ืืื ืืื ืืช ืืืืคืื ืขื ืืืื ืืงืกืื k8s-ingress-*
ืืืืฆืขืืช ืชืื ืืช ืืขืืช ืืฉืงื ืืืื ืืืชืจ.
GET _template/k8s-ingress
{
"k8s-ingress" : {
"order" : 100,
"index_patterns" : [
"k8s-ingress-*"
],
"settings" : {
"index" : {
"lifecycle" : {
"name" : "k8s-ingress",
"rollover_alias" : "k8s-ingress"
},
"codec" : "best_compression",
"routing" : {
"allocation" : {
"require" : {
"box_type" : "hot"
}
}
},
"number_of_shards" : "8",
"number_of_replicas" : "1"
}
},
"mappings" : {
"numeric_detection" : false,
"_meta" : { },
"_source" : { },
"dynamic_templates" : [
{
"all_fields" : {
"mapping" : {
"index" : false,
"type" : "text"
},
"match" : "*"
}
}
],
"date_detection" : false,
"properties" : {
"kubernetes" : {
"type" : "object",
"properties" : {
"container_name" : {
"type" : "keyword"
},
"container_hash" : {
"index" : false,
"type" : "keyword"
},
"host" : {
"type" : "keyword"
},
"annotations" : {
"type" : "object",
"properties" : {
"value" : {
"index" : false,
"type" : "text"
},
"key" : {
"index" : false,
"type" : "keyword"
}
}
},
"docker_id" : {
"index" : false,
"type" : "keyword"
},
"pod_id" : {
"type" : "keyword"
},
"labels" : {
"type" : "object",
"properties" : {
"value" : {
"type" : "keyword"
},
"key" : {
"type" : "keyword"
}
}
},
"namespace_name" : {
"type" : "keyword"
},
"pod_name" : {
"type" : "keyword"
}
}
},
"@timestamp" : {
"type" : "date"
},
"nginx" : {
"type" : "object",
"properties" : {
"access" : {
"type" : "object",
"properties" : {
"agent" : {
"type" : "text"
},
"response_code" : {
"type" : "integer"
},
"upstream" : {
"type" : "object",
"properties" : {
"port" : {
"type" : "keyword"
},
"name" : {
"type" : "keyword"
},
"response_lenght" : {
"type" : "integer"
},
"response_time" : {
"index" : false,
"type" : "text"
},
"addr" : {
"type" : "keyword"
},
"status" : {
"index" : false,
"type" : "text"
}
}
},
"method" : {
"type" : "keyword"
},
"http_version" : {
"type" : "keyword"
},
"bytes_sent" : {
"type" : "integer"
},
"request_lenght" : {
"type" : "integer"
},
"url" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword"
}
}
},
"remote_user" : {
"type" : "text"
},
"referrer" : {
"type" : "text"
},
"remote_ip" : {
"type" : "ip"
},
"request_time" : {
"format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis||dd/MMM/YYYY:H:m:s Z",
"type" : "date"
},
"host" : {
"type" : "keyword"
},
"time" : {
"format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis||dd/MMM/YYYY:H:m:s Z",
"type" : "date"
}
}
},
"error" : {
"type" : "object",
"properties" : {
"server" : {
"type" : "keyword"
},
"upstream" : {
"type" : "object",
"properties" : {
"port" : {
"type" : "keyword"
},
"proto" : {
"type" : "keyword"
},
"host" : {
"type" : "keyword"
},
"url" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword"
}
}
}
}
},
"method" : {
"type" : "keyword"
},
"level" : {
"type" : "keyword"
},
"http_version" : {
"type" : "keyword"
},
"pid" : {
"index" : false,
"type" : "integer"
},
"message" : {
"type" : "text"
},
"tid" : {
"index" : false,
"type" : "keyword"
},
"url" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword"
}
}
},
"referrer" : {
"type" : "text"
},
"remote_ip" : {
"type" : "ip"
},
"connection_id" : {
"index" : false,
"type" : "keyword"
},
"host" : {
"type" : "keyword"
},
"time" : {
"format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||epoch_millis||dd/MMM/YYYY:H:m:s Z",
"type" : "date"
}
}
}
}
},
"log" : {
"type" : "text"
},
"@version" : {
"type" : "text",
"fields" : {
"keyword" : {
"ignore_above" : 256,
"type" : "keyword"
}
}
},
"eventtime" : {
"type" : "float"
}
}
},
"aliases" : { }
}
}
ืืืืจ ืืืืช ืื ืืชืื ืืืช, ืื ื ืืืืฉืืื ืืช ืืืื ืืืช ILM ืืืชืืืืื ืืขืงืื ืืืจ ืืื ืืืื ืืงืกืื.
ืงืื _ilm/policy/k8s-ingress
{
"k8s-ingress" : {
"version" : 14,
"modified_date" : "2020-06-11T10:27:01.448Z",
"policy" : {
"phases" : {
"warm" : { # ัะตะฟะปะฐั ัะฐะทะฐ
"min_age" : "5d", # ััะพะบ ะถะธะทะฝะธ ะธะฝะดะตะบัะฐ ะฟะพัะปะต ัะพัะฐัะธะธ ะดะพ ะฝะฐัััะฟะปะตะฝะธั ัะตะฟะปะพะน ัะฐะทั
"actions" : {
"allocate" : {
"include" : { },
"exclude" : { },
"require" : {
"box_type" : "warm" # ะบัะดะฐ ะฟะตัะตะผะตัะฐะตะผ ะธะฝะดะตะบั
}
},
"shrink" : {
"number_of_shards" : 4 # ะพะฑัะตะทะฐะฝะธะต ะธะฝะดะตะบัะพะฒ, ั.ะบ. ั ะฝะฐั 4 ะฝะพะดั
}
}
},
"cold" : { # ั
ะพะปะพะดะฝะฐั ัะฐะทะฐ
"min_age" : "25d", # ััะพะบ ะถะธะทะฝะธ ะธะฝะดะตะบัะฐ ะฟะพัะปะต ัะพัะฐัะธะธ ะดะพ ะฝะฐัััะฟะปะตะฝะธั ั
ะพะปะพะดะฝะพะน ัะฐะทั
"actions" : {
"allocate" : {
"include" : { },
"exclude" : { },
"require" : {
"box_type" : "cold" # ะบัะดะฐ ะฟะตัะตะผะตัะฐะตะผ ะธะฝะดะตะบั
}
},
"freeze" : { } # ะทะฐะผะพัะฐะถะธะฒะฐะตะผ ะดะปั ะพะฟัะธะผะธะทะฐัะธะธ
}
},
"hot" : { # ะณะพัััะฐั ัะฐะทะฐ
"min_age" : "0ms",
"actions" : {
"rollover" : {
"max_size" : "50gb", # ะผะฐะบัะธะผะฐะปัะฝัะน ัะฐะทะผะตั ะธะฝะดะตะบัะฐ ะดะพ ัะพัะฐัะธะธ (ะฑัะดะตั ั
2, ั.ะบ. ะตััั 1 ัะตะฟะปะธะบะฐ)
"max_age" : "1d" # ะผะฐะบัะธะผะฐะปัะฝัะน ััะพะบ ะถะธะทะฝะธ ะธะฝะดะตะบัะฐ ะดะพ ัะพัะฐัะธะธ
},
"set_priority" : {
"priority" : 100
}
}
},
"delete" : { # ัะฐะทะฐ ัะดะฐะปะตะฝะธั
"min_age" : "120d", # ะผะฐะบัะธะผะฐะปัะฝัะน ััะพะบ ะถะธะทะฝะธ ะฟะพัะปะต ัะพัะฐัะธะธ ะฟะตัะตะด ัะดะฐะปะตะฝะธะตะผ
"actions" : {
"delete" : { }
}
}
}
}
}
}
ืืขืืืช
ืืื ืืขืืืช ืืฉืื ืืืชืงื ื ืืืืชืืจ ืืืืืื.
ืฉืื ืื
ืืกืืืื ื ืืื ืฉื ืืืืืื, ืื ืืืืืช ืืกืืฃ ืืื ืงืจืืืืช index_name-date-000026
ืคืืจืื ืืกืคืจืื 000001
. ืืฉื ื ืฉืืจืืช ืืงืื ืฉืืืืงืืช ืืื ืืงืกืื ืืืืฆืขืืช ืืืืื ืจืืืืจื ืื ืืืืืช ืฉื ืืกืคืจืื ืืกืืฃ. ืืืจืช, ืชืืื ืฉืืืื, ืื ืชืืื ืคืืืืกืืช ืขื ืืืื, ืืืื ืชืืื ืืืื ืืฉืื ืืื.
ืฉืื ืื
ืคืกืืืืืื (cutoff) โ ืืคืืชืช ืืกืคืจ ืืจืกืืกืื, ืืืืืื ืฉืืฉ ืื ื 4 ืฆืืชืื ืืฉืืืื ืืืืื ืืืงืจืื. ืืชืืขืื ืืืื ืืช ืืฉืืจืืช ืืืืืช:
- ืืืื ืืงืก ืืืื ืืืืืช ืืงืจืืื ืืืื.
- ืขืืชืง ืฉื ืื ืจืกืืก ืืืื ืืงืก ืืืื ืืืืืฆื ืืืืชื ืฆืืืช.
- ืืฆื ืืจืืืืช ืืืฉืืื ืืืื ืืืืืช ืืจืืง.
ืืื ืืืืื ืืื ืืงืก, Elasticsearch ืืขืืืจ ืืช ืื ืืจืกืืกืื ืืจืืฉืืื ืืฆืืืช ืืื, ืืฉืืคื ืืช ืืืื ืืงืก ืืงืืืข ืขื ืืคืจืืืจืื ืืืจืืฉืื, ืืื ืืืืง ืืช ืืืฉื. ืคึผึธืจึธืึถืึถืจ total_shards_per_node
ืืืื ืืืืืช ืฉืืื ืื ืืืื ืืืกืคืจ ืืจืกืืกืื ืืจืืฉืืื ืืื ืืืชืืื ืืฆืืืช ืืื. ืืืจืช, ืืืื ืืืืขืืช ืืจืกืืกืื ืื ืืขืืจื ืืฆืืชืื ืื ืืื ืื.
GET /shrink-k8s-ingress-2020.06.06-000025/_settings
{
"shrink-k8s-ingress-2020.06.06-000025" : {
"settings" : {
"index" : {
"refresh_interval" : "5s",
"auto_expand_replicas" : "0-1",
"blocks" : {
"write" : "true"
},
"provided_name" : "shrink-k8s-ingress-2020.06.06-000025",
"creation_date" : "1592225525569",
"priority" : "100",
"number_of_replicas" : "1",
"uuid" : "psF4MiFGQRmi8EstYUQS4w",
"version" : {
"created" : "7060299",
"upgraded" : "7060299"
},
"lifecycle" : {
"name" : "k8s-ingress",
"rollover_alias" : "k8s-ingress",
"indexing_complete" : "true"
},
"codec" : "best_compression",
"routing" : {
"allocation" : {
"initial_recovery" : {
"_id" : "_Le0Ww96RZ-o76bEPAWWag"
},
"require" : {
"_id" : null,
"box_type" : "cold"
},
"total_shards_per_node" : "8"
}
},
"number_of_shards" : "4",
"routing_partition_size" : "1",
"resize" : {
"source" : {
"name" : "k8s-ingress-2020.06.06-000025",
"uuid" : "gNhYixO6Skqi54lBjg5bpQ"
}
}
}
}
}
}
ืฉืื ืงืจ
ืืืงืคืื (ืืงืคืื) - ืื ื ืืงืคืืืื ืืช ืืืื ืืงืก ืืื ืืืืขื ืฉืืืืชืืช ืขื ื ืชืื ืื ืืืกืืืจืืื.
ืืืคืืฉืื ืืืืืฆืขืื ืขื ืืืืื ืงืคืืืื ืืฉืชืืฉืื ื-threadpool ืืงืื, ืืืืขืืื, search_throttled ืืื ืืฉืืื ืืืกืคืจ ืืืืคืืฉืื ืืืงืืื ืฉืคืืขื ืืจืกืืกืื ืงืคืืืื ืืื ืฆืืืช. ืื ืืืืื ืืช ืืืืช ืืืืืจืื ืื ืืกืฃ ืื ืืจืฉืช ืขืืืจ ืืื ื ืื ืชืื ืื ืืืืืคืื ืืชืืืืื ืืจืกืืกืื ืงืคืืืื, ืืฉืจ ืืชืืฆืื ืืื ืืื ืขื ืฆืืชืื ืืคื ื ืฆืจืืืช ืืืืจืื ืืืืืืช.
ืืืืื ืงืคืืืื ืื ืืงืจืืื ืืืื: ืืื ื ืืืื ืืืืื ืก ืืืืื ืืืื ืืงืก.
ืืืคืืฉืื ืขื ืืืืื ืงืคืืืื ืฆืคืืืื ืืืชืืฆืข ืืืืืืืช. ืืืืื ืงืคืืืื ืืื ื ืืืืขืืื ืืขืืืก ืืืคืืฉ ืืืื. ืืืชืื ืฉืืืคืืฉ ืฉื ืืื ืืงืก ืงืคืื ืขืฉืื ืืืืืฉื ืฉื ืืืช ืื ืืงืืช ืืืฉืืืชื, ืื ืื ืืืชื ืืืคืืฉืื ืืืฉืืื ืืืืคืืืช ืฉื ืืืช ืืืฉืจ ืืืืืื ืื ืืืงืคืื.
ืชืืฆืืืช ืฉื
ืืืื ื ืืืฆื ืืืืื ืฆืืชืื ืืขืืืื ืขื ILM, ืืืืืืจ ืชืื ืืช ืืืืืงืช ืจืกืืกืื ืืื ืฆืืชืื ืืืื, ืืืืืืืจ ืืช ILM ืืืื ืืงืก ืขื ืื ืฉืืื ืืืืื.
ืงืืฉืืจืื ืฉืืืืฉืืื
https://www.elastic.co/guide/en/elasticsearch/reference/master/index-lifecycle-management-api.html https://www.elastic.co/guide/en/elasticsearch/reference/master/recovery-prioritization.html https://www.elastic.co/guide/en/elasticsearch/reference/master/indices-shrink-index.html#indices-shrink-index https://www.elastic.co/guide/en/elasticsearch/reference/master/frozen-indices.html https://www.elastic.co/guide/en/elasticsearch/reference/master/modules-cluster.html#shard-allocation-awareness
ืืงืืจ: www.habr.com