PostgreSQL活动查看工具
项目描述
pg_view:Postgres实时活动查看工具
=======
.. image:: https://travis-ci.org/zalando/pg_view.svg?branch=master
:target: https://travis-ci.org/zalando/pg_view
:alt: 构建状态
.. image:: https://img.shields.io/pypi/dw/pg-view.svg
目标::target: https://pypi.python.org/pypi/pg-view
替代文本:PyPI 下载
.. 图像:: https://img.shields.io/pypi/l/pg-view.svg
目标::target: https://pypi.python.org/pypi/pg-view
替代文本:许可证
简介
--------
**pg_view** 是一款强大的命令行工具,可以提供您 PostgreSQL 数据库和系统指标的详细、实时视图。它将 sar 或 iostat 常见显示的指标与 PostgreSQL 的进程活动视图的输出相结合,并以易于理解的方式呈现全局和每个进程的统计数据。
pg_view 显示以下类型的数据
- 每个进程的统计数据,结合后端和 autovacuum 进程的 ``pg_stat_activity`` 视图输出
- 全局系统统计信息
- 每个分区信息
- 内存统计信息
在监控系统负载、查询锁定和 I/O 利用率进行长时间数据迁移时,pg_view 特别有用。如果您全天候运行服务器并希望实现零停机时间,它也非常有用。更多信息请访问 `tech.zalando.com <https://tech.zalando.com/blog/getting-a-quick-view-of-your-postgresql-stats/>`_。
目录
--------
.. 目录:
:local
:深度: 1
:反向链接: 无
==============
安装和配置
==============
要运行 pg_view,您需要
- Linux 2.6
- Python >= 2.6
- psycopg2
- curses
默认情况下,pg_view 假设它可以连接到本地 PostgreSQL 实例(用户为 postgres,无密码)。某些系统可能需要您更改您的 pg_hba.conf 文件或将密码设置在 .pgpass 中。您可以使用 -U 命令行选项或在配置文件中设置用户键来覆盖默认用户名(见下文)。
==============
pg_view 的工作原理
==============
pg_view 每秒查询一次系统/进程信息文件。它还会查询文件系统以获取 postgres 数据目录和 xlog 使用统计信息。请注意,后者功能可能会给您的磁盘子系统增加额外负载。
.. 图像:: https://raw.github.com/zalando/pg_view/master/images/pg_view_screenshot_new.png
替代文本:pg_view 截图
==============
连接参数
==============
默认情况下,pg_view 通过执行以下步骤(按顺序)尝试自动检测同一主机上运行的 PostgreSQL 集群:
- 读取 /proc/ 文件系统并检测 postmaster 进程的 pid 文件
- 从 /proc/pid/cwd 中的符号链接获取工作目录
- 读取 PostgreSQL 版本的 PG_VERSION(如果不存在,则假设它不是 PostgreSQL 目录,并跳过)
- 尝试从 /proc/net/unix、/proc/net/tcp 和 /proc/net/tcp6 收集进程正在监听的套接字。如果失败,并且您使用的是 9.1 或更高版本,则从 postmaster.pid 读取连接参数
- 检查所有参数,选择第一个允许其建立连接的参数
- 如果 pg_view 无法获取端口/主机或端口/套接字目录对,则退出
如果程序无法使用上述算法检测您的连接参数,则可以使用 -c 选项提供的配置文件手动指定这些参数。该文件应包含一个或多个部分,每个部分包含一个键 = 值对。
每个部分的标题代表数据库集群名称(此名称仅用于显示目的)。dbname 参数默认为 `postgres`,指定要连接的实际数据库名称。键值对应包含连接参数。
**有效的键有:**
- **host**:数据库服务器的主机名或 IP 地址,或 unix_socket_directory 的路径
- **port**:数据库服务器监听的端口
- **user**:数据库角色名称
特殊的 'DEFAULT' 部分包含适用于所有数据库集群的参数,如果数据库特定的部分中缺少相应的参数。例如:
[DEFAULT]
port=5435
[testdb]
host=localhost
[testdb2]
host=/tmp/test
[testdb3]
host=192.168.1.0
port=5433
dbname=test
读取此文件后,应用程序将尝试使用端口 5435(数据库 postgres)连接到 testdb 和 testdb2 集群,并使用数据库名称 `test` 端口 5433 连接到 testdb3。
如果自动检测代码对您有效,您可以通过指定数据库名实例(在大多数情况下,它将匹配$PGDATA的最后部分)并使用``-i``命令行选项来选择单个数据库。如果有多个具有相同名称的实例,您还可以使用``-V``指定所需的PG版本。
==============
使用方法
==============
您可以使用``pg_view --help``获取可用配置选项的简短描述
pg_view支持三种输出方法
- ncurses(默认)
- 控制台(``-o console``)
- JSON(``-o json``)
一些选项的描述
- **内存**
- **as**(CommittedAs):在最坏情况下存储工作负载所需的内存总量(即,如果所有应用程序在启动时实际分配了它们请求的所有内存)。
- **dirty**:等待写入磁盘的总内存量。值越高,在刷新时需要等待的时间越长。
- **limit**:可以物理分配的最大内存量。如果内存超过限制,您将开始看到“内存不足”错误,这将导致PostgreSQL关闭。
- 对于其他参数的解释,请参阅`Linux内核文档 <http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/proc.txt>`_。
- **分区**
- **fill**:向相应目录(``/data``或``/pg_xlog``)添加新数据的速率。
- **path_size**:相应PostgreSQL目录的大小。
- **total, left, read, write**:可用和分配的磁盘空间量,以及给定分区上的读取和写入速率(MB/s)。写入速率与填充速率不同,因为它考虑整个分区,而不仅仅是Postgres目录。它还显示数据修改。以10MB/s速率删除文件将显示为正写入速率。
- **type**:包含数据库数据(数据)或WAL(xlog)。
- **until_full**:当前分区耗尽空间前剩余的时间,*如果*我们只考虑对相应数据目录(``/data``或``/pg_xlog``)的写入。此列仅在警告(3小时)或关键(1小时)条件下显示,并且只考虑瞬时写入。如果单个进程在100GB剩余空间中以100MB/s的速率写入两个秒,在这两个秒内将显示关键状态。
- **postgres进程**
- **age**:进程启动以来的时间长度。
- **db**:进程运行的数据库。
- **query**:进程执行的查询。
- **read, write**:从分区读取或写入的数据量(MB/s)。
- **s**:进程状态。``R`` - '运行',``S`` - '睡眠',``D`` - '不可中断睡眠';有关详细信息,请参阅``man ps``。
- **type**:系统进程(自动清理启动器、记录器、归档器等)或执行查询的进程(后端或自动清理)。默认情况下,仅显示curses输出模式中的用户进程(按's'添加系统进程)。控制台模式中显示系统进程和用户进程。
- **utime, stime, guest**:进程对CPU资源的消耗。PostgreSQL后端无法使用超过一个CPU,因此这里显示单个CPU时间的百分比。
- **系统**
- **ctxt**:系统中的上下文切换次数。
- **iowait**:等待I/O的CPU资源百分比。
- **run, block**:运行和等待的进程数量。
- 对于其他参数,请参阅man 5 proc并查找/proc/stat。
==============
热键
==============
- **a**:自动隐藏来自PostgreSQL输出的字段。启用此选项将隐藏以下字段:``type``、``s``、``utime``、``stime``、``guest``。
- **f**: 立即冻结输出。再次按“f”键恢复。
- **h**: 显示帮助屏幕。
- **u**: 切换显示测量单位。
==============
释放
==============
$ ./release.sh <新版本号>
==============
贡献
==============
pg_view 欢迎贡献;只需发起一个pull request。
==============
许可证
==============
`Apache 2.0 <https://apache.ac.cn/licenses/LICENSE-2.0>`_
=======
.. image:: https://travis-ci.org/zalando/pg_view.svg?branch=master
:target: https://travis-ci.org/zalando/pg_view
:alt: 构建状态
.. image:: https://img.shields.io/pypi/dw/pg-view.svg
目标::target: https://pypi.python.org/pypi/pg-view
替代文本:PyPI 下载
.. 图像:: https://img.shields.io/pypi/l/pg-view.svg
目标::target: https://pypi.python.org/pypi/pg-view
替代文本:许可证
简介
--------
**pg_view** 是一款强大的命令行工具,可以提供您 PostgreSQL 数据库和系统指标的详细、实时视图。它将 sar 或 iostat 常见显示的指标与 PostgreSQL 的进程活动视图的输出相结合,并以易于理解的方式呈现全局和每个进程的统计数据。
pg_view 显示以下类型的数据
- 每个进程的统计数据,结合后端和 autovacuum 进程的 ``pg_stat_activity`` 视图输出
- 全局系统统计信息
- 每个分区信息
- 内存统计信息
在监控系统负载、查询锁定和 I/O 利用率进行长时间数据迁移时,pg_view 特别有用。如果您全天候运行服务器并希望实现零停机时间,它也非常有用。更多信息请访问 `tech.zalando.com <https://tech.zalando.com/blog/getting-a-quick-view-of-your-postgresql-stats/>`_。
目录
--------
.. 目录:
:local
:深度: 1
:反向链接: 无
==============
安装和配置
==============
要运行 pg_view,您需要
- Linux 2.6
- Python >= 2.6
- psycopg2
- curses
默认情况下,pg_view 假设它可以连接到本地 PostgreSQL 实例(用户为 postgres,无密码)。某些系统可能需要您更改您的 pg_hba.conf 文件或将密码设置在 .pgpass 中。您可以使用 -U 命令行选项或在配置文件中设置用户键来覆盖默认用户名(见下文)。
==============
pg_view 的工作原理
==============
pg_view 每秒查询一次系统/进程信息文件。它还会查询文件系统以获取 postgres 数据目录和 xlog 使用统计信息。请注意,后者功能可能会给您的磁盘子系统增加额外负载。
.. 图像:: https://raw.github.com/zalando/pg_view/master/images/pg_view_screenshot_new.png
替代文本:pg_view 截图
==============
连接参数
==============
默认情况下,pg_view 通过执行以下步骤(按顺序)尝试自动检测同一主机上运行的 PostgreSQL 集群:
- 读取 /proc/ 文件系统并检测 postmaster 进程的 pid 文件
- 从 /proc/pid/cwd 中的符号链接获取工作目录
- 读取 PostgreSQL 版本的 PG_VERSION(如果不存在,则假设它不是 PostgreSQL 目录,并跳过)
- 尝试从 /proc/net/unix、/proc/net/tcp 和 /proc/net/tcp6 收集进程正在监听的套接字。如果失败,并且您使用的是 9.1 或更高版本,则从 postmaster.pid 读取连接参数
- 检查所有参数,选择第一个允许其建立连接的参数
- 如果 pg_view 无法获取端口/主机或端口/套接字目录对,则退出
如果程序无法使用上述算法检测您的连接参数,则可以使用 -c 选项提供的配置文件手动指定这些参数。该文件应包含一个或多个部分,每个部分包含一个键 = 值对。
每个部分的标题代表数据库集群名称(此名称仅用于显示目的)。dbname 参数默认为 `postgres`,指定要连接的实际数据库名称。键值对应包含连接参数。
**有效的键有:**
- **host**:数据库服务器的主机名或 IP 地址,或 unix_socket_directory 的路径
- **port**:数据库服务器监听的端口
- **user**:数据库角色名称
特殊的 'DEFAULT' 部分包含适用于所有数据库集群的参数,如果数据库特定的部分中缺少相应的参数。例如:
[DEFAULT]
port=5435
[testdb]
host=localhost
[testdb2]
host=/tmp/test
[testdb3]
host=192.168.1.0
port=5433
dbname=test
读取此文件后,应用程序将尝试使用端口 5435(数据库 postgres)连接到 testdb 和 testdb2 集群,并使用数据库名称 `test` 端口 5433 连接到 testdb3。
如果自动检测代码对您有效,您可以通过指定数据库名实例(在大多数情况下,它将匹配$PGDATA的最后部分)并使用``-i``命令行选项来选择单个数据库。如果有多个具有相同名称的实例,您还可以使用``-V``指定所需的PG版本。
==============
使用方法
==============
您可以使用``pg_view --help``获取可用配置选项的简短描述
pg_view支持三种输出方法
- ncurses(默认)
- 控制台(``-o console``)
- JSON(``-o json``)
一些选项的描述
- **内存**
- **as**(CommittedAs):在最坏情况下存储工作负载所需的内存总量(即,如果所有应用程序在启动时实际分配了它们请求的所有内存)。
- **dirty**:等待写入磁盘的总内存量。值越高,在刷新时需要等待的时间越长。
- **limit**:可以物理分配的最大内存量。如果内存超过限制,您将开始看到“内存不足”错误,这将导致PostgreSQL关闭。
- 对于其他参数的解释,请参阅`Linux内核文档 <http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/filesystems/proc.txt>`_。
- **分区**
- **fill**:向相应目录(``/data``或``/pg_xlog``)添加新数据的速率。
- **path_size**:相应PostgreSQL目录的大小。
- **total, left, read, write**:可用和分配的磁盘空间量,以及给定分区上的读取和写入速率(MB/s)。写入速率与填充速率不同,因为它考虑整个分区,而不仅仅是Postgres目录。它还显示数据修改。以10MB/s速率删除文件将显示为正写入速率。
- **type**:包含数据库数据(数据)或WAL(xlog)。
- **until_full**:当前分区耗尽空间前剩余的时间,*如果*我们只考虑对相应数据目录(``/data``或``/pg_xlog``)的写入。此列仅在警告(3小时)或关键(1小时)条件下显示,并且只考虑瞬时写入。如果单个进程在100GB剩余空间中以100MB/s的速率写入两个秒,在这两个秒内将显示关键状态。
- **postgres进程**
- **age**:进程启动以来的时间长度。
- **db**:进程运行的数据库。
- **query**:进程执行的查询。
- **read, write**:从分区读取或写入的数据量(MB/s)。
- **s**:进程状态。``R`` - '运行',``S`` - '睡眠',``D`` - '不可中断睡眠';有关详细信息,请参阅``man ps``。
- **type**:系统进程(自动清理启动器、记录器、归档器等)或执行查询的进程(后端或自动清理)。默认情况下,仅显示curses输出模式中的用户进程(按's'添加系统进程)。控制台模式中显示系统进程和用户进程。
- **utime, stime, guest**:进程对CPU资源的消耗。PostgreSQL后端无法使用超过一个CPU,因此这里显示单个CPU时间的百分比。
- **系统**
- **ctxt**:系统中的上下文切换次数。
- **iowait**:等待I/O的CPU资源百分比。
- **run, block**:运行和等待的进程数量。
- 对于其他参数,请参阅man 5 proc并查找/proc/stat。
==============
热键
==============
- **a**:自动隐藏来自PostgreSQL输出的字段。启用此选项将隐藏以下字段:``type``、``s``、``utime``、``stime``、``guest``。
- **f**: 立即冻结输出。再次按“f”键恢复。
- **h**: 显示帮助屏幕。
- **u**: 切换显示测量单位。
==============
释放
==============
$ ./release.sh <新版本号>
==============
贡献
==============
pg_view 欢迎贡献;只需发起一个pull request。
==============
许可证
==============
`Apache 2.0 <https://apache.ac.cn/licenses/LICENSE-2.0>`_
项目详情
关闭
pg-view-1.4.1.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 841115a46e1cc672ee3e2c240c78f99981c4c33db68dff748a51bf30f9b8536c |
|
MD5 | 707c652ac241872a9ea284e7e15e6b7e |
|
BLAKE2b-256 | c1cc4c8dfd16b5b83470fac10bad1c19323ad52b231da9f347306d1fa3e60c6b |