PostgreSQL āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§‡āĻļāĻ¨ āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ - āĻ¨āĻ¤ā§āĻ¨ pgsentinel āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨

āĻĻā§ƒāĻĸāĻŧ pgsentinel āĻāĻ•āĻ‡ āĻ¨āĻžāĻŽā§‡āĻ° pgsentinel āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (github āĻ¸āĻ‚āĻ—ā§āĻ°āĻšāĻ¸ā§āĻĨāĻ˛), āĻ¯āĻž PostgreSQL-āĻ pg_active_session_history āĻ­āĻŋāĻ‰ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§‡ - āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§‡āĻļāĻ¨ā§‡āĻ° āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ (āĻ“āĻ°āĻžāĻ•āĻ˛ā§‡āĻ° 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 | āĻ¤āĻžāĻ°āĻŋāĻ–ā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻžā§āĻšāĻ˛ āĻ¸āĻš āĻŸāĻžāĻ‡āĻŽāĻ¸ā§āĻŸā§āĻ¯āĻžāĻŽā§āĻĒ | oid dataname | āĻŸā§‡āĻ•ā§āĻ¸āĻŸ āĻĒāĻŋāĻĄ | āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻž useysid | oid usename | āĻŸā§‡āĻ•ā§āĻ¸āĻŸ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨_āĻ¨āĻžāĻŽ | āĻŸā§‡āĻ•ā§āĻ¸āĻŸ client_addr | āĻŸā§‡āĻ•ā§āĻ¸āĻŸ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ_āĻšā§‹āĻ¸ā§āĻŸāĻ¨āĻžāĻŽ | āĻŸā§‡āĻ•ā§āĻ¸āĻŸ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ_āĻĒā§‹āĻ°ā§āĻŸ | integer backend_start | āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻžā§āĻšāĻ˛ āĻ¸āĻš āĻŸāĻžāĻ‡āĻŽāĻ¸ā§āĻŸā§āĻ¯āĻžāĻŽā§āĻĒ xact_start | āĻŸāĻžāĻ‡āĻŽāĻ¸ā§āĻŸā§āĻ¯āĻžāĻŽā§āĻĒ āĻ¸āĻš āĻŸāĻžāĻ‡āĻŽ āĻœā§‹āĻ¨ query_start | āĻŸāĻžāĻ‡āĻŽāĻ¸ā§āĻŸā§āĻ¯āĻžāĻŽā§āĻĒ āĻ¸āĻš āĻŸāĻžāĻ‡āĻŽ āĻœā§‹āĻ¨ state_change | āĻ¸āĻŽāĻ¯āĻŧ āĻ…āĻžā§āĻšāĻ˛ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŸāĻžāĻ‡āĻŽāĻ¸ā§āĻŸā§āĻ¯āĻžāĻŽā§āĻĒ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž_āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ_āĻŸāĻžāĻ‡āĻĒ | āĻĒāĻžāĻ ā§āĻ¯ āĻ…āĻĒā§‡āĻ•ā§āĻˇāĻž_āĻ‡āĻ­ā§‡āĻ¨ā§āĻŸ | āĻĒāĻžāĻ ā§āĻ¯ āĻ…āĻŦāĻ¸ā§āĻĨāĻž | āĻŸā§‡āĻ•ā§āĻ¸āĻŸ backend_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 = 2048
pg_stat_statements.track = āĻ¸āĻŦ

# āĻ¸ā§āĻŽā§ƒāĻ¤āĻŋāĻ¤ā§‡ āĻ°āĻžāĻ–āĻž āĻ¸āĻžāĻŽā§āĻĒā§āĻ°āĻ¤āĻŋāĻ• āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž
pgsentinel_ash.max_entries = 10000

PostgreSQL āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨:

āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨ pgsentinel āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§āĻ¨;

āĻœāĻŽā§‡ āĻĨāĻžāĻ•āĻž āĻ¤āĻĨā§āĻ¯ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻļā§āĻ¨ā§‡āĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĻāĻŋāĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡āĻŽāĻ¨:

  • āĻ¸ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ•ā§‹āĻ¨ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻžāĻ° āĻ‰āĻĒāĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻŦā§‡āĻļāĻŋ āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻ¯āĻŧ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛?
  • āĻ•ā§‹āĻ¨ āĻ¸ā§‡āĻļāĻ¨āĻ—ā§āĻ˛āĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ›āĻŋāĻ˛?
  • āĻ•āĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ›āĻŋāĻ˛?

āĻ†āĻĒāĻ¨āĻŋ, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ‡ āĻĒā§āĻ°āĻļā§āĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¤āĻŦā§‡ āĻŽāĻžāĻ‰āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻ—ā§āĻ°āĻšā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻŦā§āĻ¯āĻŦāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻšāĻžāĻ‡āĻ˛āĻžāĻ‡āĻŸ āĻ•āĻ°ā§‡ āĻšāĻžāĻ°ā§āĻŸā§‡ āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ°āĻ­āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻ¸āĻ™ā§āĻ—ā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻĒā§āĻ¯āĻžāĻļ āĻ­āĻŋāĻ‰āĻ¯āĻŧāĻžāĻ° (āĻ†āĻĒāĻ¨āĻŋ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻ¸āĻ‚āĻ—ā§ƒāĻšā§€āĻ¤ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ°āĻŋāĻ˛āĻŋāĻœ).

āĻ¸ā§āĻŸāĻžāĻ°ā§āĻŸāĻ†āĻĒā§‡, PASH-āĻ­āĻŋāĻ‰āĻ¯āĻŧāĻžāĻ° (āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 0.4.0 āĻĨā§‡āĻ•ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡) pg_active_session_history āĻ­āĻŋāĻ‰āĻŸāĻŋāĻ° āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻĒā§āĻ°ā§‹ āĻœāĻŽāĻž āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻ¤āĻŋ 15 āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄā§‡ āĻ—ā§āĻ°āĻžāĻĢ āĻ†āĻĒāĻĄā§‡āĻŸ āĻ•āĻ°ā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻ‡āĻ¨āĻ•āĻžāĻŽāĻŋāĻ‚ āĻĄā§‡āĻŸāĻž āĻĒāĻĄāĻŧāĻ¤ā§‡ āĻĨāĻžāĻ•ā§‡āĨ¤

PostgreSQL āĻ¸āĻ•ā§āĻ°āĻŋāĻ¯āĻŧ āĻ¸ā§‡āĻļāĻ¨ āĻ‡āĻ¤āĻŋāĻšāĻžāĻ¸ - āĻ¨āĻ¤ā§āĻ¨ pgsentinel āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