Как видеть активные соединения и “текущее действие” в PostgreSQL 8.4

У меня есть приблизительно 30 серверов, и я просто использую прямо системный журнал для отправки всех журналов в единственный сервер входа. Для резервного копирования все машины также настроены для хранения их собственных журналов локально в течение нескольких дней, с помощью logrotate для заботы о вращении и удалении старых журналов.

Каждый из моих серверов приложений запускает маленький скрипт жемчуга для отправки их журналов в системный журнал, который затем вперед на loghost (сценарий жемчуга ниже).

Затем на loghost у нас есть некоторые пользовательские сценарии, которые подобны logcheck, которые в основном наблюдают входящие журналы за чем-либо подозрительным.

У нас также есть вся электронная почта от каждого хоста, идущего в одно место, так, чтобы, если какая-либо программа жалуется, что путь, мы получаем все сообщения. Это могло теоретически перейти к отдельному почтовому ящику, что программа могла действовать на и проанализировать.

Вот мой сценарий жемчуга входа. Это работает путем передачи по каналу вывода программы в него и затем его системные журналы вывод и слюна, это отступает так, можно отправить его в другое место (я отправляю к мультижурналу). Можно также дать ему-q опцию просто перейти к системному журналу.

#!/usr/bin/perl

use Sys::Syslog;
use Getopt::Long;

$SERVER_NAME = `hostname`;
chomp $SERVER_NAME;
$FACILITY = 'local0';
$PRIORITY = 'info';

GetOptions ('s=s' => \$SERVER_NAME, 'f=s' => \$FACILITY, 'p=s' => \$PRIORITY, 'q+' => \$quiet);

#print "$SERVER_NAME\n$FACILITY\n$PRIORITY\n";

#Sys::Syslog::setlogsock('unix');
openlog ($SERVER_NAME,'ndelay',$FACILITY);

if (!($quiet)) {syslog($PRIORITY,"Logging Started -- Logger version 1.1");}

$| = 1;

while (<>) {
    if (!($quiet)) {print $_ unless $_ =~ /^\s+$/};
    chomp;
    syslog($PRIORITY,$_) if $_;
}

closelog;

$| = 0;
101
задан 1 April 2010 в 02:06
6 ответов

Хорошо, получил его от кого-то еще. Этот запрос должен добиться цели:

select *
from pg_stat_activity
where datname = 'mydatabasename';
139
ответ дан 28 November 2019 в 19:21

См. также pg-вершину, которая действует как вершина кроме него, показывает действие пост-ГРЭС.

  • Pg-вершина установки (в Debian, пакет называют "ptop").
  • Станьте пользователем пост-ГРЭС (например. sudo su postgres)
  • Выполненный pg_top
24
ответ дан 28 November 2019 в 19:21

Ссылка взята из этой статьи.

SELECT 
    pid
    ,datname
    ,usename
    ,application_name
    ,client_hostname
    ,client_port
    ,backend_start
    ,query_start
    ,query  
FROM pg_stat_activity
WHERE state <> 'idle'
AND pid<>pg_backend_pid();
13
ответ дан 28 November 2019 в 19:21

PostgreSQL ASH Viewer (PASH Viewer) предоставляет графическое представление данных истории активных сеансов. https://github.com/dbacvetkov/PASH-Viewer Это бесплатно и с открытым исходным кодом.

ScreenShot

1
ответ дан 28 November 2019 в 19:21

Два способа мониторинга в Ubuntu 18. 04, просто для справки

Один с помощью pg_top:

$ sudo apt-get install ptop
$ pg_top # similar to top as others mentioned

Два с помощью pgAdmin4:

$ sudo apt-get install pgadmin4 pgadmin4-apache2
# type in password and use default url
$ pgadmin4

На панели приборов проверьте общее/активное значение как

enter image description here

2
ответ дан 28 November 2019 в 19:21

DBeaver также очень хорошо показывает активные/бездействующие/всего сеансов сервера.

1
ответ дан 26 November 2020 в 10:15

Теги

Похожие вопросы