рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

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

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

рдЯреНрд░реЗрд╕рд┐рдЩ рд╕рдВрдЧ рдХреЗ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ

  1. рдПрдХрд▓ рд╕реЗрд╡рд╛ рднрд┐рддреНрд░ рд░ рд╕рдмреИ рд╕рд╣рднрд╛рдЧреА рд╕реЗрд╡рд╛рд╣рд░реВ рдмреАрдЪрдХреЛ рд╕рдореНрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░реВрдЦрдорд╛ рдкреНрд░рджрд░реНрд╢рди рдмрд╛рдзрд╛рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реНред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
    • рд╕реЗрд╡рд╛рд╣рд░реВ рдмреАрдЪ рдзреЗрд░реИ рдЫреЛрдЯреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд▓рд╣рд░реВ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЬрд┐рдпреЛрдХреЛрдбрд┐рдЩ рд╡рд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ред
    • рд▓рд╛рдореЛ I/O рдкрд░реНрдЦрд╛рдЗ, рдЬрд╕реНрддреИ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рд╡рд╛ рдбрд┐рд╕реНрдХ рд░рд┐рдбрд╣рд░реВред
    • рд▓рд╛рдореЛ рдбреЗрдЯрд╛ рдкрд╛рд░реНрд╕рд┐рдЩред
    • рд▓рд╛рдореЛ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ рд╕реАрдкреАрдпреВ рдЪрд╛рд╣рд┐рдиреНрдЫред
    • рдХреЛрдбрдХреЛ рдЦрдгреНрдбрд╣рд░реВ рдЬреБрди рдЕрдиреНрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫреИрди рд░ рд╣рдЯрд╛рдЙрди рд╡рд╛ рдврд┐рд▓рд╛рдЗ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред
  2. рдХреБрди рдХреНрд░рдордорд╛ рдХреЗ рднрдирд┐рдиреНрдЫ рд░ рдЕрдкрд░реЗрд╢рди рдЧрд░реНрджрд╛ рдХреЗ рд╣реБрдиреНрдЫ рднрдиреЗрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рдмреБрдЭреНрдиреБрд╣реЛрд╕реНред
    рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger
    рдпреЛ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдиреБрд░реЛрдз WS рд╕реЗрд╡рд╛рдорд╛ рдЖрдпреЛ -> WS рд╕реЗрд╡рд╛рд▓реЗ R рд╕реЗрд╡рд╛ рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛ рдкреВрд░рдХ рдЧрд░реНрдпреЛ -> рддреНрдпрд╕рдкрдЫрд┐ V рд╕реЗрд╡рд╛рд▓рд╛рдИ рдЕрдиреБрд░реЛрдз рдкрдард╛рдпреЛ -> V рд╕реЗрд╡рд╛рд▓реЗ рдзреЗрд░реИ рдбрд╛рдЯрд╛ рд▓реЛрдб рдЧрд░реНрдпреЛред R рд╕реЗрд╡рд╛ -> P рд╕реЗрд╡рд╛рдорд╛ рдЧрдпреЛ -> P рд╕реЗрд╡рд╛ рдлреЗрд░рд┐ рд╕реЗрд╡рд╛рдорд╛ рдЧрдпреЛ R -> рд╕реЗрд╡рд╛ V рд▓реЗ рдирддрд┐рдЬрд╛рд▓рд╛рдИ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрдпреЛ рд░ рд╕реЗрд╡рд╛ J -> рдорд╛ рдЧрдпреЛ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ рд╕реЗрд╡рд╛ WS рдорд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдлрд┐рд░реНрддрд╛ рдЧрд░реНрдпреЛ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдХреЗрд╣рд┐ рдЧрдгрдирд╛ рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрджреИред рдкреГрд╖реНрдарднреВрдорд┐ред
    рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕реНрддреЛ рдЯреНрд░реЗрд╕ рд╡рд╛ рд╡рд┐рд╕реНрддреГрдд рдХрд╛рдЧрдЬрд╛рдд рдмрд┐рдирд╛, рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдХреЛрдб рд╣реЗрд░реНрджрд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдмреБрдЭреНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫ, рд░ рдХреЛрдб рд╡рд┐рднрд┐рдиреНрди рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдЫрд░рд┐рдПрдХреЛ рдЫ рд░ рдмрд┐рди рд░ рдЗрдиреНрдЯрд░рдлреЗрд╕рд╣рд░реВрдХреЛ рдЧреБрдЪреНрдЫрд╛ рдкрдЫрд╛рдбрд┐ рд▓реБрдХреЗрдХреЛ рдЫред
  3. рдкрдЫрд┐рдХреЛ рд╕реНрдердЧрд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░реВрдЦрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реАрдХреЛ рд╕рдЩреНрдХрд▓рдиред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдгрдорд╛, рддрдкрд╛рдЗрдБ рдпрд╕ рдЪрд░рдгрдорд╛ рдЙрдкрд▓рдмреНрдз рдЯреНрд░реЗрд╕рдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдердкреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ рдХреБрди рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛рд▓реЗ рд╕рдорд╛рди рдкрд░рд┐рджреГрд╢реНрдп рдирд┐рдореНрддреНрдпрд╛рдпреЛ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐:
    • рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ ID
    • рдЕрдзрд┐рдХрд╛рд░
    • рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рд╡рд┐рдзрд┐рдХреЛ рдкреНрд░рдХрд╛рд░
    • рд▓рдЧ рд╡рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреНрд░реБрдЯрд┐
  4. рдЯреНрд░реЗрд╕рд╣рд░реВрд▓рд╛рдИ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд╕рдмрд╕реЗрдЯрдорд╛ рдкрд░рд┐рдгрдд рдЧрд░реНрджреИ рд░ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд░реВрдкрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдердк рд╡рд┐рд╢реНрд▓реЗрд╖рдгред

рдХреЗ рдЯреНрд░реЗрд╕ рд▓рдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд╕реНрдкреНрдпрд╛рди

рдЯреНрд░реЗрд╕рд┐рдЩрдорд╛ рд╕реНрдкреНрдпрд╛рдирдХреЛ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЫ, рдпреЛ рдХрдиреНрд╕реЛрд▓рдорд╛ рдПрдЙрдЯрд╛ рд▓рдЧрдХреЛ рдПрдирд╛рд▓рдЧ рд╣реЛред рд╕реНрдкрд╛ рдЫ:

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

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

рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

Opentrace, Jagger рд░ рд╣рд╛рдореАрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╣рд╛рдореНрд░рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд╕рд░реА рд▓рд╛рдЧреВ рдЧрд░реНрдпреМрдВ

рддреНрдпрд╣рд╛рдБ рдПрдХ рд╕рд╛рдЭрд╛ рдорд╛рдирдХ рдЫ рдЦреБрд▓рд╛ рдЯреНрд░реЗрд╕, рдЬрд╕рд▓реЗ рдХреБрдиреИ рдкрдирд┐ рднрд╛рд╖рд╛рдорд╛ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдорд╛ рдЯреНрд░реЗрд╕рд┐рдЩ рдЧрд░реЗрд░ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдмрд┐рдирд╛ рдХрд╕рд░реА рд░ рдХреЗ рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреЗрд░ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫред рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рдЬрд╛рднрд╛ рдорд╛, рдЯреНрд░реЗрд╕ рд╕рдВрдЧ рд╕рдмреИ рдХрд╛рдо рд╕рд╛рдЭрд╛ Opentrace API рдХреЛ рдорд╛рдзреНрдпрдо рдмрд╛рдЯ рдЧрд░рд┐рдиреНрдЫ, рд░ рдпрд╕рдХреЛ рдЕрдиреНрддрд░реНрдЧрдд, рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, Jaeger рд╡рд╛ рдЦрд╛рд▓реА рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬрд╕рд▓реЗ рдХреЗрд╣рд┐ рдкрдирд┐ рд▓реБрдХрд╛рдЙрди рд╕рдХреНрджреИрдиред
рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ рдЬреЗрдЧрд░ Opentrace рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рд░реВрдк рдорд╛ред рдпрд╕рд▓реЗ рдзреЗрд░реИ рдШрдЯрдХрд╣рд░реВ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ:

рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

  • Jaeger-agent рдПрдХ рд╕реНрдерд╛рдиреАрдп рдПрдЬреЗрдиреНрдЯ рд╣реЛ рдЬреБрди рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдореЗрд╕рд┐рдирдорд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреНрдЫ рд░ рд╕реЗрд╡рд╛рд╣рд░реВ рд╕реНрдерд╛рдиреАрдп рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреЛрд░реНрдЯрдорд╛ рд▓рдЧрдЗрди рд╣реБрдиреНрдЫрдиреНред рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдПрдЬреЗрдиреНрдЯ рдЫреИрди рднрдиреЗ, рдпрд╕ рдореЗрд╕рд┐рдирдорд╛ рд╕рдмреИ рд╕реЗрд╡рд╛рд╣рд░реВрдХреЛ рдЯреНрд░реЗрд╕рд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдЕрд╕рдХреНрд╖рдо рд╣реБрдиреНрдЫрдиреН
  • Jaeger-рдХрд▓реЗрдХреНрдЯрд░ - рд╕рдмреИ рдПрдЬреЗрдиреНрдЯрд╣рд░реВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдПрдХрддреНрд░рд┐рдд рдЯреНрд░реЗрд╕рд╣рд░реВ рдкрдард╛рдЙрдБрдЫрдиреН, рд░ рдпрд╕рд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдЪрдпрди рдЧрд░рд┐рдПрдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд░рд╛рдЦреНрдЫред
  • рдбрд╛рдЯрд╛рдмреЗрд╕ - рддрд┐рдиреАрд╣рд░реВрдХреЛ рдордирдкрд░реНрдиреЗ рдПрдХ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рд╣реЛ, рддрд░ рд╣рд╛рдореА рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕рд░реНрдЪ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ, рддреНрдпрд╣рд╛рдБ рдЕрдиреНрдп рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рд░ рдЗрди-рдореЗрдореЛрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХрд╛ рд▓рд╛рдЧрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рдХреЗрд╣реА рдмрдЪрдд рдЧрд░реНрджреИрдиред
  • Jaeger-query рдПрдХ рд╕реЗрд╡рд╛ рд╣реЛ рдЬреБрди рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЬрд╛рдиреНрдЫ рд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЗ рдиреИ рд╕рдЩреНрдХрд▓рди рдЯреНрд░реЗрд╕рд╣рд░реВ рдлрд░реНрдХрд╛рдЙрдБрдЫред
  • Jaeger-ui рдЯреНрд░реЗрд╕рд╣рд░реВ рдЦреЛрдЬреНрди рд░ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡реЗрдм рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╣реЛ, рдпреЛ jaeger-query рдорд╛ рдЬрд╛рдиреНрдЫред

рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

рдПрдЙрдЯрд╛ рдЫреБрдЯреНрдЯреИ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд▓рд╛рдИ рдУрдкрдирдЯреНрд░реЗрд╕ рдЬреЗрдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднрдирд┐рдиреНрдЫ рд╡рд┐рд╢реЗрд╖ рднрд╛рд╖рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐, рдЬрд╕рдХреЛ рдорд╛рдзреНрдпрдордмрд╛рдЯ рд╕реНрдкреНрдпрд╛рдиреНрд╕ рдЬреЗрдЧрд░-рдПрдЬреЗрдиреНрдЯрдорд╛ рдкрдард╛рдЗрдиреНрдЫред
Java рдорд╛ Jagger рдЬрдбрд╛рди рдЧрд░реНрджреИ io.opentracing.Tracer рдЗрдиреНрдЯрд░рдлреЗрд╕ рд▓рд╛рдЧреВ рдЧрд░реНрди рддрд▓ рдЖрдЙрдБрдЫ, рдЬрд╕ рдкрдЫрд┐ рдпрд╕рдХреЛ рдорд╛рдзреНрдпрдордмрд╛рдЯ рд╕рдмреИ рдЯреНрд░реЗрд╕рд╣рд░реВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдЬреЗрдиреНрдЯрдорд╛ рдЙрдбрд╛рди рд╣реБрдиреЗрдЫред

рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

рддрдкрд╛рдИрдВ рдкрдирд┐ рд╡рд╕рдиреНрдд рдШрдЯрдХ рдЬрдбрд╛рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдУрдкрдирдЯреНрд░реЗрд╕рд┐рдЩ-рд╡рд╕рдиреНрдд-рдХреНрд▓рд╛рдЙрдб-рд╕реНрдЯрд╛рд░реНрдЯрд░ рд░ Jaeger рдмрд╛рдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди opentracing-spring-jaeger-Cloud-starter рдЬрд╕рд▓реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдпреА рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреЗ рд╕рдмреИ рдЪреАрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЯреНрд░реЗрд╕рд┐рдЩ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрджрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ рдирд┐рдпрдиреНрддреНрд░рдХрд╣рд░реВрд▓рд╛рдИ HTTP рдЕрдиреБрд░реЛрдзрд╣рд░реВ, jdbc рдорд╛рд░реНрдлрдд рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ, рдЖрджрд┐ред

