рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

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

рд▓реЛрдХреА рд╣реЗ рд▓реЙрдЧ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЙрдкрд╛рдп рдЖрд╣реЗ рдЖрдгрд┐ рд╣реЗ рд╕реНрдЯреЕрдХ рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рд▓рд╛ рдбреЗрдЯрд╛ рдкрд╛рдард╡рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд▓рд╡рдЪрд┐рдХ рдкреНрд░рдгрд╛рд▓реА рджреЗрдЦреАрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдореЗ рдордзреНрдпреЗ, рдЖрдгрдЦреА рдПрдХ рдЕрджреНрдпрддрди рдЬрд╛рд░реА рдХреЗрд▓реЗ рдЧреЗрд▓реЗ, рдЬреЗ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдВрджреНрд╡рд╛рд░реЗ рд╕рдХреНрд░рд┐рдпрдкрдгреЗ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рджрд┐рд▓реЗ рдЬрд╛рддреЗ. рд▓реЛрдХреА рдХрд╛рдп рдХрд░реВ рд╢рдХрддреЗ, рддреЗ рдХреЛрдгрддреНрдпрд╛ рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рдЖрдгрд┐ рдЖрдореНрд╣реА рдЖрддрд╛ рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ ELK, рд╕реНрдЯреЕрдХрд▓рд╛ рдкрд░реНрдпрд╛рдп рдореНрд╣рдгреВрди рддреЗ рдХрд┐рддреА рдкреНрд░рдорд╛рдгрд╛рдд рдХрд╛рд░реНрдп рдХрд░реВ рд╢рдХрддреЗ рдпрд╛рдмрджреНрджрд▓ рдЖрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рд╣реЛрддреЗ.

рд▓реЛрдХреА рдореНрд╣рдгрдЬреЗ рдХрд╛рдп

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

рдореБрдЦреНрдпрдкреГрд╖реНрда, GitHub

рд▓реЛрдХреАрд╕рд╣ рддреБрдореНрд╣реА рдХрд╛рдп рдХрд░реВ рд╢рдХрддрд╛ рд╣реЗ рдЬрд╛рдгреВрди рдШреЗрдгреНрдпрд╛рдЖрдзреА, рдорд▓рд╛ "рдлрдХреНрдд рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд▓реНрдкрдиреЗрдЪрд╛" рдЕрд░реНрде рдХрд╛рдп рдЖрд╣реЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХрд░рд╛рдпрдЪреЗ рдЖрд╣реЗ. nginx рд▓реЙрдЧрдордзреАрд▓ рдПрдХрд╛ рдУрд│реАрдЪреЗ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдкрд░реВрди рд▓реЛрдХреА рджреГрд╖реНрдЯреАрдХреЛрди рдЖрдгрд┐ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ рд╕рд╛рд░рдЦреНрдпрд╛ рдкрд╛рд░рдВрдкрд╛рд░рд┐рдХ рд╕реЛрд▓реНрдпреВрд╢рдиреНрд╕рдордзреНрдпреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдирд╛рдЪреА рддреБрд▓рдирд╛ рдХрд░реВрдпрд╛:

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 рд╡реНрд╣реЕрд▓реНрдпреВ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлреАрд▓реНрдбрд╕рд╣ рд╕рдВрдкреВрд░реНрдг рдкрдВрдХреНрддреАрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛рдд рдЖрдгрд┐ рд╕рд░реНрд╡ рдХрд╛рд╣реА рдореЛрдареНрдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдВрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рддрд╛рдд. рдпрд╛ рдкрдзреНрджрддреАрдЪрд╛ рдлрд╛рдпрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рдЬрд╡рд│рдЬрд╡рд│ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рдЗрдВрдбреЗрдХреНрд╕рдордзреНрдпреЗ рдЕрд╕рд▓реНрдпрд╛рдиреЗ рддреБрдореНрд╣реА рдЬрдЯрд┐рд▓ рдХреНрд╡реЗрд░реА рддреНрд╡рд░реАрдд рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛. рдкрд░рдВрддреБ рдпрд╛рдЪреА рдХрд┐рдВрдордд рдореЛрдЬрд╛рд╡реА рд▓рд╛рдЧрддреЗ рдХрд╛рд░рдг рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЛрдард╛ рд╣реЛрддреЛ, рдЬреЗ рдореЗрдорд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдВрдордзреНрдпреЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛрддреЗ. рдкрд░рд┐рдгрд╛рдореА, рдкреВрд░реНрдг-рдордЬрдХреВрд░ рд▓реЙрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдЖрдХрд╛рд░рд╛рдд рд╕реНрд╡рддрдГ рд▓реЙрдЧрд╢реА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рдпреЗрддреЛ. рддреНрдпрд╛рддреВрди рджреНрд░реБрддрдкрдгреЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдорд░реАрдордзреНрдпреЗ рд▓реЛрдб рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдЖрдгрд┐ рдЬрд┐рддрдХреЗ рдЬрд╛рд╕реНрдд рд▓реЙрдЧ, рддрд┐рддрдХреНрдпрд╛ рд╡реЗрдЧрд╛рдиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╡рд╛рдврддреЛ рдЖрдгрд┐ рдЕрдзрд┐рдХ рдореЗрдорд░реА рд╡рд╛рдкрд░рддреЛ.

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

