英语法语西班牙语

Ad


OnWorks 网站图标

check_postgres_table_sizep - 云端在线

通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器在 OnWorks 免费托管服务提供商中运行 check_postgres_table_sizep

这是 check_postgres_table_sizep 命令,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


check_postgres - Nagios、MRTG、Cacti 等的 Postgres 监控脚本

本文档描述了 check_postgres 版本 2.22.0

概要


## 创建所有符号链接
check_postgres --符号链接

## 检查与 Postgres 数据库 'pluto' 的连接:
check_postgres --action=连接 --db=pluto

## 相同的东西,但使用符号链接
检查 postgres_connection --db=pluto

## 如果 > 100 个锁,则警告,如果 > 200 或 > 20 个独占,则警告
check_postgres_locks --warning=100 --critical="total=200:exclusive=20"

## 显示当前 6543 端口空闲连接数:
check_postgres_txn_idle --port=6543 --output=simple

## 还有许多其他操作和选项,请继续阅读。

最新消息和文档始终可以在以下位置找到:
http://bucardo.org/check_postgres/

商品描述


check_postgres 是一个 Perl 脚本,它针对一个或多个运行许多不同的测试
Postgres 数据库。 它使用 psql 程序来收集信息,并输出
结果为以下三种格式之一:Nagios、MRTG 或 simple。

输出 模式
可以使用“--output”选项更改输出。 默认输出是 nagios,
尽管如果您愿意,可以在脚本顶部更改此设置。 当前选项
选择是 纳吉奥斯, MRTG简单. 为了避免必须输入每个输出参数
时间,如果没有给出 --output 参数,则自动设置输出类型,并且如果
当前目录的名称中包含输出选项之一。 例如,创建一个
名为 mrtg 的目录并通过符号链接填充它 --符号链接 争论会
确保从该目录运行的任何操作将始终默认为“mrtg”输出
作为 --output=simple 的快捷方式,您可以输入 --simple,这也覆盖了
目录命名技巧。

Nagios的 产量

Nagios 的默认输出格式是一行信息,以及
四个特定的退出代码:

0(好)
1(警告)
2(关键)
3(未知)

输出行是上面的单词之一,一个冒号,然后是对什么的简短描述
被测量。 额外的统计信息,以及命令的总时间
接受,也可以输出:请参阅有关参数的文档 --showperf,
--perflimit- 开演时间.

MRTG 产量

MRTG 输出是四行,第一行总是给出一个数字
重要性。 如果可能,这个数字代表一个实际值,例如
字节,但对于仅返回“真”或“假”的操作,它也可能是 1 或 0,例如
作为 check_postgres_version。 第二行是一个额外的统计数据,仅用于
一些动作。 第三行表示“正常运行时间”,未使用。 第四行是一个
描述并且通常指示数据库的名称第一行的统计信息
被拉出,但可能因动作而异。

一些动作接受一个可选的 --mrtg 参数以进一步控制输出。

有关每个操作的确切 MRTG 输出的详细信息,请参阅有关每个操作的文档。

简易 产量

简单的输出只是 MRTG 的一个截断版本,并简单地返回
第一个数字,没有别的。 当您只想检查状态时,这非常有用
的东西,不管任何门槛。 您可以通过以下方式转换数字输出
将 KB、MB、GB、TB 或 EB 附加到输出参数,例如:

--输出=简单,MB

仙人掌 产量

Cacti 输出由同一行上的一个或多个项目组成,具有一个简单的名称,一个
冒号,然后是一个数字。 目前,唯一具有显式 Cacti 输出的操作是
'dbstats',在这种情况下不需要使用 --output 选项,因为仙人掌是唯一的
此操作的输出。 对于许多其他操作,使用 --simple 足以使 Cacti
快乐。

数据库 连接 配置


所有操作都接受一组通用的数据库选项。

-H 您的姓名 or --主机=名称
连接到 NAME 指示的主机。 可以是逗号分隔的名称列表。
允许多个主机参数。 如果没有给出主机,默认为“PGHOST”
环境变量或根本没有主机(表示使用本地 Unix 套接字)。
您也可以使用“--dbhost”。

-p PORT or --port=端口
使用指定的端口号连接。 可以是逗号分隔的端口列表
数字,并且允许多个端口参数。 如果没有给出端口号,则默认
到“PGPORT”环境变量。 如果未设置,则默认为 5432。您可以
也使用“--dbport”

-D b 您的姓名 or --dbname=名称
指定要连接的数据库。 可以是逗号分隔的名称列表,并且
允许多个 dbname 参数。 如果未提供 dbname 选项,则默认为
“PGDATABASE”环境变量。 如果未设置,则默认为“postgres”
如果 psql 是版本 8 或更高版本,否则为 'template1'。

-u USERNAME or --dbuser=用户名
要连接的数据库用户的名称。 可以是逗号分隔的列表
用户名和多个 dbuser 参数是允许的。 如果没有提供,它
默认为“PGUSER”环境变量,否则默认为“postgres”。

--dbpass=密码
提供用于连接到数据库的密码。 使用此选项是高度
灰心。 相反,应该使用 .pgpass 或 pg_service.conf 文件。

--dbservice=名称
pg_service.conf 文件中的服务名称。 9.0 之前的版本
Postgres,这是一个全局文件,通常在/etc/pg_service.conf 中找到。 如果你是
使用 9.0 或更高版本的 Postgres,您可以使用文件“.pg_service.conf”
运行脚本的用户的主目录,例如 nagios。

该文件包含一个简单的连接选项列表。 您还可以通过额外的
使用此选项时的信息,例如 --dbservice="maindatabase sslmode=require"

该文件的文档可以在
http://www.postgresql.org/docs/current/static/libpq-pgservice.html

数据库连接选项可以分组: --主机=a,b --主机=c --端口=1234
--端口=3344 将连接到 a-1234、b-1234 和 c-3344。 请注意,一旦设置,一个选项
一直延续到再次更改。

例子:

--主机=a,b --端口=5433 --db=c
使用数据库 c 两次连接到端口 5433 到主机 a 和 b:a-5433-c b-5433-c

--主机=a,b --端口=5433 --db=c,d
连接四次:a-5433-c a-5433-d b-5433-c b-5433-d

--主机=a,b --主机=foo --端口=1234 --端口=5433 --db=e,f
连接六次:a-1234-e a-1234-f b-1234-e b-1234-f foo-5433-e foo-5433-f

--host=a,b --host=x --port=5432,5433 --dbuser=alice --dbuser=bob -db=baz
连接三次:a-5432-alice-baz b-5433-alice-baz x-5433-bob-baz

--dbservice="foo" --port=5433
使用 pg_service.conf 文件中的命名服务 'foo' 连接,但覆盖端口

其他 配置


其他选项包括:

--action=名称
说明我们正在执行的操作。 除非使用符号链接文件,否则为必需,其中
case 文件名用于确定动作。

--警告=VAL or -w VAL
设置触发警告警报的阈值。 对此的有效选项
选项取决于所使用的操作。

--关键=VAL or -c VAL
设置触发严重警报的阈值。 对此的有效选项
选项取决于所使用的操作。

-t VAL or --超时=VAL
以秒为单位设置超时,在此之后脚本将中止正在执行的任何操作并
返回一个 UNKNOWN 状态。 超时是针对每个 Postgres 集群的,而不是针对整个集群的
脚本。 默认值为 10; 单位总是以秒为单位。

--假设待机模式
如果指定,首先检查服务器是否处于待机模式(--datadir
是必需的),如果是这样,所有需要 SQL 查询的检查都将被忽略,并且“服务器
在待机模式”状态将被返回。

示例:

postgres@db$./check_postgres --action=version --warning=8.1 --datadir /var/lib/postgresql/8.3/main/ --assume-standby-mode
POSTGRES_VERSION OK:服务器处于待机模式 | 时间=0.00

--假设生产
如果指定,检查是否在生产模式下执行服务器(需要 --datadir)。
该选项仅与 ("symlink: check_postgres_checkpoint") 相关。

示例:

postgres@db$./check_postgres --action=checkpoint --datadir /var/lib/postgresql/8.3/main/ --assume-prod
POSTGRES_CHECKPOINT OK:上次检查点是 72 秒前 | 年龄=72;;300 模式=主

-h or - 帮帮我
显示包含所有操作和选项摘要的帮助屏幕。

- 男人
显示整个手册。

-V or - 版
显示当前版本。

-v or --详细
设置详细级别。 可以多次调用以提高级别。 将其设置为
三或更高(换句话说,发出“-v -v -v”)打开调试信息
对于这个发送到 stderr 的程序。

--showperf=VAL
确定我们是否以标准 Nagios 格式输出额外的性能数据(最后
字符串,在管道符号之后,使用名称=值)。 VAL 应该是 0 或 1。默认值
是 1. 仅在使用 Nagios 输出模式时有效。

--perflimit=i
设置限制使用时报告回多少感兴趣的项目
淋浴房 选项。 这仅对返回大量
物品,例如 表大小. 默认值为 0,或无限制。 使用这个时要小心
- 包括 or - 排除 选项,因为这些限制已完成 after
查询已运行,​​因此您的限制可能不包括您想要的项目。 只需要
使用 Nagios 输出模式时的效果。

--显示时间=VAL
确定运行每个查询所花费的时间是否显示在输出中。 VAL 应该是 0
或 1. 默认为 1. 无影响,除非 淋浴房 正在。 仅在使用时生效
Nagios 输出模式。

- 测试
启用测试模式。 请参阅下面的“测试模式”部分。

--PGBINDIR=路径
告诉脚本在哪里可以找到 psql 二进制文件。 如果您有多个,则很有用
您系统上的 PostgreSQL 可执行文件的版本,或者如果您的系统中没有
小路。 请注意,此选项全部为大写。 默认情况下,此选项是 不能
允许. 要启用它,您必须更改脚本顶部附近的 $NO_PSQL_OPTION
到 0。如果可以,请避免使用此选项,而是使用环境变量
C 或硬编码的 $PGBINDIR 变量,也在脚本顶部附近,用于设置
要使用的 PostgreSQL 的路径。

--PSQL=路径
(已弃用, Free Introduction 选项 五月 be 去除 in a 未来 释放!) 告诉脚本在哪里
找到 psql 程序。 如果您有多个版本的 psql 很有用
可以在您的系统上执行,或者您的路径中没有 psql 程序。 请注意,这
选项全部大写。 默认情况下,此选项是 不能 允许. 要启用它,您
必须将脚本顶部附近的 $NO_PSQL_OPTION 更改为 0。避免使用它
如果可以,则选择将您的 psql 位置硬编码到 $PSQL 变量中,
也靠近脚本的顶部。

--符号链接
为每个操作创建指向主程序的符号链接。

--输出=VAL
确定输出的格式,用于各种程序。 默认是
'nagios'。 可用选项有“nagios”、“mrtg”、“simple”和“cacti”。

--mrtg=值
仅用于 MRTG 或简单输出,用于一些特定操作。

--调试输出=VAL
输出 psql 返回的确切字符串,用于调试。 值为一或
更多字母,决定是否显示输出,其中 'a' = all, 'c'
= 严重,'w' = 警告,'o' = 正常,'u' = 未知。 字母可以组合。

--get_method=VAL
允许指定用于获取“new_version_cp”信息的方法,
“new_version_pg”、“new_version_bc”、“new_version_box”和“new_version_tnm”检查。
为了从网络上获取信息,尝试了以下程序:GET、
wget、获取、curl、lynx、链接。 强制只使用一个(从而删除
尝试所有其他人直到其中一项工作的开销),输入名称之一
get_method 的参数。 例如,一个 BSD 框可能会在
他们的“.check_postgresrc”文件:

获取方法=获取

--语言=VAL
设置用于所有输出消息的语言。 通常,这是由
检查环境变量 LC_ALL、LC_MESSAGES 和 LANG,但设置此
选项将覆盖任何此类检测。

行动


该脚本运行一项或多项操作。 这可以通过 --action 标志来完成,或者通过
使用指向包含操作名称的主文件的符号链接。 为了
例如,要运行“timesync”操作,您可以发出:

check_postgres --action=时间同步

或使用名为的程序:

check_postgres_时间同步

如果使用选项 --symlinks,则会在当前目录中为您创建所有符号链接

perl check_postgres --符号链接

如果文件名已经存在,则不会被覆盖。 如果文件存在并且是一个
符号链接,您可以使用“--action=build_symlinks_force”强制覆盖它

大多数行动采取 - 警告 的网络 - 危急 选项,表明我们在什么时候改变
从 OK 到 WARNING,以及什么点我们转到 CRITICAL。 请注意,因为关键是
始终首先检查,将警告设置为关键是一种有效的方法
关闭警告并始终给予批评。

当前支持的操作是:

存档准备好
("symlink: check_postgres_archive_ready") 检查带扩展名的 WAL 文件数量 。准备好
存在于 pg_xlog/archive_status 目录,这是从您的 数据目录.
此操作必须以超级用户身份运行,才能访问
pg_xlog/archive_status 目录。 使用此操作的最低版本是 Postgres 8.1。
- 警告- 危急 选项只是数量 。准备好 中的文件
pg_xlog/archive_status 目录。 通常,这些值应该很低,打开
归档机制,我们通常希望它尽可能快地归档 WAL 文件。

如果存档命令失败,您的 WAL 数量 pg_xlog 目录将增长到
耗尽所有磁盘空间并强制 PostgreSQL 立即停止。

示例 1:检查主机“pluto”上就绪 WAL 文件的数量是否为 10 或更少

check_postgres_archive_ready --host=pluto --ritic=10

对于 MRTG 输出,在第 1 行报告就绪 WAL 文件的数量。

autovac_freeze
("symlink: check_postgres_autovac_freeze") 检查每个数据库与
Postgres的 autovacuum_freeze_max_age 环境。 此操作仅适用于数据库
8.2 或更高版本。 这 - 警告- 危急 选项应表示为
百分比。 每个数据库中事务的“年龄”与
autovacuum_freeze_max_age 设置(默认为 200 亿)以生成四舍五入的
百分比。 默认值为 90% 对于警告和 95% 对于关键。 数据库
可以通过使用过滤 - 包括- 排除 选项。 参见“基本过滤”
部分了解更多详情。

示例 1:当端口 5432 上的任何数据库超过 97% 时发出警告

check_postgres_autovac_freeze --port=5432 --warning="97%"

对于 MRTG 输出,最高的总体百分比报告在第一行,而
最高年龄报告在第二行。 百分比来自的所有数据库
第一行在第四行报告,由管道符号分隔。

后端
("symlink: check_postgres_backends") 检查当前连接数是否为一个或
更多数据库,并可选择将其与允许的最大值进行比较,该最大值由
Postgres 配置变量 MAX_CONNECTIONS。 该 - 警告- 危急 选项
可以采取三种形式之一。 首先,可以给出一个简单的数字,它代表
将发出警报的连接数。 此选择不使用
MAX_CONNECTIONS 环境。 其次,可以给出可用连接的百分比。
第三,可以给出一个负数,表示剩余的连接数
直到 MAX_CONNECTIONS 到达了。 的默认值 - 警告- 危急 ,那恭喜你,
“90%”和“95%”。 您还可以使用 - 包括- 排除
选项。 有关更多详细信息,请参阅“基本过滤”部分。

要仅查看非空闲进程,您可以使用 --noidle 争论。 请注意,您的用户
正在连接,必须是超级用户才能正常工作。

示例 1:当主机 quirm 上的连接数达到 120 时发出警告,并且一个
如果达到 150,则至关重要。

check_postgres_backends --host=quirm --warning=120 --ritic=150

示例 2:当我们在主机上达到 max_connections 设置的 75% 时给出一个临界值
lancre 或 lancre2。

check_postgres_backends --warning='75%' --critical='75%' --host=lancre,lancre2

示例 3:当主机上只剩下 10 个连接槽时发出警告
质粒,当我们只剩下 5 个时,这是一个关键。

check_postgres_backends --warning=-10 --ritic=-5 --host=plasmid

示例 4:检查除名称中带有“test”的数据库之外的所有数据库,但允许那些
被命名为“pg_greatest”。 在前两台主机上作为端口 5432 连接,在前两台主机上作为端口 5433 连接
第三个。 当我们达到 30 个或更多连接时,我们希望始终抛出一个临界值。

check_postgres_backends --dbhost=hong,kong --dbhost=fooey --dbport=5432 --dbport=5433 --warning=30 --critical=30 --exclude="~test" --include="pg_greatest,~prod ”

对于 MRTG 输出,第一行报告连接数,第四行报告连接数
行给出了数据库的名称,加上当前的maximum_connections。 如果超过
查询了一个数据库,输出连接数最多的那个。

膨胀
("symlink: check_postgres_bloat") 检查表和索引中的膨胀量。 (膨胀
通常是表或索引中占用的死未使用空间量。 这个空间是
通常使用 VACUUM 命令回收。)此操作需要 stats
在目标数据库上启用收集,并要求运行 ANALYZE
频繁地。 这 - 包括- 排除 选项可用于过滤掉哪些表
看着。 有关更多详细信息,请参阅“基本过滤”部分。

- 警告- 危急 选项可以指定为大小、百分比或两者。 有效的
大小单位是字节、千字节、兆字节、千兆字节、太字节、艾字节、拍字节和
泽字节。 你可以用第一个字母缩写所有这些。 没有单位的项目是
假定为“字节”。 默认值为“1 GB”和“5 GB”。 该值代表
“浪费字节”的数量,或表实际使用的内容与
索引,以及我们计算它应该是什么。

请注意,此操作有两个硬编码值,以避免在较小的
关系。 表必须至少有 10 页,索引至少有 15
本次测试考虑。 如果你真的想调整这些值,你可以寻找
变量 $分钟页数$小页面 在“check_bloat”子程序的顶部。 这些
值将被忽略,如果 - 排除 or - 包括 用来。

只显示了前 10 个最臃肿的关系。 您可以使用
--perflimit 选项来设置自己的限制。

名为“information_schema”的模式被排除在此测试之外,因为它是唯一的表
包含很小并且不会改变。

请注意,此操作计算的值并不精确,应用作
只是一个指导方针。 为估计表格的正确大小做出了巨大努力,但在
最终它只是一个估计。 正确的索引大小甚至比
正确的表大小,但两者都应该粗略地了解事物的臃肿程度。

示例 1:如果端口 5432 上的任何表膨胀超过 100 MB,则发出警告,如果超过 200 MB,则警告
MB

check_postgres_bloat --port=5432 --warning='100 M' --critical='200 M'

示例 2:如果主机 'sami' 上的表 'orders' 有超过 10 兆的膨胀,则给出一个临界值

check_postgres_bloat --host=sami --include=orders --critical='10 MB'

示例 3:如果数据库 'sales' 上的表 'q4' 膨胀超过 50%,给出一个临界值

check_postgres_bloat --db=sales --include=q4 --critical='50%'

示例 4:给出一个临界值任何表膨胀超过 20% 有超过 150 MB 的膨胀:

check_postgres_bloat --port=5432 --critical='20% and 150 M'

示例 5:给出一个临界值任何表膨胀超过 40% or 有超过 500 MB 的膨胀:

check_postgres_bloat --port=5432 --warning='500 M or 40%'

对于 MRTG 输出,第一行给出了表的最大浪费字节数,
第二行给出了索引浪费的最大字节数。 第四个
行给出数据库名称、表名称和索引名称信息。 如果你想
改为输出膨胀率(关系比如何大多少倍
应该很大),只需传入“--mrtg=ratio”即可。

检查站
("symlink: check_postgres_checkpoint") 确定自上次检查点有多久
被运行。 这必须与被检查的数据库在同一台服务器上运行(例如
-h 标志将不起作用)。 此检查旨在在“热备用”服务器上运行
主动处理传送的 WAL 文件,旨在检查您的热备份
真正的“温暖”。 必须通过环境变量设置数据目录
“PGDATA”,或传递“--datadir”参数。 它返回自启动以来的秒数
运行最后一个检查点,通过解析对“pg_controldata”的调用来确定。 因为
因此,pg_controldata 可执行文件必须在当前路径中可用。 或者,
您可以指定“PGBINDIR”作为它所在的目录。也可以使用
特殊选项 --假设生产 or --假设待机模式, 如果找到的模式不是
一个预期的,一个 CRITICAL 被发出。

必须至少设置一个警告或关键参数。

此操作需要 Date::Parse 模块。

对于 MRTG 或简单输出,返回秒数。

集群ID
("symlink: check_postgres_cluster-id") 检查数据库系统标识符是否提供
通过 pg_controldata 与上次检查时相同。 这必须在同一台服务器上运行
作为正在检查的数据库(例如 -h 标志将不起作用)。 无论是
- 警告 或者 - 危急 应该给出选项,但不能同时给出。 每一个的价值是
集群标识符,一个整数值。 您可以使用特殊的“--critical=0”运行
选项来找出现有的集群标识符。

示例 1:查找初始标识符

check_postgres_cluster_id --ritic=0 --datadir=/var//lib/postgresql/9.0/main

示例 2:确保集群相同,如果不同则警告,使用上面的结果。

check_postgres_cluster_id --ritic=5633695740047915135

对于 MRTG 输出,返回 1 或 0 表示标识符失败成功
比赛。 必须提供标识符作为“--mrtg”参数。 第四行总是
给出当前标识符。

承诺率
("symlink: check_postgres_commitratio") 检查所有数据库的提交率和
当他们太低时抱怨。 不需要每次运行此命令多次
数据库集群。 可以使用以下命令过滤数据库 - 包括- 排除 选项。 看
有关更多详细信息,请参阅“基本过滤”部分。 它们也可以由所有者过滤
数据库与 --包括用户--排除用户 选项。 请参阅“用户名
过滤”部分了解更多详情。

警告和关键选项应指定为百分比。 没有
此操作的默认值:必须指定警告和严重。 警告值
不能大于临界值。 输出返回按以下顺序排序的所有数据库
commitratio,最小的在先。

示例:如果主机 flagg 上的任何数据库的 commitratio 低于 90%,并且严重,则发出警告
如果低于 80%。

check_postgres_database_commitratio --host=flagg --warning='90%' --critical='80%'

对于 MRTG 输出,返回具有最小 commitratio 的数据库百分比
第一行,第四行是数据库名。

地都
(“符号链接:check_postgres_connection”)只需连接,发出'SELECT 版本()'和
树叶。 不需要 - 警告 or - 危急 选项​​。

对于 MRTG 输出,只需在第一个输出 1(良好连接)或 0(不良连接)
线。

自定义查询
("symlink: check_postgres_custom_query") 运行您选择的自定义查询,并解析
结果。 查询本身是通过“查询”参数传入的,应该是
保持尽可能简单。 如果可能,请将其包装在视图或函数中以保持
事情更容易管理。 查询应返回一或两列。 需要的是
其中一列名为“result”,是将根据您的
警告和临界值。 第二列是性能数据和任何名称
可以使用:这将是性能数据部分中的“值”。

必须至少指定一个警告或关键参数。 这些设置取决于
关于您正在运行的查询类型。 有四种类型的 custom_queries 可以
运行,由“valtype”参数指定。 如果未指定,则此操作默认为
'整数'。 这四种类型是:

整数: 做一个简单的整数比较。 第一列应该是一个简单的整数,
并且警告和临界值应该相同。

绳子:warning 和critical 是字符串,只有当值在
第一列完全匹配。 这是区分大小写的。

:警告和关键是时间,可以有秒、分钟、
数小时或数天。 每个都可以写成单数或缩写为第一个字母。 如果
没有给出单位,假设是秒。 第一列应该是整数
表示要检查的秒数。

尺寸:警告和关键是大小,可以有字节、千字节、
兆字节、千兆字节、太字节或艾字节。 每个都可以缩写为第一个字母。
如果没有给出单位,则假定为字节。 第一列应该是整数
表示要检查的字节数。

通常,如果返回的值是 更大的 或等于
临界值或警告值。 然而,一个选项 - 逆转 将触发警报,如果
返回值是 降低 或等于临界值或警告值。

示例 1:警告如果超过 100 页的任何关系命名为“rad”,则输入页数
在性能数据部分。

check_postgres_custom_query --valtype=string -w "rad" --query=
“SELECT relname AS result, relpages AS pages FROM pg_class WHERE relpages > 100”

示例 2:如果“foobar”函数返回的数字超过 5MB,则给出一个临界值:

check_postgres_custom_query --critical='5MB'--valtype=size --query="SELECT foobar() AS result"

示例 2:如果函数“snazzo”返回小于 42 则发出警告:

check_postgres_custom_query --critical=42 --query="SELECT snazzo() AS result" --reverse

如果您想出一个有用的 custom_query,请考虑向该程序发送补丁以
使其成为其他人可以使用的标准动作。

此操作尚不支持 MRTG 或简单输出。

数据库大小
("symlink: check_postgres_database_size") 检查所有数据库的大小并报错
当它们太大时。 每个数据库无需多次运行此命令
簇。 可以使用以下命令过滤数据库 - 包括- 排除 选项。 见
“基本过滤”部分了解更多详情。 它们也可以由所有者过滤
数据库与 --包括用户--排除用户 选项。 请参阅“用户名过滤”
部分了解更多详情。

警告和关键选项可以指定为字节、千字节、兆字节、
千兆字节、太字节或艾字节。 每个也可以缩写为第一个字母。
如果未给出单位,则假定单位为字节。 这没有默认值
操作:必须指定警告和严重。 警告值不能更大
比临界值。 输出首先返回按大小最大排序的所有数据库,
显示原始字节和大小的“漂亮”版本。

示例 1:如果主机 flagg 上的任何数据库大小超过 1 TB,则发出警告,如果超过则为关键
1.1 TB。

check_postgres_database_size --host=flagg --warning='1 TB' --critical='1.1 t'

示例 2:如果端口 1 上的数据库模板 5432 超过 10 MB,则给出一个临界值。

check_postgres_database_size --port=5432 --include=template1 --warning='10MB' --critical='10MB'

示例 3:如果用户 'tom' 拥有的主机 'tardis' 上的任何数据库结束,则发出警告
5 GB

check_postgres_database_size --host=tardis --includeuser=tom --warning='5 GB' --critical='10 GB'

对于 MRTG 输出,在第一行返回最大数据库的大小(以字节为单位),并且
第四行的数据库名称。

dbstats
("symlink: check_postgres_dbstats") 从 pg_stat_database 视图报告信息,
并以 Cacti 友好的方式输出它。 不支持其他输出,因为输出是
信息,不适合警报,例如与 Nagios 一起使用。 如果没有选项
给定,返回所有数据库,每行一个。 您可以包含特定的数据库
通过使用“--include”选项,或者您可以使用“--dbname”选项。

每行返回 XNUMX 项,格式为 name:value,由单个
空间。 项目是:

后端
此数据库当前运行的后端数。

提交
此数据库自创建或重置以来的提交总数。

回滚
此数据库自创建或重置以来的回滚总数。


读取的磁盘块总数。

hit 缓冲区命中的总数。

ret 返回的总行数。


提取的总行数。

ins 插入的总行数。

upd 更新的总行数。

del 删除的总行数。

DBNAME
数据库的名称。

请注意,如果 Postgres 是 0 版,则 ret、fetch、ins、upd 和 del 项将始终为 8.2
或更低,因为这些统计数据在这些版本中不可用。

如果给出 dbname 参数,则返回七个附加项:

扫描
用户索引扫描的总数。

idxtupread
返回的用户索引条目总数。

idxtupfetch
通过简单的用户索引扫描获取的总行数。

idxblksread
为所有用户索引读取的磁盘块总数。

idxblkshit
所有用户索引的缓冲区命中总数。

序列扫描
针对所有用户表的顺序扫描总数。

序列读取
从所有用户表返回的元组总数。

示例 1:在主机“willow”上获取名为“products”的数据库的统计信息:

check_postgres_dbstats --dbhost 柳树 --dbname 产品

返回的输出将是这样的(全部在一行上,未包装):

后端:82 提交:58374408 回滚:1651 读取:268435543 命中:2920381758 idxscan:310931294 idxtupread:2777040927
idxtupfetch:1840241349 idxblksread:62860110 idxblkshit:1107812216 seqscan:5085305 seqtupread:5370500520
ret:0 fetch:0 ins:0 upd:0 del:0 dbname:willow

禁用_触发器
("symlink: check_postgres_disabled_triggers") 检查禁用触发器的数量
数据库里面。 这 - 警告- 危急 选项是此类触发器的数量
找到,并且都默认为“1”,因为在正常使用中禁用触发器是危险的
事件。 如果正在检查的数据库是 8.3 或更高版本,则检查的是
处于“禁用”状态(而不是“始终”或“副本”)的触发器。 这
输出将显示表的名称和每个禁用的触发器的名称
触发。

示例 1:确保没有禁用的触发器

check_postgres_disabled_triggers

对于 MRTG 输出,在第一行返回禁用触发器的数量。

磁盘空间
("symlink: check_postgres_disk_space") 检查可用的物理磁盘空间
邮政。 此操作要求您具有可执行文件“/bin/df" 可举报
磁盘大小,它也需要以超级用户身份运行,因此它可以检查
数据目录 Postgres 内部的设置。 这 - 警告- 危急 给出了选项
以大小或百分比或两者兼而有之。 如果使用尺寸,标准单位类型是
允许:字节、千字节、千兆字节、兆字节、千兆字节、太字节或艾字节。 每个
只能缩写为第一个字母; 根本没有单位表示“字节”。 这
默认值为“90%”和“95%”。

此命令检查以下内容以确定所有不同的物理磁盘
被 Postgres 使用。

数据目录 - 主数据目录所在的磁盘。

日志 目录 - 日志文件所在的磁盘。

WAL 文件 目录 - 预写日志所在的磁盘(例如符号链接的 pg_xlog)

表空间 - 位于单独磁盘上的每个表空间。

输出显示每个磁盘上已使用和可用的总大小,以及
百分比,按使用的百分比从高到低排序。 上面的每个项目都映射到一个文件
系统:这些可以包括或排除。 有关更多信息,请参阅“基本过滤”部分
细节。

示例 1:确保端口 90 上的数据库没有超过 5432% 的文件系统。

check_postgres_disk_space --port=5432 --warning='90%' --critical='90%'

示例 2:检查所有以 /dev/sda 开头的文件系统是否小于 10 GB 并且
11 GB(警告和严重)

check_postgres_disk_space --port=5432 --warning='10 GB' --critical='11 GB' --include="~^/dev/sda"

示例 4:确保没有文件系统同时超过 50% 有超过 15 GB

check_postgres_disk_space --critical='50% and 15 GB'

示例 5:如果任何文件系统已满 70%,则发出警告 or 有超过1T

check_postgres_disk_space --warning='1T 或 75'

对于 MRTG 输出,在第一行返回文件系统的大小(以字节为单位),以及
第四行的文件系统名称。

fsm_页面
("symlink: check_postgres_fsm_pages") 检查集群与 Postgres 的接近程度
最大fsm页数 环境。 此操作仅适用于 8.2 或更高版本的数据库,并且
需要 contrib 模块 pg_freespacemap 被安装。 这 - 警告- 危急
选项应以百分比表示。 空闲空间映射中使用的页面数
通过查看 pg_freespacemap_relations 视图并运行公式来确定
基于用于在真空详细中输出自由空间映射页槽的公式
命令。 默认值为 85% 对于警告和 95% 对于关键。

示例 1:当我们的集群用完 76% 的可用空间页槽时发出警告,
pg_freespacemap 安装在数据库 robert 中

check_postgres_fsm_pages --dbname=robert --warning="76%"

当您需要传入安装 pg_freespacemap 的数据库的名称时,您
每个集群只需要运行一次此检查。 此外,检查此信息确实需要
在空闲空间映射上获得特殊锁,因此建议您不要运行它
以短时间间隔检查。

对于 MRTG 输出,返回第一行空闲空间映射的百分比,以及数量
当前在第二行使用的页数。

fsm_关系
("symlink: check_postgres_fsm_relations") 检查集群与 Postgres 的接近程度
最大fsm关系 环境。 此操作仅适用于 8.2 或更高版本的数据库,并且
它需要 contrib 模块 pg_freespacemap 被安装。 这 - 警告- 危急
选项应以百分比表示。 自由关系中使用的关系数
space-map 是通过查看 pg_freespacemap_relations 视图来确定的。 默认的
价值观是 85% 对于警告和 95% 对于关键。

示例 1:当我们的集群用完 80% 的可用空间关系时发出警告,
在数据库 dylan 中安装了 pg_freespacemap

check_postgres_fsm_relations --dbname=dylan --warning="75%"

当您需要传入安装 pg_freespacemap 的数据库的名称时,您
每个集群只需要运行一次此检查。 此外,检查此信息确实需要
在空闲空间映射上获得特殊锁,因此建议您不要运行它
以短时间间隔检查。

对于 MRTG 输出,返回第一行空闲空间映射的百分比,数量
目前在第二行使用的关系。

命中率
("symlink: check_postgres_hitratio") 检查所有数据库的命中率并报错
当它们太低时。 每个数据库无需多次运行此命令
簇。 可以使用以下命令过滤数据库 - 包括- 排除 选项。 见
“基本过滤”部分了解更多详情。 它们也可以由所有者过滤
数据库与 --包括用户--排除用户 选项。 请参阅“用户名过滤”
部分了解更多详情。

警告和关键选项应指定为百分比。 没有
此操作的默认值:必须指定警告和严重。 警告值
不能大于临界值。 输出返回按以下顺序排序的所有数据库
命中率,最小的优先。

示例:如果主机 flagg 上的任何数据库的命中率低于 90%,则发出警告,如果
低于 80%。

check_postgres_hitratio --host=flagg --warning='90%' --critical='80%'

对于 MRTG 输出,返回具有最小命中率的数据库百分比
第一行,第四行是数据库名。

热待机延迟
("symlink: check_hot_standby_delay") 通过计算流复制延迟
主服务器的当前 xlog 位置与重播位置之间的增量
从机连接到它。 从服务器必须处于 hot_standby(例如只读)模式,
因此使用此操作的最低版本是 Postgres 9.0。 这 - 警告
- 危急 选项是 xlog 位置之间的增量。 由于这些值是字节
WAL 中的偏移量,它们应该与您的应用程序的预期交易量相匹配
以防止误报或否定。

第一个“--dbname”、“--host”和“--port”等选项被认为是master; 这
第二个属于奴隶。

字节值应基于流传输所需的交易量
由于延迟太多,复制与主服务器断开连接,由 Postgres 确定
配置变量 wal_keep_segments. 对于时间单位,有效单位是“秒”,
“分钟”、“小时”或“天”。 每个都可以写成单数或缩写为
第一个字母。 当同时指定两者时,形式为 '字节',两个条件都必须是
满足阈值时为真。

您必须通过提供逗号分隔来提供有关如何访问数据库的信息
列出 --dbhost 和 --dbport 参数,例如“--dbport=5432,5543”。 如果不给,
动作失败。

示例 1:警告在端口 5433 上具有本地副本的数据库在任何 xlog 重放上落后
在所有

check_hot_standby_delay --dbport=5432,5433 --warning='1'

示例 2:如果副本 1 接收的最后一个事务超过 10,则给出一个临界值
几分钟前

check_hot_standby_delay --dbhost=master,replica1 --critical='10 min'

示例 3:如果 master 暂时看到,则允许 replica1 落后 1 个 WAL 段
比流式复制连接可以处理的活动更多,或者延迟 10 分钟,
如果 master 看到的活动很少并且不处理任何交易,但没有
两者都表明复制连接存在持久问题。

check_hot_standby_delay --dbhost=master,replica1 --warning='1048576 and 2 min' --critical='16777216 and 10 min'

索引大小
表大小
关系大小
(符号链接:“check_postgres_index_size”、“check_postgres_table_size”和
"check_postgres_relation_size") 动作 表大小索引大小 简直是
的变化 关系大小 动作,检查也增长的关系
大。 关系(换句话说,表和索引)可以用 - 包括
- 排除 选项。 有关更多详细信息,请参阅“基本过滤”部分。 关系可以
也可以由拥有它们的用户过滤,使用 --包括用户--排除用户
选项。 有关更多详细信息,请参阅“用户名过滤”部分。

的值 - 警告- 危急 选项是文件大小,可能有单位
字节、千字节、兆字节、千兆字节、太字节或艾字节。 每个都可以缩写
到第一个字母。 如果没有给出单位,则假定为字节。 没有默认
值:必须同时给出警告和关键选项。 返回文本显示
找到的最大关系的大小。

如果 --showperf 选项已启用, 所有 将给出与它们大小的关系。
为了防止这种情况,建议您设置 --perflimit 选项,这将导致
查询执行“ORDER BY size DESC LIMIT (perflimit)”。

示例 1:如果主机 burrick 上的任何表大于 600MB,则给出一个临界值。

check_postgres_table_size --critical='600 MB' --warning='600 MB' --host=burrick

示例 2:警告表产品的大小是否超过 4 GB,并在 4.5 GB 时给出临界值。

check_postgres_table_size --host=burrick --warning='4 GB' --critical='4.5 GB' --include=products

示例 3:如果任何不属于 postgres 的索引超过 500 MB,则发出警告。

check_postgres_index_size --port=5432 --excludeuser=postgres -w 500MB -c 600MB

对于 MRTG 输出,返回最大关系的大小(以字节为单位)和名称
数据库和关系作为第四行。

最后分析
最后真空
最后自动分析
最后自动真空
(符号链接:“check_postgres_last_analyze”、“check_postgres_last_vacuum”、
"check_postgres_last_autoanalyze" 和 "check_postgres_last_autovacuum") 检查多长时间
自从上次对一个或多个数据库中的每个表运行真空(或分析)以来。
使用这些操作要求目标数据库为 8.3 或更高版本,或者
版本是 8.2 和配置变量 统计行级别 已启用。 表
可以过滤 - 包括- 排除 选项。 参见“基本过滤”
部分了解更多详情。 表的所​​有者也可以通过使用
--包括用户--排除用户 选项。 有关更多信息,请参阅“用户名过滤”部分
细节。

单位为 - 警告- 危急 被指定为时间。 有效单位是秒,
分钟、小时和天; all 可以缩写为第一个字母。 如果没有单位
给定,假设为“秒”。 默认值为“1 天”和“2 天”。 请注意
在某些情况下,此字段不会自动填充。 如果确定
表给您带来问题,请确保它们有死行要清空,或者只是
将他们排除在测试之外。

名为“information_schema”的模式被排除在此测试之外,因为它是唯一的表
包含很小并且不会改变。

请注意,非“自动”版本也会检查自动版本。 其他
话说,使用 last_vacuum 会报告最后一次吸尘,是否是正常吸尘,
或者由 autovacuum 守护进程运行。

示例 1:如果任何表在 3 天内没有被清空,则发出警告,并在
一周,对于寄主艾草

check_postgres_last_vacuum --host=wormwood --warning='3d' --critical='7d'

示例 2:同上,但跳过属于用户 'eve' 或 'mallory' 的表

check_postgres_last_vacuum --host=wormwood --warning='3d' --critical='7d' --excludeusers=eve,mallory

对于 MRTG 输出,返回(在第一行)自一个
表最后一次清空或分析。 第四行返回数据库的名称和
表的名称。

倾听者
("symlink: check_postgres_listener") 确认有人正在监听一个或多个
特定的字符串(使用 LISTEN/NOTIFY 系统),通过查看 pg_listener 表。
只需要警告或严重之一。 格式是一个简单的字符串,表示
LISTEN 目标,或波浪号字符后跟用于正则表达式检查的字符串。
请注意,此检查不适用于 Postgres 9.0 或更高版本。

示例 1:如果没有人在端口上侦听字符串 bucardo_mcp_ping,则发出警告
5555 5556和

check_postgres_listener --port=5555,5556 --warning=bucardo_mcp_ping

示例 2:如果没有与 'grimm' 匹配的活动 LISTEN 请求,则给出一个临界值
数据库奥斯卡

check_postgres_listener --db oskar --ritic=~grimm

对于 MRTG 输出,首先返回 1 或 0,表示成功或失败。 名字
通知必须通过 --mrtg 选项。


("symlink: check_postgres_locks") 检查一个或多个锁的总数
数据库。 每个数据库集群无需多次运行此程序。 数据库可以
用过滤器过滤 - 包括- 排除 选项。 请参阅“基本过滤”部分
以获得更多细节。

- 警告- 危急 选项可以指定为简单的数字,代表
锁的总数,或者可以按锁的类型细分。 有效的锁名称
是 'total'、'waiting' 或 Postgres 使用的锁类型的名称。 这些名字是
不区分大小写,最后不需要“锁定”部分,所以 独家 将匹配
'独占锁'。 格式为名称=编号,不同的项目用冒号或
分号(或任何其他符号)。

示例 1:如果锁数为 100 或更多则发出警告,如果锁数为 200 或更多,则警告
主持人加勒特

check_postgres_locks --host=garrett --warning=100 --ritic=200

示例 2:在宿主 artemus 上,如果存在 200 个或更多锁,则发出警告,如果存在则给出严重的警告
存在超过 250 个总锁,或者如果存在超过 20 个排他锁,或者如果超过 5 个连接
正在等待锁。

check_postgres_locks --host=artemus --warning=200 --critical="total=250:waiting=5:exclusive=20"

对于 MRTG 输出,返回第一行的锁数,以及锁的名称
数据库在第四行。

日志文件
("symlink: check_postgres_logfile") 确保日志文件位于预期位置
并且正在登录。 此操作发出一个命令,该命令在每个
它正在检查的数据库,并确保消息显示在日志中。 它扫描
Postgres 中的各种 log_* 设置来确定日志应该在哪里。 如果你
正在使用 syslog,它会粗略(但不是万无一失)扫描 /etc/syslog.conf.
或者,您可以提供日志文件的名称 --日志文件 选项。 这是
如果日志具有由外部程序驱动的自定义轮换方案,则特别有用。
--日志文件 选项支持以下转义字符:“%Y %m %d %H”,其中
分别代表当前的年、月、日和小时。 错误总是
除非警告选项已作为非零值传入,否则报告为严重。
除了特定的用法,“--warning”和“--critical”选项应该 不能 be
用过的。

示例 1:在端口 5432 上,确保正在将日志文件写入文件
/home/greg/pg8.2.log

check_postgres_logfile --port=5432 --logfile=/home/greg/pg8.2.log

示例 2:同上,但发出警告,而不是严重

check_postgres_logfile --port=5432 --logfile=/home/greg/pg8.2.log -w 1

对于 MRTG 输出,在第一行返回 1 或 0,表示成功或失败。 在
如果出现故障,第四行将提供有关遇到的故障的更多详细信息。

新版本_bc
("symlink: check_postgres_new_version_bc") 检查是否有较新版本的 Bucardo
程序可用。 当前版本是通过运行“bucardo_ctl --version”获得的。
如果有重大升级可用,则会返回警告。 如果版本升级是
可用,返回一个临界值。 (Bucardo 是主人对奴隶,主人对主人
Postgres 的复制系统:见 http://bucardo.org 想要查询更多的信息)。 也可以看看
关于“--get_method”选项的信息。

新版本框
("symlink: check_postgres_new_version_box") 检查是否有较新版本的 boxinfo
程序可用。 当前版本是通过运行“boxinfo.pl --version”获得的。
如果有重大升级可用,则会返回警告。 如果版本升级是
可用,返回一个临界值。 (boxinfo 是一个抓取重要信息的程序
来自服务器的信息并将其转换为 HTML 格式:请参阅
http://bucardo.org/wiki/boxinfo 想要查询更多的信息)。 另请参阅有关
“--get_method”选项。

新版本cp
("symlink: check_postgres_new_version_cp") 检查这个程序的更新版本
(check_postgres) 可用,通过从主文件中的一个小文本文件中获取版本
项目主页的页面。 如果返回的版本没有,则返回警告
匹配您正在运行的那个。 建议的检查间隔是每天一次。 另见
有关“--get_method”选项的信息。

新版本_pg
("symlink: check_postgres_new_version_pg") 检查是否存在较新的 Postgres 版本
对于连接的每个数据库。 请注意,这仅检查修订版,例如从
8.3.6 至 8.3.7。 修订始终 100% 二进制兼容,不涉及转储和
恢复升级。 修改是为了解决错误,所以尽快升级
总是推荐。 如果您没有最新版本,则返回警告。 这是
建议每天至少运行一次此检查。 另请参阅有关
“--get_method”选项。

新版本_tnm
("symlink: check_postgres_new_version_tnm") 检查tail_n_mail 是否有更新版本
程序可用。 当前版本是通过运行“tail_n_mail --version”获得的。
如果有重大升级可用,则会返回警告。 如果版本升级是
可用,返回一个临界值。 (tail_n_mail 是一个日志监控工具,可以发送
当 Postgres 日志中出现有趣的事件时发送邮件。 看:
http://bucardo.org/wiki/Tail_n_mail 想要查询更多的信息)。 另请参阅有关信息
“--get_method”选项。

pgb_pool_cl_active
pgb_pool_cl_等待
pgb_pool_sv_active
pgb_pool_sv_idle
pgb_pool_sv_used
pgb_pool_sv_测试
pgb_pool_sv_login
pgb_pool_maxwait
(符号链接:“check_postgres_pgb_pool_cl_active”,“check_postgres_pgb_pool_cl_waiting”,
"check_postgres_pgb_pool_sv_active", "check_postgres_pgb_pool_sv_idle",
"check_postgres_pgb_pool_sv_used", "check_postgres_pgb_pool_sv_tested",
“check_postgres_pgb_pool_sv_login”和“check_postgres_pgb_pool_maxwait”)

检查 pgbouncer 的池统计信息。 每个池都有一组“客户端”连接,
指的是来自外部客户端的连接,以及“服务器”连接,指的是
与 PostgreSQL 本身的连接。 相关的 check_postgres 操作以“cl_”为前缀
和“sv_”,分别。 活动客户端连接是当前链接的那些连接
具有活动的服务器连接。 客户端连接也可能在“等待”,这意味着它们
尚未分配服务器连接。 服务器连接是“活动的”(链接
到客户端)、“空闲”(等待要链接的客户端连接)、“已使用”(只是
从客户端取消链接,尚未返回空闲池),“测试”(当前正在
测试)和“登录”(在登录过程中)。 maxwait 值显示了多长时间
最老的等待客户端连接已等待的秒数。

pgbouncer_后端
("symlink: check_postgres_pgbouncer_backends") 检查当前连接数
通过 pgbouncer 用于一个或多个数据库,并可选择将其与最大值进行比较
允许,由 pgbouncer 配置变量决定 最大客户端连接数。 该
- 警告- 危急 选项可以采用三种形式之一。 首先,一个简单的数字可以
给出,它表示将给出警报的连接数。
此选择不使用 MAX_CONNECTIONS 环境。 二、可用百分比
可以给出连接。 第三,可以给出一个负数,表示
剩下的连接数 MAX_CONNECTIONS 到达了。 的默认值
- 警告- 危急 是“90%”和“95%”。 您还可以通过使用过滤数据库
- 包括- 排除 选项。 有关更多详细信息,请参阅“基本过滤”部分。

要仅查看非空闲进程,您可以使用 --noidle 争论。 请注意,您的用户
正在连接,必须是超级用户才能正常工作。

示例 1:当主机 quirm 上的连接数达到 120 时发出警告,并且一个
如果达到 150,则至关重要。

check_postgres_pgbouncer_backends --host=quirm --warning=120 --ritic=150 -p 6432 -u pgbouncer

示例 2:当我们在主机上达到 max_connections 设置的 75% 时给出一个临界值
lancre 或 lancre2。

check_postgres_pgbouncer_backends --warning='75%' --critical='75%' --host=lancre,lancre2 -p 6432 -u pgbouncer

示例 3:当主机上只剩下 10 个连接槽时发出警告
质粒,当我们只剩下 5 个时,这是一个关键。

check_postgres_pgbouncer_backends --warning=-10 --ritic=-5 --host=plasmid -p 6432 -u pgbouncer

对于 MRTG 输出,第一行报告连接数,第四行报告连接数
行给出了数据库的名称,加上当前的 max_client_conn。 如果不止一个
已查询数据库,输出连接数最多的那个。

pgbouncer_校验和
("symlink: check_postgres_pgbouncer_checksum") 检查所有 pgBouncer 设置是否正确
和上次检查时一样。 这是通过生成排序列表的校验和来完成的
设置名称及其值。 请注意,您不应该指定数据库名称,它
将自动默认为 pgbouncer。 无论是 - 警告 或者 - 危急 选项
应该给予,但不能同时给予。 每一个的值是校验和,一个 32 个字符
十六进制值。 您可以使用特殊的“--critical=0”选项运行以找出
现有校验和。

此操作需要 Digest::MD5 模块。

示例 1:使用以下命令查找端口 6432 上 pgbouncer 配置的初始校验和
默认用户(通常是 postgres)

check_postgres_pgbouncer_checksum --port=6432 --ritic=0

示例 2:使用来自
以上。

check_postgres_pgbouncer_checksum --port=6432 --warning=cd2f3b5e129dc2b4f5c0f6d8d2e64231

对于 MRTG 输出,返回 1 或 0 表示校验和匹配失败。
必须提供校验和作为“--mrtg”参数。 第四行总是给出
当前校验和。

pgagent_作业
("symlink: check_postgres_pgagent_jobs") 检查所有具有
在前面的时间间隔内执行已成功。 这是通过检查
任何具有非零结果的步骤。

可以将“--warning”或“--critical”或两者都指定为时间,并且作业将被指定
在当前时间之前的指定时间段内检查故障。 有效的
单位是秒、分、小时和天; all 可以缩写为第一个字母。
如果没有给出单位,则假定为“秒”。

示例 1:在最后一天执行的任何作业失败时给出一个临界值。

check_postgres_pgagent_jobs --ritic=1d

示例 2:在上周执行的任何作业失败时发出警告。

check_postgres_pgagent_jobs --警告=7d

示例 3:对过去 2 小时内失败的作业给出严重警告,并警告
过去 4 小时内失败的作业:

check_postgres_pgagent_jobs --ritic=2h --warning=4h

Prepared_txns
(“符号链接:check_postgres_prepared_txns”)检查任何现有准备好的
交易。 请注意,大多数人不会使用准备好的交易,因为它们是一部分
两部分提交并且维护起来很复杂。 他们也不应该与
Prepared STATEMENTS,这是大多数人在听到prepare时想到的。 这
警告的默认值是 1 秒,以检测任何使用准备好的事务,它
在大多数系统上可能是一个错误。 警告和关键是秒数
在发出警报之前,准备好的交易已打开。

示例 1:在检测到任何准备好的事务时发出警告:

check_postgres_prepared_txns -w 0

示例 2:如果任何准备好的事务已打开超过 10 个,则给出一个临界值
秒,但允许数据库 'shrike' 最多 360 秒:

check_postgres_prepared_txns --ritic=10 --exclude=伯劳
check_postgres_prepared_txns --ritic=360 --include=伯劳

对于 MRTG 输出,返回最早的交易已打开的秒数作为
第一行,最后一行来自哪个数据库。

查询运行时
("symlink: check_postgres_query_runtime") 检查特定查询运行所需的时间,
通过对其执行“解释分析”。 这 - 警告- 危急 选项是
查询应该花费的最长时间。 有效单位为秒、分和小时;
any 可以缩写为第一个字母。 如果没有给出单位,则假定为“秒”。
必须同时给出警告和关键选项。 视图或函数的名称
要运行必须传递给 --查询名称 选项。 它必须由一个词组成
(或schema.word),最后有可选的括号。

示例 1:如果名为“speedtest”的函数在 10 秒内未能运行,则给出一个临界值或
减。

check_postgres_query_runtime --queryname='speedtest()' --critical=10 --warning=10

对于 MRTG 输出,报告查询在第一行完成的时间(以秒为单位)。
第四行列出了数据库。

查询时间
("symlink: check_postgres_query_time") 检查一个或多个运行查询的长度
数据库。 无需在同一个数据库集群上多次运行此程序。 笔记
这已经排除了“事务空闲”的查询。 数据库可以
通过使用过滤 - 包括- 排除 选项。 请参阅“基本过滤”部分
更多细节。 您还可以使用以下命令过滤运行查询的用户 --包括用户
--排除用户 选项。 有关更多详细信息,请参阅“用户名过滤”部分。

的值 - 警告- 危急 选项是时间量,默认为'2
分别为“分钟”和“5 分钟”。 有效单位为“秒”、“分钟”、“小时”或
'天'。 每个都可以写成单数或缩写为第一个字母。 如果没有单位
给定,单位假定为秒。

此操作需要 Postgres 8.1 或更高版本。

示例 1:如果任何查询的运行时间超过 3 分钟,则发出警告,并发出警告
如果超过 5 分钟,则为关键。

check_postgres_query_time --port=5432 --warning='3 分钟' --critical='5 分钟'

示例 2:使用默认值(2 和 5 分钟),检查除数据库之外的所有数据库
以“模板”开头。

check_postgres_query_time --port=5432 --exclude=~^模板

示例 3:如果用户 'don' 的查询运行超过 20 秒,则发出警告

check_postgres_query_time --port=5432 --includeuser=don --warning=20s

对于 MRTG 输出,返回第一个运行时间最长的查询的长度(以秒为单位)
线。 第四行给出了数据库的名称。

复制行
("symlink: check_postgres_replicate_row") 检查主从复制是否正常工作
给一个或多个奴隶。

第一个“--dbname”、“--host”和“--port”等选项被认为是master;
后续用途是奴隶。 值或 - 警告- 危急 选项是
时间单位,并且必须至少提供一个(无默认值)。 有效单位是“秒”,
“分钟”、“小时”或“天”。 每个都可以写成单数或缩写为
第一个字母。 如果没有给出单位,则假定单位为秒。

此检查更新 master 上的一行,然后测量需要多长时间
适用于奴隶。 为此,您需要选择一个正在复制的表,然后
找到可以更改的行,并且不会被任何其他进程更改。 一种
此行的特定列将从一个值更改为另一个值。 这一切都被喂饱了
到“repinfo”选项,并应包含以下选项,以逗号分隔:
表名、主键、键 ID、列、第一个值、第二个值。

示例 1:Slony 正在将名为 'orders' 的表从主机 'alpha' 复制到主机 'beta',
在数据库“销售”中。 表的主键名为 id,我们将
测试 id 为 3 的行(这是历史记录,从未改变)。 有一栏
名为“salesrep”,我们将从值“slon”切换到“nols”进行检查
复制。 如果复制未在 10 年内发生,我们想发出警告
秒。

check_postgres_replicate_row主机=阿尔法--dbname =销售主机=测试
--dbname=销售 --warning=10 --repinfo=订单,id,3,salesrep,slon,nols

示例 2:Bucardo 正在将名为 'receipt' 的表从主机 'green' 复制到主机
“红色”、“蓝色”和“黄色”。 双方的数据库都是“公开的”。 从属数据库
在端口 5455 上运行。主键名为“receipt_id”,我们要使用的行
值为 9,我们要为测试更改的列称为“区域”。 好
在此列的值的“北”和“南”之间切换,如果
在 5 秒内,所有三个从站都没有发生变化。

check_postgres_replicate_row --host=green --port=5455 --host=red,blue,yellow
--ritic=5 --repinfo=收据、receipt_id、9、区域、北、南

对于 MRTG 输出,在第一行返回复制所需的时间(以秒为单位)
结束。 最长时间设置为 4 分 30 秒:如果没有进行复制
放置在那个很长的时间里,会抛出一个错误。

相同模式
("symlink: check_postgres_same_schema") 验证两个或多个数据库是否相同
至于他们的模式(但不是其中的数据)。 这对于制作来说特别方便
确保在使用 master 到 slave 时您的 slave 没有以任何方式被修改或损坏
复制。 与大多数其他操作不同,这没有警告或关键标准——
数据库要么同步,要么不同步。 如果它们不同,则提供详细列表
差异提出。

您可能希望排除或过滤掉某些差异。 这样做的方法是添加
字符串到“--filter”选项。 要排除某种类型的对象,请使用“noname”,其中 'name'
是对象的类型,例如“noschema”。 排除某种类型的对象
正则表达式反对他们的名字,使用“noname=regex”。 请参阅下面的示例以了解
更好的理解。

可以过滤的对象类型包括:

用户
架构

查看
指数
序列
约束
触发
功能

过滤器选项“noposition”阻止验证列在一个
表。

过滤器选项“nofuncbody”防止比较所有函数的主体。

过滤器选项“noperm”可防止比较对象权限。

要提供第二个数据库,只需通过调用将差异附加到第一个数据库
适当的连接参数。 例如,比较主机 alpha 和
太棒了,使用“--dbhost=alpha,bravo”。 另请参阅下面的示例。

如果只给出一个主机,则假定我们正在做一个“基于时间的”报告。 这
第一次运行时,将数据库中所有项目的快照保存到本地
文件。 当您再次运行它时,该快照被读入并成为“数据库 #2”并且是
与当前数据库相比。

要将旧存储文件替换为新版本,请使用 --replace 参数。

要在不同的时间点启用快照,您可以使用“--suffix”参数来制作
每次运行唯一的文件名。 请参阅下面的示例。

示例 1:验证主机 star 和 line 上的两个数据库是否相同:

check_postgres_same_schema --dbhost=星号,行

示例 2:与之前相同,但排除名称中带有“slony”的所有触发器

check_postgres_same_schema --dbhost=star,line --filter="notrigger=slony"

示例 3:与之前相同,但也排除所有索引

check_postgres_same_schema --dbhost=star,line --filter="notrigger=slony noindexes"

示例 4:检查不同端口上数据库“battlestar”的差异

check_postgres_same_schema --dbname=battlestar --dbport=5432,5544

示例 5:创建每日和每周快照文件

check_postgres_same_schema --dbname=cylon --suffix=daily
check_postgres_same_schema --dbname =西朗--suffix =每周

示例 6:运行历史比较,然后替换文件

check_postgres_same_schema --dbname=cylon --suffix=daily --replace

序列
("symlink: check_postgres_sequence") 检查所有序列的剩余空间
数据库。 这是作为已使用的总可能值的百分比来衡量的
对于每个序列。 这 - 警告- 危急 选项应表示为
百分比。 默认值为 85% 对于警告和 95% 对于关键。 你可以
使用 --include 和 --exclude 来控制要检查的序列。 请注意,这
支票确实说明了异常 最小值增量 by 值,但不关心是否
序列设置为循环或不循环。

Nagios 的输出给出了序列的名称、使用的百分比和数量
剩余的 'calls' 数,指示在该序列上可以再调用多少次 nextval
在运行到最大值之前。

MRTG 的输出在第一行返回所有序列的最高百分比,
以及第四行带有该百分比的每个序列的名称,以“|”分隔
(pipe) 如果该百分比有多个序列。

示例 1:如果任何序列接近 95% 满,则发出警告。

check_postgres_sequence --dbport=5432 --warning=95%

示例 2:检查名为“orders_id_seq”的序列是否不超过半满。

check_postgres_sequence --dbport=5432 --ritic=50% --include=orders_id_seq

设置校验和
("symlink: check_postgres_settings_checksum") 检查所有 Postgres 设置是否正确
和上次检查时一样。 这是通过生成排序列表的校验和来完成的
设置名称及其值。 请注意,同一数据库中的不同用户可能具有
不同的校验和,由于 ALTER USER 的使用,以及由于超级用户看到的更多
设置不如普通用户。 无论是 - 警告 或者 - 危急 选项应该是
给出,但不是两者都有。 每一个的值是校验和,一个 32 个字符的十六进制
价值。 您可以使用特殊的“--critical=0”选项运行以找出现有的
校验和。

此操作需要 Digest::MD5 模块。

示例 1:使用默认用户在端口 5555 上查找数据库的初始校验和
(通常是postgres)

check_postgres_settings_checksum --port=5555 --ritic=0

示例 2:使用来自
以上。

check_postgres_settings_checksum --port=5555 --warning=cd2f3b5e129dc2b4f5c0f6d8d2e64231

对于 MRTG 输出,返回 1 或 0 表示校验和匹配失败。
必须提供校验和作为“--mrtg”参数。 第四行总是给出
当前校验和。

懒惰状态
("symlink: check_postgres_slony_status") 通过以下方式检查 Slony 集群的状态
查看 Slony 的 sl_status 视图的结果。 这作为数量返回
秒的“滞后时间”。 这 - 警告- 危急 选项应表示为时间。
默认值为 60 对于警告和 300 对于关键。

可选参数 --模式 表示安装 Slony 的架构。 如果它
未给出,每次运行此检查时将自动确定架构。

示例 1:如果任何 Slony 滞后超过 20 秒,则发出警告

check_postgres_slony_status --警告 20

示例 2:如果 Slony(安装在架构“_slony”下)超过 10,则给出一个临界值
分钟滞后

check_postgres_slony_status --schema=_slony --ritic=600

时间同步
("symlink: check_postgres_timesync") 比较本地系统时间和报告的时间
通过一个或多个数据库。 这 - 警告- 危急 选项代表数量
发出警报之前两个系统之间的秒数。 如果两者都没有指定,则
使用默认值,即“2”和“5”。 警告值不能大于
临界值。 由于此测试的非精确性,“0”或“1”的值不是
建议。

返回的字符串显示时差以及写入每一面的时间
出。

示例 1:检查主机 ankh、morpork 和 klatch 上的数据库是否不超过 3
与当地时间相差几秒:

check_postgres_timesync --host=ankh,morpark,klatch --critical=3

对于 MRTG 输出,返回第一行之间的秒数差异
本地时间和数据库时间。 第四行返回数据库的名称。

txn_空闲
("symlink: check_postgres_txn_idle") 检查“idle in”的数量和持续时间
一个或多个数据库上的事务”查询。无需多次运行此操作
在同一个数据库集群上。 可以使用以下方法过滤数据库 - 包括
- 排除 选项。 有关更多详细信息,请参阅下面的“基本过滤”部分。

- 警告- 危急 选项以时间单位、有符号整数或
时间单位的整数,并且两者都必须提供(没有默认值)。 有效单位
是“秒”、“分钟”、“小时”或“天”。 每个都可以写成单数或缩写
到第一个字母。 如果没有给出单位并且数字是无符号的,则单位
假定为秒。

此操作需要 Postgres 8.3 或更高版本。

示例 1:如果任何连接在事务中空闲超过 15 天,则发出警告
秒:

check_postgres_txn_idle --port=5432 --warning='15 秒'

示例 2:如果有 50 个或更多交易,则发出警告

check_postgres_txn_idle --port=5432 --warning='+50'

示例 3:如果 5 个或更多连接在事务中空闲了更多,则给出一个临界值
超过 10 秒:

check_postgres_txn_idle --port=5432 --critical='5 for 10 seconds'

对于 MRTG 输出,返回最长空闲事务的时间(以秒为单位)
跑步。 第四行返回数据库的名称和其他有关数据库的信息
最长的交易。

交易时间
("symlink: check_postgres_txn_time") 检查一个或多个打开交易的长度
数据库。 每个数据库集群无需多次运行此命令。
可以通过使用过滤数据库 - 包括- 排除 选项。 请参阅“基本
FILTERING”部分了解更多详细信息。还可以通过以下方式过滤交易的所有者
使用的 --包括用户--排除用户 选项。 请参阅“用户名过滤”部分
以获得更多细节。

值或 - 警告- 危急 选项是时间单位,必须提供
(无默认)。 有效单位为“秒”、“分钟”、“小时”或“天”。 每个可能是
写单数或缩写为第一个字母。 如果没有给出单位,则
单位假定为秒。

此操作需要 Postgres 8.3 或更高版本。

示例 1:如果任何事务已打开超过 10 分钟,则给出一个临界值:

check_postgres_txn_time --port=5432 --critical='10 分钟'

示例 1:如果用户 'warehouse' 的交易打开超过 30 秒,则发出警告

check_postgres_txn_time --port-5432 --warning=30s --includeuser=warehouse

对于 MRTG 输出,返回事务已打开的最长时间(以秒为单位)
第一行。 第四行给出了数据库的名称。

txn_wraparound
("symlink: check_postgres_txn_wraparound") 检查与事务环绕一的接近程度
或者更多的数据库正在获取。 这 - 警告- 危急 选项表示数字
完成的交易数量,并且必须是正整数。 如果没有给出任一选项,则
使用默认值 1.3 和 1.4 亿。 不需要再运行这个命令了
每个数据库集群不止一次。 更详细的讨论这个数字是什么
代表以及如何处理,请访问页面
<http://www.postgresql.org/docs/current/static/routine-vacuuming.html#真空包装>

警告和临界值可以在数字中带有下划线以提高可读性,如 Perl
一样。

示例 1:检查 localhost 数据库的默认值

check_postgres_txn_wraparound --host=localhost

示例 2:检查端口 6000 并在达到 1.7 亿笔交易时给出一个临界值:

check_postgres_txn_wraparound --port=6000 --critical=1_700_000_000

对于 MRTG 输出,返回第一行所有数据库的最大事务数,
而第 4 行表示它是哪个数据库。

版本
("symlink: check_postgres_version") 检查所需的 Postgres 版本是
跑步。 这 - 警告- 危急 选项(只有一个是必需的)必须是格式
XY or XYZ 哪里 X 是主要版本号, Y 是次要版本号,并且 Z is
修订版。

示例 1:如果端口 5678 上的数据库不是 8.4.10 版本,则发出警告:

check_postgres_version --port=5678 -w=8.4.10

示例 2:如果主机 Valley、grain 或 sun 上的任何数据库不是 8.3,则发出警告:

check_postgres_version -H 谷、谷物、阳光 --critical=8.3

对于 MRTG 输出,报告第一行的 1 或 0 表示成功或失败。 这
第四行表示当前版本。 必须通过“--mrtg”提供版本
选项。

wal_files
("symlink: check_postgres_wal_files") 检查有多少 WAL 文件存在于 pg_xlog
目录,这是从您的 数据目录,有时作为到另一个的符号链接
出于性能原因的物理磁盘。 此操作必须以超级用户身份运行,以便
访问内容 pg_xlog 目录。 使用此操作的最低版本是
Postgres 8.1。 这 - 警告- 危急 选项只是文件的数量
pg_xlog 目录。 将其设置为多少会有所不同,但一般准则是将
一个比正常情况略高的数字,以便及早发现问题。

通常,WAL 文件被关闭然后重新使用,但是一个长时间运行的打开事务,或者
故障 归档命令 脚本,可能会导致 Postgres 创建过多的文件。 最终,
这将导致它们所在的磁盘空间不足,此时 Postgres 将
关掉。

示例 1:检查主机“pluto”上的 WAL 文件数是否为 20 或更少

check_postgres_wal_files --host=pluto --ritic=20

对于 MRTG 输出,在第 1 行报告 WAL 文件的数量。

重建符号链接
重建符号链接力量
此操作不需要其他参数,也不会连接到任何数据库,而只是简单地
在当前目录中为每个操作创建符号链接,格式为
check_postgres_. 如果文件已经存在,则不会被覆盖。 如果
操作是rebuild_symlinks_force,然后符号链接将被覆盖。 选项
--symlinks 是一种更简短的说法 --action=rebuild_symlinks

基本 筛选


选项 - 包括- 排除 可以结合起来限制检查哪些东西,
取决于行动。 使用以下时可以过滤数据库名称
操作:后端、database_size、锁、query_time、txn_idle 和 txn_time。 的名称
使用以下操作时可以过滤关系:膨胀、索引大小、
table_size、relation_size、last_vacuum、last_autovacuum、last_analyze 和
last_autoanalyze。 使用 settings_checksum 时可以过滤设置的名称
行动。 使用 disk_space 操作时可以过滤文件系统的名称。

如果只给出了一个包含选项,那么只会检查那些匹配的条目。
但是,如果同时给出 exclude 和 include,则先进行排除,然后包含
之后,恢复可能被排除在外的事物。 两个都 - 包括- 排除 能够
多次给出,和/或作为逗号分隔的列表。 领先的波浪号将匹配
跟随单词作为正则表达式。

要匹配模式,请以单个句点结束搜索词。 可以使用前导波浪号
对于模式也是如此。

使用过滤时要小心:例如,后端的包含规则可能
报告没有问题不仅因为匹配的数据库没有后端,而且因为你
数据库名称拼错了!

例子:

只检查名为 pg_class 的项目:

--include=pg_class

只检查包含字母“pg_”的项目:

--include=~pg_

只检查以“pg_”开头的项目:

--include=~^pg_

排除名为“test”的项目:

--排除=测试

排除包含字母“test”的所有项目:

--排除=~测试

排除架构“pg_catalog”中的所有项目:

--exclude='pg_catalog.'

排除所有包含字母 'ace' 的项目,但允许项目 'faceoff':

--exclude=~ace --include=对峙

排除所有以字母“pg_”开头的项目,其中包含字母“slon”,或
它们被命名为“sql_settings”或“green”。 具体检查带有字母的项目
'prod' 在他们的名字中,并始终检查名为 'pg_relname' 的项目:

--exclude=~^pg_,~slon,sql_settings --exclude=绿色 --include=~prod,pg_relname

USER 您的姓名 筛选


选项 --包括用户--排除用户 可用于某些动作以仅检查
一个或多个用户拥有(或不拥有)的数据库对象。 一个 --包括用户 选项
总是胜过 --排除用户 选项。 您可以多次为每个选项提供
多个用户,或者您可以提供逗号分隔的列表。 当前使用的操作
这些选项是:

数据库大小
最后分析
最后自动分析
最后真空
最后自动真空
查询时间
关系大小
交易时间

例子:

只检查名为 greg 的用户拥有的项目:

--includeuser=格雷格

仅检查 watson 或 crick 拥有的项目:

--includeuser=沃森,克里克

仅检查 crick、franklin、watson 或 wilkins 拥有的项目:

--includeuser=沃特森 --includeuser=弗兰克林 --includeuser=克里克、威尔金斯

检查除属于用户 scott 的项目之外的所有项目:

--excludeuser=斯科特

测试 MODE


为了帮助设置,这个程序可以通过指定在“测试模式”下运行
- 测试 选项。 这将执行一些基本测试以确保数据库可以
联系,并且满足某些每个操作的先决条件,例如用户是否是
超级用户,如果 Postgres 的版本足够新,并且 stats_row_level 已启用。

使用 onworks.net 服务在线使用 check_postgres_table_sizep


免费服务器和工作站

下载 Windows 和 Linux 应用程序

  • 1
    移相器
    移相器
    Phaser 是一个快速、免费且有趣的开放式
    源 HTML5 游戏框架,提供
    WebGL 和 Canvas 渲染
    桌面和移动网络浏览器。 游戏
    可以共...
    下载移相器
  • 2
    附庸引擎
    附庸引擎
    VASSAL 是一个游戏引擎,用于创建
    电子版传统板
    和纸牌游戏。 它提供支持
    游戏块渲染和交互,
    和...
    下载 VASSAL 引擎
  • 3
    OpenPDF - iText 的分支
    OpenPDF - iText 的分支
    OpenPDF 是一个 Java 库,用于创建
    以及使用 LGPL 编辑 PDF 文件和
    MPL 开源许可证。 OpenPDF 是
    iText 的 LGPL/MPL 开源继承者,
    一个...
    下载 OpenPDF - iText 的分支
  • 4
    SAGA GIS
    SAGA GIS
    SAGA - 自动化系统
    地球科学分析 - 是地理
    信息系统 (GIS) 软件
    地理数据的强大功能
    加工和分析...
    下载 SAGA GIS
  • 5
    Java/JTOpen 工具箱
    Java/JTOpen 工具箱
    IBM Toolbox for Java / JTOpen 是一个
    Java类库支持
    客户端/服务器和互联网编程
    模型到运行 OS/400 的系统,
    i5/OS, 哦...
    下载 Java/JTOpen 工具箱
  • 6
    D3.js
    D3.js
    D3.js(或数据驱动文档的 D3)
    是一个 JavaScript 库,它允许你
    生成动态的交互式数据
    Web 浏览器中的可视化。 与D3
    您...
    下载 D3.js
  • 更多 ”

Linux 命令

Ad