рдЬрд╛рднрд╛рдорд╛ рд▓рдЧрд┐рдЩ рдЯреНрд░реЗрд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рдорд╛рдерд┐рд▓реНрд▓реЛ рддрд╣рдорд╛ рдХрддреИ, рдкрд╣рд┐рд▓реЛ рд╕реНрдкреНрдпрд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдЫ, рдпреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реБрдБрджрд╛ рд╡рд╕рдиреНрдд рдирд┐рдпрдиреНрддреНрд░рдХрджреНрд╡рд╛рд░рд╛, рд╡рд╛ рдореНрдпрд╛рдиреБрдЕрд▓ рд░реВрдкрдорд╛ рдпрджрд┐ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдкрдирд┐ рдЫреИрдиред рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рддрд▓рдХреЛ рджрд╛рдпрд░рд╛ рдорд╛рд░реНрдлрдд рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реБрдиреНрдЫред рдпрджрд┐ рддрд▓рдХреЛ рдХреБрдиреИ рдкрдирд┐ рд╡рд┐рдзрд┐рд▓реЗ рд╕реНрдкреНрдпрд╛рди рдердкреНрди рдЪрд╛рд╣рдиреНрдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рд╕реНрдХреЛрдкрдмрд╛рдЯ рд╣рд╛рд▓рдХреЛ рдПрдХреНрдЯрд┐рдн рд╕реНрдкреНрдпрд╛рди рд▓рд┐рдиреНрдЫ, рдирдпрд╛рдБ рд╕реНрдкреНрдпрд╛рди рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫ рд░ рдпрд╕рдХреЛ рдЕрднрд┐рднрд╛рд╡рдХ рдкрд░рд┐рдгрд╛рдо рд╕реНрд╡рд░реВрдк рд╕рдХреНрд░рд┐рдп рд╕реНрдкреНрдпрд╛рди рд╣реЛ рднрдиреНрдЫ, рд░ рдирдпрд╛рдБ рд╕реНрдкреНрдпрд╛рдирд▓рд╛рдИ рд╕рдХреНрд░рд┐рдп рдмрдирд╛рдЙрдБрдЫред рдмрд╛рд╣реНрдп рд╕реЗрд╡рд╛рд╣рд░реВрд▓рд╛рдИ рдХрд▓ рдЧрд░реНрджрд╛, рд╣рд╛рд▓рдХреЛ рд╕рдХреНрд░рд┐рдп рд╕реНрдкреНрдпрд╛рди рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд╛рд╕ рдЧрд░рд┐рдиреНрдЫ, рд░ рддреА рд╕реЗрд╡рд╛рд╣рд░реВрд▓реЗ рдпрд╕ рдЕрд╡рдзрд┐рдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдирдпрд╛рдБ рд╕реНрдкреНрдпрд╛рдирд╣рд░реВ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдЫрдиреНред
рд╕рдмреИ рдХрд╛рдо Tracer рдЙрджрд╛рд╣рд░рдг рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫ, рдпрджрд┐ DI рд╕рдВрдпрдиреНрддреНрд░рд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди рднрдиреЗ рддрдкрд╛рдИрд▓реЗ рдпрд╕рд▓рд╛рдИ DI рдореЗрдХрд╛рдирд┐рдЬрдо рд╡рд╛ GlobalTracer.get () рд▓рд╛рдИ рд╡рд┐рд╢реНрд╡рд╡реНрдпрд╛рдкреА рдЪрд▓рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдпрджрд┐ рдЯреНрд░реЗрд╕рд░ рдкреНрд░рд╛рд░рдореНрдн рдЧрд░рд┐рдПрдХреЛ рдЫреИрди рднрдиреЗ, NoopTracer рдлрд┐рд░реНрддрд╛ рд╣реБрдиреЗрдЫ рдЬрд╕рд▓реЗ рдХреЗрд╣рд┐ рдЧрд░реНрджреИрдиред
рдпрд╕рдмрд╛рд╣реЗрдХ, рд╣рд╛рд▓рдХреЛ рд╕реНрдХреЛрдк рдЯреНрд░реЗрд╕рд░рдмрд╛рдЯ ScopeManager рдорд╛рд░реНрдлрдд рдкреНрд░рд╛рдкреНрдд рдЧрд░рд┐рдиреНрдЫ, рдирдпрд╛рдБ рд╕реНрдХреЛрдкрд▓рд╛рдИ рдирдпрд╛рдБ рд╕реНрдкреНрдпрд╛рдирдХреЛ рдмрд╛рдЗрдиреНрдбрд┐рдЩрдХреЛ рд╕рд╛рде рд╣рд╛рд▓рдХреЛрдмрд╛рдЯ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдиреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдХреЛрдк рдмрдиреНрдж рд╣реБрдиреНрдЫ, рдЬрд╕рд▓реЗ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рд╕реНрдкреНрдпрд╛рди рдмрдиреНрдж рдЧрд░реНрдЫ рд░ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕реНрдХреЛрдкрд▓рд╛рдИ рдлрд░реНрдХрд╛рдЙрдБрдЫред рд╕рдХреНрд░рд┐рдп рд░рд╛рдЬреНрдпред рд╕реНрдХреЛрдк рдПрдХ рдереНрд░реЗрдбрдорд╛ рдмрд╛рдБрдзрд┐рдПрдХреЛ рдЫ, рддреНрдпрд╕реИрд▓реЗ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩ рдЧрд░реНрджрд╛, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдХреНрд░рд┐рдп рд╕реНрдкреНрдпрд╛рдирд▓рд╛рдИ рдЕрд░реНрдХреЛ рдереНрд░реЗрдбрдорд╛ рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдЧрд░реНрди рдмрд┐рд░реНрд╕рдиреБ рд╣реБрдБрджреИрди, рдпрд╕ рд╕реНрдкреНрдпрд╛рдирдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдЕрд░реНрдХреЛ рдереНрд░реЗрдбрдХреЛ рд╕реНрдХреЛрдкрдХреЛ рдердк рд╕рдХреНрд░рд┐рдпрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ред

io.opentracing.Tracer tracer = ...; // GlobalTracer.get()

void DoSmth () {
   try (Scope scope = tracer.buildSpan("DoSmth").startActive(true)) {
      ...
   }
}
void DoOther () {
    Span span = tracer.buildSpan("someWork").start();
    try (Scope scope = tracer.scopeManager().activate(span, false)) {
        // Do things.
    } catch(Exception ex) {
        Tags.ERROR.set(span, true);
        span.log(Map.of(Fields.EVENT, "error", Fields.ERROR_OBJECT, ex, Fields.MESSAGE, ex.getMessage()));
    } finally {
        span.finish();
    }
}

void DoAsync () {
    try (Scope scope = tracer.buildSpan("ServiceHandlerSpan").startActive(false)) {
        ...
        final Span span = scope.span();
        doAsyncWork(() -> {
            // STEP 2 ABOVE: reactivate the Span in the callback, passing true to
            // startActive() if/when the Span must be finished.
            try (Scope scope = tracer.scopeManager().activate(span, false)) {
                ...
            }
        });
    }
}

рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХрд╛ рд▓рд╛рдЧрд┐, рддреНрдпрд╣рд╛рдБ TracedExecutorService рд░ рд╕рдорд╛рди рд░реНрдпрд╛рдкрд░рд╣рд░реВ рдкрдирд┐ рдЫрдиреН рдЬреБрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рд╣рд╛рд▓рдХреЛ рд╕реНрдкреНрдпрд╛рдирд▓рд╛рдИ рдереНрд░реЗрдбрдорд╛ рдлрд░реНрд╡рд╛рд░реНрдб рдЧрд░реНрджрдЫ рдЬрдм рдПрд╕рд┐рдиреНрдХреНрд░реЛрдирд╕ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реБрд░реБ рд╣реБрдиреНрдЫ:

private ExecutorService executor = new TracedExecutorService(
    Executors.newFixedThreadPool(10), GlobalTracer.get()
);

рдмрд╛рд╣реНрдп http рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ рдЫ TracingHttpClient

HttpClient httpClient = new TracingHttpClientBuilder().build();

рд╣рд╛рдореАрд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реЗрдХрд╛ рд╕рдорд╕реНрдпрд╛рд╣рд░реВ

  • рдпрджрд┐ рдЯреНрд░реЗрд╕рд░ рд╕реЗрд╡рд╛ рд╡рд╛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯрдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдПрди рднрдиреЗ рдмреАрдиреНрд╕ рд░ DI рд▓реЗ рд╕рдзреИрдВ рдХрд╛рдо рдЧрд░реНрджреИрди рд╕реНрд╡рдд: рд╡рд╛рдпрд░реНрдб рдЯреНрд░реЗрд╕рд░рд▓реЗ рдХрд╛рдо рдирдЧрд░реНрди рд╕рдХреНрдЫ рд░ рддрдкрд╛рдИрдВрд▓реЗ GlobalTracer.ge() рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред
  • рдПрдиреЛрдЯреЗрд╕рдирд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди рдпрджрд┐ рдпреЛ рдХрдореНрдкреЛрдиреЗрдиреНрдЯ рд╡рд╛ рд╕реЗрд╡рд╛ рд╣реЛрдЗрди, рд╡рд╛ рдпрджрд┐ рд╡рд┐рдзрд┐ рдЙрд╣реА рдХрдХреНрд╖рд╛рдХреЛ рдЫрд┐рдореЗрдХреА рд╡рд┐рдзрд┐рдмрд╛рдЯ рдмреЛрд▓рд╛рдЗрдиреНрдЫред рдХреЗ рдХрд╛рдо рдЧрд░реНрдЫ рднрдиреА рдЬрд╛рдБрдЪреНрди рд░ @Traced рд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди рднрдиреЗ рдореНрдпрд╛рдиреБрдЕрд▓ рдЯреНрд░реЗрд╕ рд╕рд┐рд░реНрдЬрдирд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рддрдкрд╛рдИ рд╕рд╛рд╡рдзрд╛рди рд░рд╣рдиреБ рдкрд░реНрдЫред рддрдкрд╛рдЗрдБ рдЬрд╛рднрд╛ рдПрдиреЛрдЯреЗрд╕рдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдореНрдкрд╛рдЗрд▓рд░ рдкрдирд┐ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИ рдард╛рдЙрдБрдорд╛ рдХрд╛рдо рдЧрд░реНрдиреБрдкрд░реНрдЫред
  • рдкреБрд░рд╛рдиреЛ рд╡рд╕рдиреНрдд рд░ рд╡рд╕рдиреНрдд рдмреБрдЯрдорд╛, DI рдорд╛ рдмрдЧрд╣рд░реВрдХрд╛ рдХрд╛рд░рдг рдУрдкрдирдЯреНрд░реЗрдирд┐рдЩ рд╕реНрдкреНрд░рд┐рдЩ рдХреНрд▓рд╛рдЙрдб рд╕реНрд╡рдд: рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирд▓реЗ рдХрд╛рдо рдЧрд░реНрджреИрди, рддреНрдпрд╕реЛрднрдП рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╡рд╕рдиреНрдд рдШрдЯрдХрд╣рд░реВрдорд╛ рдЯреНрд░реЗрд╕рд╣рд░реВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╕рдорд╛рдирддрд╛рджреНрд╡рд╛рд░рд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред github.com/opentracing-contrib/java-spring-jaeger/blob/master/opentracing-spring-jaeger-starter/src/main/java/io/opentracing/contrib/java/spring/jaeger/starter/JaegerAutoConfiguration.java
  • рд╕реНрд░реЛрддрд╣рд░реВрд╕рдБрдЧ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдЧреНрд░реВрд╡реАрдорд╛ рдХрд╛рдо рдЧрд░реНрджреИрди, рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреНрддрдорд╛ рдкреНрд░рдпрд╛рд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрдкрд░реНрдЫред
  • рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛рдХреЛ рдЖрдлреНрдиреИ spring.application.name рд╣реБрдиреБ рдкрд░реНрдЫ рдЬрд╕ рдЕрдиреНрддрд░реНрдЧрдд рдЯреНрд░реЗрд╕рд╣рд░реВ рд▓рдЧрд┐рдиреЗрдЫрдиреНред рдмрд┐рдХреНрд░реА рд░ рдкрд░реАрдХреНрд╖рдгрдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдирд╛рдо рдХреЗ рд╣реЛ, рддрд╛рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рдБрдЧреИ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • рдпрджрд┐ рддрдкрд╛рдЗрдБ GlobalTracer рд░ tomcat рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдм рдпреЛ tomcat рдорд╛ рдЪрд▓реНрдиреЗ рд╕рдмреИ рд╕реЗрд╡рд╛рд╣рд░реВрдорд╛ рдПрдЙрдЯрд╛ GlobalTracer рдЫ, рддреНрдпрд╕реИрд▓реЗ рддрд┐рдиреАрд╣рд░реВ рд╕рдмреИрдХреЛ рдПрдЙрдЯреИ рд╕реЗрд╡рд╛ рдирд╛рдо рд╣реБрдиреЗрдЫред
  • рдХреБрдиреИ рд╡рд┐рдзрд┐рдорд╛ рдЯреНрд░реЗрд╕рд╣рд░реВ рдердкреНрджрд╛, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдпреЛ рд▓реВрдкрдорд╛ рдзреЗрд░реИ рдкрдЯрдХ рдмреЛрд▓рд╛рдЗрдПрдХреЛ рдЫреИрди рднрдиреЗрд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реБрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╕рдмреИ рдХрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рд╕рд╛рдЭрд╛ рдЯреНрд░реЗрд╕ рдердкреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЬрд╕рд▓реЗ рдХреБрд▓ рдХрд╛рд░реНрдп рд╕рдордпрдХреЛ рдЧреНрдпрд╛рд░реЗрдиреНрдЯреА рдЧрд░реНрджрдЫред рдЕрдиреНрдпрдерд╛, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реЛрдб рд╕рд┐рд░реНрдЬрдирд╛ рд╣реБрдиреЗрдЫред
  • рдПрдХ рдкрдЯрдХ jaeger-ui рдорд╛, рдзреЗрд░реИ рд╕рдВрдЦреНрдпрд╛рдорд╛ рдЯреНрд░реЗрд╕рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдареВрд▓рд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдмрдирд╛рдЗрдпреЛ, рд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддреАрдХреНрд╖рд╛ рдирдЧрд░реЗрдХреЛрд▓реЗ, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдлреЗрд░рд┐ рдЧрд░реЗред рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, jaeger-query рдзреЗрд░реИ рдореЗрдореЛрд░реА рдЦрд╛рди рд░ рд▓реЛрдЪрджрд╛рд░ рдврд┐рд▓реЛ рдЧрд░реНрди рдерд╛рд▓реЗред jaeger-query рдкреБрди: рд╕реБрд░реБ рдЧрд░реЗрд░ рдорджреНрджрдд рдЧрд░рд┐рдпреЛ

рдирдореВрдирд╛рд╣рд░реВ, рднрдгреНрдбрд╛рд░рдг рд░ рдЕрд╡рд▓реЛрдХрди рдЯреНрд░реЗрд╕рд╣рд░реВ

рддреАрди рдкреНрд░рдХрд╛рд░рдХрд╛ рд╣реБрдиреНрдЫрдиреН рдирдореВрдирд╛ рдЯреНрд░реЗрд╕рд╣рд░реВ:

  1. Const рдЬрд╕рд▓реЗ рд╕рдмреИ рдЯреНрд░реЗрд╕рд╣рд░реВ рдкрдард╛рдЙрдБрдЫ рд░ рдмрдЪрдд рдЧрд░реНрдЫред
  2. рдХреЗрд╣реА рджрд┐рдЗрдПрдХреЛ рд╕рдореНрднрд╛рд╡реНрдпрддрд╛рд╕рдБрдЧ рдЯреНрд░реЗрд╕рд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрдиреЗ рд╕рдореНрднрд╛рд╡реНрдпрддрд╛ред
  3. рдкреНрд░рддрд┐ рд╕реЗрдХреЗрдиреНрдб рдЯреНрд░реЗрд╕рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╕реАрдорд┐рдд рдЧрд░реНрдиреЗ рджрд░ рд╕реАрдорд┐рдд рдЧрд░реНрджреИред рддрдкрд╛рдИрд▓реЗ рдЧреНрд░рд╛рд╣рдХрдорд╛ рдпреА рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдпрд╛ рдд jaeger-рдПрдЬреЗрдиреНрдЯ рд╡рд╛ рдХрд▓реЗрдХреНрдЯрд░рдорд╛ред рдЕрдм рд╣рд╛рдореА valuator stack рдорд╛ const 1 рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫреМрдВ, рдХрд┐рдирдХрд┐ рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЫреИрдирдиреН, рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рд▓рд╛рдореЛ рд╕рдордп рд▓рд┐рдиреНрдЫрдиреНред рднрд╡рд┐рд╖реНрдпрдорд╛, рдпрджрд┐ рдпрд╕рд▓реЗ рдкреНрд░рдгрд╛рд▓реАрдорд╛ рдЕрддреНрдпрдзрд┐рдХ рднрд╛рд░ рдмрдврд╛рдЙрдБрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╕реАрдорд┐рдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХреНрдпрд╛рд╕рд╛рдиреНрдбреНрд░рд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдпрд╕рд▓реЗ рджреБрдИ рджрд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдорд╛рддреНрд░ рдЯреНрд░реЗрд╕рд╣рд░реВ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫред рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫреМрдВ рдЗрд▓рд╛рд╕реНрдЯрд┐рдХрд╕реЗрд░реНрдЪ рд░ рдЯреНрд░реЗрд╕рд╣рд░реВ рд╕рдореНрдкреВрд░реНрдг рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ рд░ рдореЗрдЯрд┐рдиреЗ рдЫреИрдиред рдкреНрд░рддреНрдпреЗрдХ рджрд┐рдирдХреЛ рд▓рд╛рдЧрд┐ рдЫреБрдЯреНрдЯреИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдЫ, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ jaeger-service-2019-03-04ред рднрд╡рд┐рд╖реНрдпрдорд╛, рддрдкрд╛рдИрдВрд▓реЗ рдкреБрд░рд╛рдиреЛ рдЯреНрд░реЗрд╕рд╣рд░реВрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдлрд╛рдИ рдХрдиреНрдлрд┐рдЧрд░ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рддрдкрд╛рдИрд▓рд╛рдИ рдЪрд╛рд╣рд┐рдиреЗ рдЯреНрд░реЗрд╕рд╣рд░реВ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐:

  • рддрдкрд╛рдИрдВрд▓реЗ рдЯреНрд░реЗрд╕рд╣рд░реВ рдлрд┐рд▓реНрдЯрд░ рдЧрд░реНрди рдЪрд╛рд╣рдиреБрднрдПрдХреЛ рд╕реЗрд╡рд╛ рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ Tomcat7-default рд╕реЗрд╡рд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЬреБрди Tomcat рдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ рд░ рдпрд╕рдХреЛ рдЖрдлреНрдиреИ рдирд╛рдо рдЫреИрдиред
  • рддреНрдпрд╕рдкрдЫрд┐ рдЕрдкрд░реЗрд╢рди рдЪрдпрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рд╕рдордп рдЕрдиреНрддрд░рд╛рд▓ рд░ рдиреНрдпреВрдирддрдо рд╕рдЮреНрдЪрд╛рд▓рди рд╕рдордп, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐ резреж рд╕реЗрдХреЗрдиреНрдбрдмрд╛рдЯ, рд▓рд╛рдореЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рдорд╛рддреНрд░ред
    рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger
  • рдПрдЙрдЯрд╛ рдЯреНрд░реЗрд╕рдорд╛ рдЬрд╛рдиреБрд╣реЛрд╕реН рд░ рддреНрдпрд╣рд╛рдБ рдХреЗ рдврд┐рд▓реЛ рднрдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред
    рд╕реЗрд╡рд╛ рдЯреНрд░реЗрд╕рд┐рдЩ, OpenTracing рд░ Jaeger

рд╕рд╛рдереИ, рдпрджрд┐ рдХреЗрд╣рд┐ рдЕрдиреБрд░реЛрдз рдЖрдИрдбреА рдерд╛рд╣рд╛ рдЫ рднрдиреЗ, рдпрджрд┐ рдпреЛ рдЖрдИрдбреА рдЯреНрд░реЗрд╕ рд╕реНрдкреНрдпрд╛рдирдорд╛ рд▓рдЧ рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗ рддрдкрд╛рдИрд▓реЗ рдЯреНрдпрд╛рдЧ рдЦреЛрдЬреА рдорд╛рд░реНрдлрдд рдпреЛ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдЯреНрд░реЗрд╕ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рджрд╕реНрддрд╛рд╡реЗрдЬ

рд▓реЗрдЦ

рднрд┐рдбрд┐рдпреЛ

  • www.youtube.com/watch?v=qg0ENOdP1Lo рдХрд╕рд░реА рд╣рд╛рдореАрд▓реЗ рдмрд┐рдЬреБрд▓реА-рдЫрд┐рдЯреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╢реНрдирд╣рд░реВ рдбреЗрд▓рд┐рднрд░ рдЧрд░реНрди Jaeger рд░ Prometheus рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдпреМрдВ - рдмреНрд░рд╛рдпрди рдмреЛрд░реЗрд╣рдо
  • www.youtube.com/watch?v=WRntQsUajow рдкрд░рд┐рдЪрдп: Jaeger - Yuri Shkuro, Uber рд░ Pavol Loffay, Red Hat
  • www.youtube.com/watch?v=fsHb0qK37bc Serghei Iakovlev, "рдПрдХ рдареВрд▓реЛ рд╡рд┐рдЬрдпрдХреЛ рд╕рд╛рдиреЛ рдХрдерд╛: OpenTracing, AWS рд░ Jaeger"

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

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