рдореЛрдареНрдпрд╛, рд╡реЗрдЧрд╡рд╛рди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЖрдгрд┐ рд▓рд╣рд╛рди, рд╕рдорд╛рдВрддрд░ рдмреНрд░реВрдЯ-рдлреЛрд░реНрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдпрд╛рдВрдЪреНрдпрд╛рддреАрд▓ рд╣рд╛ рдЯреНрд░реЗрдб-рдСрдл рд▓реЛрдХреАрд▓рд╛ рд╕рд┐рд╕реНрдЯрдордЪреА рдХрд┐рдВрдордд рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЛ. рд╣реЗ рд▓рд╡рдЪрд┐рдХрдкрдгреЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ рдЖрдгрд┐ рдЧрд░рдЬреЗрдиреБрд╕рд╛рд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ.

рд▓реЛрдХреА рд╕реНрдЯреЕрдХрдордзреНрдпреЗ рддреАрди рдШрдЯрдХ рдЕрд╕рддрд╛рдд: рдкреНрд░реЙрдордЯреЗрд▓, рд▓реЛрдХреА, рдЧреНрд░рд╛рдлрд╛рдирд╛. рдкреНрд░реЙрдордЯреЗрд▓ рд▓реЙрдЧ рдЧреЛрд│рд╛ рдХрд░рддреЗ, рддреНрдпрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рдЖрдгрд┐ рд▓реЛрдХреАрд▓рд╛ рдкрд╛рдард╡рддреЗ. рд▓реЛрдХреА рддреНрдпрд╛рдВрдирд╛ рдареЗрд╡рддреЛ. рдЖрдгрд┐ Grafana Loki рдХрдбреВрди рдбреЗрдЯрд╛рдЪреА рд╡рд┐рдирдВрддреА рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВ рд╢рдХрддреЛ. рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, рд▓реЛрдХреА рдХреЗрд╡рд│ рд▓реЙрдЧ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛рджреНрд╡рд╛рд░реЗ рд╢реЛрдзрдгреНрдпрд╛рд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдК рд╢рдХрдд рдирд╛рд╣реА. рд╕рдВрдкреВрд░реНрдг рд╕реНрдЯреЕрдХ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдорд╛рд░реНрдЧ рд╡рд╛рдкрд░реВрди рдпреЗрдгрд╛рд░реНтАНрдпрд╛ рдбреЗрдЯрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдгрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрддреНрддрдо рд╕рдВрдзреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ.
рдкреНрд░рддрд┐рд╖реНрдард╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпреЗрдЪреЗ рд╡рд░реНрдгрди рдЖрдврд│реВ рд╢рдХрддреЗ рдпреЗрдереЗ.

рд▓реЙрдЧ рд╢реЛрдз

рддреБрдореНрд╣реА рд╡рд┐рд╢реЗрд╖ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдЗрдВрдЯрд░рдлреЗрд╕ - рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░рдордзреНрдпреЗ рд▓реЙрдЧ рд╢реЛрдзреВ рд╢рдХрддрд╛. рдХреНрд╡реЗрд░реА LogQL рднрд╛рд╖рд╛ рд╡рд╛рдкрд░рддрд╛рдд, рдЬреА Prometheus рдордзреНрдпреЗ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ PromQL рд╕рд╛рд░рдЦреАрдЪ рдЖрд╣реЗ. рддрддреНрд╡рддрдГ, рдпрд╛рдЪрд╛ рд╡рд┐рдЪрд╛рд░ рд╡рд┐рддрд░рд┐рдд grep рдореНрд╣рдгреВрди рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

рд╢реЛрдз рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрд╕реЗ рджрд┐рд╕рддреЗ:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

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

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

рд▓реЛрдХреА рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдореБрд│реЗ, рддреБрдореНрд╣реА рдирд┐рд╡рдбрдХрд░реНрддреНрдпрд╛рд╢рд┐рд╡рд╛рдп рдХреНрд╡реЗрд░реА рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдкрд░рдВрддреБ рд▓реЗрдмрд▓реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣рд╡реА рддрд╢реА рд╕рд╛рдорд╛рдиреНрдп рдХреЗрд▓реА рдЬрд╛рдК рд╢рдХрддрд╛рдд.

рдХрд░реНрд▓реА рдмреНрд░реЗрд╕реЗрд╕рдордзреНрдпреЗ рдирд┐рд╡рдбрдХ рд╣реЗ рдореБрдЦреНрдп рдореВрд▓реНрдп рдЕрд╕рддреЗ. рддреБрдореНрд╣реА рдирд┐рд╡рдбрдХ рдПрдХрддреНрд░ рдХрд░реВ рд╢рдХрддрд╛ рдЖрдгрд┐ рдСрдкрд░реЗрдЯрд░ =, != рдХрд┐рдВрд╡рд╛ рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕реНрдкреНрд░реЗрд╢рди рд╡рд╛рдкрд░реВрди рднрд┐рдиреНрди рд╢реЛрдз рдкрд░рд┐рд╕реНрдерд┐рддреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реВ рд╢рдХрддрд╛:

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

рдлрд┐рд▓реНрдЯрд░ рд╣рд╛ рдордЬрдХреВрд░ рдХрд┐рдВрд╡рд╛ regexp рдЖрд╣реЗ рдЬреЛ рдирд┐рд╡рдбрдХрд░реНрддреНрдпрд╛рджреНрд╡рд╛рд░реЗ рдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реЗрд▓рд╛ рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рдлрд┐рд▓реНрдЯрд░ рдХрд░реЗрд▓.

рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдореЛрдбрдордзреНрдпреЗ рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рддрджрд░реНрде рдЖрд▓реЗрдЦ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, nginx рд▓реЙрдЧрдордзреНрдпреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдЕрд╕рд▓реЗрд▓реА рдПрдВрдЯреНрд░реА рдХрд┐рддреА рд╡реЗрд│рд╛ рджрд┐рд╕рддреЗ рд╣реЗ рддреБрдореНрд╣реА рд╢реЛрдзреВ рд╢рдХрддрд╛:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдХреНрд╖рдорддрд╛рдВрдЪреЗ рд╕рдВрдкреВрд░реНрдг рд╡рд░реНрдгрди рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдгрд╛рдд рдЖрдврд│реВ рд╢рдХрддреЗ LogQL.

рд▓реЙрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ

рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рдЪреЗ рдЕрдиреЗрдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗрдд:

  • рд▓реЙрдЧ рдЧреЛрд│рд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдЯреЕрдХрдЪрд╛ рдПрдХ рдорд╛рдирдХ рдШрдЯрдХ, Promtail рд╡рд╛рдкрд░рдгреЗ.
  • рд╡рд╛рдкрд░реВрди рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░рдордзреВрди рдереЗрдЯ рд▓реЛрдХреА рдбреЙрдХрд░ рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдпрд╡реНрд╣рд░.
  • Fluentd рдХрд┐рдВрд╡рд╛ Fluent Bit рд╡рд╛рдкрд░рд╛, рдЬреЗ рд▓реЛрдХреАрд▓рд╛ рдбреЗрдЯрд╛ рдкрд╛рдард╡реВ рд╢рдХрддрд╛рдд. рдкреНрд░реЙрдордЯреЗрд▓рдЪреНрдпрд╛ рд╡рд┐рдкрд░реАрдд, рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдЬрд╡рд│рдЬрд╡рд│ рдХреЛрдгрддреНрдпрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рд▓реЙрдЧрд╕рд╛рдареА рд░реЗрдбреАрдореЗрдб рдкрд╛рд░реНрд╕рд░ рдЖрд╣реЗрдд рдЖрдгрд┐ рддреЗ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рд▓реЙрдЧ рджреЗрдЦреАрд▓ рд╣рд╛рддрд╛рд│реВ рд╢рдХрддрд╛рдд.

рд╕рд╣рд╕рд╛ Promtail рдкрд╛рд░реНрд╕рд┐рдВрдЧрд╕рд╛рдареА рд╡рд╛рдкрд░рд▓реЗ рдЬрд╛рддреЗ. рд╣реЗ рддреАрди рдЧреЛрд╖реНрдЯреА рдХрд░рддреЗ:

  • рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд╢реЛрдзрддреЛ.
  • рддреНрдпрд╛рдВрдирд╛ рд▓реЗрдмрд▓реЗ рдЬреЛрдбрддреЗ.
  • рд▓реЛрдХреАрд▓рд╛ рдбреЗрдЯрд╛ рдкрд╛рдард╡рддреЗ.

рд╕рдзреНрдпрд╛ Promtail рд╕реНрдерд╛рдирд┐рдХ рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ systemd рдЬрд░реНрдирд▓рдордзреАрд▓ рд▓реЙрдЧ рд╡рд╛рдЪреВ рд╢рдХрддреЗ. рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрдирд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ рдЬреНрдпрд╛рдордзреВрди рд▓реЙрдЧ рдЧреЛрд│рд╛ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд.

Kubernetes рд╕рд╣ рдПрдХреАрдХрд░рдг рдЖрд╣реЗ: Promtail рдЖрдкреЛрдЖрдк, Kubernetes REST API рджреНрд╡рд╛рд░реЗ, рдХреНрд▓рд╕реНрдЯрд░рдЪреА рд╕реНрдерд┐рддреА рдУрд│рдЦрддреЗ рдЖрдгрд┐ рдиреЛрдб, рд╕реЗрд╡рд╛ рдХрд┐рдВрд╡рд╛ рдкреЙрдбрдордзреВрди рд▓реЙрдЧ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ, рдХреБрдмрд░рдиреЗрдЯреЗрд╕рдЪреНрдпрд╛ рдореЗрдЯрд╛рдбреЗрдЯрд╛ (рдкреЙрдбрдЪреЗ рдирд╛рд╡, рдлрд╛рдЗрд▓ рдирд╛рд╡ рдЗ.) рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдмрд▓реЗ рд▓рдЧреЗрдЪ рдкреЛрд╕реНрдЯ рдХрд░рддреЗ. .

рдЖрдкрдг рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╡рд╛рдкрд░реВрди рд▓реЙрдЧрдордзреАрд▓ рдбреЗрдЯрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдмрд▓реЗ рджреЗрдЦреАрд▓ рд╣рдБрдЧ рдХрд░реВ рд╢рдХрддрд╛. рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдкреНрд░реЙрдордЯреЗрд▓рдордзреНрдпреЗ рдЪрд╛рд░ рдкреНрд░рдХрд╛рд░рдЪреЗ рдЯрдкреНрдкреЗ рдЕрд╕реВ рд╢рдХрддрд╛рдд. рдордзреНрдпреЗ рдЕрдзрд┐рдХ рддрдкрд╢реАрд▓ рдЕрдзрд┐рдХреГрдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг, рдореА рд▓рдЧреЗрдЪ рдХрд╛рд╣реА рдмрд╛рд░рдХрд╛рд╡реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдИрди.

  1. рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЪрд░рдг. рд╣рд╛ RegEx рдЖрдгрд┐ JSON рд╕реНрдЯреЗрдЬ рдЖрд╣реЗ. рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рдЖрдореНрд╣реА рд▓реЙрдЧрдордзреВрди рддрдерд╛рдХрдерд┐рдд рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рдордзреНрдпреЗ рдбреЗрдЯрд╛ рдХрд╛рдврддреЛ. рдЖрдореНрд╣реА рдЬреЗрдПрд╕рдУрдПрди рдордзреВрди рдлрдХреНрдд рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рдордзреНрдпреЗ рдЖрд╡рд╢реНрдпрдХ рдлреАрд▓реНрдб рдХреЙрдкреА рдХрд░реВрди рдХрд┐рдВрд╡рд╛ рд░реЗрдЧреНрдпреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рдиреНрд╕ (RegEx) рджреНрд╡рд╛рд░реЗ рдХрд╛рдвреВ рд╢рдХрддреЛ, рдЬреЗрдереЗ рдирд╛рдорд╛рдВрдХрд┐рдд рдЧрдЯ рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рдордзреНрдпреЗ "рдореЕрдк рдХреЗрд▓реЗрд▓реЗ" рдЕрд╕рддрд╛рдд. рдХрд╛рдврд▓реЗрд▓рд╛ рдирдХрд╛рд╢рд╛ рдПрдХ рдХреА-рд╡реНрд╣реЕрд▓реНрдпреВ рд╕реНрдЯреЛрдЕрд░ рдЖрд╣реЗ, рдЬрд┐рдереЗ рдХреА рд╣реЗ рдлреАрд▓реНрдбрдЪреЗ рдирд╛рд╡ рдЖрд╣реЗ рдЖрдгрд┐ рдореВрд▓реНрдп рд╣реЗ рд▓реЙрдЧрдордзреАрд▓ рддреНрдпрд╛рдЪреЗ рдореВрд▓реНрдп рдЖрд╣реЗ.
  2. рдЯрдкреНрдкреЗ рдмрджрд▓рд╛. рдпрд╛ рд╕реНрдЯреЗрдЬрдордзреНрдпреЗ рджреЛрди рдкрд░реНрдпрд╛рдп рдЖрд╣реЗрдд: рдЯреНрд░рд╛рдиреНрд╕рдлреЙрд░реНрдо, рдЬрд┐рдереЗ рдЖрдореНрд╣реА рдЯреНрд░рд╛рдиреНрд╕рдлреЙрд░реНрдореЗрд╢рди рдирд┐рдпрдо рд╕реЗрдЯ рдХрд░рддреЛ рдЖрдгрд┐ рд╕реНрддреНрд░реЛрдд - рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рд╡рд░реВрди рдЯреНрд░рд╛рдиреНрд╕рдлреЙрд░реНрдореЗрд╢рдирд╕рд╛рдареА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд. рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рдордзреНрдпреЗ рдЕрд╕реЗ рдХреЛрдгрддреЗрд╣реА рдлреАрд▓реНрдб рдирд╕рд▓реНрдпрд╛рд╕, рддреЗ рддрдпрд╛рд░ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓. рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдирд╕рд▓реЗрд▓реА рд▓реЗрдмрд▓реЗ рддрдпрд╛рд░ рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рдпрд╛ рд╕реНрдЯреЗрдЬрд╡рд░ рдЖрдкрдг рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рддреАрд▓ рдбреЗрдЯрд╛ рдмрд▒реНрдпрд╛рдкреИрдХреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд╛рдкрд░реВрди рд╣рд╛рддрд╛рд│реВ рд╢рдХрддреЛ рдЧреЛрд▓рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдЖрдореНрд╣реА рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ рдХреА рдХрд╛рдврд▓реЗрд▓рд╛ рдирдХрд╛рд╢рд╛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рджрд░рдореНрдпрд╛рди рдкреВрд░реНрдгрдкрдгреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреНрдпрд╛рдореБрд│реЗ рддреЗ рд╢рдХреНрдп рд╣реЛрддреЗ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рддреНрдпрд╛рддреАрд▓ рдореВрд▓реНрдп рддрдкрд╛рд╕рдгреЗ: тАЬ{{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>[^/?.]+).*$

рдЪрд▓рд╛ 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 рдЖрдгрд┐ рд╕реНрдерд┐рддреА (HTTP рд╕реНрдерд┐рддреА) рд▓реЗрдмрд▓реЗ рд╕реЗрдЯ рдХреЗрд▓реА.

       - output:
           source: nginx_log_row

рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓рд╛. рдЖрддрд╛ рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рд╡рд░реВрди рд╕рд╛рдл тАЛтАЛрдХреЗрд▓реЗрд▓рд╛ nginx рд▓реЙрдЧ рд▓реЛрдХреАрд▓рд╛ рдЬрд╛рддреЛ.

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рд╡рд░реАрд▓ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдЪрд╛рд▓рд╡рд▓реНрдпрд╛рдирдВрддрд░, рддреБрдореНрд╣реА рдкрд╛рд╣реВ рд╢рдХрддрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдПрдВрдЯреНрд░реАрд▓рд╛ рд▓реЙрдЧрдордзреАрд▓ рдбреЗрдЯрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдмрд▓реЗ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реА рдЖрд╣реЗрдд.

рдПрдХ рдЧреЛрд╖реНрдЯ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рд░рдЦреА рдЖрд╣реЗ рдХреА рдореЛрдареНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдиреЗ рдореВрд▓реНрдпреЗ (рдХрд╛рд░реНрдбрд┐рдиреЕрд▓рд┐рдЯреА) рдЕрд╕рд▓реЗрд▓реА рд▓реЗрдмрд▓реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХреЗрд▓реНрдпрд╛рдиреЗ рд▓реЛрдХреАрдЪреА рдЧрддреА рдХрдореА рд╣реЛрдК рд╢рдХрддреЗ. рдореНрд╣рдгрдЬреЗрдЪ, рдЖрдкрдг рдЕрдиреБрдХреНрд░рдордгрд┐рдХреЗрдордзреНрдпреЗ рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде user_id рдЯрд╛рдХреВ рдирдпреЗ. рд▓реЗрдЦрд╛рдд рдпрд╛рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪрд╛ "рд▓реЛрдХреА рдордзреАрд▓ рд▓реЗрдмрд▓ рд▓реЙрдЧ рдХреНрд╡реЗрд░реА рдЬрд▓рдж рдЖрдгрд┐ рд╕реБрд▓рдн рдХрд╕реЗ рдмрдирд╡реВ рд╢рдХрддрд╛рдд" рдкрд░рдВрддреБ рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдирд╛рд╣реА рдХреА рддреБрдореНрд╣реА рдЗрдВрдбреЗрдХреНрд╕рд╢рд┐рд╡рд╛рдп user_id рджреНрд╡рд╛рд░реЗ рд╢реЛрдзреВ рд╢рдХрдд рдирд╛рд╣реА. рд╢реЛрдзрддрд╛рдирд╛ (рдбреЗрдЯрд╛ "рдкрдбреВрди рдШреНрдпрд╛") рддреБрдореНрд╣рд╛рд▓рд╛ рдлрд┐рд▓реНрдЯрд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ рдЖрдгрд┐ рдпреЗрдереЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкреНрд░рд╡рд╛рд╣ рдУрд│рдЦрдХрд░реНрддрд╛ рдореНрд╣рдгреВрди рдХрд╛рд░реНрдп рдХрд░рддреЗ.

рд▓реЙрдЧрдЪреЗ рд╡реНрд╣рд┐рдЬреНрдпреБрдЕрд▓рд╛рдпрдЭреЗрд╢рди

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

Loki LogQL рд╡рд╛рдкрд░реВрди Grafana рдЖрд▓реЗрдЦрд╛рдВрд╕рд╛рдареА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдореНрд╣рдгреВрди рдХрд╛рдо рдХрд░реВ рд╢рдХрддреЗ. рдЦрд╛рд▓реАрд▓ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рд╕рдорд░реНрдерд┐рдд рдЖрд╣реЗрдд:

  • рджрд░ - рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рд░реЗрдХреЙрд░реНрдбрдЪреА рд╕рдВрдЦреНрдпрд╛;
  • рдХрд╛рд▓рд╛рдВрддрд░рд╛рдиреЗ рдореЛрдЬрд╛ тАФ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢реНрд░реЗрдгреАрддреАрд▓ рд░реЗрдХреЙрд░реНрдбрдЪреА рд╕рдВрдЦреНрдпрд╛.

рд╕рдо, рд╕рд░рд╛рд╕рд░реА рдЖрдгрд┐ рдЗрддрд░ рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛рд░реНрдпреЗ рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд. рддреБрдореНрд╣реА рдмрд░реЗрдЪ рдЬрдЯрд┐рд▓ рдЖрд▓реЗрдЦ рддрдпрд╛рд░ рдХрд░реВ рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде HTTP рддреНрд░реБрдЯреАрдВрдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрдЪрд╛ рдЖрд▓реЗрдЦ:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдбреЗрдЯрд╛ рд╕реНрддреНрд░реЛрддрд╛рдЪреНрдпрд╛ рддреБрд▓рдиреЗрдд рд▓реЛрдХреА рд╣рд╛ рдорд╛рдирдХ рдбреЗрдЯрд╛ рд╕реНрддреНрд░реЛрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдордзреНрдпреЗ рдХрд╛рд╣реА рдкреНрд░рдорд╛рдгрд╛рдд рдХрдореА рдЭрд╛рд▓рд╛ рдЖрд╣реЗ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЖрдкрдг рдЖрдЦреНрдпрд╛рдпрд┐рдХрд╛ рдмрджрд▓реВ рд╢рдХрдд рдирд╛рд╣реА), рдкрд░рдВрддреБ рд▓реЛрдХреА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ рд╕реНрддреНрд░реЛрдд рдореНрд╣рдгреВрди рдХрдиреЗрдХреНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рд╣реЗ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдХреЗрд▓реЗрд▓реЗ рд╡рд░реНрддрди рдЖрд╣реЗ рдХреА рдирд╛рд╣реА рдпрд╛рдЪреА рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдирд╛рд╣реА, рдкрд░рдВрддреБ рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрдЪреНрдпрд╛ рдкреНрд░рддрд┐рд╕рд╛рджрд╛рдиреБрд╕рд╛рд░рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдбреЗрдЯрд╛рд╕реЛрд░реНрд╕ рдореНрд╣рдгреВрди рд▓реЛрдХреА рдХрд╕реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛рд╡реЗ? ┬╖ рдЕрдВрдХ #1222 ┬╖ grafana/lokiтАЭ, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рдпрджреЗрд╢реАрд░ рдЖрд╣реЗ рдЖрдгрд┐ рд▓реЛрдХреА PromQL рд╢реА рдкреВрд░реНрдгрдкрдгреЗ рд╕реБрд╕рдВрдЧрдд рдЖрд╣реЗ.

Prometheus рдкреНрд░рдХрд╛рд░рд╛рд╕рд╣ Loki рд▓рд╛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдореНрд╣рдгреВрди рдЬреЛрдбрд╛ рдЖрдгрд┐ URL /loki рдЬреЛрдбрд╛:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдЖрдгрд┐ рдЖрдореНрд╣реА рдЖрд▓реЗрдЦ рдмрдирд╡реВ рд╢рдХрддреЛ, рдЬрд╕реЗ рдХреА рдЖрдореНрд╣реА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рдЪреНрдпрд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рд╕рд╣ рдХрд╛рдо рдХрд░рдд рдЖрд╣реЛрдд:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрддреАрд▓ рд╡рд┐рд╕рдВрдЧрддреА рддрд╛рддреНрдкреБрд░рддреА рдЖрд╣реЗ рдЖрдгрд┐ рд╡рд┐рдХрд╛рд╕рдХ рднрд╡рд┐рд╖реНрдпрд╛рдд рд╣реЗ рджреБрд░реБрд╕реНрдд рдХрд░рддреАрд▓.

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

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

рд▓реЛрдХреА рд▓реЙрдЧрдордзреВрди рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛рдврдгреНрдпрд╛рдЪреА рдЖрдгрд┐ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рд▓рд╛ рдкрд╛рдард╡рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, nginx рд▓реЙрдЧрдордзреНрдпреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рд╕рд╛рдж рдмрд╛рдЗрдЯреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдЕрд╕рддреЗ, рддрд╕реЗрдЪ, рдорд╛рдирдХ рд▓реЙрдЧ рдлреЙрд░рдореЕрдЯрдЪреНрдпрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрджрд▓рд╛рд╕рд╣, рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдгреНрдпрд╛рд╕рд╛рдареА рд▓рд╛рдЧрдгрд╛рд░рд╛ рд╕реЗрдХрдВрджрд╛рдд рд╡реЗрд│ рдЕрд╕рддреЛ. рд╣рд╛ рдбреЗрдЯрд╛ рдХрд╛рдврд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рд▓рд╛ рдкрд╛рдард╡рд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.

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

