áá»áœááºá¯ááºáá¡áááºááŸá¬ Igor Sidorenko ááŒá áºááŒá®ážá áá»áœááºá¯ááºááẠDomclick á á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶áá áºáá¯áá¯á¶ážááᯠááááºážááááºážáá¬ážááá·áº á á®áá¶ááá·áºááœá²áá°áá»á¬ážá¡ááœá²á·ááœáẠáááºážááá¬ááá¯ááºážááá¯ááºáá¬áá±á«ááºážáá±á¬ááºáá áºáŠážááŒá áºáááºá
Elasticsearch ááœáẠááŒáá·áºáá±áá¬ážáá±á¬ áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á áá áºááá·áºááœááºážáá¬ááœáẠáá»áœááºá¯ááºáá¡ááœá±á·á¡ááŒá¯á¶ááᯠáá»áŸáá±ááá¯áá«áááºá shards áá»á¬ážááŒáá·áºáá±ááŸá¯á¡ááœáẠáá¬áááºááŸááááºá ILM á¡áá¯ááºáá¯ááºáá¯á¶ááŸáá·áº á¡áá¯ááºáá¯ááºáá¯á¶ááá¯á·á¡ááœáẠnode áá»á¬ážááŸá áááºáááºáá»á¬ážááᯠááŒáá·áºááŸá¯áá«áááºá
áá áºáá¯á¶ážáá»á¬ážááŒáá·áº á¡áá¯ááºáá¯ááºáá°áá»á¬ážááẠáá±á¬ááºááá¯ááºážááœáẠááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡ááœáẠáá±ááŸááºááá¯ááŸá±á¬ááºááŸá¯ááŒá¿áá¬ááᯠáááºááá¯ááºááááºá Elasticsearch ááœááºá ááŒááá¯ááºááŸá°ážááá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŒá±á¬áá·áº á¡áá¬á¡á¬ážáá¯á¶ážááŸá¬ áá¶ááá±á¬ááºážáá²á·áááŒáá·áºá á€áááºááŸá¬ á¡áá°ážáááŒáá·áº ááŸááºáá«áááºá áá¬ážááŸááºáž 6.6 ááœáẠILM áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠááááºáááºáá±ážáá²á·áááºá áááºážááœáẠá¡ááá·áº á ááá·áº áá«áááºáááºá
- Hot - á¡ááœáŸááºážááᯠáááºááŒáœá áœá¬ á¡ááºááááºáá¯ááºááŒá®áž áá±ážááŒááºážáá±áá«áááºá
- ááœá±ážááœá±ážááẠ- á¡ááœáŸááºážááᯠá¡ááºááááºááá¯ááºáá±á¬á·áá² áá±ážááŒááºážáá±áá²ááŒá áºáááºá
- á¡á±áž - á¡ááœáŸááºážááᯠá¡ááºááááºááá¯ááºáá±á¬á·áá² áá±ážáá²áá«áááºá á¡áá»ááºá¡áááºááᯠááŸá¬ááœá±ááá¯ááºáá²ááŒá áºááááºá ááá¯á·áá±á¬áº áá±ážááŒááºážááŸá¯áá»á¬ážááẠááá¯ááá¯ááŸá±ážááœá±ážááá¯ááºáá«áááºá
- áá»ááºááẠ- á¡ááœáŸááºážááᯠáááá¯á¡ááºáá±á¬á·áá² áá±ážáááºážá áœá¬ áá»ááºááá¯ááºáá«áááºá
áá±ážáá¬ážáááºá
- Elasticsearch Data Hot- áááá¯áááºáᬠ24 áá¯á 128 GB áááºááá¯áá®á 1,8 TB SSD RAID 10 (8 nodes)á
- Elasticsearch Data Warm- áááá¯áááºáᬠ24 áá¯á 64 GB áááºááá¯áá®á 8 TB NetApp SSD áá°áá«á (4 nodes)á
- Elasticsearch Data Cold- áááá¯áááºáᬠ8 áá¯á 32 GB áááºááá¯áá®á 128 TB HDD RAID 10 (4 nodes)á
áááºááŸááºážáá»ááº
á€áááºáááºáá»á¬ážááẠáá áºáŠážáá»ááºážááŒá áºáááºá áááºážááẠnode áá»á¬ážáá±á«áºááŸááá±áá¬á á¡ááœáŸááºážááááºážá¡áá±á¡ááœááºá ááŸááºáááºážáá»á¬áž á áááºááá¯á·áá±á«áºááœááºáá°áááºáááºá áá»áœááºá¯ááºááá¯á·ááœáẠáá áºáá±á·áá»áŸáẠáá±áᬠ2-3 TB ááŸááááºá
- 5 ááẠ- Hot á¡ááá·áº (8 áááºá / 1 áá¯á¶áá°) á
- ááẠ20 - áá°ááœá±ážáá±á¬á¡ááá·áº (
áá»á¯á¶á·-á¡ááœáŸááºáž áááºá á áᯠ/ áá¯á¶á á¶áá° á áá¯)á - ááẠ90 - á¡á¡á±ážáááºááŒááºážá¡ááá·áº (
á¡á±ážáá²áá±á¬á¡ááœáŸááºáž áááºá á áᯠ/ áá¯á¶á á¶áá° á áá¯)á - áááºáá±á«ááºáž 120 - á¡ááá·áºááá¯áá»ááºáá«á
Elasticsearch ááᯠá áá áºááá·áºááœááºážááŒááºážá
node áá»á¬ážáá áºáá»áŸá±á¬áẠshard ááá¯ááŒáá·áºáá±áááºá áááºááẠááá·áºáááºáá»ááºáá áºáá¯áᬠááá¯á¡ááºáááº-
- áá°áá±á¬-nodes-
~]# cat /etc/elasticsearch/elasticsearch.yml | grep attr # Add custom attributes to the node: node.attr.box_type: hot
- áá°ááœá±ážáá²á·-nodes-
~]# cat /etc/elasticsearch/elasticsearch.yml | grep attr # Add custom attributes to the node: node.attr.box_type: warm
- á¡á¡á±áž-nodes-
~]# cat /etc/elasticsearch/elasticsearch.yml | grep attr # Add custom attributes to the node: node.attr.box_type: cold
Logstash ááᯠá áá áºááá·áºááœááºážááŒááºážá
á¡á¬ážáá¯á¶ážáááºááá¯á¡áá¯ááºáá¯ááºááá²á á€á¡ááºá¹áá«áááºááá¯áá»áœááºá¯ááºááá¯á·áááºááá¯á·á¡áá±á¬ááºá¡áááºáá±á¬áºááááºážá Elasticsearch ááá¯á· ááŸááºáááºážááá°ááŒááºážááŒáá·áº á áááºááŒáá«á áá¯á·á áááºážáááºážááŸá áºáá¯ááŸááá«áááº:
- Logstash ááẠKafka á០áá áºáá¯á¶ážáá»á¬ážááᯠááá°áááºá ááá·áºááŸááºážááŸá¯ááᯠáá±á¬ááºáá°ááá¯ááºááẠááá¯á·ááá¯áẠááá·áºáááºááœáẠááŒá±á¬ááºážáá²ááá¯ááºáááºá
- áá áºá á¯á¶áá áºáá¯ááá¯ááºááá¯ááºá 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 á áá áºááá·áºááœááºážááŸá¯
á¡ááœáŸááºážá¡áá
áºá¡á¬ážáá¯á¶ážááŸáá·áº áááºááá¯ááºááá·áº á¡ááŒá±áá¶áá¯á¶á
á¶áá
áºáá¯ááŸááááºá áááºážááẠáá°ááŒááºážáá±á¬á¡ááœáŸááºážááááºážáá»á¬áž ááŒáá·áºááŒá°ážááŸá¯á shards á¡áá±á¡ááœááºá áá¯á¶á
á¶áá°áá»á¬áž á
áááºááá¯á·ááᯠáááºááŸááºáá±ážáááºá áá¯á¶á
á¶ááœááºáá¡áá±ážáá»áááºááᯠááœá±ážáá»ááºááŸá¯ááŒáá·áº áá¯á¶ážááŒááºáááºá order
. á¡áá±ážáá»ááẠááá¯ááŒáá·áºáá±á¬ áá¯á¶á
á¶áá»á¬ážááẠáááºááŸá ááá°áá¬áá±á¬ááºáá»á¬ážááᯠááœáŸááºážááá¯ážááẠááá¯á·ááá¯áẠá¡áá
áºáá»á¬ážááᯠáá±á«ááºážááá·áºáá«á
_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-*
á¡áá±ážáá»áááºááá¯ááŒáá·áºáá±á¬ áá¯á¶á
á¶ááŒá¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á
_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
. á¡áá¯á¶ážááœáẠááááºážááá¬ááºážáá»á¬áž ááŸááá±ááŒááºážá¡ááœáẠáá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážááᯠá¡áá¯á¶ážááŒá¯á á¡ááœáŸááºážáá»á¬ážááᯠá
á
áºáá±ážáá±á¬ áá¯ááºáá»á¬ážááœáẠá
á¬ááŒá±á¬ááºážáá»á¬áž ááŸááá«áááºá ááá¯ááºáá«áá á¡ááŸá¬ážá¡ááœááºážáá
áºáá¯ááŸááááá·áºáááºá á¡ááœáŸááºážááááºážá¡ááœáẠáá°áá«ááá»á¬ážááᯠáá»áá·áºáá¯á¶ážáááºááá¯ááºáá«á áááºážááẠá¡ááŒá²áááºážáá°ááŒááºážáá±á¬á¡ááá·áºááœáẠááŸááá±áááºááŒá
áºáááºá
ááœá±ážááœá±ážáá±á¬á¡ááá·áº
áá±ážáááºááá¯áẠ(ááŒááºáá±á¬ááºááŒááºáž) â áá»áœááºá¯ááºááá¯á·ááœáẠáá°ááœá±ážááŒá®áž á¡á¡á±ážá¡ááá·áºáá»á¬ážááœáẠáá¯á¶ááŸáẠ4 áá¯áá«áá±á¬ááŒá±á¬áá·áº shards á¡áá±á¡ááœááºááᯠáá»áŸá±á¬á·áá»áá«á á á¬ááœááºá á¬áááºážááœáẠá¡á±á¬ááºáá«á á¬ááŒá±á¬ááºážáá»á¬ážáá«ááŸááááºá
- á¡ááœáŸááºážááẠáááºáááºáá¬ááŒá áºááááºá
- á¡ááœáŸááºážá¡ááœááºážááŸá shard áá áºáá¯áá»ááºážá á®á áááá¹áá°ááẠáá°áá®áá±á¬ node áá±á«áºááœáẠááŸááá±ááááºá
- á¡á á¯á¡ááœá²á·á áá»ááºážáá¬áá±ážá¡ááŒá±á¡áá±ááẠá¡á áááºážáá±á¬ááºááŒá áºááááºá
á¡ááœáŸááºážáá
áºáá¯ááᯠááŒááºáá±á¬ááºáááºá Elasticsearch ááẠá¡ááá shard á¡á¬ážáá¯á¶ážááᯠnode áá
áºáá¯ááá¯á· ááœáŸá±á·ááŒá®ážá ááá¯á¡ááºáá±á¬ áá±á¬ááºáá»á¬ážááŸáá·áºá¡áá° ááŒááºáá¬ážáá±á¬ á¡ááœáŸááºážááᯠááœá¬ážáᬠá¡áá±á¬ááºážááᯠáá»ááºáááºá ááá·áºáááºáá»áẠtotal_shards_per_node
node áá
áºáá¯ááœáẠááá¯ááºáá®ááẠmain shards á¡áá±á¡ááœááºááŸáá·áº áá®áá»áŸáááẠááá¯á·ááá¯áẠááŒá®ážááááºá ááá¯á·ááá¯ááºáá«áá á¡ááŒá±á¬ááºážááŒá¬ážáá»ááºáá»á¬ážááŸááááá·áºáááºááŒá
áºááŒá®áž shards áá»á¬ážáááºááŸááºáááºáá±á¬ node ááá¯á·ááœáŸá±á·áááºááá¯ááºáá«á
ááá° /shrink-k8s-ingress-2020.06.06-000025/_áááºáááºáá»á¬áž
{
"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"
}
}
}
}
}
}
á¡á±ážáá²á·á¡ááá·áº
á¡á±ážá áá² (á¡á±ážáá²áááº) - áááá¯ááºážá¡áá»ááºá¡áááºááá¯ááºáᬠáá±ážááŒááºážáá»ááºáá»á¬ážááᯠá¡áá±á¬ááºážáá¯á¶ážááŒá áºá¡á±á¬áẠáá¯ááºáá±á¬ááºááẠá¡ááœáŸááºážááᯠáá»áœááºá¯ááºááá¯á· áááºááá·áºáá¬ážáááºá
á¡á±ážáá²áá±áá±á¬ á¡ááœáŸááºážááááºážáá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá±á¬ ááŸá¬ááœá±ááŸá¯áá»á¬ážááẠnode áá áºáá¯á á®ááŸá á¡á±ážáá²áá±áá±á¬ shards áá»á¬ážááᯠááááááá·áº áá áºááŒáá¯ááºááẠááŸá¬ááœá±ááŸá¯á¡áá±á¡ááœááºááᯠááááºážáá»á¯ááºááẠáá±ážáááºáá±á¬á áá®ážááá·áºá ááŸá¬ááœá±ááŸá¯_throttled threadpool ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá áááºážááẠfrozen shards áá»á¬ážááŸáá·áº áááºááá¯ááºááá·áº áá¬áá®áá±áá¬ááœá²á·á ááºážáá¯á¶áá»á¬ážá¡ááœáẠááá¯á¡ááºáá±á¬ á¡ááá¯ááŸááºáá¬ááºááá¬áááᯠááá·áºáááºáá±ážáááºá ááá¯á·ááŒá±á¬áá·áº ááŸááºáá¬ááºá¡ááœááºá¡áá»áœá¶áá¯á¶ážá áœá²ááŸá¯á០node áá»á¬ážááᯠáá¬ááœááºáá±ážáááºá
Frozen indices áá»á¬ážááẠáááºááŸá¯áááºáá¬ááŒá áºáááº- áááºážááá¯á·ááᯠá¡ááœáŸááºážááááºááá¯ááºáá«á
á¡á±ážáá²áá±áá±á¬ á¡ááœáŸááºážááááºážáá»á¬ážááœáẠááŸá¬ááœá±ááŸá¯áá»á¬ážááᯠááŒááºážááŸááºážá áœá¬ áá¯ááºáá±á¬ááºááẠáá»áŸá±á¬áºááá·áºáá«áááºá Frozen indices áá»á¬ážááẠááŸá¬ááœá±ááŸá¯ááŒáá·áºáá¬ážáááºá¡ááœáẠáááºááœááºááŒááºážááá¯ááºáá«á áá°áá®áá±á¬ááŸá¬ááœá±ááŸá¯áá»á¬ážááẠá¡ááœáŸááºážááááºážáá»á¬ážááᯠá¡á±ážáá²ááŒááºážáááŸáááá·áºá¡áá»áááºááœáẠáá®áá®á áá¹ááá·áºá¡ááœááºáž ááŒá®ážááŒá±á¬ááºáá²á·áá»áŸááºááẠá¡á±ážáá²áá¬ážáá±á¬á¡ááœáŸááºážáá áºáá¯áááŸá¬ááœá±ááŸá¯áá áºáá¯ááẠááŒá®ážááŒá±á¬ááºááẠá áá¹ááá·áº ááá¯á·ááá¯áẠáááá áºá¡áááºážáááºááŒá¬ááá¯ááºááẠá
ááááºáá»á¬ážááá¯
ILM ááŸáá·áºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠnode áá»á¬ážááá¯ááŒááºáááºáááºážááá¯áá±á·áá¬áá²á·ááŒá®ážá hot nodes áá»á¬ážááŒá¬ážááœáẠshards áá»á¬ážááá¯ááŒáá·áºáá±áááºá¡ááœááºáá¯á¶á á¶áááááºáá áºáá¯áááºáá±á¬ááºáᬠ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
source: www.habr.com