GitLab рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ


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



рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ?


GitLab рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд╛рд░ рдореБрдЦреНрдп рдХрд╛рд░рдг рд╣реИрдВ:

  1. рдШрдЯрдирд╛ рдирд┐рджрд╛рди : рд╣рдо рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рд╕реЗрд╡рд╛рдПрдВ рдШрдЯрдирд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд╕рдордп (рдПрдордЯреАрдЯреАрдбреА) рдХреЛ рдХрдо рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕рд╛рдорд╛рдиреНрдп рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЪрд▓реА рдЧрдИ рд╣реИрдВ рдФрд░, рддрджрдиреБрд╕рд╛рд░, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рддреЗрдЬреА рд╕реЗ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреА рд╣реИрдВред
  2. рдкреНрд░рджрд░реНрд╢рди рдЧрд┐рд░рд╛рд╡рдЯ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ : рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдХ рдкреНрд░рддрд┐рдЧрдорди рдХреЛ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЗрд╡рд╛ рддрдХ рдЕрдХреНрд╕рд░ рдкрд╣реБрдВрдЪ рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЬрд▓реНрджреА рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  3. рджреБрд░реБрдкрдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдФрд░ рдЙрдиреНрдореВрд▓рди : GitLab рд╡рд┐рддрд░рдг рдФрд░ рдПрдХреАрдХрд░рдг рддрдВрддреНрд░ ( GitLab CI / CD ) рдФрд░ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ (GitLab Pages) рдФрд░ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрди рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  4. рд╕реБрд░рдХреНрд╖рд╛ : GitLab рд╕рдордп рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЕрд╕рд╛рдорд╛рдиреНрдп рд░реБрдЭрд╛рдиреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

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

рд╕рд╣реА рдПрдХрддреНрд░реАрдХрд░рдг рд╕реНрддрд░ рдХреНрдпрд╛ рд╣реИ?


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

http_requests_total{
 job="apiserver",
 method="GET",
 controller="ProjectsController",
 status_code="200",
 environment="prod"
}

рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдореАрдЯреНрд░рд┐рдХ рдореЗрдВ рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ: рд╡рд┐рдзрд┐, рдирд┐рдпрдВрддреНрд░рдХ, рд╕реНрдерд┐рддрд┐ рдХреЛрдб (рд╕реНрдерд┐рддрд┐_рдХреЛрдб), рдкрд░реНрдпрд╛рд╡рд░рдг, рдФрд░ рд╕рд╛рде рд╣реА рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝реЗ рдЧрдП рдкреИрд░рд╛рдореАрдЯрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдиреМрдХрд░реА рдФрд░ рдЙрджрд╛рд╣рд░рдгред

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

  1. рдЖрдк рд╡рд┐рд╕рдВрдЧрддрд┐ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдПрдХрддреНрд░реАрдХрд░рдг рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рдмрд╕реЗрдЯ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдЫреБрдкрд╛рддрд╛ рд╣реИред
  2. рдпрджрд┐ рдЖрдк рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдПрдХ рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред

рдпрджрд┐ рдбреЗрдЯрд╛ рдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдПрдХрддреНрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рд╕реЗ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╕рд╛рде рд╣реА рдЧрд▓рдд рдбреЗрдЯрд╛ рдХреА рдЧрд▓рдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рднреА рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдПрдХрддреНрд░реАрдХрд░рдг рдХрд╛ рд╕рдмрд╕реЗ рд╕рд╣реА рд╕реНрддрд░ рд╕реЗрд╡рд╛ рдХрд╛ рд╕реНрддрд░ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╣рдо рдХрд╛рд░реНрдп (рдиреМрдХрд░реА) рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг (рдкрд░реНрдпрд╛рд╡рд░рдг) рдХреЗ рд▓реЗрдмрд▓ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рд▓реЗрдмрд▓ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред

рдПрдХрддреНрд░реАрдХрд░рдг, рдЬрд┐рд╕реЗ рд╣рдо рдкреВрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдиреМрдХрд░реА - http_request, рдПрдХрддреНрд░реАрдХрд░рдг - рдкрд╛рдВрдЪ рдорд┐рдирдЯ, рдЬрд┐рд╕рдХреА рдЧрдгрдирд╛ рдХрд╛рд░реНрдп рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдореЗрдВ рдХреА рдЬрд╛рддреА рд╣реИред

- record: job:http_requests:rate5m
expr: sum without(instance, method, controller, status_code)
(rate(http_requests_total[5m]))
# --> job:http_requests:rate5m{job="apiserver", environment="prod"}  21321
# --> job:http_requests:rate5m{job="gitserver", environment="prod"}  2212
# --> job:http_requests:rate5m{job="webserver", environment="prod"}  53091

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

рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрдб-рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдВрдЦреНрдпрд┐рдХреА рдХреЗ рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдп рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ , рддреЛ рдЖрдк z- рд╕реНрдХреЛрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдирдореВрдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред 

рдЬреЗрдб-рд╕реНрдХреЛрд░ рдордирд╛рдпрд╛ рдпрд╛ рдорд╛рдкрд╛ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкреНрд░рд╕рд╛рд░ рдХрд╛ рдПрдХ рдорд╛рдк рд╣реИ, рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдФрд╕рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЗрд╕рдХреЗ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХрд┐рддрдиреЗ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рд╣реИ ред 

рдпрд╣реА рд╣реИ, z- рд╕реНрдХреЛрд░ = 0 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ z- рд╕реНрдХреЛрд░ рдорд╛рдирдХ рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рде рдбрд╛рдЯрд╛рд╕реЗрдЯ рдореЗрдВ рдФрд╕рдд рдореВрд▓реНрдп рдХреЗ рд╕рдорд╛рди рд╣реИ, рдФрд░ z-рд╕реНрдХреЛрд░ = 1 рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди = 1.0 рдФрд╕рдд рд╕реЗред

рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ 99.7% рдирдореВрдиреЛрдВ рдореЗрдВ 0 рд╕реЗ 3 рддрдХ рдХрд╛ рдЬреЗрдб-рд╕реНрдХреЛрд░ рд╣реИред рдЬрд╝реЗрдб-рд╕реНрдХреЛрд░ рд╢реВрдиреНрдп рд╕реЗ рджреВрд░ рд╣реИ, рдЗрд╕рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рд╣реИред 

рд╣рдо рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдбреЗрдЯрд╛ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ:

  1. рд╣рдо рдмрдбрд╝реЗ рдирдореВрдирд╛ рдЖрдХрд╛рд░ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореАрдЯреНрд░рд┐рдХ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╣рдлреНрддреЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 10,000 рд╕реЗ рдЕрдзрд┐рдХ рдирдореВрдиреЗ рд╣реЛрдВрдЧреЗред

    # Long-term average value for the series
    - record: job:http_requests:rate5m:avg_over_time_1w
    expr: avg_over_time(job:http_requests:rate5m[1w])
    
    # Long-term standard deviation for the series
    - record: job:http_requests:rate5m:stddev_over_time_1w
    expr: stddev_over_time(job:http_requests:rate5m[1w])

  2. рдПрдХрддреНрд░реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдФрд╕рдд рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдорд┐рд▓рддреЗ рд╣реА рд╣рдо рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рд▓рд┐рдП z- рд╕реНрдХреЛрд░ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

    # Z-Score for aggregation
    (
    job:http_requests:rate5m -
    job:http_requests:rate5m:avg_over_time_1w
    ) /  job:http_requests:rate5m:stddev_over_time_1w


рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдХреЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ +3 рд╕реЗ -3 рдХреА рд╕реАрдорд╛ рдХреЗ рдмрд╛рд╣рд░ рдХреЛрдИ рднреА рдореВрд▓реНрдп рдПрдХ рд╡рд┐рд╕рдВрдЧрддрд┐ рд╣реЛрдЧреАред рддрджрдиреБрд╕рд╛рд░, рд╣рдо рдРрд╕реА рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рд╣рдорд╛рд░рд╛ рдПрдХрддреНрд░реАрдХрд░рдг рдкрд╛рдБрдЪ рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЗрд╕ рд╕реАрдорд╛ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдЧрд╛, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЕрд▓рд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред


48 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП GitLab рдкреЗрдЬ рд╕реЗрд╡рд╛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЧреНрд░рд╛рдлред +3 рд╕реЗ -3 рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ рдЬреЗрдб-рд╕реНрдХреЛрд░ рдХреЛ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬреЗрдб-рд╕реНрдХреЛрд░ рдЧреНрд░рд╛рдл рдкрд░ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдореВрд▓реНрдп рдореЗрдВ рдорд╛рдк рдХреА рдПрдХ рдЗрдХрд╛рдИ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рдЧреНрд░рд╛рдл рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИрдВред рдЧреНрд░реАрди рдЬрд╝реЛрди рд╕реЗ рдЖрдЧреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╣рд░ рдЪреАрдЬрд╝, рдЬреЛ рдХрд┐ -3 рд╕реЗ +3 рдХреЗ z-рд╕реНрдХреЛрд░ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЧрд▓рд┐рдпрд╛рд░реЗ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ, рдПрдХ рдЕрдирдореЛрд▓ рдореВрд▓реНрдп рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ


рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рддрд░рдг рд╕рд╛рдорд╛рдиреНрдп рд╣реИред рдЕрдиреНрдпрдерд╛, рд╣рдорд╛рд░рд╛ рдЬреЗрдб-рд╕реНрдХреЛрд░ рдЧрд▓рдд рд╣реЛрдЧрд╛ред

рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рдХреА рд╕рд╛рдорд╛рдиреНрдпрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЯреНрд░рд┐рдХреНрд╕ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ z- рд╕реНрдХреЛрд░ -4.0 рд╕реЗ +4.0 рддрдХ рд╣реЛрддрд╛ рд╣реИред

рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо z- рд╕реНрдХреЛрд░ рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдкреНрд░рд╢реНрди:

(
max_over_time(job:http_requests:rate5m[1w]) - avg_over_time(job:http_requests:rate5m[1w])
) / stddev_over_time(job:http_requests:rate5m[1w])
# --> {job="apiserver", environment="prod"}  4.01
# --> {job="gitserver", environment="prod"}  3.96
# --> {job="webserver", environment="prod"}  2.96

(
 min_over_time(job:http_requests:rate5m[<1w]) - avg_over_time(job:http_requests:rate5m[1w])
) / stddev_over_time(job:http_requests:rate5m[1w])
# --> {job="apiserver", environment="prod"}  -3.8
# --> {job="gitserver", environment="prod"}  -4.1
# --> {job="webserver", environment="prod"}  -3.2

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

рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдореМрд╕рдо рд╕рдВрдмрдВрдзреА рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛


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

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


рд▓рдЧрд╛рддрд╛рд░ рдЪрд╛рд░ рд╣рдлреНрддреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реЛрдорд╡рд╛рд░ рд╕реЗ рд░рд╡рд┐рд╡рд╛рд░ рддрдХ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (рдЖрд░рдкреАрдПрд╕) рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛

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

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

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

рдореМрд╕рдореА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ


рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдореМрд╕рдореА рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдкрд╣рд▓реЗ, рд╣рдо рдПрдХ рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рдХреА рдЧрдгрдирд╛ рдирд┐рдореНрди рдкреНрд░рдХрд╛рд░ рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ: рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреА рдЪрд▓рддреА рдФрд╕рдд рдХреЛ рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреА рдЪрд▓рддреА рдФрд╕рдд рд╕реЗ рдШрдЯрд╛рдПрдВред

- record: job:http_requests:rate5m_prediction
  expr: >
    job:http_requests:rate5m offset 1w          # Value from last period
    + job:http_requests:rate5m:avg_over_time_1w # One-week growth trend
    тАФ job:http_requests:rate5m:avg_over_time_1w offset 1w

рдкрд╣рд▓рд╛ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреБрдЫ рд╣рдж рддрдХ "рд╕рдВрдХреАрд░реНрдг" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ - рд╣рдо рдЕрдкрдиреЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдХреА рдкрд╛рдВрдЪ рдорд┐рдирдЯ рдХреА рдЦрд┐рдбрд╝рдХреА рдФрд░ рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рджреВрд╕рд░реА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ, рд╣рдо рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░ рдШрдВрдЯреЗ рдХреА рдЕрд╡рдзрд┐ рдХрд╛ рдФрд╕рдд рдФрд░ рд╡рд░реНрддрдорд╛рди рд╕рдкреНрддрд╛рд╣ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд╡рд░реЗрдЬ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред 

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

- record: job:http_requests:rate5m_prediction
  expr: >
    avg_over_time(job:http_requests:rate5m[4h] offset 166h) # Rounded value from last period
    + job:http_requests:rate5m:avg_over_time_1w    # Add 1w growth trend
    - job:http_requests:rate5m:avg_over_time_1w offset 1w

рдЕрдиреБрд░реЛрдз рдореЗрдВ 166 рдШрдВрдЯреЗ рдХрд╛ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдПрдХ рдкреВрд░реНрдг рд╕рдкреНрддрд╛рд╣ (7 * 24 = 168) рд╕реЗ рджреЛ рдШрдВрдЯреЗ рдХрдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рд╕рдордп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрд╛рд░ рдШрдВрдЯреЗ рдХреА рдЕрд╡рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдкреВрд░реНрдг рд╕рдкреНрддрд╛рд╣ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рджреЛ рдШрдВрдЯреЗ рдХрдо рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред 


рджреЛ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд░рдкреАрдПрд╕ (рдкреАрд▓рд╛) рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд (рдиреАрд▓рд╛)

рд╣рдорд╛рд░реЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд░рдкреАрдПрд╕ рдХреА рддреБрд▓рдирд╛ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рдЧрдгрдирд╛ рдХрд╛рдлреА рд╕рдЯреАрдХ рдереАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдкрджреНрдзрддрд┐ рдореЗрдВ рдПрдХ рдЦрд╛рдореА рд╣реИред
 
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 1 рдордИ, GitLab рдХреЛ рдмреБрдзрд╡рд╛рд░ рдХреЗ рджрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдХрдо рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджрд┐рди рдПрдХ рджрд┐рди рдХреА рдЫреБрдЯреНрдЯреА рдереАред рдЪреВрдВрдХрд┐ рдЕрдиреБрдорд╛рдирд┐рдд рд╡реГрджреНрдзрд┐ рдХреА рдкреНрд░рд╡реГрддреНрддрд┐ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдЧрд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди, рдЕрд░реНрдерд╛рдд, 8 рдордИ, рдмреБрдзрд╡рд╛рд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрдо рдЖрд░рдкреАрдПрд╕ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдмреБрдзрд╡рд╛рд░, 1 рдордИ рд╕реЗ рдкрд╣рд▓реЗ рд▓рдЧрд╛рддрд╛рд░ рддреАрди рд╕рдкреНрддрд╛рд╣ рддрдХ рддреАрди рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд▓рдЧрд╛рдХрд░ рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рд╕реБрдзрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдСрдлрд╕реЗрдЯ рд╕рдорд╛рдпреЛрдЬрд┐рдд рд╣реИред

- record: job:http_requests:rate5m_prediction
  expr: >
   quantile(0.5,
     label_replace(
       avg_over_time(job:http_requests:rate5m[4h] offset 166h)
       + job:http_requests:rate5m:avg_over_time_1w тАФ job:http_requests:rate5m:avg_over_time_1w offset 1w
       , "offset", "1w", "", "")
     or
     label_replace(
       avg_over_time(job:http_requests:rate5m[4h] offset 334h)
       + job:http_requests:rate5m:avg_over_time_1w тАФ job:http_requests:rate5m:avg_over_time_1w offset 2w
       , "offset", "2w", "", "")
     or
     label_replace(
       avg_over_time(job:http_requests:rate5m[4h] offset 502h)
       + job:http_requests:rate5m:avg_over_time_1w тАФ job:http_requests:rate5m:avg_over_time_1w offset 3w
       , "offset", "3w", "", "")
   )
   without (offset)


8 рдордИ рд╕реЗ рдкрд╣рд▓реЗ рддреАрди рд╕рдкреНрддрд╛рд╣ рдХреЗ рд▓рд┐рдП рдЪрд╛рд░реНрдЯ рдкрд░ рддреАрди рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╣реИрдВ, рдмреБрдзрд╡рд╛рд░, 8 рдордИ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд░рдкреАрдПрд╕ рдХреЗ рд╕рд╛рдеред рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рджреЛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдмрд╣реБрдд рд╕рдЯреАрдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди 1 рдордИ рдХреЗ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЧрд▓рдд рд╣реИред

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

рдПрдХрдорд╛рддреНрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рддреАрди рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХреЛ рдПрдХрддреНрд░реАрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпреЗ рддреАрди рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддреАрди рд╕рдкреНрддрд╛рд╣ рдореЗрдВ рдПрдХ рд╣реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИрдВред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рд▓реЗрдмрд▓ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред 

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

- record: job:http_requests:rate5m_prediction
  expr: >
   quantile(0.5,
     label_replace(
       avg_over_time(job:http_requests:rate5m[4h] offset 166h)
       + job:http_requests:rate5m:avg_over_time_1w тАФ job:http_requests:rate5m:avg_over_time_1w offset 1w
       , "offset", "1w", "", "")
     or
     label_replace(
       avg_over_time(job:http_requests:rate5m[4h] offset 334h)
       + job:http_requests:rate5m:avg_over_time_1w тАФ job:http_requests:rate5m:avg_over_time_1w offset 2w
       , "offset", "2w", "", "")
     or
     label_replace(
       avg_over_time(job:http_requests:rate5m[4h] offset 502h)
       + job:http_requests:rate5m:avg_over_time_1w тАФ job:http_requests:rate5m:avg_over_time_1w offset 3w
       , "offset", "3w", "", "")
   )
   without (offset)

рдЕрдм рддреАрди рд╕рдореБрдЪреНрдЪрдп рдХреЗ рдорд╛рдзреНрдп рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░рд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред


рдореЗрдбрд┐рдпрди рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдмрдирд╛рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд░рдкреАрдПрд╕

рдХреИрд╕реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЯреАрдХ рд╣реИ


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


рдЕрдиреБрдорд╛рдирд┐рдд рд╡рд┐рдЪрд▓рди рд╕реАрдорд╛ +1.5 рд╕реЗ -1.5 рддрдХ рд╣реИред

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

рдореМрд╕рдореА рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП-2 z- рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХреЗ рд╕рд╛рде рдЕрд▓рд░реНрдЯ рдХреИрд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ


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

- alert: RequestRateOutsideNormalRange
  expr: >
   abs(
     (
       job:http_requests:rate5m - job:http_requests:rate5m_prediction
     ) / job:http_requests:rate5m:stddev_over_time_1w
   ) > 2
  for: 10m
  labels:
    severity: warning
  annotations:
    summary: Requests for job {{ $labels.job }} are outside of expected operating parameters

GitLab рдореЗрдВ, рд╣рдо рдПрдХ рдХрд╕реНрдЯрдо рд░реВрдЯрд┐рдВрдЧ рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рд╡рд┐рд╕рдВрдЧрддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдкрд░ рд╕реНрд▓реИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдЕрд▓рд░реНрдЯ рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдЯреАрдо рд╕реЗ рд╕рдВрдкрд░реНрдХ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрд┐рдЯрд▓реИрдм рдореЗрдВ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рдХреИрд╕реЗ рд▓рдЧрд╛рдпрд╛ рдЬрд╛рдП


  1. рдкреНрд░реЛрдореЗрдерд┐рдпрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдЕрд╕рд╛рдорд╛рдиреНрдпрддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  2. рдЙрдЪрд┐рдд рдПрдХрддреНрд░реАрдХрд░рдг рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдХреБрдВрдЬреА рд╣реИред
  3. рдпрджрд┐ рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рдХрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рд╣реИ рддреЛ Z- рд╕реНрдХреЛрд░рд┐рдВрдЧ рдкреНрд░рднрд╛рд╡реА рд╣реИред
  4. рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдореМрд╕рдореАрддрд╛ рд╡рд┐рд╕рдВрдЧрддрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдВрддреНрд░ рд╣реИред

Mail.ru Cloud Solutions рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд ред

рдлрд┐рд░ рднреА рдЙрдкрдпреЛрдЧреА :

  1. GitLab CI рдореЗрдВ рд╕рд░рд▓ рдХреИрд╢рд┐рдВрдЧ рддрд░реАрдХреЗ: рдПрдХ рдЪрд┐рддреНрд░ рдЧрд╛рдЗрдб ред
  2. MCS рдмрд╛рдЬрд╝рд╛рд░ рдореЗрдВ рддреИрдпрд╛рд░ рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд GitLab CE рдЙрдкрдХрд░рдг ред 
  3. рдбрд┐рдЬрд┐рдЯрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░ рд╣рдорд╛рд░рд╛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЪреИрдирд▓ ред

All Articles