Package: pg-activity
Command line tool for PostgreSQL server activity monitoring.InstallationFrom distribution packagesThe simplest way to install pg_activity is through the package manager of your
Linux distribution, if it ships with a package. E.g., on Debian-based
distributions (e.g. Debian, Ubuntu, Mint...):$ sudo apt install pg-activity(on Debian bullseye, the current stable version, a backport is available:apt install pg-activity/bullseye-backports).The PostgreSQL Global Development Group (PGDG) also provides packages for
RPM-based (https://yum.postgresql.org/) and Debian-based distributions
(https://wiki.postgresql.org/wiki/Apt).Note:distribution packages may not be up to date with the latest
pg_activity releases. Before submitting a bug report here:check the package version, compare that to our latest release and then
review thechange logto see if the bug has been fixed;if the issue is about packaging, e.g. missing dependencies, reach out
the package maintainer (or PGDG) first.From PyPIpg_activity can be installed using pip on Python 3.7 or later along with
psycopg:$ python3 -m pip install "pg_activity[psycopg]"Alternatively,pipxcan be used to install
and run pg_activity in an isolated environment:$ pipx install "pg_activity[psycopg]"In case your$PATHdoes not already contain it, the full path is:$ ~/.local/bin/pg_activityFrom source, using gitThis is only necessary to test development versions. First, clone the repository:$ git clone https://github.com/dalibo/pg_activity.gitChange the branch if necessary. Then create a dedicated environment,
and install pg_activity with the psycopg database driver:$ cd pg_activity
$ python3 -m venv .venv
$ . .venv/bin/activate
(.venv) $ pip install ".[psycopg]"
(.venv) $ pg_activityTo quit this env and destroy it:$ deactivate
$ rm -r .venvUsagepg_activityworks locally or remotely. In local execution context, to obtain
sufficient rights to display system information, the system user runningpg_activitymust be the same user running postgresql server (postgresby
default), or have more rights likeroot. The PostgreSQL user used to connect
to the database must be super-user in order to get as much data as possible.
Otherwise,pg_activitycan fall back to a degraded mode where some data like
system information or temporary file data are not displayed.ex:sudo -u postgres pg_activity -U postgresOptionspg_activity [options] [connection string]

Options:
  --blocksize BLOCKSIZE
                        Filesystem blocksize (default: 4096).
  --rds                 Enable support for AWS RDS (implies --no-tempfiles and filters out the rdsadmin database from space calculation).
  --output FILEPATH     Store running queries as CSV.
  --no-db-size          Skip total size of DB.
  --no-tempfiles        Skip tempfile count and size.
  --no-walreceiver      Skip walreceiver checks.
  -w, --wrap-query      Wrap query column instead of truncating.
  --duration-mode DURATION_MODE
                        Duration mode. Values: 1-QUERY(default), 2-TRANSACTION, 3-BACKEND.
  --min-duration SECONDS
                        Don't display queries with smaller than specified duration (in seconds).
  --filter FIELD:REGEX  Filter activities with a (case insensitive) regular expression applied on selected fields. Known fields are: dbname.
  --debug-file DEBUG_FILE
                        Enable debug and write it to DEBUG_FILE.
  --version             show program's version number and exit.
  --help                Show this help message and exit.

Connection Options:
  connection string     A valid connection string to the database, e.g.: 'host=HOSTNAME port=PORT user=USER dbname=DBNAME'.
  -h HOSTNAME, --host HOSTNAME
                        Database server host or socket directory.
  -p PORT, --port PORT  Database server port.
  -U USERNAME, --username USERNAME
                        Database user name.
  -d DBNAME, --dbname DBNAME
                        Database name to connect to.

Process table display options:
  These options may be used hide some columns from the processes table.

  --no-pid              Disable PID.
  --no-database         Disable DATABASE.
  --no-user             Disable USER.
  --no-client           Disable CLIENT.
  --no-cpu              Disable CPU%.
  --no-mem              Disable MEM%.
  --no-read             Disable READ/s.
  --no-write            Disable WRITE/s.
  --no-time             Disable TIME+.
  --no-wait             Disable W.
  --no-app-name         Disable App.

Other display options:
  --hide-queries-in-logs
                        Disable log_min_duration_statements and log_min_duration_sample for pg_activity.
  --no-inst-info        Display instance information in header.
  --no-sys-info         Display system information in header.
  --no-proc-info        Display workers process information in header.
  --refresh REFRESH     Refresh rate. Values: 0.5, 1, 2, 3, 4, 5 (default: 2).Configurationpg_activitymay be configured through configuration file, inINI format,
read from${XDG_CONFIG_HOME:~/.config}/pg_activity.confor/etc/pg_activity.confin that order. Command-line options may override
configuration file settings.
This is used to control how columns in the processes table are rendered, e.g.:[client]hidden=yes[database]width=9NotesLength of SQL query text thatpg_activityreports relies on PostgreSQL
parametertrack_activity_query_size. Default value is1024(expressed in
bytes). If your SQL query text look truncated, you should increasetrack_activity_query_size.Interactives commandsKeyActionrSort by READ/s, descendingwSort by WRITE/s, descendingcSort by CPU%, descendingmSort by MEM%, descendingtSort by TIME+, descendingTChange duration mode: query, transaction, backendSpacePause on/offvChange queries display mode: full, indented, truncatedUP/DOWNScroll processes listk/jScroll processes listqQuit+Increase refresh time. Maximum value : 5s-Decrease refresh time. Minimum Value : 0.5sF1/1Running queries listF2/2Waiting queries listF3/3Blocking queries listhHelp pageRRefreshDRefresh Database Size (including when --no-dbzise option applied)sDisplay system information in headeriDisplay general instance information in headeroDisplay worker information in headerNavigation modeKeyActionUP/kMove up the cursorDOWN/jMove down the cursorKTerminate the current backend/tagged backendsCCancel the current backend/tagged backendsSpaceTag or untag the processqQuitOtherBack to activityFAQI can't see my queries only TPS is shownpg_activityscans the viewpg_stat_activitywith a user defined refresh
time comprised between 0.5 and 5 seconds. It can be modified in the interface
with the+and-keys. Any query executed between two scans won't be
displayed.What is more,pg_activityuses different queries to get :settings frompg_settingsversion info usingversion()queries and number of connections frompg_stat_activitylocks frompg_lockstps frompg_databaseusingpg_stat_get_db_xact_commit()andpg_stat_get_db_xact_rollback()and more ( eg :pg_cancel_backend()andpg_terminate_backend())Those queries cannot be seen in the query tab because all queries issued from
thepg_activitybackend are considered as noise and are not displayed . On
the other hand, the transactions used to get the info forpg_activity's
reporting are still accounted for by postgres inpg_stat_get_db_xact_commit()andpg_stat_get_db_xact_commit(). Thereforepg_activitywill display a non
zero TPS even with no activity on the database, and/or no activity displayed on
screen.How can I specify a password for authentication ?pg_activity uses libpq to access to PostgreSQL therefore all the traditional
methods are available.You can pass the password for the database connection in a password file.
Information can also be given via PostgreSQL's environment variables
(PGPASSFILE or PGPASSWORD) or via the connection string parameters.The password file is preferred since it's more secure (security is deferred to
the OS). Please avoid password in connection strings at all cost.Change logSeeCHANGELOG.md.