PostgreSQL рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░ рдЗрддрд┐рд╣рд╛рд╕ - рдирдпрд╛рдБ pgsentinel рд╡рд┐рд╕реНрддрд╛рд░

рджреГрдв pgsentinel рдЙрд╣реА рдирд╛рдордХреЛ pgsentinel рд╡рд┐рд╕реНрддрд╛рд░ рдЬрд╛рд░реА рдЧрд░рд┐рдпреЛ (github рднрдгреНрдбрд╛рд░), рдЬрд╕рд▓реЗ PostgreSQL рдорд╛ pg_active_session_history рджреГрд╢реНрдп рдердкреНрдЫ тАФ рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░рд╣рд░реВрдХреЛ рдЗрддрд┐рд╣рд╛рд╕ (Oracle рдХреЛ v$active_session_history рдЬрд╕реНрддреИ)ред

рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдкрдорд╛, рдпреА рдХреЗрд╡рд▓ pg_stat_activity рдмрд╛рдЯ рджреЛрд╕реНрд░реЛ-рд╕реЗрдХреЗрдиреНрдб рд╕реНрдиреНрдпрд╛рдкрд╕рдЯрд╣рд░реВ рд╣реБрдиреН, рддрд░ рддреНрдпрд╣рд╛рдБ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреН:

  1. рд╕рдмреИ рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ RAM рдорд╛ рднрдгреНрдбрд╛рд░рдг рдЧрд░рд┐рдиреНрдЫ, рд░ рдореЗрдореЛрд░реА рдХреЛ рдЦрдкрдд рдорд╛рддреНрд░рд╛ рдкрдЫрд┐рд▓реНрд▓реЛ рднрдгреНрдбрд╛рд░рдг рд░реЗрдХрд░реНрдб рдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдЫред
  2. queryid рдлрд┐рд▓реНрдб рдердкрд┐рдПрдХреЛ рдЫ - pg_stat_statements рд╡рд┐рд╕реНрддрд╛рд░ (рдкреВрд░реНрд╡-рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ) рдмрд╛рдЯ рдЙрд╣реА queryidред
  3. top_level_query рдлрд┐рд▓реНрдб рдердкрд┐рдПрдХреЛ рдЫ - рд╣рд╛рд▓рдХреЛ рдХреНрд╡реЗрд░реА рдмреЛрд▓рд╛рдЗрдПрдХреЛ рдХреНрд╡реЗрд░реАрдХреЛ рдкрд╛рда (рдпрджрд┐ pl/pgsql рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ)


pg_active_session_history рдХреНрд╖реЗрддреНрд░рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╕реВрдЪреА:

      рд╕реНрддрдореНрдн | рдЯрд╛рдЗрдк рдЧрд░реНрдиреБрд╣реЛрд╕реН ------------------+------------ ash_time | рд╕рдордп рдХреНрд╖реЗрддреНрд░ datid рд╕рдВрдЧ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк | oid datename | рдкрд╛рда pid | integer useysid | oid usename | рдкрд╛рда рдЖрд╡реЗрджрди_рдирд╛рдо | рдкрд╛рда client_addr | text client_hostname | рдкрд╛рда рдЧреНрд░рд╛рд╣рдХ_рдкреЛрд░реНрдЯ | integer backend_start | рд╕рдордп рдХреНрд╖реЗрддреНрд░ xact_start | рд╕рдБрдЧ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рд╕рдордп рдХреНрд╖реЗрддреНрд░ query_start | рд╕рдВрдЧ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд░рд╛рдЬреНрдп_рдкрд░рд┐рд╡рд░реНрддрдирдХреЛ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк | рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдкреНрд░рддреАрдХреНрд╖рд╛_рдШрдЯрдирд╛_рдкреНрд░рдХрд╛рд░ | рд╕рдВрдЧ рдЯрд╛рдЗрдорд╕реНрдЯреНрдпрд╛рдореНрдк рдкрд╛рда рдкреНрд░рддреАрдХреНрд╖рд╛_рдШрдЯрдирд╛ | рдкрд╛рда рдЕрд╡рд╕реНрдерд╛ | рдкрд╛рда рдмреНрдпрд╛рдХрдЗрдиреНрдб_xid | xid backend_xmin | xid top_level_query | рдкрд╛рда рдкреНрд░рд╢реНрди | рдкрд╛рда queryid | bigint backend_type | рдкрд╛рда                     