рдкрд░реНрдпрд╛рдп рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдврд▓реЗрд▓реНрдпрд╛ рдирдХрд╛рд╢рд╛рд╡рд░реАрд▓ рдбреЗрдЯрд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЖрдгрд┐ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. рд╣реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд▓реЛрдХреАрд▓рд╛ рдкрд╛рдард╡рд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд - рддреЗ Promtail/metrics endpoint рдордзреНрдпреЗ рджрд┐рд╕рддрд╛рдд. рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рд╡рд░реАрд▓ рдЙрджрд╛рд╣рд░рдгрд╛рдордзреНрдпреЗ, request_type=тАЬapiтАЭ рд╕рд╛рдареА рдЖрдореНрд╣реА рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдореЗрдЯреНрд░рд┐рдХ рдЧреЛрд│рд╛ рдХрд░рддреЛ. рдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рд╕рд╣ рдЯрдХреНрдХреЗрд╡рд╛рд░реА рдорд┐рд│рд╡рдгреЗ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ. рд╕реНрдерд┐рд░ рдЖрдгрд┐ рдлреЛрдЯреЛрд╕рд╛рдареА, рдЖрдореНрд╣реА рдмрд╛рдЗрдЯреНрд╕рдЪреА рдмреЗрд░реАрдЬ рдЖрдгрд┐ рд╕рд░рд╛рд╕рд░реА рдХрд╛рдврдгреНрдпрд╛рд╕рд╛рдареА рдЖрдореНрд╣рд╛рд▓рд╛ рдмрд╛рдЗрдЯреНрд╕ рдорд┐рд│рд╛рд▓реЗрд▓реНрдпрд╛ рдкрдВрдХреНрддреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдЧреЛрд│рд╛ рдХрд░рддреЛ.

рдореЗрдЯреНрд░рд┐рдХреНрд╕рдмрджреНрджрд▓ рдЕрдзрд┐рдХ рд╡рд╛рдЪрд╛ рдпреЗрдереЗ.

Promtail рд╡рд░ рдкреЛрд░реНрдЯ рдЙрдШрдбрд╛:

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

promtail_custom рдЙрдкрд╕рд░реНрдЧ рдЕрд╕рд▓реЗрд▓реЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рджрд┐рд╕рдд рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдХрд░рд╛:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рдЪреА рд╕реНрдерд╛рдкрдирд╛. рдЬреЙрдм рдкреНрд░реЛрдордЯреЗрд▓ рдЬреЛрдбрд╛:

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

рдЖрдгрд┐ рдЖрдореНрд╣реА рдПрдХ рдЖрд▓реЗрдЦ рдХрд╛рдврддреЛ:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рддреБрдореНрд╣реА рд╢реЛрдзреВ рд╢рдХрддрд╛, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЪрд╛рд░ рд╕рд░реНрд╡рд╛рдд рд╣рд│реВ рдХреНрд╡реЗрд░реА. рддреБрдореНрд╣реА рдпрд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рд╕рд╛рдареА рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рджреЗрдЦреАрд▓ рд╕реЗрдЯ рдХрд░реВ рд╢рдХрддрд╛.

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

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

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рднрд╛рдЧ S3-рд╕реБрд╕рдВрдЧрдд рд╕реНрдЯреЛрд░реЗрдЬрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд рдЖрдгрд┐ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рдВрдЪрдпрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреНрд╖реИрддрд┐рдЬрд░рд┐рддреНрдпрд╛ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдбреЗрдЯрд╛рдмреЗрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ: Cassandra, BigTable рдХрд┐рдВрд╡рд╛ DynamoDB. рд▓реЛрдХреАрдЪреЗ рдЗрддрд░ рднрд╛рдЧ - рд╡рд┐рддрд░рдХ (рд▓реЗрдЦрдирд╛рд╕рд╛рдареА) рдЖрдгрд┐ рдХреНрд╡реЗрд░рд┐рдпрд░ (рдХреНрд╡реЗрд░реАрд╕рд╛рдареА) - рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рдЖрд╣реЗрдд рдЖрдгрд┐ рдХреНрд╖реИрддрд┐рдЬ рдкреНрд░рдорд╛рдгрд╛рдд рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд.

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

