Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

Badoo рдорд╛, рд╣рд╛рдореА рдирд┐рд░рдиреНрддрд░ рдирдпрд╛рдБ рдкреНрд░рд╡рд┐рдзрд┐рд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрдЫреМрдВ рд░ рддрд┐рдиреАрд╣рд░реВ рд╣рд╛рдореНрд░реЛ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд▓рд╛рдпрдХ рдЫрдиреН рдХрд┐ рдЫреИрдирдиреН рднрдиреЗрд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдЫреМрдВред рд╣рд╛рдореА рдпреА рдордзреНрдпреЗ рдПрдЙрдЯрд╛ рдЕрдзреНрдпрдпрди рд╕рдореБрджрд╛рдпрд╕рдБрдЧ рд╕рд╛рдЭрд╛ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреМрдВред рдпреЛ Loki рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдорд░реНрдкрд┐рдд рдЫ, рдПрдХ рд▓рдЧ рдПрдХрддреНрд░реАрдХрд░рдг рдкреНрд░рдгрд╛рд▓реАред

Loki рд▓рдЧрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реЛ, рд░ рдпреЛ рд╕реНрдЯреНрдпрд╛рдХрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рд░ Prometheus рд▓рд╛рдИ рдбрд╛рдЯрд╛ рдкрдард╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЪрд┐рд▓реЛ рдкреНрд░рдгрд╛рд▓реА рдкрдирд┐ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдореЗ рдорд╛, рдЕрд░реНрдХреЛ рдЕрдкрдбреЗрдЯ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рдЬреБрди рд╕рдХреНрд░рд┐рдп рд░реВрдкрдорд╛ рд╕рд┐рд░реНрдЬрдирд╛рдХрд░реНрддрд╛рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдЪрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рдЫред рд▓реЛрдХреАрд▓реЗ рдХреЗ рдЧрд░реНрди рд╕рдХреНрдЫ, рдпрд╕рд▓реЗ рдХреЗ рдХреНрд╖рдорддрд╛рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫ, рд░ рдХреБрди рд╣рджрд╕рдореНрдо рдпрд╕рд▓реЗ ELK рдХреЛ рд╡рд┐рдХрд▓реНрдкрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рд╕рдХреНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рдорд╛ рд╣рд╛рдореА рдЪрд╛рд╕реЛ рдерд┐рдпреМрдВ, рд╕реНрдЯреНрдпрд╛рдХ рдЬреБрди рд╣рд╛рдореАрд▓реЗ рдЕрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред

рд▓реЛрдХреА рдХреЗ рд╣реЛ

Grafana Loki рд▓рдЧ рд╕рдВрдЧ рдХрд╛рдо рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреА рдШрдЯрдХ рдХреЛ рдПрдХ рд╕реЗрдЯ рд╣реЛред рдЕрдиреНрдп рд╕рдорд╛рди рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рдЬрд╕реНрддреЛ рдирднрдИ, рд▓реЛрдХреА рдХреЗрд╡рд▓ рд▓рдЧ рдореЗрдЯрд╛рдбреЗрдЯрд╛ - рд▓реЗрдмрд▓рд╣рд░реВ (рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдорд╛ рдЬрд╕реНрддреИ) рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рд╡рд┐рдЪрд╛рд░рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдЫ, рд░ рд▓рдЧрд╣рд░реВ рдЖрдлреИрдВрд▓рд╛рдИ рдЫреБрдЯреНрдЯреИ рднрд╛рдЧрд╣рд░реВрдорд╛ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрдиреЗред

рдЧреГрд╣ рдкреГрд╖реНрда, GitHub

рддрдкрд╛рдИрдВ рд▓реЛрдХреАрд╕рдБрдЧ рдХреЗ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреНрдиреЗ рдХреБрд░рд╛рдорд╛ рдЬрд╛рдиреБ рдЕрдШрд┐, рдо "рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдорд╛рддреНрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рд╡рд┐рдЪрд╛рд░" рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рдЧрд░реНрди рдЪрд╛рд╣рдиреНрдЫреБред nginx рд▓рдЧрдмрд╛рдЯ рд▓рд╛рдЗрдирдХреЛ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓реЛрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд░ Elasticsearch рдЬрд╕реНрддрд╛ рдкрд░рдореНрдкрд░рд╛рдЧрдд рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдорд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рддреБрд▓рдирд╛ рдЧрд░реМрдВ:

172.19.0.4 - - [01/Jun/2020:12:05:03 +0000] "GET /purchase?user_id=75146478&item_id=34234 HTTP/1.1" 500 8102 "-" "Stub_Bot/3.0" "0.001"

рдкрд░рдореНрдкрд░рд╛рдЧрдд рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓реЗ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдЕрджреНрд╡рд┐рддреАрдп user_id рд░ item_id рдорд╛рдирд╣рд░реВ рднрдПрдХрд╛ рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рд╕рд╣рд┐рдд рд╕рдореНрдкреВрд░реНрдг рдкрдЩреНрдХреНрддрд┐рд▓рд╛рдИ рдкрд╛рд░реНрд╕ рдЧрд░реНрджрдЫ, рд░ рд╕рдмреИ рдХреБрд░рд╛рд▓рд╛рдИ рдареВрд▓рд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрджрдЫред рдпрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгрдХреЛ рдлрд╛рдЗрджрд╛ рдпреЛ рд╣реЛ рдХрд┐ рддрдкрд╛рдИрд▓реЗ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрд┐рдЯреЛ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдХрд┐рдирдХрд┐ рд▓рдЧрднрдЧ рд╕рдмреИ рдбреЗрдЯрд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ рдЫред рддрд░ рдпреЛ рдореВрд▓реНрдпрдорд╛ рдЖрдЙрдБрдЫ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдареВрд▓реЛ рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рдореЗрдореЛрд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВрдорд╛ рдЕрдиреБрд╡рд╛рдж рдЧрд░реНрджрдЫред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдкреВрд░реНрдг-рдкрд╛рда рд▓рдЧ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдХрд╛рд░рдорд╛ рд▓рдЧрд╣рд░реВрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдпрд╕рд▓рд╛рдИ рджреНрд░реБрдд рд░реВрдкрдорд╛ рдЦреЛрдЬреНрдирдХреЛ рд▓рд╛рдЧрд┐, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдореЛрд░реАрдорд╛ рд▓реЛрдб рд╣реБрдиреБрдкрд░реНрдЫред рд░ рдЬрддрд┐ рдзреЗрд░реИ рд▓рдЧрд╣рд░реВ, рд╕реВрдЪрдХрд╛рдВрдХ рдЬрддрд┐ рдЫрд┐рдЯреЛ рдмрдвреНрдЫ рд░ рдЕрдзрд┐рдХ рдореЗрдореЛрд░реА рдЦрдкрдд рд╣реБрдиреНрдЫред

рд▓реЛрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдгрд▓реЗ рд╕реНрдЯреНрд░рд┐рдЩрдмрд╛рдЯ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдорд╛рддреНрд░ рдирд┐рдХрд╛рд▓реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╕рдХреЛ рдорд╛рдирд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рд╛рдиреЛ рдЫред рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рд╣рд╛рдореАрд▓реЗ рдПрдЙрдЯрд╛ рд╕рд╛рдиреЛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкрд╛рдЙрдБрдЫреМрдВ рд░ рдбреЗрдЯрд╛рд▓рд╛рдИ рд╕рдордп рд░ рдЕрдиреБрдХреНрд░рдорд┐рдд рдлрд┐рд▓реНрдбрд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реЗрд░, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡рд╛ рд╕рдмрд╕реНрдЯреНрд░рд┐рдЩ рдЦреЛрдЬреАрдорд╛рд░реНрдлрдд рдмрд╛рдБрдХреАрд▓рд╛рдИ рд╕реНрдХреНрдпрд╛рди рдЧрд░реЗрд░ рдЦреЛрдЬреНрди рд╕рдХреНрдЫреМрдВред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рдм рднрдиреНрджрд╛ рдЫрд┐рдЯреЛ рдЬрд╕реНрддреЛ рд▓рд╛рдЧреНрджреИрди, рддрд░ рд▓реЛрдХреАрд▓реЗ рдЕрдиреБрд░реЛрдзрд▓рд╛рдИ рдзреЗрд░реИ рднрд╛рдЧрд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрджрдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдорд╛рдирд╛рдиреНрддрд░ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрдЫ, рдЫреЛрдЯреЛ рд╕рдордпрдорд╛ рдареВрд▓реЛ рдорд╛рддреНрд░рд╛рдорд╛ рдбрд╛рдЯрд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред рддрд┐рдиреАрд╣рд░реВрдорд╛ рд╢рд╛рд░реНрдб рд░ рд╕рдорд╛рдирд╛рдиреНрддрд░ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдХрдиреНрдлрд┐рдЧрд░ рдпреЛрдЧреНрдп рдЫ; рдпрд╕рд░реА, рдбреЗрдЯрд╛рдХреЛ рдорд╛рддреНрд░рд╛ рдЬреБрди рдкреНрд░рддрд┐ рдПрдХрд╛рдЗ рд╕рдордп рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рд░реИрдЦрд┐рдХ рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдорд╛рддреНрд░рд╛рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред

рдареВрд▓реЛ, рджреНрд░реБрдд рд╕реВрдЪрдХрд╛рдВрдХ рд░ рд╕рд╛рдиреЛ, рд╕рдорд╛рдирд╛рдиреНрддрд░ рдмреНрд░реБрдЯ-рдлреЛрд░реНрд╕ рд╕реВрдЪрдХрд╛рдВрдХ рдмреАрдЪрдХреЛ рдпреЛ рд╡реНрдпрд╛рдкрд╛рд░-рдЕрдлрд▓реЗ рд▓реЛрдХреАрд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реАрдХреЛ рд▓рд╛рдЧрдд рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреЛ рд▓рдЪрд┐рд▓реЛ рдХрдиреНрдлрд┐рдЧрд░ рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрдиреБрд╕рд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

рд▓реЛрдХреА рд╕реНрдЯреНрдпрд╛рдХрдорд╛ рддреАрди рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН: рдкреНрд░реЛрдордЯреЗрд▓, рд▓реЛрдХреА, рдЧреНрд░рд╛рдлрд╛рдирд╛ред Promtail рд▓реЗ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫ, рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдЫ рд░ Loki рдорд╛ рдкрдард╛рдЙрдБрдЫред рд▓реЛрдХреАрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд░рд╛рдЦреНрдЫред рд░ Grafana Loki рдмрд╛рдЯ рдбрд╛рдЯрд╛ рдЕрдиреБрд░реЛрдз рдЧрд░реНрди рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, Loki рд▓рдЧрд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд░ рддрд┐рдиреАрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЦреЛрдЬреА рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдБрджреИрдиред рд╕рдореНрдкреВрд░реНрдг рд╕реНрдЯреНрдпрд╛рдХрд▓реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдорд╛рд░реНрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЖрдЧрдорди рдбреЗрдЯрд╛ рдкреНрд░рд╢реЛрдзрди рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЙрддреНрдХреГрд╖реНрдЯ рдЕрд╡рд╕рд░рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред
рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд╡рд┐рд╡рд░рдг рдкрд╛рдЙрди рд╕рдХрд┐рдиреНрдЫ рдпрд╣рд╛рдБ.

рд▓рдЧ рдЦреЛрдЬ

рддрдкрд╛рдИрдВрд▓реЗ рд╡рд┐рд╢реЗрд╖ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕рдорд╛ рд▓рдЧрд╣рд░реВ рдЦреЛрдЬреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ - рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ред рдкреНрд░рд╢реНрдирд╣рд░реВрд▓реЗ LogQL рднрд╛рд╖рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ, рдЬреБрди Prometheus рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ PromQL рд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ рдЫред рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рдпрд╕рд▓рд╛рдИ рд╡рд┐рддрд░рд┐рдд grep рдХреЛ рд░реВрдкрдорд╛ рд╕реЛрдЪреНрди рд╕рдХрд┐рдиреНрдЫред

рдЦреЛрдЬреА рдЗрдиреНрдЯрд░рдлреЗрд╕ рдпрд╕реНрддреЛ рджреЗрдЦрд┐рдиреНрдЫ:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдЕрдиреБрд░реЛрдз рдЖрдлреИрдВрдорд╛ рджреБрдИ рднрд╛рдЧрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН: рдЪрдпрдирдХрд░реНрддрд╛ рд░ рдлрд┐рд▓реНрдЯрд░ред рдЪрдпрдирдХрд░реНрддрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рд▓реЗрдмрд▓рд╣рд░реВ) рдкреНрд░рдпреЛрдЧ рдЧрд░реА рдЦреЛрдЬ рд╣реЛ рдЬреБрди рд▓рдЧрд╣рд░реВрдорд╛ рддреЛрдХрд┐рдПрдХреЛ рд╣реБрдиреНрдЫ, рд░ рдлрд┐рд▓реНрдЯрд░ рдПрдХ рдЦреЛрдЬ рд╕реНрдЯреНрд░рд┐рдЩ рд╡рд╛ regexp рд╣реЛ рдЬрд╕рд▓реЗ рдЪрдпрдирдХрд░реНрддрд╛рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд░реЗрдХрд░реНрдбрд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрджрдЫред рджрд┐рдЗрдПрдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛: рдШреБрдорд╛рдЙрд░реЛ рдХреЛрд╖реНрдардХрд╣рд░реВрдорд╛ рдПрдХ рдЪрдпрдирдХрд░реНрддрд╛ рдЫ, рддреНрдпрд╕рдкрдЫрд┐ рд╕рдмреИ рдлрд┐рд▓реНрдЯрд░ рд╣реЛред

{image_name="nginx.promtail.test"} |= "index"

рд▓реЛрдХреАрд▓реЗ рдХрд╛рдо рдЧрд░реНрдиреЗ рддрд░рд┐рдХрд╛рдХреЛ рдХрд╛рд░рдгрд▓реЗ, рддрдкрд╛рдЗрдБ рдЪрдпрдирдХрд░реНрддрд╛ рдмрд┐рдирд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрди, рддрд░ рд▓реЗрдмрд▓рд╣рд░реВ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдордирдкрд░реНрдиреЗ рд░реВрдкрдорд╛ рд╕рд╛рдорд╛рдиреНрдп рдмрдирд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред

рдЪрдпрдирдХрд░реНрддрд╛ рдШреБрдорд╛рдЙрд░реЛ рдХреЛрд╖реНрдардХрд╣рд░реВрдорд╛ рдореБрдЦреНрдп-рдорд╛рди рдорд╛рди рд╣реЛред рддрдкрд╛рдИрдВ рдЪрдпрдирдХрд░реНрддрд╛рд╣рд░реВ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ =, != рд╡рд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд┐рднрд┐рдиреНрди рдЦреЛрдЬ рдЕрд╡рд╕реНрдерд╛рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

{instance=~"kafka-[23]",name!="kafka-dev"} 
// ╨Э╨░╨╣╨┤╤С╤В ╨╗╨╛╨│╨╕ ╤Б ╨╗╨╡╨╣╨▒╨╗╨╛╨╝ instance, ╨╕╨╝╨╡╤О╤Й╨╕╨╡ ╨╖╨╜╨░╤З╨╡╨╜╨╕╨╡ kafka-2, kafka-3, ╨╕ ╨╕╤Б╨║╨╗╤О╤З╨╕╤В dev 

рдлрд┐рд▓реНрдЯрд░ рдкрд╛рда рд╡рд╛ regexp рд╣реЛ рдЬрд╕рд▓реЗ рдЪрдпрдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рд╕рдмреИ рдбреЗрдЯрд╛ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрджрдЫред

рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдореЛрдбрдорд╛ рдкреНрд░рд╛рдкреНрдд рдбрд╛рдЯрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдПрдб-рд╣рдХ рдЧреНрд░рд╛рдлрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓реЗ nginx рд▓рдЧрд╣рд░реВрдорд╛ рд╕реНрдЯреНрд░рд┐рдЩ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рднрдПрдХреЛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХрддрд┐ рдкрдЯрдХ рджреЗрдЦрд╛ рдкрд░реНрджрдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рдХрд╛рдЧрдЬрд╛рддрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ LogQL.

рд▓рдЧ рдкрд╛рд░реНрд╕рд┐рдЩ

