рдореЗрд░реЛ рдирд╛рдо Igor Sidorenko рд╣реЛ, рдо Domclick рдХреЛ рд╕рдореНрдкреВрд░реНрдг рдкреВрд░реНрд╡рд╛рдзрд╛рд░ рдХрд╛рдпрдо рдЧрд░реНрдиреЗ рдкреНрд░рд╢рд╛рд╕рдХрд╣рд░реВрдХреЛ рдЯреЛрд▓реАрдорд╛ рдкреНрд░рд╛рд╡рд┐рдзрд┐рдХ рдиреЗрддрд╛ рд╣реБрдБред
рдо Elasticsearch рдорд╛ рд╡рд┐рддрд░рд┐рдд рдбрд╛рдЯрд╛ рднрдгреНрдбрд╛рд░рдг рд╕реЗрдЯрдЕрдк рдорд╛ рдореЗрд░реЛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред рд╣рд╛рдореА рдиреЛрдбрд╣рд░реВрдорд╛ рдХреБрди рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╢рд╛рд░реНрдбрд╣рд░реВрдХреЛ рд╡рд┐рддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЬрд┐рдореНрдореЗрд╡рд╛рд░ рдЫрдиреН, ILM рдХрд╕рд░реА рдХрд╛рдо рдЧрд░реНрдЫ рд░ рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреЗрд░ рд╣реЗрд░реНрдиреЗрдЫреМрдВред
рд▓рдЧрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗрд╣рд░реВ, рдПрдХ рддрд░рд┐рдХрд╛ рд╡рд╛ рдЕрд░реНрдХреЛ, рдкрдЫрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рджреАрд░реНрдШрдХрд╛рд▓реАрди рднрдгреНрдбрд╛рд░рдгрдХреЛ рд╕рдорд╕реНрдпрд╛рдХреЛ рд╕рд╛рдордирд╛ рдЧрд░реНрдЫрдиреНред Elasticsearch рдорд╛, рдпреЛ рд╡рд┐рд╢реЗрд╖ рдЧрд░реА рд╕рддреНрдп рд╣реЛ, рдХрд┐рдирднрдиреЗ рд╕рдмреИ рдХреБрд░рд╛ рдХреНрдпреВрд░реЗрдЯрд░ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╕рдВрдЧ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рдерд┐рдпреЛред рд╕рдВрд╕реНрдХрд░рдг 6.6 рд▓реЗ ILM рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНтАНрдпреЛред рдпрд╕рд▓реЗ 4 рдЪрд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:
- рддрд╛рддреЛ - рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд░ рд╕реЛрдзрд┐рдПрдХреЛ рдЫред
- рдиреНрдпрд╛рдиреЛ - рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрдм рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди, рддрд░ рдЕрдЭреИ рд╕реЛрдзрд┐рдПрдХреЛ рдЫред
- рдЪрд┐рд╕реЛ - рд╕реВрдЪрдХрд╛рдВрдХ рдЕрдм рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рд░ рд╡рд┐рд░рд▓реИ рд╕реЛрдзрд┐рдПрдХреЛ рдЫред рдЬрд╛рдирдХрд╛рд░реА рдЕрдЭреИ рдкрдирд┐ рдЦреЛрдЬреА рдпреЛрдЧреНрдп рд╣реБрдиреБрдкрд░реНрдЫ, рддрд░ рдкреНрд░рд╢реНрдирд╣рд░реВ рдврд┐рд▓реЛ рд╣реБрди рд╕рдХреНрдЫред
- рдореЗрдЯреНрдиреБрд╣реЛрд╕реН - рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрдм рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдореЗрдЯрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред
рджрд┐рдПрдХреЛ рдЫ
- Elasticsearch рдбрд╛рдЯрд╛ рд╣рдЯ: 24 рдкреНрд░реЛрд╕реЗрд╕рд░, 128 GB рдореЗрдореЛрд░реА, 1,8 TB SSD RAID 10 (8 рдиреЛрдбрд╣рд░реВ)ред
- Elasticsearch рдбрд╛рдЯрд╛ рд╡рд╛рд░реНрдо: 24 рдкреНрд░реЛрд╕реЗрд╕рд░, 64 GB рдореЗрдореЛрд░реА, 8 TB NetApp SSD рдиреАрддрд┐ (4 рдиреЛрдбрд╣рд░реВ)ред
- Elasticsearch рдбрд╛рдЯрд╛ рдХреЛрд▓реНрдб: 8 рдкреНрд░реЛрд╕реЗрд╕рд░, 32 GB рдореЗрдореЛрд░реА, 128 TB HDD RAID 10 (4 рдиреЛрдбрд╣рд░реВ)ред
рд▓рдХреНрд╖реНрдп
рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╣реБрдиреН, рдпреЛ рд╕рдмреИ рдиреЛрдбрд╣рд░реВрдорд╛ рд╕реНрдерд╛рдирдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛, рд▓рдЧрд╣рд░реВ, рдЖрджрд┐ред рд╣рд╛рдореАрд╕рдБрдЧ рдкреНрд░рддрд┐ рджрд┐рди реи-рей TB рдбрд╛рдЯрд╛ рдЫред
- 5 рджрд┐рди - рддрд╛рддреЛ рдЪрд░рдг (8 рдореБрдЦреНрдп / 1 рдкреНрд░рддрд┐рдХреГрддрд┐)ред
- 20 рджрд┐рди - рддрд╛рддреЛ рдЪрд░рдг (
рд╕рдВрдХреБрдЪрд┐рдд-рд╕реВрдЪрдХрд╛рдВрдХ 4 рдореБрдЦреНрдп / 1 рдкреНрд░рддрд┐рдХреГрддрд┐)ред - репреж рджрд┐рди - рдЪрд┐рд╕реЛ рдЕрд╡рд╕реНрдерд╛ (
рд╕реНрдерд┐рд░-рд╕реВрдЪрдХрд╛рдВрдХ 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
}
}
рдХрд┐рдмрд╛рдирд╛ рд╕реЗрдЯрдЕрдк
рддреНрдпрд╣рд╛рдБ рдПрдХ рдЖрдзрд╛рд░ рдврд╛рдБрдЪрд╛ рдЫ рдЬреБрди рд╕рдмреИ рдирдпрд╛рдБ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рдпрд╕рд▓реЗ рддрд╛рддреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рд╡рд┐рддрд░рдг, рд╢рд╛рд░реНрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛, рдкреНрд░рддрд┐рдХреГрддрд┐рд╣рд░реВ, рдЖрджрд┐ рд╕реЗрдЯ рдЧрд░реНрджрдЫред рдЯреЗрдореНрдкреНрд▓реЗрдЯрдХреЛ рд╡рдЬрди рд╡рд┐рдХрд▓реНрдк рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ 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-*
рдЙрдЪреНрдЪ рд╡рдЬрдирдХреЛ рд╕рд╛рде рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред
_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 рдиреЛрдбрд╣рд░реВ рдЫрдиреНред рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдирд┐рдореНрди рд░реЗрдЦрд╛рд╣рд░реВ рдЫрдиреН:
- рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкрдвреНрдиреЗ рдорд╛рддреНрд░ рд╣реБрдиреБрдкрд░реНрдЫред
- рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд░реНрдбрдХреЛ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдПрдЙрдЯреИ рдиреЛрдбрдорд╛ рд░рд╣рдиреБ рдкрд░реНрдЫред
- рдХреНрд▓рд╕реНрдЯрд░ рд╕реНрд╡рд╛рд╕реНрдереНрдп рд╕реНрдерд┐рддрд┐ рд╣рд░рд┐рдпреЛ рд╣реБрдиреБрдкрд░реНрдЫред
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд╛рдБрдЯреНрдирдХрд╛ рд▓рд╛рдЧрд┐, Elasticsearch рд▓реЗ рд╕рдмреИ рдкреНрд░рд╛рдердорд┐рдХ рд╢рд╛рд░реНрдбрд╣рд░реВрд▓рд╛рдИ рдПрдЙрдЯрд╛ рдиреЛрдбрдорд╛ рд╕рд╛рд░реНрдЫ, рдЖрд╡рд╢реНрдпрдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрд╕рдБрдЧ рдХрд╛рдЯрд┐рдПрдХреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рдирдХреНрдХрд▓ рдЧрд░реНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдкреБрд░рд╛рдиреЛрд▓рд╛рдИ рдореЗрдЯрд╛рдЙрдБрдЫред рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ total_shards_per_node
рдПрдХ рдиреЛрдбрдорд╛ рдлрд┐рдЯ рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдореБрдЦреНрдп рд╢рд╛рд░реНрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрд░рд╛рдмрд░ рд╡рд╛ рдмрдвреА рд╣реБрдиреБрдкрд░реНрдЫред рдЕрдиреНрдпрдерд╛, рддреНрдпрд╣рд╛рдБ рд╕реВрдЪрдирд╛рд╣рд░реВ рд╣реБрдиреЗрдЫрдиреН рд░ рд╢рд╛рд░реНрдбрд╣рд░реВ рд╕рд╣реА рдиреЛрдбрд╣рд░реВрдорд╛ рд╕рд╛рд░рд┐рдиреЗ рдЫреИрдирдиреНред
GET /srink-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"
}
}
}
}
}
}
рдЪрд┐рд╕реЛ рдЪрд░рдг
рдЬрдореНрдиреБ (рдлреНрд░рд┐рдЬ) - рд╣рд╛рдореА рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдбреЗрдЯрд╛рдорд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдлреНрд░рд┐рдЬ рдЧрд░реНрдЫреМрдВред
рдЬрдореЗ рднрдПрдХрд╛ рд╕реВрдЪрдХрд╣рд░реВрдорд╛ рдЧрд░рд┐рдПрдХрд╛ рдЦреЛрдЬрд╣рд░реВрд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдбрдорд╛ рдЬрдореЗрдХреЛ рд╢рд╛рд░реНрдбрд╣рд░реВрд▓рд╛рдИ рд╣рд┐рдЯ рдЧрд░реНрдиреЗ рд╕рдорд╡рд░реНрддреА рдЦреЛрдЬрд╣рд░реВрдХреЛ рд╕рдЩреНрдЦреНрдпрд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рд╕рд╛рдиреЛ, рд╕рдорд░реНрдкрд┐рдд, рдЦреЛрдЬ_рдереНрд░реЛрдЯрд▓ рдереНрд░реЗрдбрдкреВрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдпрд╕рд▓реЗ рдЬрдореЗ рднрдПрдХрд╛ рд╢рд╛рд░реНрдбрд╣рд░реВрд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЕрд╕реНрдерд╛рдпреА рдбрд╛рдЯрд╛ рд╕рдВрд░рдЪрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реАрдХреЛ рдорд╛рддреНрд░рд╛рд▓рд╛рдИ рд╕реАрдорд┐рдд рдЧрд░реНрдЫ, рдЬрд╕рд▓реЗ рдиреЛрдбрд╣рд░реВрд▓рд╛рдИ рдЕрддреНрдпрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрдкрддрдмрд╛рдЯ рдЬреЛрдЧрд╛рдЙрдБрдЫред
рдЬрдореЗ рднрдПрдХрд╛ рд╕реВрдЪрдХрд╣рд░реВ рдкрдвреНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рд╣реБрдиреН: рддрдкрд╛рдИрдВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ рд░рд╛рдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред
рд╕реНрдерд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХрд╣рд░реВрдорд╛ рдЦреЛрдЬрд╣рд░реВ рдмрд┐рд╕реНрддрд╛рд░реИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░рд┐рдПрдХреЛ рдЫред рдЬрдореЗрдХреЛ рд╕реВрдЪрдХрд╛рдЩреНрдХрд╣рд░реВ рдЙрдЪреНрдЪ рдЦреЛрдЬ рд▓реЛрдбрдХреЛ рд▓рд╛рдЧрд┐ рдЕрднрд┐рдкреНрд░реЗрд░рд┐рдд рдЫреИрдирдиреНред рдпреЛ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рд╕реНрдерд┐рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рдЦреЛрдЬ рдкреВрд░рд╛ рд╣реБрди рд╕реЗрдХреЗрдиреНрдб рд╡рд╛ рдорд┐рдиреЗрдЯ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫ, рдпрджреНрдпрдкрд┐ рд╕рдорд╛рди рдЦреЛрдЬрд╣рд░реВ рдорд┐рд▓рд┐рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдкреВрд░рд╛ рднрдП рддрд╛рдкрдирд┐ рд╕реВрдЪрдХрд╛рдВрдХрд╣рд░реВ рдЬрдореЗрдХреЛ рдерд┐рдПрдиред
рдкрд░рд┐рдгрд╛рдорд╣рд░реВ
рд╣рд╛рдореАрд▓реЗ 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