рд╕реНрдерд╛рдкрдирд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЕрд╣рд┐рд▓реЗрд╕рдореНрдо рдХреБрдиреИ рддрдпрд╛рд░ рдкреНрдпрд╛рдХреЗрдЬ рдЫреИрдиред рдпреЛ рд╕реНрд░реЛрддрд╣рд░реВ рдбрд╛рдЙрдирд▓реЛрдб рдЧрд░реНрди рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдЖрдлреИрдВ рдЬрдореНрдорд╛ рдЧрд░реНрди рд╕реБрдЭрд╛рд╡ рджрд┐рдЗрдПрдХреЛ рдЫред рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЗ рдЖрдлреНрдиреЛ рд╕рд░реНрднрд░рдХреЛ рд▓рд╛рдЧрд┐ "devel" рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ PATH рдЪрд░рдорд╛ pg_config рдорд╛ рдкрде рд╕реЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рд╕рдЩреНрдХрд▓рди:

cd pgsentinel/src
рдмрдирд╛рдЙрди
рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН

postgres.conf рдорд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдердкреНрдиреБрд╣реЛрд╕реН:

shared_preload_libraries = 'pg_stat_statements,pgsentinel'
track_activity_query_size = реирежрекрео
pg_stat_statements.track = рд╕рдмреИ

рдореЗрдореЛрд░реАрдорд╛ рд░рд╛рдЦрд┐рдПрдХрд╛ рд╣рд╛рд▓реИрдХрд╛ рд░реЗрдХрд░реНрдбрд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛
pgsentinel_ash.max_entries = 10000

PostgreSQL рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН:

рд╡рд┐рд╕реНрддрд╛рд░ pgsentinel рд╕рд┐рд░реНрдЬрдирд╛;

рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реАрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдЬрд╕реНрддреИ:

  • рддрдкрд╛рдИрдВрд▓реЗ рд╕рдмреИрднрдиреНрджрд╛ рдзреЗрд░реИ рд╕рдордп рдХреБрди рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рддреНрд░рд╣рд░реВрдорд╛ рдмрд┐рддрд╛рдЙрдиреБрднрдпреЛ?
  • рдХреБрди рд╕рддреНрд░рд╣рд░реВ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдХреНрд░рд┐рдп рдерд┐рдП?
  • рдХреБрди рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдХреНрд░рд┐рдп рдерд┐рдП?

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

рд╕реБрд░реБ рдЧрд░реНрджрд╛, PASH-Viewer (рд╕рдВрд╕реНрдХрд░рдг 0.4.0 рдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдБрджреИ) pg_active_session_history рджреГрд╢реНрдпрдХреЛ рдЙрдкрд╕реНрдерд┐рддрд┐рдХреЛ рд▓рд╛рдЧрд┐ рдЬрд╛рдБрдЪ рдЧрд░реНрджрдЫ рд░ рдпрджрд┐ рдпреЛ рдЕрд╡рд╕реНрдерд┐рдд рдЫ рднрдиреЗ, рдпрд╕рд▓реЗ рдпрд╕рдмрд╛рдЯ рд╕рдореНрдкреВрд░реНрдг рд╕рдВрдЪрд┐рдд рдЗрддрд┐рд╣рд╛рд╕ рд▓реЛрдб рдЧрд░реНрджрдЫ рд░ рдирдпрд╛рдБ рдЖрдЧрдорди рдбреЗрдЯрд╛ рдкрдвреНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫ, рдкреНрд░рддреНрдпреЗрдХ 15 рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдЧреНрд░рд╛рдл рдЕрдкрдбреЗрдЯ рдЧрд░реНрджреИред

PostgreSQL рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░ рдЗрддрд┐рд╣рд╛рд╕ - рдирдпрд╛рдБ pgsentinel рд╡рд┐рд╕реНрддрд╛рд░

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

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