Pgsentinel рдиреЗ рдЙрд╕реА рдирд╛рдо (
github рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА ) рдХрд╛
pgsentinel рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдЬреЛ PostgreSQL рдореЗрдВ pg_active_session_history рджреГрд╢реНрдп - рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░ (Oracle v $ active_session_history рдХреЗ рд╕рдорд╛рди) рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ рдЬреЛрдбрд╝рддрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ pg_stat_activity рд╕реЗ рдмрд╕ рд╣рд░ рджреВрд╕рд░реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ:
- рд╕рднреА рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХреА рдорд╛рддреНрд░рд╛ рдкрд┐рдЫрд▓реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреА рд╣реИред
- рдХреНрд╡реЗрд░реА рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ - pg_stat_statements рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдПрдХ рд╣реА рдХреНрд╡реЗрд░реАрдб (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред
- Top_level_query рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ - рдХреНрд╡реЗрд░реА рдкрд╛рда рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╡рд░реНрддрдорд╛рди рдХреНрд╡реЗрд░реА рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (pl / pgsl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)
Pg_active_session_history рдлрд╝реАрд▓реНрдб рдХреА рдкреВрд░реА рд╕реВрдЪреА: рд╕реНрддрдВрдн | рдЯрд╛рдЗрдк ------------------ + -------------------------- ash_time | рдЯрд╛рдЗрдо рдЬреЛрди рдбреЗрдЯрд┐рдб рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | oid datname | рдЯреЗрдХреНрд╕реНрдЯ рдкрд┐рдб | рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ | рдУрдб usename | рдкрд╛рда application_name | рдкрд╛рда client_addr | text client_hostname | рдкрд╛рда client_port | рдкреВрд░реНрдгрд╛рдВрдХ рдмреИрдХрдПрдВрдб_рд╕реНрдЯрд╛рд░реНрдЯ | рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк xact_start | рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк query_start | рдЯрд╛рдЗрдо рдЬрд╝реЛрди рд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рдЯрд╛рдЗрдо рдЬрд╝реЛрди рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдЗрдВрддрдЬрд╝рд╛рд░__рд╡реЗрдВрдЯ_рдЯрд╛рдЗрдк | рдЯреЗрдХреНрд╕реНрдЯ рд╡реЗрдЯ_рдПрд╡реЗрдВрдЯ | рдкрд╛рда рд╕реНрдерд┐рддрд┐ | рдкрд╛рда backend_xid | xid backend_xmin | xid top_level_query | рдкрд╛рда рдХреНрд╡реЗрд░реА | рдкрд╛рда рдХреНрд╡реЗрд░реА | bigint backend_type | рдЯреЗрдХреНрд╕реНрдЯ
рдЕрднреА рддрдХ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рддреИрдпрд╛рд░ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП "devel" рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрде рдЪрд░ рдореЗрдВ pg_config рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рдПрдХрддреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рд╕реАрдбреА pgsentinel / src
рдореЗрдХрдЕрдк
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
Postgres.conf рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ:
share_preload_lbooks = 'pg_stat_statements, pgsentinel'
track_activity_query_size = 2048
pg_stat_statements.track = рд╕рднреА
# рд╕реНрдореГрддрд┐ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рд╣рд╛рд▓ рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
pgsentinel_ash.max_entries = 10000
PostgreSQL рдХреЛ рд░реАрдмреВрдЯ рдХрд░реЗрдВ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВ:
рдПрдХреНрд╕рдЯреЗрдВрд╢рди pgsentinel рдмрдирд╛рдПрдВ;
рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдЖрдкрдХреЛ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреИрд╕реЗ:
- рд╕рддреНрд░реЛрдВ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдХрд┐рди рдЙрдореНрдореАрджреЛрдВ рдкрд░ рд╡реНрдпрддреАрдд рд╣реБрдЖ?
- рдХреМрди рд╕реЗ рд╕рддреНрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдереЗ?
- рдХреМрди рд╕реЗ рдкреНрд░рд╢реНрди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдереЗ?
рдЖрдк рдмреЗрд╢рдХ рдЗрди рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрд╕рдХреНрдпреВрдПрд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рдкрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдЕрдкрдиреЗ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ
PASH-Viewer рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЖрдк рд╕рдВрдЧреНрд░рд╣ рдЕрдиреБрднрд╛рдЧреЛрдВ рдХреЛ
рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, PASH-Viewer (рд╕рдВрд╕реНрдХрд░рдг 0.4.0 рд╕реЗ рд╢реБрд░реВ) pg_active_session_history рджреГрд╢реНрдп рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдпрджрд┐ рдХреЛрдИ рдПрдХ рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕рдореЗрдВ рд╕реЗ рдкреВрд░реЗ рд╕рдВрдЪрд┐рдд рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╣рд░ 15 рд╕реЗрдХрдВрдб рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╣реБрдП рдирдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред
