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

Компания pgsentinel пусна Π΅Π΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎΡ‚ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pgsentinel (github Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ), ΠΊΠΎΠ΅Ρ‚ΠΎ добавя Π² PostgreSQL ΠΈΠ·Π³Π»Π΅Π΄Π° pg_active_session_history β€” история Π½Π° Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ сСсии (Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π° ΠΎΡ€Π°ΠΊΠ»ΠΎΠ²ΠΎΡ‚ΠΎ v$active_session_history).

По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, Ρ‚ΠΎΠ²Π° са просто снимки ΠΎΡ‚ pg_stat_activity всяка сСкунда, Π½ΠΎ ΠΈΠΌΠ° Π²Π°ΠΆΠ½ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ:

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


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

      Column      |           Type           
------------------+--------------------------
 ash_time         | timestamp with time zone 
 datid            | oid                      
 datname          | text                     
 pid              | integer                  
 usesysid         | oid                      
 usename          | text                     
 application_name | text                     
 client_addr      | text                     
 client_hostname  | text                     
 client_port      | integer                  
 backend_start    | timestamp with time zone 
 xact_start       | timestamp with time zone 
 query_start      | timestamp with time zone 
 state_change     | timestamp with time zone 
 wait_event_type  | text                     
 wait_event       | text                     
 state            | text                     
 backend_xid      | xid                      
 backend_xmin     | xid                      
 top_level_query  | text                     
 query            | text                     
 queryid          | bigint                   
 backend_type     | text                     

Π“ΠΎΡ‚ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° инсталация засСга няма. ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° сС Π΄Π° сС свалят ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄Π° сС ΡΡŠΠ±Π΅Ρ€Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° самостоятСлно. ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС инсталира β€ždevelβ€œ-ΠΏΠ°ΠΊΠ΅Ρ‚ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΈ Π² ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° PATH Π΄Π° сС запишС ΠΏΡŠΡ‚ΡΡ‚ Π΄ΠΎ pg_config. Π‘ΡŠΠ±ΠΈΡ€Π°ΠΌΠ΅:

cd pgsentinel/src
Π½Π°ΠΏΡ€Π°Π²ΠΈ
make install

ДобавямС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π² postgres.conf:

shared_preload_libraries = β€˜pg_stat_statements,pgsentinel’
track_activity_query_size = 2048
pg_stat_statements.track = all

# количСство ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π² памяти послСдних записСй
pgsentinel_ash.max_entries = 10000

РСстартирамС PostgreSQL ΠΈ създавамС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ:

create extension pgsentinel;

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

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

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

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

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster