рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

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

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

рд▓реЛрдХреА рдХреНрдпрд╛ рд╣реИ?

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

рд╣реЛрдо рдкреЗрдЬ, 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"

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

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

рдПрдХ рдмрдбрд╝реЗ, рддреЗрдЬрд╝ рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рдПрдХ рдЫреЛрдЯреЗ, рд╕рдорд╛рдирд╛рдВрддрд░ рдЬрд╛рдирд╡рд░-рдмрд▓ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдмреАрдЪ рдпрд╣ рд╡реНрдпрд╛рдкрд╛рд░-рдмрдВрдж рд▓реЛрдХреА рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд▓рд╛рдЧрдд рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

рд▓реЙрдЧ рдЦреЛрдЬреЗрдВ

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

рдЦреЛрдЬ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

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

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

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

рдЪрдпрдирдХрд░реНрддрд╛ рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдорд╛рди рд╣реИред рдЖрдк рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ =, != рдпрд╛ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдЦреЛрдЬ рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

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

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

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреВрд░рд╛ рд╡рд┐рд╡рд░рдг рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЙрдЧрдХреНрдпреВрдПрд▓.

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

рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ:

  • рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреЗ рдПрдХ рдорд╛рдирдХ рдШрдЯрдХ, рдкреНрд░реЛрдордЯреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
  • рд╕реАрдзреЗ рдбреЙрдХрд░ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЛрдХреА рдбреЙрдХрд░ рд▓реЙрдЧрд┐рдВрдЧ рдбреНрд░рд╛рдЗрд╡рд░ред
  • рдлреНрд▓реБрдПрдВрдЯрдбреА рдпрд╛ рдлреНрд▓реБрдПрдВрдЯ рдмрд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рд▓реЛрдХреА рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░реЛрдордЯреЗрд▓ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдирдХреЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдкрд╛рд░реНрд╕рд░ рд╣реИрдВ рдФрд░ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рд▓реЙрдЧ рдХреЛ рднреА рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдордЯреЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рддреАрди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  • рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдвреВрдБрдврддрд╛ рд╣реИ.
  • рдЙрди рдкрд░ рд▓реЗрдмрд▓ рд▓рдЧрд╛рддрд╛ рд╣реИ.
  • рд▓реЛрдХреА рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддрд╛ рд╣реИред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░реЛрдордЯреЗрд▓ рд╕реНрдерд╛рдиреАрдп рдлрд╛рдЗрд▓реЛрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдордбреА рдЬрд░реНрдирд▓ рд╕реЗ рд▓реЙрдЧ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

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

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

  1. рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдЪрд░рдг. рдпрд╣ рд░реЗрдЧреЗрдХреНрд╕ рдФрд░ JSON рдЪрд░рдг рд╣реИред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рд╣рдо рд▓реЙрдЧ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рддрдерд╛рдХрдерд┐рдд рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред рд╣рдо JSON рд╕реЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдХрд░, рдпрд╛ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди (RegEx) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ JSON рд╕реЗ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рдирд╛рдорд┐рдд рд╕рдореВрд╣ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ "рдореИрдк" рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХреНрд╕рдЯреНрд░реЗрдХреНрдЯреЗрдб рдореИрдк рдПрдХ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рднрдВрдбрд╛рд░ рд╣реИ, рдЬрд╣рд╛рдВ рдХреБрдВрдЬреА рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рд╣реИ, рдФрд░ рдорд╛рди рд▓реЙрдЧ рд╕реЗ рдЙрд╕рдХрд╛ рдореВрд▓реНрдп рд╣реИред
  2. рдкрд░рд┐рд╡рд░реНрддрди рдЪрд░рдг. рдЗрд╕ рдЪрд░рдг рдореЗрдВ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдкрд░рд┐рд╡рд░реНрддрди, рдЬрд╣рд╛рдВ рд╣рдо рдкрд░рд┐рд╡рд░реНрддрди рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕реНрд░реЛрдд - рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрддред рдпрджрд┐ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдлрд╝реАрд▓реНрдб рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рдРрд╕реЗ рд▓реЗрдмрд▓ рдмрдирд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреЛ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░ рд╣рдо рдХрд╛рдлреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЧреЛрд▓рд╛рдВрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ. рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдХреЛ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдореЗрдВ рдорд╛рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ: "{{рдпрджрд┐ .tag}рдЯреИрдЧ рдорд╛рди рдореМрдЬреВрдж рд╣реИ{рдЕрдВрдд}}"ред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╕реНрдерд┐рддрд┐рдпреЛрдВ, рд▓реВрдкреЛрдВ рдФрд░ рдХреБрдЫ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЬреИрд╕реЗ рд░рд┐рдкреНрд▓реЗрд╕ рдФрд░ рдЯреНрд░рд┐рдо рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
  3. рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЪрд░рдг. рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЖрдк рдирд┐рдХрд╛рд▓реА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
    • рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдбреЗрдЯрд╛ рд╕реЗ рдПрдХ рд▓реЗрдмрд▓ рдмрдирд╛рдПрдВ, рдЬрд┐рд╕реЗ рд▓реЛрдХреА рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
    • рд▓реЙрдЧ рд╕реЗ рдИрд╡реЗрдВрдЯ рд╕рдордп рдмрджрд▓реЗрдВ рдпрд╛ рд╕реЗрдЯ рдХрд░реЗрдВред
    • рдбреЗрдЯрд╛ (рд▓реЙрдЧ рдЯреЗрдХреНрд╕реНрдЯ) рдмрджрд▓реЗрдВ рдЬреЛ рд▓реЛрдХреА рдореЗрдВ рдЬрд╛рдПрдЧрд╛ред
    • рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдмрдирд╛рдПрдВ.
  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

рдЙрди рд╕рднреА рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдЬрд┐рдирдХрд╛ рдЫрд╡рд┐_рдирд╛рдо 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 рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВред рд░реЗрдЧреЗрдХреНрд╕рдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рд╕реНрдерд┐рд░ рдбреЗрдЯрд╛, рдлрд╝реЛрдЯреЛ, рдПрдкреАрдЖрдИ рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░реЗрдВред

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

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

       - labels:
           api_request:
           virtual_host:
           request_type:
           status:

рд╣рдо рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рдЬреЛ рдбрд╛рд▓рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ рдЙрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╣рдо рдПрдкреАрдЖрдИ_рд░реЗрдХреНрд╡реЗрд╕реНрдЯ, рд╡рд░реНрдЪреБрдЕрд▓_рд╣реЛрд╕реНрдЯ, рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ_рдЯрд╛рдЗрдк рдФрд░ рд╕реНрдЯреЗрдЯрд╕ (рдПрдЪрдЯреАрдЯреАрдкреА рд╕реНрдЯреЗрдЯрд╕) рд▓реЗрдмрд▓ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

       - output:
           source: nginx_log_row

рдЖрдЙрдЯрдкреБрдЯ рдмрджрд▓реЗрдВ. рдЕрдм рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рд╕рд╛рдлрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ nginx рд▓реЙрдЧ рд▓реЛрдХреА рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

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

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

рд▓реЙрдЧ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рд▓реЛрдХреА LogQL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд╛рдлрд╛рдирд╛ рдЧреНрд░рд╛рдлрд╝ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ:

  • рджрд░ - рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛;
  • рд╕рдордп рдХреЗ рд╕рд╛рде рдЧрд┐рдирддреА - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реАрдорд╛ рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ред

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

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╛рдирдХ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рд▓реЛрдХреА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреБрдЫ рд╣рдж рддрдХ рдХрдо рд╣реЛ рдЧрдИ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рдВрд╡рджрдВрддреА рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рд▓реЛрдХреА рдХреЛ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬреА рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП "рд▓реЛрдХреА рдХреЛ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдбреЗрдЯрд╛рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ? ┬╖ рдЕрдВрдХ #1222 ┬╖ рдЧреНрд░рд╛рдлрд╛рдирд╛/рд▓реЛрдХреАтАЭ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдиреВрдиреА рд╣реИ, рдФрд░ рд▓реЛрдХреА PromQL рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИред

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рд▓реЛрдХреА рдХреЛ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдпреВрдЖрд░рдПрд▓ /рд▓реЛрдХреА рдЬреЛрдбрд╝реЗрдВ:

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рдФрд░ рд╣рдо рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╣рдо рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реЛрдВ:

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐ рдЕрд╕реНрдерд╛рдпреА рд╣реИ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░ рджреЗрдВрдЧреЗред

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

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

рд▓реЛрдХреА рд▓реЙрдЧ рд╕реЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореАрдЯреНрд░рд┐рдХ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 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

рд╡рд┐рдХрд▓реНрдк рдЖрдкрдХреЛ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдорд╛рдирдЪрд┐рддреНрд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпреЗ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рд▓реЛрдХреА рдХреЛ рдирд╣реАрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ - рд╡реЗ рдкреНрд░реЛрдордЯреЗрд▓/рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, 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-рд╕рдВрдЧрдд рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдХреИрд╕реЗрдВрдбреНрд░рд╛, рдмрд┐рдЧрдЯреЗрдмрд▓ рдпрд╛ рдбрд╛рдпрдиреЗрдореЛрдбреАрдмреАред рд▓реЛрдХреА рдХреЗ рдЕрдиреНрдп рднрд╛рдЧ - рдбрд┐рд╕реНрдЯреНрд░реАрдмреНрдпреВрдЯрд░ (рд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП) рдФрд░ рдХреНрд╡реИрд░рд┐рдпрд░ (рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП) - рд╕реНрдЯреЗрдЯрд▓реЗрд╕ рд╣реИрдВ рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕реНрдХреЗрд▓ рднреА рд╣реИрдВред

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

рд▓реЛрдХреА рдФрд░ рдИрдПрд▓рдХреЗ рдХреА рддреБрд▓рдирд╛

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

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

рд▓реЙрдЧ рд╕реЗ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рдЬрдм рдИрдПрд▓рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рдЗрд╕рдиреЗ 30,3 рдПрдордмреА рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдЖрдХрд╛рд░ рджрд┐рдпрд╛:

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

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

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

рд▓реЛрдХреА рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░рд┐рдд рдХрд░рдирд╛

рдпрджрд┐ рд╣рдо рдкреВрд░реЗ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдФрд░ рдИрдПрд▓рдХреЗ рд╕реНрдЯреИрдХ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд▓реЛрдХреА рдХрдИ рдЧреБрдирд╛ рдХрдо "рдЦрд╛рддреА рд╣реИ"ред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдПрдХ рдЧреЛ рд╕реЗрд╡рд╛ рдЬрд╛рд╡рд╛ рд╕реЗрд╡рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдЦрдкрдд рдХрд░рддреА рд╣реИ, рдФрд░ рдЬреЗрд╡реАрдПрдо рд╣реАрдк рдЗрд▓рд╛рд╕реНрдЯрд┐рдХреНрд╕ рдЦреЛрдЬ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рд▓реЛрдХреА рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдХреА рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд▓реЛрдХреА рдмрд╣реБрдд рдХрдо рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рд╕реАрдкреАрдпреВ рд▓рд╛рдн рдЗрддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореМрдЬреВрдж рднреА рд╣реИред

рдЧрддрд┐

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

рд▓реЙрдЧ рдЦреЛрдЬреЗрдВ

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

рдЕрдВрддрд░рд╛рдлрд▓рдХ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕реБрдВрджрд░ рд╣реИ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛)ред рдЧреНрд░рд╛рдлрд╛рдирд╛ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рдмрд╛рдирд╛ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рднрд░рдкреВрд░ рд╣реИред

рд▓реЛрдХреА рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖

рдлрд╛рдпрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рд▓реЛрдХреА рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдФрд░ рдЕрд▓рд░реНрдЯ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдорд┐рд▓рддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕ рдкреЙрдбреНрд╕ рд╕реЗ рд▓реЙрдЧ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╕реЗрд╡рд╛ рдЦреЛрдЬ рд╣реИ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЗрдмрд▓ рд╕рдВрд▓рдЧреНрди рдХрд░рддрд╛ рд╣реИред

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

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

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

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

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

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

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