рд▓реЛрдХреА рдЖрдгрд┐ ELK рдЪреА рддреБрд▓рдирд╛

рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЖрдХрд╛рд░

рдкрд░рд┐рдгрд╛рдореА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЖрдХрд╛рд░ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рдореА nginx рдХрдВрдЯреЗрдирд░рдордзреВрди рд▓реЙрдЧ рдШреЗрддрд▓реЗ рдЬреНрдпрд╛рд╕рд╛рдареА рд╡рд░реАрд▓ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реА рд╣реЛрддреА. рд▓реЙрдЧ рдлрд╛рдЗрд▓рдордзреНрдпреЗ рдПрдХреВрдг 406 MB рдЪреНрдпрд╛ рд╡реНрд╣реЙрд▓реНрдпреВрдорд╕рд╣ 624 рдУрд│реА рдЖрд╣реЗрдд. рдиреЛрдВрджреА рдПрдХрд╛ рддрд╛рд╕рд╛рдЪреНрдпрд╛ рдЖрдд рддрдпрд╛рд░ рдЭрд╛рд▓реНрдпрд╛, рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдж рдЕрдВрджрд╛рдЬреЗ 109 рдиреЛрдВрджреА.

рд▓реЙрдЧрдордзреАрд▓ рджреЛрди рдУрд│реАрдВрдЪреЗ рдЙрджрд╛рд╣рд░рдг:

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

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

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

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

рдореЗрдорд░реА рд╡рд╛рдкрд░

рд▓реЛрдХреА рдХрдбреВрди рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдд рдЖрд╣реЗ

рдЬрд░ рдЖрдкрдг рд╕рдВрдкреВрд░реНрдг рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕ рдЖрдгрд┐ ELK рд╕реНрдЯреЕрдХрдЪреА рддреБрд▓рдирд╛ рдХреЗрд▓реА рддрд░ рд▓реЛрдХреА рдХрд┐рддреНрдпреЗрдХ рдкрдЯ рдХрдореА тАЬрдЦрд╛рддреЛтАЭ. рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЖрд╣реЗ рдХреА рдЧреЛ рд╕реЗрд╡рд╛ Java рд╕реЗрд╡реЗрдкреЗрдХреНрд╖рд╛ рдХрдореА рд╡рд╛рдкрд░рддреЗ рдЖрдгрд┐ JVM Heap Elasticsearch рдЪрд╛ рдЖрдХрд╛рд░ рдЖрдгрд┐ рд▓реЛрдХреАрд╕рд╛рдареА рд╡рд╛рдЯрдк рдХреЗрд▓реЗрд▓реА рдореЗрдорд░реА рдпрд╛рдВрдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреЗ рдЪреБрдХреАрдЪреЗ рдЖрд╣реЗ, рдкрд░рдВрддреБ рдЕрд╕реЗ рдЕрд╕рд▓реЗ рддрд░реА рд▓реЛрдХреА рдЦреВрдк рдХрдореА рдореЗрдорд░реА рд╡рд╛рдкрд░рддреЗ рд╣реЗ рд▓рдХреНрд╖рд╛рдд рдШреЗрдгреНрдпрд╛рд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ. рддреНрдпрд╛рдЪрд╛ CPU рдлрд╛рдпрджрд╛ рдЗрддрдХрд╛ рд╕реНрдкрд╖реНрдЯ рдирд╛рд╣реА, рдкрд░рдВрддреБ рддреЛ рджреЗрдЦреАрд▓ рдЙрдкрд╕реНрдерд┐рдд рдЖрд╣реЗ.

рдЧрддреА

рд▓реЛрдХреА рдЬрд▓рдж рд▓реЙрдЧ тАЬрдЦрд╛рдКрди рдЯрд╛рдХрддреЛтАЭ. рд╡реЗрдЧ рдЕрдиреЗрдХ рдШрдЯрдХрд╛рдВрд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдЕрд╕рддреЛ - рдХреЛрдгрддреНрдпрд╛ рдкреНрд░рдХрд╛рд░рдЪреЗ рд▓реЙрдЧ рдЖрд╣реЗрдд, рдЖрдореНрд╣реА рддреНрдпрд╛рдВрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛рдирд╛ рдХрд┐рддреА рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдЖрд╣реЛрдд, рдиреЗрдЯрд╡рд░реНрдХ, рдбрд┐рд╕реНрдХ рдЗ. - рдкрд░рдВрддреБ рддреЗ рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ ELK рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ (рдорд╛рдЭреНрдпрд╛ рдЪрд╛рдЪрдгреАрдд - рд╕реБрдорд╛рд░реЗ рджреБрдкреНрдкрдЯ). рд▓реЛрдХреА рдЗрдВрдбреЗрдХреНрд╕рдордзреНрдпреЗ рдЦреВрдк рдХрдореА рдбреЗрдЯрд╛ рдареЗрд╡рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдЗрдВрдбреЗрдХреНрд╕рд┐рдВрдЧрд╡рд░ рдХрдореА рд╡реЗрд│ рдШрд╛рд▓рд╡рддреЗ рдпрд╛ рд╡рд╕реНрддреБрд╕реНрдерд┐рддреАрджреНрд╡рд╛рд░реЗ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ рдЖрд╣реЗ. рд╢реЛрдз рдЧрддреАрд╕рд╣, рдкрд░рд┐рд╕реНрдерд┐рддреА рдЙрд▓рдЯ рдЖрд╣реЗ: рд▓реЛрдХреА рдЕрдиреЗрдХ рдЧреАрдЧрд╛рдмрд╛рдЗрдЯреНрд╕рдкреЗрдХреНрд╖рд╛ рдореЛрдареНрдпрд╛ рдбреЗрдЯрд╛рд╡рд░ рд▓рдХреНрд╖рдгреАрдпрдкрдгреЗ рдХрдореА рдХрд░рддреЗ, рддрд░ ELK рдЪрд╛ рд╢реЛрдз рдЧрддреА рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдЖрдХрд╛рд░рд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдирд╛рд╣реА.

рд▓реЙрдЧ рд╢реЛрдз

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

рд╕рдВрд╡рд╛рдж

рд╕рд░реНрд╡ рдкреНрд░рдердо, рддреЗ рд╕реБрдВрджрд░ рдЖрд╣реЗ (рдХреНрд╖рдорд╕реНрд╡, рдкреНрд░рддрд┐рдХрд╛рд░ рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА). Grafana рдордзреНрдпреЗ рдПрдХ рдЫрд╛рди рджрд┐рд╕рдгрд╛рд░рд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗ, рдкрд░рдВрддреБ Kibana рдЕрдзрд┐рдХ рд╡реИрд╢рд┐рд╖реНрдЯреНрдпрдкреВрд░реНрдг рдЖрд╣реЗ.

рд▓реЛрдХреАрдЪреЗ рдлрд╛рдпрджреЗ рдЖрдгрд┐ рддреЛрдЯреЗ

рдпрд╛рдЪрд╛ рдПрдХ рдлрд╛рдпрджрд╛ рдЕрд╕рд╛ рдЖрд╣реЗ рдХреА рд▓реЛрдХреА рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рд╢реА рд╕рдорд╛рдХрд▓рд┐рдд рд╣реЛрддреЗ, рддреНрдпрд╛рдореБрд│реЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдЖрдгрд┐ рдЕрд▓рд░реНрдЯрд┐рдВрдЧ рдСрдл рдж рдмреЙрдХреНрд╕ рдорд┐рд│рддрд╛рдд. рдиреЛрдВрджреА рдЧреЛрд│рд╛ рдХрд░рдгреЗ рдЖрдгрд┐ рддреЗ рдХреБрдмрд░реНрдиреЗрдЯреНрд╕ рдкреЙрдбреНрд╕рдордзреВрди рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░рдгреЗ рд╕реЛрдпреАрдЪреЗ рдЖрд╣реЗ, рдХрд╛рд░рдг рддреНрдпрд╛рдд рдкреНрд░реЛрдорд┐рдерд┐рдпрд╕рдХрдбреВрди рд╡рд╛рд░рд╢рд╛рдиреЗ рдорд┐рд│рд╛рд▓реЗрд▓реА рд╕реЗрд╡рд╛ рд╢реЛрдз рдЖрд╣реЗ рдЖрдгрд┐ рд▓реЗрдмрд▓реЗ рдЖрдкреЛрдЖрдк рд╕рдВрд▓рдЧреНрди рд╣реЛрддрд╛рдд.

рдХрдорддрд░рддрд╛ рдореНрд╣рдгрдЬреЗ рдХрдордХреБрд╡рдд рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг. рдХрд╛рд╣реА рдЧреЛрд╖реНрдЯреА, рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, Promtail рдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрдгрд┐ рдХреНрд╖рдорддрд╛, рдореА рдлрдХреНрдд рдХреЛрдбрдЪреНрдпрд╛ рдЕрднреНрдпрд╛рд╕рд╛рдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрдд рд╢реЛрдзрд▓реЗ, рд╕реБрджреИрд╡рд╛рдиреЗ рддреЗ рдУрдкрди-рд╕реЛрд░реНрд╕ рдЖрд╣реЗ. рдЖрдгрдЦреА рдПрдХ рддреЛрдЯрд╛ рдореНрд╣рдгрдЬреЗ рдХрдордХреБрд╡рдд рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреНрд╖рдорддрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рд▓реЛрдХреА рдорд▓реНрдЯреАрд▓рд╛рдЗрди рд▓реЙрдЧрдЪреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВ рд╢рдХрдд рдирд╛рд╣реА. рдЖрдгрдЦреА рдПрдХ рддреЛрдЯрд╛ рдореНрд╣рдгрдЬреЗ рд▓реЛрдХреА рд╣реЗ рддреБрд▓рдиреЗрдиреЗ рддрд░реБрдг рддрдВрддреНрд░рдЬреНрдЮрд╛рди рдЖрд╣реЗ (рд░рд┐рд▓реАрдЭ 1.0 рдиреЛрд╡реНрд╣реЗрдВрдмрд░ 2019 рдордзреНрдпреЗ рд╣реЛрддреЗ).

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

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

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

рдЖрдгрд┐ рдЬрд░реА рд╕рдВрд╢реЛрдзрдирд╛рдирдВрддрд░ рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдЭрд╛рд▓реЗ рдХреА рдЖрдореНрд╣реА рд▓реЛрдХреА рд╡рд╛рдкрд░реВ рд╢рдХрдд рдирд╛рд╣реА, рдЖрдореНрд╣рд╛рд▓рд╛ рдЖрд╢рд╛ рдЖрд╣реЗ рдХреА рд╣реЗ рдкреЛрд╕реНрдЯ рддреБрдореНрд╣рд╛рд▓рд╛ рддреБрдордЪреНрдпрд╛ рдирд┐рд╡рдбреАрдордзреНрдпреЗ рдорджрдд рдХрд░реЗрд▓.

рд▓реЗрдЦрд╛рдд рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрд╕рд╣ рднрд╛рдВрдбрд╛рд░ рд╕реНрдерд┐рдд рдЖрд╣реЗ рдпреЗрдереЗ.

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