]> git.evergreen-ils.org Git - contrib/equinox.git/blob - monitoring/nagios/check_dbquery
errant line sending a copy of the row
[contrib/equinox.git] / monitoring / nagios / check_dbquery
1 #!/bin/bash\r
2 # Copyright (C) 2008-2010  Equinox Software, Inc.\r
3 # Written by Lee Dickens <leed@esilibrary.com>\r
4 #\r
5 # This program is free software; you can redistribute it and/or\r
6 # modify it under the terms of the GNU General Public License\r
7 # as published by the Free Software Foundation; either version 2\r
8 # of the License, or (at your option) any later version.\r
9 #\r
10 # This program is distributed in the hope that it will be useful,\r
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of\r
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
13 # GNU General Public License for more details.\r
14 #\r
15 #\r
16 # Author       : Lee Dickens, Sys Admin, ESI\r
17 # Updated      : 07-MAR-2011, Michael Tate, Sys Admin, ESI: Added arguments\r
18 # Purpose      : Look for long-running queries: Warn when older than 5 hours, Critical at 7.\r
19 USAGE="check_dbquery <db (default 'evergreen' if empty)> <username (default 'evergreen')> <port database runs on (default '5432')>"\r
20 \r
21 if [[ $1 == *help* ]]; then\r
22   echo "Usage: $USAGE"\r
23   exit 0\r
24 fi\r
25 \r
26 ## GET/SET Variables ##\r
27 # database name\r
28 if [ -n "$1" ]; then\r
29   dbname="$1"\r
30 else\r
31   dbname="evergreen"\r
32 fi\r
33 \r
34 # database user name\r
35 if [ -n "$2" ]; then\r
36   dbuser="$1"\r
37 else\r
38   dbuser="evergreen"\r
39 fi\r
40 \r
41 # port database runs on\r
42 if [ -n "$3" ]; then\r
43   dbport="$3"\r
44 else\r
45   dbport=5432\r
46 fi\r
47 \r
48 \r
49 ## Execute DB Query Count ##\r
50 count=`PGUSER=postgres psql -U $dbuser -d $dbname -p $dbport -c "select now()-query_start from pg_stat_activity where current_query NOT LIKE '<IDL%' AND current_query NOT LIKE '%vacuum%' order by query_start asc limit 1;"|sed -n 3p|cut -d: -f1|sed 's/^[ \t]*//'`\r
51 \r
52 \r
53 ## Return results ##\r
54 if [[ $count == "-00" ]]; then\r
55    echo "OK: No long running queries"\r
56    exit 0\r
57 else \r
58 \r
59  if [ $count -gt "07" ]; then\r
60    echo "CRITICAL: Longest query running for over $count hours"\r
61    exit 2\r
62 \r
63  elif [ $count -gt "05" ]; then \r
64    echo "WARNING: Longest query running for over $count hours"\r
65    exit 1\r
66 \r
67  else \r
68    echo "OK: Longest query running for over $count hours"\r
69    exit 0\r
70  fi  \r
71 fi\r
72 \r