рддреНрдпрд╣рд╛рдБ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рдзреЗрд░реИ рддрд░рд┐рдХрд╛рд╣рд░реВ рдЫрдиреН:

  • рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рдирдХрд╛ рд▓рд╛рдЧрд┐ рд╕реНрдЯреНрдпрд╛рдХрдХреЛ рдорд╛рдирдХ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рдкреНрд░реЛрдордЯреЗрд▓ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред
  • рд╕рд┐рдзреИ рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓реЛрдХреА рдбрдХрд░ рд▓рдЧрд┐рдЩ рдЪрд╛рд▓рдХред
  • Fluentd рд╡рд╛ Fluent Bit рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬрд╕рд▓реЗ Loki рд▓рд╛рдИ рдбреЗрдЯрд╛ рдкрдард╛рдЙрди рд╕рдХреНрдЫред Promtail рдХреЛ рд╡рд┐рдкрд░реАрдд, рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рд▓рдЧрднрдЧ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рд▓рдЧрдХреЛ рд▓рд╛рдЧрд┐ рддрдпрд╛рд░ рдкрд╛рд░реНрд╕рд░рд╣рд░реВ рдЫрдиреН рд░ рдмрд╣реБрд▓рд╛рдЗрди рд▓рдЧрд╣рд░реВ рдкрдирд┐ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ Promtail рдкрд╛рд░реНрд╕рд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рдпрд╕рд▓реЗ рддреАрдирд╡рдЯрд╛ рдХреБрд░рд╛ рдЧрд░реНрдЫ:

  • рдбрд╛рдЯрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред
  • рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд▓реЗрдмрд▓рд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрджрдЫред
  • Loki рд▓рд╛рдИ рдбреЗрдЯрд╛ рдкрдард╛рдЙрдБрдЫред

рд╣рд╛рд▓ Promtail рд▓реЗ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓рд╣рд░реВ рд░ systemd рдЬрд░реНрдирд▓рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рдкрдвреНрди рд╕рдХреНрдЫред рдпреЛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрд╕рд┐рдирдорд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫ рдЬрд╕рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдиреНрдЫред

Kubernetes рд╕рдВрдЧ рдПрдХреАрдХрд░рдг рдЫ: Promtail рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛, Kubernetes REST API рдорд╛рд░реНрдлрдд, рдХреНрд▓рд╕реНрдЯрд░рдХреЛ рдЕрд╡рд╕реНрдерд╛ рдкрд╣рд┐рдЪрд╛рди рдЧрд░реНрджрдЫ рд░ рдиреЛрдб, рд╕реЗрд╡рд╛ рд╡рд╛ рдкреЛрдбрдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджрдЫ, рддреБрд░реБрдиреНрддреИ Kubernetes (рдкреЛрдб рдирд╛рдо, рдлрд╛рдЗрд▓ рдирд╛рдо, рдЖрджрд┐) рдХреЛ рдореЗрдЯрд╛рдбреЗрдЯрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдмрд▓рд╣рд░реВ рдкреЛрд╕реНрдЯ рдЧрд░реНрджреИред ред

рддрдкрд╛рдИрдВ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рдЧрдмрд╛рдЯ рдбрд╛рдЯрд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдмрд▓рд╣рд░реВ рд╣реНрдпрд╛рдЩреНрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░реЛрдордЯреЗрд▓рд▓реЗ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░рдХрд╛ рдЪрд░рдгрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрди рд╕рдХреНрдЫрдиреНред рдердк рд╡рд┐рд╡рд░рдг рдорд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ, рдо рддреБрд░реБрдиреНрддреИ рдХреЗрд╣рд┐ рд╕реВрдХреНрд╖реНрдорддрд╛рд╣рд░реВ рдиреЛрдЯ рдЧрд░реНрдиреЗрдЫреБред

  1. рдкрд╛рд░реНрд╕рд┐рдЩ рдЪрд░рдгрд╣рд░реВред рдпреЛ RegEx рд░ JSON рдЪрд░рдг рд╣реЛред рдпрд╕ рдЪрд░рдгрдорд╛, рд╣рд╛рдореА рд▓рдЧрд╣рд░реВрдмрд╛рдЯ рддрдерд╛рдХрдерд┐рдд рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓реНрдЫреМрдВред рд╣рд╛рдореАрд▓реЗ рдПрдХреНрд╕реНрдЯреНрд░реНрдпрд╛рдХреНрдЯ рдЧрд░рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рд╡рд╛ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (RegEx) рдорд╛рд░реНрдлрдд рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдиреЗ рдлрд┐рд▓реНрдбрд╣рд░реВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЧрд░реЗрд░ JSON рдмрд╛рдЯ рдирд┐рдХрд╛рд▓реНрди рд╕рдХреНрдЫреМрдВ, рдЬрд╣рд╛рдБ рдирд╛рдо рдЧрд░рд┐рдПрдХрд╛ рд╕рдореВрд╣рд╣рд░реВрд▓рд╛рдИ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ "рдореНрдпрд╛рдк" рдЧрд░рд┐рдиреНрдЫред рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛ рдХреБрдЮреНрдЬреА-рдорд╛рди рднрдгреНрдбрд╛рд░ рд╣реЛ, рдЬрд╣рд╛рдБ рдХреБрдЮреНрдЬреА рдлрд┐рд▓реНрдбрдХреЛ рдирд╛рдо рд╣реЛ, рд░ рдорд╛рди рд▓рдЧрд╣рд░реВрдмрд╛рдЯ рдпрд╕рдХреЛ рдорд╛рди рд╣реЛред
  2. рдЪрд░рдгрд╣рд░реВ рд░реВрдкрд╛рдиреНрддрд░рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдпрд╕ рдЪрд░рдгрдорд╛ рджреБрдИ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдЫрдиреН: рд░реВрдкрд╛рдиреНрддрд░рдг, рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓реЗ рд░реВрдкрд╛рдиреНрддрд░рдг рдирд┐рдпрдорд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВ, рд░ рд╕реНрд░реЛрдд - рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдмрд╛рдЯ рд░реВрдкрд╛рдиреНрддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддред рдпрджрд┐ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рддреНрдпрд╕реНрддреЛ рдлрд┐рд▓реНрдб рдЫреИрди рднрдиреЗ, рдпреЛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреЗрдЫред рдпрд╕рд░реА рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рдЖрдзрд╛рд░рд┐рдд рдирднрдПрдХрд╛ рд▓реЗрдмрд▓рд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рдпрд╕ рдЪрд░рдгрдорд╛ рд╣рд╛рдореА рдПрдХреНрд╕реНрдЯреНрд░реНрдпрд╛рдХреНрдЯреЗрдб рдирдХреНрд╕рд╛рдорд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдбрд╛рдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ Golang рдЯреЗрдореНрдкреНрд▓реЗрдЯред рдердк рд░реВрдкрдорд╛, рд╣рд╛рдореАрд▓реЗ рдпреЛ рдпрд╛рдж рдЧрд░реНрдиреБрдкрд░реНрджрдЫ рдХрд┐ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛ рдкрд╛рд░реНрд╕рд┐рдЩрдХреЛ рдХреНрд░рдордорд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рд▓реЛрдб рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рд╕рдореНрднрд╡ рдмрдирд╛рдЙрдБрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрд╕рдорд╛ рдорд╛рди рдЬрд╛рдБрдЪ рдЧрд░реНрди: тАЬ{{if .tag}рдЯреНрдпрд╛рдЧ рдорд╛рди рдЕрд╡рд╕реНрдерд┐рдд рдЫ{end}}тАЭред рдЯреЗрдореНрдкреНрд▓реЗрдЯрд▓реЗ рд╕рд░реНрддрд╣рд░реВ, рд▓реВрдкрд╣рд░реВ, рд░ рдХреЗрд╣реА рд╕реНрдЯреНрд░рд┐рдЩ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЬрд╕реНрддреИ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд░ рдЯреНрд░рд┐рдо рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫред
  3. рдХрд╛рд░реНрдп рдЪрд░рдгрд╣рд░реВред рдпрд╕ рдмрд┐рдиреНрджреБрдорд╛ рддрдкрд╛рдИрд▓реЗ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рд╕рд╛рдордЧреНрд░реАрдХреЛ рд╕рд╛рде рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:
    • рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдмрд╛рдЯ рдПрдЙрдЯрд╛ рд▓реЗрдмрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬреБрди рд▓реЛрдХреАрджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╣реБрдиреЗрдЫред
    • рд▓рдЧрдмрд╛рдЯ рдШрдЯрдирд╛ рд╕рдордп рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╡рд╛ рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
    • Loki рдорд╛ рдЬрд╛рдиреЗ рдбреЗрдЯрд╛ (рд▓рдЧ рдкрд╛рда) рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред
    • рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  4. рдлрд┐рд▓реНрдЯрд░рд┐рдЩ рдЪрд░рдгрд╣рд░реВред рдореНрдпрд╛рдЪ рдЪрд░рдг, рдЬрд╣рд╛рдБ рд╣рд╛рдореА рдпрд╛ рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВ рдкрдард╛рдЙрди рд╕рдХреНрдЫреМрдВ рдЬреБрди рд╣рд╛рдореАрд▓рд╛рдИ /dev/null рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рд╡рд╛ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдердк рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдирд┐рдпрдорд┐рдд nginx рд▓рдЧрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ, рдо рддрдкрд╛рдЗрдБ рдХрд╕рд░реА Promtail рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд▓рдЧрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫреБред

рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐, nginx-proxy рдХреЛ рд░реВрдкрдорд╛ рдкрд░рд┐рдорд╛рд░реНрдЬрд┐рдд nginx рдЫрд╡рд┐ jwilder/nginx-proxy:alpine рд░ HTTP рдорд╛рд░реНрдлрдд рдЖрдлреИрд▓рд╛рдИ рд╕реЛрдзреНрди рд╕рдХреНрдиреЗ рд╕рд╛рдиреЛ рдбреЗрдорди рд▓рд┐рдиреБрд╣реЛрд╕реНред рдбреЗрдордирд╕рдБрдЧ рдзреЗрд░реИ рдЕрдиреНрдд рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреН, рдЬрд╕рдорд╛ рдпрд╕рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░рдХрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрди рд╕рдХреНрдЫ, рд╡рд┐рднрд┐рдиреНрди HTTP рд╕реНрдерд┐рддрд┐рд╣рд░реВ рд░ рд╡рд┐рднрд┐рдиреНрди рдврд┐рд▓рд╛рдЗрд╣рд░реВрд╕рдБрдЧред

рд╣рд╛рдореА рдбрдХрд░ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреЗрдЫреМрдВ, рдЬреБрди рдмрд╛рдЯреЛрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдиреНрдЫ /var/lib/docker/containers//-json.log

docker-compose.yml рдорд╛ рд╣рд╛рдореА Promtail рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдЫреМрдВ рд░ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдХреЛ рдорд╛рд░реНрдЧ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдЫреМрдВ:

promtail:
  image: grafana/promtail:1.4.1
 // ...
 volumes:
   - /var/lib/docker/containers:/var/lib/docker/containers:ro
   - promtail-data:/var/lib/promtail/positions
   - ${PWD}/promtail/docker.yml:/etc/promtail/promtail.yml
 command:
   - '-config.file=/etc/promtail/promtail.yml'
 // ...

promtail.yml рдорд╛ рд▓рдЧрд╣рд░реВрдорд╛ рдкрде рдердкреНрдиреБрд╣реЛрд╕реН (рддреНрдпрд╣рд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ "рдбрдХрд░" рд╡рд┐рдХрд▓реНрдк рдЫ, рдЬрд╕рд▓реЗ рдПрдЙрдЯреИ рдХрд╛рдо рдПрдХ рд▓рд╛рдЗрдирдорд╛ рдЧрд░реНрдЫ, рддрд░ рдпреЛ рд╕реНрдкрд╖реНрдЯ рд╣реБрдиреЗрдЫреИрди):

scrape_configs:
 - job_name: containers

   static_configs:
       labels:
         job: containerlogs
         __path__: /var/lib/docker/containers/*/*log  # for linux only

рдЬрдм рдпреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫ, рд╕рдмреИ рдХрдиреНрдЯреЗрдирд░рд╣рд░реВрдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд▓реЛрдХреАрдорд╛ рдкрдард╛рдЗрдиреЗрдЫред рдпрд╕рдмрд╛рдЯ рдмрдЪреНрди, рд╣рд╛рдореА docker-compose.yml рдорд╛ рдкрд░реАрдХреНрд╖рдг nginx рдХреЛ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдЫреМрдВ - рд▓рдЧрд┐рдЩ рдЯреНрдпрд╛рдЧ рдлрд┐рд▓реНрдб рдердкреНрдиреБрд╣реЛрд╕реН:

proxy:
 image: nginx.test.v3
//тАж
 logging:
   driver: "json-file"
   options:
     tag: "{{.ImageName}}|{{.Name}}"

рд╕рдореНрдкрд╛рджрди promtail.yml рд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗрдЯрдЕрдкред рдЗрдирдкреБрдЯрд▓реЗ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд▓рдЧрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:

{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /api/index HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.096"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.66740443Z"}
{"log":"u001b[0;33;1mnginx.1    | u001b[0mnginx.test 172.28.0.3 - - [13/Jun/2020:23:25:50 +0000] "GET /200 HTTP/1.1" 200 0 "-" "Stub_Bot/0.1" "0.000"n","stream":"stdout","attrs":{"tag":"nginx.promtail.test|proxy.prober"},"time":"2020-06-13T23:25:50.702925272Z"}

рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд░рдг:

 - json:
     expressions:
       stream: stream
       attrs: attrs
       tag: attrs.tag

рд╣рд╛рдореА рдЖрдЧрдорди JSON рдмрд╛рдЯ рдлрд┐рд▓реНрдб рд╕реНрдЯреНрд░рд┐рдо, attrs, attrs.tag (рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рдЕрд╡рд╕реНрдерд┐рдд рдЫрдиреН) рдирд┐рдХрд╛рд▓реНрдЫреМрдВ рд░ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рд░рд╛рдЦреНрдЫреМрдВред

 - regex:
     expression: ^(?P<image_name>([^|]+))|(?P<container_name>([^|]+))$
     source: "tag"

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рдЯреНрдпрд╛рдЧ рдлрд┐рд▓реНрдб рд░рд╛рдЦреНрди рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдЧрд░реНрдпреМрдВ рднрдиреЗ, regexp рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд╛рдореА рдЫрд╡рд┐ рд░ рдХрдиреНрдЯреЗрдирд░рдХреЛ рдирд╛рдорд╣рд░реВ рдирд┐рдХрд╛рд▓реНрдЫреМрдВред

 - labels:
     image_name:
     container_name:

рд╣рд╛рдореА рд▓реЗрдмрд▓ рддреЛрдХреНрдЫреМрдВред рдпрджрд┐ рдЫрд╡рд┐_рдирд╛рдо рд░ рдХрдиреНрдЯреЗрдирд░_рдирд╛рдо рдХреБрдЮреНрдЬреАрд╣рд░реВ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдорд╛ рдлреЗрд▓рд╛ рдкрд░реНрдпреЛ рднрдиреЗ, рддрд┐рдиреАрд╣рд░реВрдХреЛ рдорд╛рдирд╣рд░реВ рд╕рдореНрдмрдиреНрдзрд┐рдд рд▓реЗрдмрд▓рд╣рд░реВрдорд╛ рддреЛрдХрд┐рдиреНрдЫред

 - match:
     selector: '{job="docker",container_name="",image_name=""}'
     action: drop

рд╣рд╛рдореАрд▓реЗ рдЫрд╡рд┐_рдирд╛рдо рд░ рдХрдиреНрдЯреЗрдирд░_рдирд╛рдо рд▓реЗрдмрд▓рд╣рд░реВ рд╕реНрдерд╛рдкрдирд╛ рдирдЧрд░реЗрдХрд╛ рд╕рдмреИ рд▓рдЧрд╣рд░реВ рдЦрд╛рд░реЗрдЬ рдЧрд░реНрдЫреМрдВред

  - match:
     selector: '{image_name="nginx.promtail.test"}'
     stages:
       - json:
           expressions:
             row: log

рд╕рдмреИ рд▓рдЧрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐ рдЬрд╕рдХреЛ image_name nginx.promtail.test рд╣реЛ, рд╕реНрд░реЛрдд рд▓рдЧрдмрд╛рдЯ рд▓рдЧ рдлрд┐рд▓реНрдб рдирд┐рдХрд╛рд▓реНрдиреБрд╣реЛрд╕реН рд░ рдпрд╕рд▓рд╛рдИ рдкрдЩреНрдХреНрддрд┐ рдХреБрдЮреНрдЬреАрдХреЛ рд╕рд╛рде рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рд░рд╛рдЦреНрдиреБрд╣реЛрд╕реНред

  - regex:
         # suppress forego colors
         expression: .+nginx.+|.+[0m(?P<virtual_host>[a-z_.-]+) +(?P<nginxlog>.+)
         source: logrow

рд╣рд╛рдореАрд▓реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХреЛ рд╕рд╛рде рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдЦрд╛рд▓реА рдЧрд░реНрдЫреМрдВ рд░ nginx рднрд░реНрдЪреБрдЕрд▓ рд╣реЛрд╕реНрдЯ рд░ nginx рд▓рдЧ рд▓рд╛рдЗрди рдмрд╛рд╣рд┐рд░ рдирд┐рдХрд╛рд▓реНрдЫреМрдВред

     - regex:
         source: nginxlog
         expression: ^(?P<ip>[w.]+) - (?P<user>[^ ]*) [(?P<timestamp>[^ ]+).*] "(?P<method>[^ ]*) (?P<request_url>[^ ]*) (?P<request_http_protocol>[^ ]*)" (?P<status>[d]+) (?P<bytes_out>[d]+) "(?P<http_referer>[^"]*)" "(?P<user_agent>[^"]*)"( "(?P<response_time>[d.]+)")?

рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ nginx рд▓рдЧ рдкрд╛рд░реНрд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

    - regex:
           source: request_url
           expression: ^.+.(?P<static_type>jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|pdf|txt|tar|wav|bmp|rtf|js|flv|swf|html|htm)$
     - regex:
           source: request_url
           expression: ^/photo/(?P<photo>[^/?.]+).*$
       - regex:
           source: request_url
           expression: ^/api/(?P<api_request>[^/?.]+).*$

рдЕрдиреБрд░реЛрдз_url рдкрд╛рд░реНрд╕ рдЧрд░реМрдВред regexp рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╣рд╛рдореА рдЕрдиреБрд░реЛрдзрдХреЛ рдЙрджреНрджреЗрд╢реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдЫреМрдВ: рд╕реНрдерд┐рд░ рдбрд╛рдЯрд╛рдорд╛, рдлреЛрдЯреЛрд╣рд░реВрдорд╛, API рдорд╛ рд░ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рд╕рдореНрдмрдиреНрдзрд┐рдд рдХреБрдЮреНрдЬреА рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

       - template:
           source: request_type
           template: "{{if .photo}}photo{{else if .static_type}}static{{else if .api_request}}api{{else}}other{{end}}"

рдЯреЗрдореНрдкреНрд▓реЗрдЯрдорд╛ рд╕рд╢рд░реНрдд рдЕрдкрд░реЗрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░, рд╣рд╛рдореА рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдХреНрд╖реЗрддреНрд░рд╣рд░реВ рдЬрд╛рдБрдЪ рдЧрд░реНрдЫреМрдВ рд░ рдЕрдиреБрд░реЛрдз_рдкреНрд░рдХрд╛рд░ рдХреНрд╖реЗрддреНрд░рдХрд╛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдирд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВ: рдлреЛрдЯреЛ, рд╕реНрдерд┐рд░, APIред рдпрджрд┐ рдпреЛ рдЕрд╕рдлрд▓ рднрдпреЛ рднрдиреЗ рдЕрд░реНрдХреЛ рдирд┐рдпреБрдХреНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред request_type рд▓реЗ рдЕрдм рдЕрдиреБрд░реЛрдз рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

рд╣рд╛рдореАрд▓реЗ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдорд╛ рд░рд╛рдЦреНрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ api_request, virtual_host, request_type рд░ status (HTTP рд╕реНрдерд┐рддрд┐) рд▓реЗрдмрд▓рд╣рд░реВ рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВред

       - output:
           source: nginx_log_row

рдЖрдЙрдЯрдкреБрдЯ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рдЕрдм рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдмрд╛рдЯ рд╕рдлрд╛ рдЧрд░рд┐рдПрдХреЛ nginx рд▓рдЧ рд▓реЛрдХреАрдорд╛ рдЬрд╛рдиреНрдЫред

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдорд╛рдерд┐рдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдЪрд▓рд╛рдПрдкрдЫрд┐, рддрдкрд╛рдИрд▓реЗ рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд▓рдЧрдмрд╛рдЯ рдбрд╛рдЯрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рд▓реЗрдмрд▓рд╣рд░реВ рддреЛрдХрд┐рдПрдХреЛ рдЫред

рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдиреБ рдкрд░реНрдиреЗ рдПрдЙрдЯрд╛ рдХреБрд░рд╛ рдпреЛ рд╣реЛ рдХрд┐ рдареВрд▓реЛ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдорд╛рдирд╣рд░реВ (рдХрд╛рд░реНрдбрд┐рдирд▓рд┐рдЯреА) рдХреЛ рд╕рд╛рде рд▓реЗрдмрд▓рд╣рд░реВ рдкреБрди: рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдирд╛рд▓реЗ рд▓реЛрдХреАрд▓рд╛рдИ рдврд┐рд▓реЛ рдЧрд░реНрди рд╕рдХреНрдЫред рддреНрдпреЛ рд╣реЛ, рддрдкрд╛рдИрд▓реЗ рд░рд╛рдЦреНрдиреБ рд╣реБрдБрджреИрди, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛_рдЖрдИрдбреА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ред рдпрд╕ рд▓реЗрдЦрдорд╛ рдердк рдкрдвреНрдиреБрд╣реЛрд╕реН "рдХрд╕рд░реА Loki рдорд╛ рд▓реЗрдмрд▓рд╣рд░реВрд▓реЗ рд▓рдЧ рдХреНрд╡реЗрд░реАрд╣рд░реВ рдЫрд┐рдЯреЛ рд░ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди рд╕рдХреНрдЫ" рддрд░ рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛрдЗрди рдХрд┐ рддрдкрд╛рдЗрдБ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрд┐рдирд╛ user_id рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдиред рддрдкрд╛рдИрдВрд▓реЗ рдЦреЛрдЬреА рдЧрд░реНрджрд╛ рдлрд┐рд▓реНрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ (рдбреЗрдЯрд╛ "рд╣рдЯреНрдиреБрд╣реЛрд╕реН"), рд░ рдпрд╣рд╛рдБ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд▓реЗ рд╕реНрдЯреНрд░рд┐рдо рдкрд╣рд┐рдЪрд╛рдирдХрд░реНрддрд╛рдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрджрдЫред

рд▓рдЧрд╣рд░реВрдХреЛ рджреГрд╢реНрдпрд╛рд╡рд▓реЛрдХрди

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

Loki рд▓реЗ LogQL рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ Grafana рдЧреНрд░рд╛рдлрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рд░реВрдкрдорд╛ рдХрд╛рд░реНрдп рдЧрд░реНрди рд╕рдХреНрдЫред рдирд┐рдореНрди рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд╕рдорд░реНрдерд┐рдд рдЫрдиреН:

  • рджрд░ - рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рд░реЗрдХрд░реНрдб рд╕рдВрдЦреНрдпрд╛;
  • рд╕рдордпрд╕рдБрдЧреИ рдЧрдгрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН тАФ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджрд╛рдпрд░рд╛рдорд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ред

рддреНрдпрд╣рд╛рдБ рдЬрдореНрдорд╛ рдХрд╛рд░реНрдпрд╣рд░реВ рдпреЛрдЧ, рдФрд╕рдд рд░ рдЕрдиреНрдп рдкрдирд┐ рдЫрдиреНред рддрдкрд╛рдИрд▓реЗ рдзреЗрд░реИ рдЬрдЯрд┐рд▓ рдЧреНрд░рд╛рдлрд╣рд░реВ рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ HTTP рддреНрд░реБрдЯрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдЧреНрд░рд╛рдл:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдорд╛рдирдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд▓реЛрдХреА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рддреБрд▓рдирд╛рдорд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдорд╛ рдХреЗрд╣реА рд╣рджрд╕рдореНрдо рдХрдо рднрдПрдХреЛ рдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдЗрдБ рд▓реЗрдЬреЗрдиреНрдб рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрди), рддрд░ рд▓реЛрдХреАрд▓рд╛рдИ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдкреНрд░рдХрд╛рд░рд╕рдБрдЧ рд╕реНрд░реЛрддрдХреЛ рд░реВрдкрдорд╛ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдо рдкрдХреНрдХрд╛ рдЫреИрди рдХрд┐ рдпреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдЧрд░рд┐рдПрдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ, рддрд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп рдЧрд░реНрджреИ "Prometheus datasource рдХреЛ рд░реВрдкрдорд╛ рд▓реЛрдХреА рдХрд╕рд░реА рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрдиреЗ? ┬╖ рдЕрдВрдХ #1222 ┬╖ grafana/loki", рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрд╛рдиреВрдиреА рдЫ, рд░ Loki PromQL рд╕рдБрдЧ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЙрдкрдпреБрдХреНрдд рдЫред

Prometheus рдЯрд╛рдЗрдкрдХреЛ рд╕рд╛рде рдбреЗрдЯрд╛ рд╕реНрд░реЛрддрдХреЛ рд░реВрдкрдорд╛ Loki рдердкреНрдиреБрд╣реЛрд╕реН рд░ URL /loki рдердкреНрдиреБрд╣реЛрд╕реН:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рд░ рд╣рд╛рдореА рдЧреНрд░рд╛рдлрд╣рд░реВ рдмрдирд╛рдЙрди рд╕рдХреНрдЫреМрдВ, рдорд╛рдиреМрдВ рдХрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдХреЛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рд╕рдБрдЧ рдХрд╛рдо рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдорд▓рд╛рдИ рд▓рд╛рдЧреНрдЫ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╛ рд╡рд┐рд╕рдВрдЧрддрд┐ рдЕрд╕реНрдерд╛рдпреА рд╣реЛ рд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рднрд╡рд┐рд╖реНрдпрдорд╛ рдпрд╕рд▓рд╛рдИ рд╕рдЪреНрдпрд╛рдЙрдиреЗрдЫрдиреНред

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдореЗрдЯреНрд░рд┐рдХреНрд╕

Loki рд▓реЗ рд▓рдЧрд╣рд░реВрдмрд╛рдЯ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдирд┐рдХрд╛рд▓реНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ Prometheus рдорд╛ рдкрдард╛рдЙрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, nginx рд▓рдЧ рдорд╛ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдмрд╛рдЗрдЯ рдХреЛ рд╕рдВрдЦреНрдпрд╛, рд╕рд╛рдереИ, рдорд╛рдирдХ рд▓рдЧ рдврд╛рдБрдЪрд╛ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд░рд┐рдорд╛рд░реНрдЬрди рд╕рдВрдЧ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд╛рдЧреА рд▓рд┐рдиреЗ рд╕реЗрдХреЗрдиреНрдб рдорд╛ рд╕рдордп рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдпреЛ рдбрд╛рдЯрд╛ рдирд┐рдХрд╛рд▓реНрди рд░ Prometheus рдкрдард╛рдЙрди рд╕рдХрд┐рдиреНрдЫред

promtail.yml рдорд╛ рдЕрд░реНрдХреЛ рдЦрдгреНрдб рдердкреНрдиреБрд╣реЛрд╕реН:

- match:
   selector: '{request_type="api"}'
   stages:
     - metrics:
         http_nginx_response_time:
           type: Histogram
           description: "response time ms"
           source: response_time
           config:
             buckets: [0.010,0.050,0.100,0.200,0.500,1.0]
- match:
   selector: '{request_type=~"static|photo"}'
   stages:
     - metrics:
         http_nginx_response_bytes_sum:
           type: Counter
           description: "response bytes sum"
           source: bytes_out
           config:
             action: add
         http_nginx_response_bytes_count:
           type: Counter
           description: "response bytes count"
           source: bytes_out
           config:
             action: inc

рд╡рд┐рдХрд▓реНрдкрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирд┐рдХрд╛рд▓рд┐рдПрдХреЛ рдирдХреНрд╕рд╛рдмрд╛рдЯ рдбрд╛рдЯрд╛рдХреЛ рдЖрдзрд╛рд░рдорд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд░ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпреА рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ рд▓реЛрдХреАрдорд╛ рдкрдард╛рдЗрдБрджреИрдирдиреН - рддрд┐рдиреАрд╣рд░реВ рдкреНрд░реЛрдордЯреЗрд▓ / рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЕрдиреНрддрд┐рдо рдмрд┐рдиреНрджреБрдорд╛ рджреЗрдЦрд╛ рдкрд░реНрджрдЫрдиреНред рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдпрд╕ рдЪрд░рдгрдорд╛ рдкреНрд░рд╛рдкреНрдд рдбрд╛рдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдХрдиреНрдлрд┐рдЧрд░ рд╣реБрдиреБрдкрд░реНрдЫред рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛, request_type="api" рдХреЛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореА рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдореЗрдЯреНрд░рд┐рдХ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреМрдВред рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд╕рд╛рде рдпреЛ рдкреНрд░рддрд┐рд╢рдд рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫред рд╕реНрдерд┐рд░ рд░ рддрд╕реНрдмрд┐рд░рдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдФрд╕рдд рдЧрдгрдирд╛ рдЧрд░реНрди рдмрд╛рдЗрдЯрд╣рд░реВ рд░ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдЫреМрдВ рдЬрд╕рдорд╛ рд╣рд╛рдореАрд▓реЗ рдмрд╛рдЗрдЯрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдХрд╛ рдЫреМрдВред

рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдмрд╛рд░реЗ рдердк рдкрдвреНрдиреБрд╣реЛрд╕реН рдпрд╣рд╛рдБ.

Promtail рдорд╛ рдкреЛрд░реНрдЯ рдЦреЛрд▓реНрдиреБрд╣реЛрд╕реН:

promtail:
     image: grafana/promtail:1.4.1
     container_name: monitoring.promtail
     expose:
       - 9080
     ports:
       - "9080:9080"

рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░реНрдиреБрд╣реЛрд╕реН рдХрд┐ promtail_custom рдЙрдкрд╕рд░реНрдЧрдХреЛ рд╕рд╛рде рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрдЫрдиреН:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрджреИред рдХрд╛рд░реНрдп рдкреНрд░реЛрдордЯреЗрд▓ рдердкреНрдиреБрд╣реЛрд╕реН:

- job_name: 'promtail'
 scrape_interval: 10s
 static_configs:
   - targets: ['promtail:9080']

рд░ рд╣рд╛рдореА рдЧреНрд░рд╛рдл рдХреЛрд░реНрдЫреМрдВ:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ рддрдкрд╛рдИрд▓реЗ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЪрд╛рд░ рдврд┐рд▓реЛ рдкреНрд░рд╢реНрдирд╣рд░реВред рддрдкрд╛рдЗрдБ рдпреА рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рд▓рд╛рдЧреА рдирд┐рдЧрд░рд╛рдиреА рдкрдирд┐ рд╕реЗрдЯ рдЕрдк рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рд╕реНрдХреЗрд▓рд┐рдВрдЧ

рд▓реЛрдХреА рдпрд╛ рдд рдПрдХрд▓ рдмрд╛рдЗрдирд░реА рдореЛрдбрдорд╛ рд╡рд╛ рд╢рд╛рд░реНрдбреЗрдб рдореЛрдбрдорд╛ рд╣реБрди рд╕рдХреНрдЫ (рддреЗрд░реНрд╕реЛ-рд╕реНрдХреЗрд▓реЗрдмрд▓ рдореЛрдб)ред рджреЛрд╕реНрд░реЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рдпрд╕рд▓реЗ рдХреНрд▓рд╛рдЙрдбрдорд╛ рдбрд╛рдЯрд╛ рдмрдЪрдд рдЧрд░реНрди рд╕рдХреНрдЫ, рд░ рднрд╛рдЧрд╣рд░реВ рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рд╕рдВрд╕реНрдХрд░рдг рез.рел рд▓реЗ рдПрдХреИ рдард╛рдЙрдБрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░реНрджрдЫ, рддрд░ рдпрд╕рд▓рд╛рдИ рдЙрддреНрдкрд╛рджрдирдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рднрд╛рдЧрд╣рд░реВ S3-рд╕рдВрдЧрдд рднрдгреНрдбрд╛рд░рдгрдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рд░ рддреЗрд░реНрд╕реЛ рдорд╛рдкрдирдпреЛрдЧреНрдп рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ: рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛, рдмрд┐рдЧрдЯреЗрдмрд▓ рд╡рд╛ рдбрд╛рдпрдирд╛рдореЛрдбреАрдмреАред рд▓реЛрдХреАрдХреЛ рдЕрдиреНрдп рднрд╛рдЧрд╣рд░реВ - рд╡рд┐рддрд░рдХрд╣рд░реВ (рд▓реЗрдЦрдирдХреЛ рд▓рд╛рдЧрд┐) рд░ рдХреНрд╡реЗрд░рд┐рдпрд░ (рдХреНрд╡реЗрд░реАрд╣рд░реВрдХрд╛ рд▓рд╛рдЧрд┐) - рд░рд╛рдЬреНрдпрд╡рд┐рд╣реАрди рдЫрдиреН рд░ рддреЗрд░реНрд╕реЛ рдорд╛рдкрди рдкрдирд┐ рдЫрдиреНред

DevOpsDays рднреНрдпрд╛рдирдХреВрд╡рд░ 2019 рд╕рдореНрдореЗрд▓рдирдорд╛, рдПрдХ рд╕рд╣рднрд╛рдЧреА рдХрд▓рдо рд╕реНрдЯреНрдпрд╛рдирд▓реЗ рдШреЛрд╖рдгрд╛ рдЧрд░реЗ рдХрд┐ рд▓реЛрдХреАрд╕рдБрдЧ рдЙрдирдХреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдорд╛ тАЛтАЛрдХреБрд▓ рдЖрдХрд╛рд░рдХреЛ 1% рднрдиреНрджрд╛ рдХрдордХреЛ рд╕реВрдЪрдХрд╛рдВрдХрдХреЛ рд╕рд╛рде рд▓рдЧрд╣рд░реВрдХреЛ рдкреЗрдЯрд╛рдмрд╛рдЗрдЯрд╣рд░реВ рдЫрдиреН: "рдХрд╕рд░реА рд▓реЛрдХреАрд▓реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд░ рд▓рдЧрд╣рд░реВ рд╕рд╣рд╕рдВрдмрджреНрдз рдЧрд░реНрджрдЫ - рд░ рддрдкрд╛рдЗрдБрдХреЛ рдкреИрд╕рд╛ рдмрдЪрдд рдЧрд░реНрджрдЫ"ред

рд▓реЛрдХреА рд░ ELK рдХреЛ рддреБрд▓рдирд╛

рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдХрд╛рд░

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдХрд╛рд░ рдкрд░реАрдХреНрд╖рдг рдЧрд░реНрди, рдореИрд▓реЗ nginx рдХрдиреНрдЯреЗрдирд░рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд▓рд┐рдПрдБ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рдерд┐рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд▓рдЧ рдлрд╛рдЗрд▓рдорд╛ 406 MB рдХреЛ рдХреБрд▓ рднреЛрд▓реНрдпреБрдордХреЛ рд╕рд╛рде 624 рд▓рд╛рдЗрдирд╣рд░реВ рдЫрдиреНред рд▓рдЧрд╣рд░реВ рдПрдХ рдШрдгреНрдЯрд╛ рднрд┐рддреНрд░ рдЙрддреНрдкрдиреНрди рднрдпреЛ, рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рд▓рдЧрднрдЧ 109 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рд╣рд░реВред

рд▓рдЧрдмрд╛рдЯ рджреБрдИ рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рдЙрджрд╛рд╣рд░рдг:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

ELK рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдЧрд░реНрджрд╛, рдпрд╕рд▓реЗ 30,3 MB рдХреЛ рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдХрд╛рд░ рджрд┐рдпреЛ:

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

Loki рдХреЛ рдорд╛рдорд▓рд╛ рдорд╛, рдпрд╕рдХреЛ рдкрд░рд┐рдгрд╛рдо рд▓рдЧрднрдЧ 128 KB рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд░ рд▓рдЧрднрдЧ 3,8 MB рдбрд╛рдЯрд╛ рдЯреБрдХреНрд░рд╛ рдорд╛ рднрдпреЛред рдпреЛ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рдХрд┐ рд▓рдЧ рдХреГрддреНрд░рд┐рдо рд░реВрдкрдорд╛ рдЙрддреНрдкрдиреНрди рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ рд░ рдбрд╛рдЯрд╛ рдХреЛ рдПрдХ рдареВрд▓реЛ рд╡рд┐рд╡рд┐рдзрддрд╛ рдЫреИрдиред рдбрд╛рдЯрд╛рдХреЛ рд╕рд╛рде рдореВрд▓ рдбрдХрд░ JSON рд▓рдЧ рдорд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг gzip рд▓реЗ 95,4% рдХреЛ рдХрдореНрдкреНрд░реЗрд╕рди рджрд┐рдпреЛ, рд░ рдпреЛ рддрдереНрдпрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрджреИ рдХрд┐ рд╕рдлрд╛ рдЧрд░рд┐рдПрдХреЛ nginx рд▓рдЧ рдорд╛рддреНрд░ Loki рдорд╛ рдкрдард╛рдЗрдПрдХреЛ рдерд┐рдпреЛ, 4 MB рд╕рдореНрдордХреЛ рдХрдореНрдкреНрд░реЗрд╕рди рдмреБрдЭреНрди рд╕рдХрд┐рдиреНрдЫред Loki рд▓реЗрдмрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрджреНрд╡рд┐рддреАрдп рдорд╛рдирд╣рд░реВрдХреЛ рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ 35 рдерд┐рдпреЛ, рдЬрд╕рд▓реЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рд╕рд╛рдиреЛ рдЖрдХрд╛рд░ рдмрддрд╛рдЙрдБрдЫред ELK рдХреЛ рд▓рд╛рдЧрд┐ рд▓рдЧ рдкрдирд┐ рдЦрд╛рд▓реА рдЧрд░рд┐рдпреЛред рдпрд╕рд░реА, рд▓реЛрдХреАрд▓реЗ 96% рд░ ELK рд▓реЗ 70% рджреНрд╡рд╛рд░рд╛ рдореМрд▓рд┐рдХ рдбрд╛рдЯрд╛ рдХрдореНрдкреНрд░реЗрд╕ рдЧрд░реНрдпреЛред

рдореЗрдореЛрд░реА рдЦрдкрдд

Loki рдмрд╛рдЯ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрджреИ

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рд╕рдореНрдкреВрд░реНрдг рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд░ ELK рд╕реНрдЯреНрдпрд╛рдХ рддреБрд▓рдирд╛ рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рд▓реЛрдХреАрд▓реЗ рдзреЗрд░реИ рдкрдЯрдХ рдХрдо "рдЦрд╛рдиреНрдЫ"ред рдпреЛ рд╕реНрдкрд╖реНрдЯ рдЫ рдХрд┐ Go рд╕реЗрд╡рд╛рд▓реЗ Java рд╕реЗрд╡рд╛ рднрдиреНрджрд╛ рдХрдо рдЦрдкрдд рдЧрд░реНрдЫ, рд░ JVM Heap Elasticsearch рдХреЛ рдЖрдХрд╛рд░ рд░ Loki рдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдЧрд▓рдд рдЫ, рддрд░ рдпреЛ рдзреНрдпрд╛рди рджрд┐рди рд▓рд╛рдпрдХ рдЫ рдХрд┐ Loki рд▓реЗ рдзреЗрд░реИ рдХрдо рдореЗрдореЛрд░реА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдпрд╕рдХреЛ CPU рдлрд╛рдЗрджрд╛ рдпрддрд┐ рд╕реНрдкрд╖реНрдЯ рдЫреИрди, рддрд░ рдпреЛ рдкрдирд┐ рдЕрд╡рд╕реНрдерд┐рдд рдЫред

рдЧрддрд┐

рд▓реЛрдХреА "рдЦрд╛рдиреНрдЫ" рдЫрд┐рдЯреЛ рд▓рдЧрд╛рдЙрдБрдЫред рдЧрддрд┐ рдзреЗрд░реИ рдХрд╛рд░рдХрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ - рдХреБрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд▓рдЧрд╣рд░реВ рдЫрдиреН, рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд╛рд░реНрд╕рд┐рдЩрдорд╛ рдХрддрд┐ рдкрд░рд┐рд╖реНрдХреГрдд рдЫреМрдВ, рдиреЗрдЯрд╡рд░реНрдХ, рдбрд┐рд╕реНрдХ, рдЖрджрд┐ - рддрд░ рдпреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ ELK рднрдиреНрджрд╛ рдЙрдЪреНрдЪ рдЫ (рдореЗрд░реЛ рдкрд░реАрдХреНрд╖рдгрдорд╛ - рд▓рдЧрднрдЧ рджреБрдИ рдЧреБрдгрд╛ рдмрдвреА)ред рдпреЛ рддрдереНрдп рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХрд┐ рд▓реЛрдХреАрд▓реЗ рд╕реВрдЪрдХрд╛рдВрдХрдорд╛ рдзреЗрд░реИ рдХрдо рдбрд╛рдЯрд╛ рд░рд╛рдЦреНрдЫ рд░ рддрджрдиреБрд╕рд╛рд░, рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдорд╛ рдХрдо рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрджрдЫред рдЦреЛрдЬ рдЧрддрд┐рдХреЛ рд╕рд╛рде, рд╕реНрдерд┐рддрд┐ рдЙрд▓реНрдЯреЛ рдЫ: рд▓реЛрдХреАрд▓реЗ рдзреЗрд░реИ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯреНрд╕ рднрдиреНрджрд╛ рдареВрд▓реЛ рдбрд╛рдЯрд╛рдорд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рдврд┐рд▓реЛ рдЧрд░реНрджрдЫ, рдЬрдмрдХрд┐ ELK рдХреЛ рдЦреЛрдЬ рдЧрддрд┐ рдбрд╛рдЯрд╛рдХреЛ рдЖрдХрд╛рд░рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИрдиред

рд▓рдЧ рдЦреЛрдЬ

Loki рд▓рдЧ рдЦреЛрдЬ рдХреНрд╖рдорддрд╛рд╣рд░реВрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ ELK рднрдиреНрджрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдХрдо рдЫред рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдХреЛ рд╕рд╛рде рдЧреНрд░реЗрдк рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЫ, рддрд░ рдпреЛ рдкрд░рд┐рдкрдХреНрд╡ рдбрд╛рдЯрд╛рдмреЗрд╕ рднрдиреНрджрд╛ рдХрдо рдЫред рджрд╛рдпрд░рд╛ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЕрднрд╛рд╡, рд▓реЗрдмрд▓рд╣рд░реВрджреНрд╡рд╛рд░рд╛ рдорд╛рддреНрд░ рд╕рдЩреНрдХрд▓рди, рд▓реЗрдмрд▓рд╣рд░реВ рдмрд┐рдирд╛ рдЦреЛрдЬреА рдЧрд░реНрди рдЕрд╕рдХреНрд╖рдорддрд╛ - рдпреА рд╕рдмреИрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд▓реЛрдХреАрдорд╛ рд░реБрдЪрд┐рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬреНрди рд╕реАрдорд┐рдд рдЧрд░реНрджрдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛрдЗрди рдХрд┐ рд▓реЛрдХреА рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдХреЗрд╣рд┐ рдкрдирд┐ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХрд┐рдБрджреИрди, рддрд░ рдпрд╕рд▓реЗ рд▓рдЧрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдкреНрд░рд╡рд╛рд╣рд▓рд╛рдИ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫ рдЬрдм рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдЪрд╛рд░реНрдЯрд╣рд░реВрдорд╛ рд╕рдорд╕реНрдпрд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реБрдиреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд▓рдЧрд╣рд░реВрдорд╛ рдХреЗ рднрдпреЛ рднрдиреЗрд░ рд╣реЗрд░реНрди рдпреА рд▓реЗрдмрд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

рдЗрдиреНрдЯрд░рдлреЗрд╕

рд╕рдмреИ рднрдиреНрджрд╛ рдкрд╣рд┐рд▓реЗ, рдпреЛ рд╕реБрдиреНрджрд░ рдЫ (рдорд╛рдл рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдкреНрд░рддрд┐рд░реЛрдз рдЧрд░реНрди рд╕рдХреЗрди)ред Grafana рдПрдХ рд░рд╛рдореНрд░реЛ рджреЗрдЦрд┐рдиреЗ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдЫ, рддрд░ Kibana рдзреЗрд░реИ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рд╕рдореНрдкрдиреНрди рдЫред

рд▓реЛрдХреАрдХреЛ рдлрд╛рдЗрджрд╛ рд░ рдмреЗрдлрд╛рдЗрджрд╛

рдПрдЙрдЯрд╛ рдлрд╛рдЗрджрд╛ рдпреЛ рд╣реЛ рдХрд┐ рд▓реЛрдХреА рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рд╕рдБрдЧ рдПрдХреАрдХреГрдд рд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рд╣рд╛рдореА рдмрдХреНрд╕рдмрд╛рдЯ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд░ рдЕрд▓рд░реНрдЯрд┐рдВрдЧ рдкрд╛рдЙрдБрдЫреМрдВред рдпреЛ рд▓рдЧрд╣рд░реВ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрди рд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ Kubernetes Pods рдмрд╛рдЯ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рдХрд┐рдирдХрд┐ рдпрд╕рдорд╛ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕рдмрд╛рдЯ рдкреНрд░рд╛рдкреНрдд рд╕реЗрд╡рд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдЫ рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд▓реЗрдмрд▓рд╣рд░реВ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрджрдЫред

рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдХрдордЬреЛрд░ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╣реЛред рдХреЗрд╣рд┐ рдЪреАрдЬрд╣рд░реВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, Promtail рдХреЛ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рд░ рдХреНрд╖рдорддрд╛рд╣рд░реВ, рдореИрд▓реЗ рдХреЛрдб рдЕрдзреНрдпрдпрди рдЧрд░реНрдиреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдорд╛рддреНрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдП, рд╕реМрднрд╛рдЧреНрдп рджреЗрдЦрд┐ рдпреЛ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реЛред рдЕрд░реНрдХреЛ рд╣рд╛рдирд┐ рдХрдордЬреЛрд░ рдкрд╛рд░реНрд╕рд┐рдЩ рдХреНрд╖рдорддрд╛рд╣рд░реБ рдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рд▓реЛрдХреАрд▓реЗ рдмрд╣реБрд▓рд╛рдЗрди рд▓рдЧрд╣рд░реВ рдкрд╛рд░реНрд╕ рдЧрд░реНрди рд╕рдХреНрджреИрдиред рдЕрд░реНрдХреЛ рд╣рд╛рдирд┐ рдпреЛ рд╣реЛ рдХрд┐ рд▓реЛрдХреА рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдпреБрд╡рд╛ рдкреНрд░рд╡рд┐рдзрд┐ рд╣реЛ (рд░рд┐рд▓рд┐рдЬ 1.0 рдиреЛрднреЗрдореНрдмрд░ 2019 рдорд╛ рдерд┐рдпреЛ)ред

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛

Loki рдПрдХ 100% рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА рд╣реЛ рдЬреБрди рд╕рд╛рдирд╛ рд░ рдордзреНрдпрдо рдЖрдХрд╛рд░рдХрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреБрдХреНрдд рдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд▓рдЧ рдПрдЧреНрд░реАрдЧреЗрд╕рди, рд▓рдЧ рдЦреЛрдЬреА, рдирд┐рдЧрд░рд╛рдиреА рд░ рд▓рдЧ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХрд╛ рдзреЗрд░реИ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рд╣рд╛рдореА Badoo рдорд╛ рд▓реЛрдХреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИрдиреМрдВ рдХрд┐рдирднрдиреЗ рд╣рд╛рдореАрд╕рдБрдЧ ELK рд╕реНрдЯреНрдпрд╛рдХ рдЫ рдЬреБрди рд╣рд╛рдореАрд▓рд╛рдИ рдЙрдкрдпреБрдХреНрдд рдЫ рд░ рдЬреБрди рд╡рд░реНрд╖реМрдВрджреЗрдЦрд┐ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдХреВрд▓рди рд╕рдорд╛рдзрд╛рдирд╣рд░реВрдХреЛ рд╕рд╛рде рдмрдвреЗрдХреЛ рдЫред рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐, рдареЗрд╕ рд▓рд╛рдЧреНрдиреЗ рдЕрд╡рд░реЛрдз рд▓рдЧрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЦреЛрдЬреА рдЧрд░реНрджреИрдЫред рдкреНрд░рддрд┐ рджрд┐рди рд▓рдЧрднрдЧ 100 GB рд▓рдЧ рд╕рдВрдЧ, рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рдХреБрд░рд╛ рд░ рдЕрд▓рд┐ рдмрдвреА рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд░ рдЫрд┐рдЯреЛ рдЧрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЫред рдЪрд╛рд░реНрдЯрд┐рдЩ рд░ рдЕрдиреБрдЧрдордирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рд╣рд╛рдореНрд░рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рд╣рд░реВ рдЕрдиреБрд░реВрдк рд░ рдПрдХрдЕрд░реНрдХрд╛рд╕рдБрдЧ рдПрдХреАрдХреГрдд рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред рд▓реЛрдХреА рд╕реНрдЯреНрдпрд╛рдХрдорд╛ рдареЛрд╕ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдЫрдиреН, рддрд░ рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдПрдХреЛ рднрдиреНрджрд╛ рдмрдвреА рджрд┐рдиреЗрдЫреИрди, рд░ рдпрд╕рдХреЛ рдлрд╛рдЗрджрд╛рд╣рд░реВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдкрдорд╛ рдорд╛рдЗрдЧреНрд░реЗрд╕рдирдХреЛ рд▓рд╛рдЧрддрднрдиреНрджрд╛ рдмрдвреА рд╣реБрдиреЗ рдЫреИрдирдиреНред

рд░ рдпрджреНрдпрдкрд┐ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдкрдЫрд┐ рдпреЛ рд╕реНрдкрд╖реНрдЯ рднрдпреЛ рдХрд┐ рд╣рд╛рдореА рд▓реЛрдХреА рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрджреИрдиреМрдВ, рд╣рд╛рдореА рдЖрд╢рд╛ рдЧрд░реНрдЫреМрдВ рдХрд┐ рдпреЛ рдкреЛрд╖реНрдЯрд▓реЗ рддрдкрд╛рдЗрдБрдХреЛ рдЫрдиреМрдЯрдорд╛ рдорджреНрджрдд рдЧрд░реНрдиреЗрдЫред

рд▓реЗрдЦрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрдХреЛ рдХреЛрдбрдХреЛ рд╕рд╛рде рднрдгреНрдбрд╛рд░ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рдпрд╣рд╛рдБ.

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди