diff options
-rw-r--r-- | check_postgres.pl.asc | 6 | ||||
-rw-r--r-- | check_postgres.pl.html | 123 | ||||
-rw-r--r-- | index.html | 2 |
3 files changed, 109 insertions, 22 deletions
diff --git a/check_postgres.pl.asc b/check_postgres.pl.asc index 9ebb368ba..7c969460c 100644 --- a/check_postgres.pl.asc +++ b/check_postgres.pl.asc @@ -1,6 +1,6 @@ -----BEGIN PGP SIGNATURE----- -iEYEABEDAAYFAkn2POAACgkQvJuQZxSWSsjFFwCeNLfR1C0kd4f2YKTnlvaapm3e -6IsAoJQmPHbo18rsn8fkXSMz5wfMTHla -=ZZQS +iEYEABEDAAYFAkn3F10ACgkQvJuQZxSWSsgCsgCeIiceUekr6p+LdPnaVT9nOzuv +iZEAnjM5MdYK68UwTDhwJ5Ju42DUhqJA +=r0EB -----END PGP SIGNATURE----- diff --git a/check_postgres.pl.html b/check_postgres.pl.html index c6ec590cb..a6595c773 100644 --- a/check_postgres.pl.html +++ b/check_postgres.pl.html @@ -57,6 +57,9 @@ <li><a href="#listener"><strong>listener</strong></a></li> <li><a href="#locks"><strong>locks</strong></a></li> <li><a href="#logfile"><strong>logfile</strong></a></li> + <li><a href="#new_version_cp"><strong>new_version_cp</strong></a></li> + <li><a href="#new_version_pg"><strong>new_version_pg</strong></a></li> + <li><a href="#prepared_txns"><strong>prepared_txns</strong></a></li> <li><a href="#query_runtime"><strong>query_runtime</strong></a></li> <li><a href="#query_time"><strong>query_time</strong></a></li> <li><a href="#sequence"><strong>sequence</strong></a></li> @@ -187,7 +190,7 @@ argument, for example:</p> --output=simple,MB</pre> <p> </p> -<h3><a name="simple_output">Simple output</a></h3> +<h3><a name="cacti_output">Cacti output</a></h3> <p>The Cacti output consists of one or more items on the same line, with a simple name, a colon, and then a number. At the moment, the only action with explicit Cacti output is 'dbstats', and using the --output option is not needed in this case, as Cacti is the only output for this action. For many @@ -230,7 +233,7 @@ it defaults to 'postgres'.</p> <dd> <p>Provides the password to connect to the database with. Use of this option is highly discouraged. -Instead, one should use a .pgpass of pg_service.conf file.</p> +Instead, one should use a .pgpass or pg_service.conf file.</p> </dd> <dt><strong><a name="item__2d_2ddbservice_3dname"><strong>--dbservice=NAME</strong></a></strong></dt> @@ -493,7 +496,9 @@ to check that your warm standby is truly 'warm'. The data directory must be set, environment variable <code>PGDATA</code>, or passing the <code>--datadir</code> argument. It returns the number of seconds since the last checkpoint was run, as determined by parsing the call to <code>pg_controldata</code>. Because of this, the -pg_controldata executable must be available in the current path.</p> +pg_controldata executable must be available in the current path. Alternatively, you can +set the environment variable <code>PGCONTROLDATA</code> to the exact location of the pg_controldata +executable, or you can specify <code>PGBINDIR</code> as the directory that it lives in.</p> <p>At least one warning or critical argument must be set.</p> <p>This action requires the Date::Parse module.</p> <p>For MRTG or simple output, returns the number of seconds.</p> @@ -640,6 +645,44 @@ space. The items are:</p> </dl> <p>Note that ret, fetch, ins, upd, and del items will always be 0 if Postgres is version 8.2 or lower, as those stats were not available in those versions.</p> +<p>If the dbname argument is given, seven additional items are returned:</p> +<dl> +<dt><strong><a name="item_idx_scan">idx_scan</a></strong></dt> + +<dd> +<p>Total number of user index scans.</p> +</dd> +<dt><strong><a name="item_idx_tup_read">idx_tup_read</a></strong></dt> + +<dd> +<p>Total number of user index entries returned.</p> +</dd> +<dt><strong><a name="item_idx_tup_fetch">idx_tup_fetch</a></strong></dt> + +<dd> +<p>Total number of rows fetched by simple user index scans.</p> +</dd> +<dt><strong><a name="item_idx_blks_read">idx_blks_read</a></strong></dt> + +<dd> +<p>Total number of disk blocks read for all user indexes.</p> +</dd> +<dt><strong><a name="item_idx_blks_hit">idx_blks_hit</a></strong></dt> + +<dd> +<p>Total number of buffer hits for all user indexes.</p> +</dd> +<dt><strong><a name="item_seq_scan">seq_scan</a></strong></dt> + +<dd> +<p>Total number of sequential scans against all user tables.</p> +</dd> +<dt><strong><a name="item_seq_tup_read">seq_tup_read</a></strong></dt> + +<dd> +<p>Total number of tuples returned from all user tables.</p> +</dd> +</dl> <p>Example 1: Grab the stats for a database named "products" on host "willow":</p> <pre> check_postgres_dbstats --dbhost willow --dbname products</pre> @@ -698,9 +741,7 @@ warning and <strong>95%</strong> for the critical.</p> <p>Example 1: Give a warning when our cluster has used up 76% of the free-space pageslots, with pg_freespacemap installed in database robert</p> <pre> check_postgres_fsm_pages --dbname=robert --warning="76%"</pre> -<p>While you need to pass in the name of the database where pg_freespacemap is installed (and optionally a schema name if you have -installed the module in a non-standard schema), you only need to run this check once per cluster. Also, checking this information -does require obtaining special locks on the free-space-map, so it is recommend you do not run this check with short intervals.</p> +<p>While you need to pass in the name of the database where pg_freespacemap is installed, you only need to run this check once per cluster. Also, checking this information does require obtaining special locks on the free-space-map, so it is recommend you do not run this check with short intervals.</p> <p>For MRTG output, returns the percent of free-space-map on the first line, and the number of pages currently used on the second line.</p> <p> @@ -711,11 +752,11 @@ This action will only work for databases of 8.2 or higher, and it requires the c installed. The <em>--warning</em> and <em>--critical</em> options should be expressed as percentages. The number of used relations in the free-space-map is determined by looking in the pg_freespacemap_relations view. The default values are <strong>85%</strong> for the warning and <strong>95%</strong> for the critical.</p> -<p>Example 1: Give a warning when our cluster has used up 80% of the free-space relations, with pg_freespacemap installed in database dylan, in non-standard schema emma</p> +<p>Example 1: Give a warning when our cluster has used up 80% of the free-space relations, with pg_freespacemap installed in database dylan</p> <pre> - check_postgres_fsm_relations --dbname=dylan --warning="75%" --schema=emma</pre> -<p>While you need to pass in the name of the database where pg_freespacemap is installed (and optionally a schema name -if you have installed the module in a non-standard schema), you only need to run this check once per cluster. Also, + check_postgres_fsm_relations --dbname=dylan --warning="75%"</pre> +<p>While you need to pass in the name of the database where pg_freespacemap is installed, you only need to run this check +once per cluster. Also, checking this information does require obtaining special locks on the free-space-map, so it is recommend you do not run this check with short intervals.</p> <p>For MRTG output, returns the percent of free-space-map on the first line, the number of relations currently used on @@ -861,6 +902,42 @@ options should <em>not</em> be used.</p> failure, the fourth line will provide more detail on the failure encountered.</p> <p> </p> +<h2><a name="new_version_cp"><strong>new_version_cp</strong></a></h2> +<p>(<code>symlink: check_postgres_new_version_cp</code>) Checks if a newer version of this program +(check_postgres.pl) is available, by grabbing the version from a small text file +on the main page of the home page for the project. Returns a warning if the returned +version does not match the one you are running. Recommended interval to check is +once a day.</p> +<p> +</p> +<h2><a name="new_version_pg"><strong>new_version_pg</strong></a></h2> +<p>(<code>symlink: check_postgres_cp_new_version_pg</code>) Checks if a newer revision of Postgres +exists for each database connected to. Note that this only checks for revision, e.g. +going from 8.3.6 to 8.3.7. Revisions are always 100% binary compatible and involve no +dump and restore to upgrade. Revisions are made to address bugs, so upgrading as soon +as possible is always recommended. Returns a warning if you do not have the latest revision. +It is recommended this check is run at least once a day.</p> +<p> +</p> +<h2><a name="prepared_txns"><strong>prepared_txns</strong></a></h2> +<p>(<code>symlink: check_postgres_prepared_txns</code>) Check on the age of any existing prepared transactions. +Note that most people will NOT use prepared transactions, as they are part of two-part commit +and complicated to maintain. They should also not be confused with prepared STATEMENTS, which is +what most people think of when they hear prepare. The default value for a warning is 1 second, to +detect any use of prepared transactions, which is probably a mistake on most systems. Warning and +critical are the number of seconds a prepared transaction has been open before an alert is given.</p> +<p>Example 1: Give a warning on detecting any prepared transactions:</p> +<pre> + check_postgres_prepared_txns -w 0</pre> +<p>Example 2: Give a critical if any prepared transaction has been open longer than 10 seconds, but allow +up to 360 seconds for the database 'shrike':</p> +<pre> + check_postgres_listener --critical=10 --exclude=shrike + check_postgres_listener --critical=360 --include=shrike</pre> +<p>For MRTG output, returns the number of seconds the oldest transaction has been open as the first line, +and which database is came from as the final line.</p> +<p> +</p> <h2><a name="query_runtime"><strong>query_runtime</strong></a></h2> <p>(<code>symlink: check_postgres_query_runtime</code>) Checks how long a specific query takes to run, by executing a "EXPLAIN ANALYZE" against it. The <em>--warning</em> and <em>--critical</em> options are the maximum amount of @@ -897,7 +974,7 @@ assumed to be seconds.</p> check_postgres_query_time --port=5432 --exclude=~^template</pre> <p>Example 3: Warn if user 'don' has a query running over 20 seconds</p> <pre> - check_postgres_query_time --port=5432 --inclucdeuser=don --warning=20s</pre> + check_postgres_query_time --port=5432 --includeuser=don --warning=20s</pre> <p>For MRTG output, returns the length in seconds of the longest running query on the first line. The fourth line gives the name of the database.</p> <p> @@ -1043,7 +1120,7 @@ value. Due to the non-exact nature of this test, values of '0' or '1' are not re <p>The string returned shows the time difference as well as the time on each side written out.</p> <p>Example 1: Check that databases on hosts ankh, morpork, and klatch are no more than 3 seconds off from the local time:</p> <pre> - check_postgres_timesync --host=ankh,morpork.klatch --critical=3</pre> + check_postgres_timesync --host=ankh,morpork,klatch --critical=3</pre> <p>For MRTG output, returns one the first line the number of seconds difference between the local time and the database time. The fourth line returns the name of the database.</p> <p> @@ -1252,19 +1329,29 @@ feature requests, and commit notices, send email to <a href="mailto:check_postgr <h1><a name="history">HISTORY</a></h1> <p>Items not specifically attributed are by Greg Sabino Mullane.</p> <dl> -<dt><strong><a name="item_0"><strong>Version 2.8.0</strong> (March ??, 2009)</a></strong></dt> +<dt><strong><a name="item_0"><strong>Version 2.8.0</strong> (April ??, 2009)</a></strong></dt> <dd> <pre> - Added the 'disabled_triggers' check - Added internationalization support + Added internationalization support (Greg) + Added the 'disabled_triggers' check (Greg) + Added the prepared_txns' check (Greg) + Added the 'new_version_cp' and 'new_version_pg' checks (Greg) French translations (Guillaume Lelarge) Make the backends search return ok if no matches due to inclusion rules, - per report by Guillaume Lelarge - Begin adding comprehensive unit tests + per report by Guillaume Lelarge (Greg) + Added comprehensive unit tests (Greg, Jeff Boes, Selena Decklemann) + Make fsm_pages and fsm_relatins handle 8.4 servers smoothly. (Greg) Fix missing 'upd' field in show_dbstats (Andras Fabian) + Allow ENV{PGCONTROLDATA} and ENV{PGBINDIR}. (Greg) + Fix incorrect regex in txn_wraparound (Greg) + For txn_wraparound: consistent ordering and fix duplicates in perf output (Andras Fabian) Add in missing exabyte regex check (Selena Deckelmann) - Set stats to zero if we bail early due to USERWHERECLAUSE (Andras Fabian)</pre> + Set stats to zero if we bail early due to USERWHERECLAUSE (Andras Fabian) + Add additional items to dbstats output (Andras Fabian) + Remove --schema option from the fsm_ checks. (Greg Mullane and Robert Treat) + Various fixes. (Jeff Boes) + Fix --dbservice: check version and use ENV{PGSERVICE} for old versions (Cédric Villemain)</pre> </dd> <dt><strong><a name="item_3"><strong>Version 2.7.3</strong> (February 10, 2009)</a></strong></dt> diff --git a/index.html b/index.html index 817b8c48c..e7331f197 100644 --- a/index.html +++ b/index.html @@ -21,7 +21,7 @@ h1 { <h1>check_postgres.pl</h1> -<p><b>check_postgres.pl</b> is a script for checking the state of one or more Postgres databases and reporting back in a Nagios-friendly manner. It was developed by Greg Sabino Mullane of <a href="http://www.endpoint.com/">End Point Corporation</a> and is BSD-licensed. The latest version is <b>2.8.0</b>, and was released on February 23, 2009.</p> +<p><b>check_postgres.pl</b> is a script for checking the state of one or more Postgres databases and reporting back in a Nagios-friendly manner. It was developed by Greg Sabino Mullane of <a href="http://www.endpoint.com/">End Point Corporation</a> and is BSD-licensed. The latest version is <b>2.8.0</b>, and was released on April 28, 2009.</p> <ul> <li><a href="/check_postgres/check_postgres.pl.html">Documentation for check_postgres 2.8.0</a></li> |