Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ сСсии Π½Π° PostgreSQL - Π½ΠΎΠ²ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pgsentinel

компания pgsentinel пусна pgsentinel Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ със ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ΅ (github Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅), ΠΊΠΎΠΉΡ‚ΠΎ добавя ΠΈΠ·Π³Π»Π΅Π΄Π° pg_active_session_history към PostgreSQL – историята Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ сСсии (ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° v$active_session_history Π½Π° Oracle).

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° са ΠΌΠΎΠΌΠ΅Π½Ρ‚Π½ΠΈ снимки Π½Π° всяка сСкунда ΠΎΡ‚ pg_stat_activity, Π½ΠΎ ΠΈΠΌΠ° Π²Π°ΠΆΠ½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ:

  1. Цялата Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½Π° информация сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° само Π² RAM, Π° ΠΎΠ±Π΅ΠΌΡŠΡ‚ Π½Π° консумираната ΠΏΠ°ΠΌΠ΅Ρ‚ сС Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€Π° ΠΎΡ‚ броя Π½Π° послСднитС ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈ записи.
  2. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ queryid - ΡΡŠΡ‰ΠΎΡ‚ΠΎ queryid ΠΎΡ‚ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ pg_stat_statements (изисква сС ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½Π° инсталация).
  3. Добавя сС ΠΏΠΎΠ»Π΅Ρ‚ΠΎ top_level_query - Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ Π½Π° заявката, ΠΎΡ‚ която Π΅ ΠΈΠ·Π²ΠΈΠΊΠ°Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° заявка (Π² случай Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° pl/pgsql)


ПълСн списък с ΠΏΠΎΠ»Π΅Ρ‚Π° pg_active_session_history:

      ΠΊΠΎΠ»ΠΎΠ½Π° | Π’ΠΈΠΏ ------------------+-------------------- ash_time | ΠΊΠ»Π΅ΠΉΠΌΠΎ с часова Π·ΠΎΠ½Π° с Π΄Π°Ρ‚Π° | oid ΠΈΠΌΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ | тСкст pid | цяло число usesid | oid потрСбитСлско ΠΈΠΌΠ΅ | тСкст ΠΈΠΌΠ΅_Π½Π°_ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ | тСкст client_addr | тСкст client_hostname | тСкст client_port | цяло число backend_start | ΠΊΠ»Π΅ΠΉΠΌΠΎ с часова Π·ΠΎΠ½Π° xact_start | ΠΊΠ»Π΅ΠΉΠΌΠΎ с часова Π·ΠΎΠ½Π° query_start | ΠΊΠ»Π΅ΠΉΠΌΠΎ с часова Π·ΠΎΠ½Π° state_change | ΠΊΠ»Π΅ΠΉΠΌΠΎ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ с часова Π·ΠΎΠ½Π° wait_event_type | тСкст wait_event | ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° тСкста | тСкст backend_xid | xid backend_xmin | xid заявка ΠΎΡ‚ Π½Π°ΠΉ-високо_Π½ΠΈΠ²ΠΎ | тСкстова заявка | тСкстова заявка | bigint backend_type | тСкст                     

ВсС ΠΎΡ‰Π΅ няма Π³ΠΎΡ‚ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° инсталация. ΠŸΡ€Π΅Π΄Π»Π°Π³Π° сС Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ изходния ΠΊΠΎΠ΄ ΠΈ сами Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°. ΠŸΡŠΡ€Π²ΠΎ трябва Π΄Π° инсталиратС ΠΏΠ°ΠΊΠ΅Ρ‚Π° β€œdevel” Π·Π° вашия ΡΡŠΡ€Π²ΡŠΡ€ ΠΈ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡŠΡ‚Ρ към pg_config Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° PATH. НиС ΡΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅:

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;

Натрупаната информация Π½ΠΈ позволява Π΄Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠΈ ΠΊΠ°Ρ‚ΠΎ:

  • На ΠΊΠ°ΠΊΠ²ΠΈ очаквания са посвСтСни Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅ сСсиитС?
  • Кои сСсии бяха Π½Π°ΠΉ-Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ?
  • Кои заявки бяха Π½Π°ΠΉ-Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ?

ΠœΠΎΠΆΠ΅Ρ‚Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ Π½Π° Ρ‚Π΅Π·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° SQL заявки, Π½ΠΎ Π΅ ΠΏΠΎ-ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° ясно Π½Π° Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π²Π°Ρ‚Π΅ интСрСсуващитС Π²ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ с ΠΌΠΈΡˆΠΊΠ°Ρ‚Π°. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ с Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° PASH Viewer (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ Π΄Π²ΠΎΠΈΡ‡Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π° ΠŸΡ€Π΅ΡΠ°Ρ‚Π°).

ΠŸΡ€ΠΈ стартиранС PASH-Viewer (Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ вСрсия 0.4.0) провСрява Π·Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΈΠ·Π³Π»Π΅Π΄ pg_active_session_history ΠΈ Π°ΠΊΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°, Π·Π°Ρ€Π΅ΠΆΠ΄Π° цялата Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½Π° история ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° Ρ‡Π΅Ρ‚Π΅ Π½ΠΎΠ²ΠΈ входящи Π΄Π°Π½Π½ΠΈ, Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΉΠΊΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ°Ρ‚Π° Π½Π° всСки 15 сСкунди.

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ сСсии Π½Π° PostgreSQL - Π½ΠΎΠ²ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pgsentinel

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€