Skip to content
Snippets Groups Projects

6010 check pqsql

Merged Hahn Axel (hahn) requested to merge 6010-check-pqsql into master
1 file
+ 13
8
Compare changes
  • Side-by-side
  • Inline
+ 13
8
@@ -16,12 +16,13 @@
@@ -16,12 +16,13 @@
# 2023-06-07 v0.2 <axel.hahn@unibe.ch>
# 2023-06-07 v0.2 <axel.hahn@unibe.ch>
# 2023-06-08 v0.3 <axel.hahn@unibe.ch> show unknown if database connection fails
# 2023-06-08 v0.3 <axel.hahn@unibe.ch> show unknown if database connection fails
# 2023-06-08 v0.4 <axel.hahn@unibe.ch> get summary for cronflicts and problems
# 2023-06-08 v0.4 <axel.hahn@unibe.ch> get summary for cronflicts and problems
 
# 2023-06-09 v0.5 <axel.hahn@unibe.ch> deltaunit can be set as parameter
# ======================================================================
# ======================================================================
. $(dirname $0)/inc_pluginfunctions
. $(dirname $0)/inc_pluginfunctions
self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] )
self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] )
self_APPVERSION=0.2
self_APPVERSION=0.5
# --- other vars...
# --- other vars...
cfgfile=/etc/icingaclient/.psql.conf
cfgfile=/etc/icingaclient/.psql.conf
@@ -142,13 +143,15 @@ EOH
@@ -142,13 +143,15 @@ EOH
# render incremental counters from integer results of a given sql query
# render incremental counters from integer results of a given sql query
# global string out output of check
# global string out output of check
# param string database query
# param string database query
 
# param string time unit; one of sec|min; default: sec
function renderCounters(){
function renderCounters(){
local _query; _query="$1"
local _query; _query="$1"
 
local _sDeltaUnit; _sDeltaUnit=${2:-sec}
 
local _out; _out=$( psql -c "${_query} " 2>&1) || _queryFailed
local _out; _out=$( psql -c "${_query} " 2>&1) || _queryFailed
local _iCounter; typeset -i _iCounter=0
local _iCounter; typeset -i _iCounter=0
local _header; _header=$( echo "${_out}" | head -1 | tr -d ' ')
local _header; _header=$( echo "${_out}" | head -1 | tr -d ' ')
local _data; _data=$( echo "${_out}" | head -3 | tail -1 | tr -d ' ')
local _data; _data=$( echo "${_out}" | head -3 | tail -1 | tr -d ' ')
local _sDeltaUnit; _sDeltaUnit=sec
local _iSpeed; typeset -i _iSpeed=0
local _iSpeed; typeset -i _iSpeed=0
local _sStoreid; _sStoreid=$( md5sum <<< "${_query}" | awk '{ print $1 }' )
local _sStoreid; _sStoreid=$( md5sum <<< "${_query}" | awk '{ print $1 }' )
local _iValue; typeset -i _iValue
local _iValue; typeset -i _iValue
@@ -238,6 +241,7 @@ case "${sMode}" in
@@ -238,6 +241,7 @@ case "${sMode}" in
;;
;;
"conflicts")
"conflicts")
 
deltaunit=min
descr="Detected conflicts (from pg_stat_database_conflicts)"
descr="Detected conflicts (from pg_stat_database_conflicts)"
renderCounters "select \
renderCounters "select \
sum(confl_tablespace) as confl_tablespace, \
sum(confl_tablespace) as confl_tablespace, \
@@ -245,14 +249,14 @@ case "${sMode}" in
@@ -245,14 +249,14 @@ case "${sMode}" in
sum(confl_snapshot) as confl_snapshot, \
sum(confl_snapshot) as confl_snapshot, \
sum(confl_bufferpin) as confl_bufferpin, \
sum(confl_bufferpin) as confl_bufferpin, \
sum(confl_deadlock) as confl_deadlock \
sum(confl_deadlock) as confl_deadlock \
from pg_stat_database_conflicts "
from pg_stat_database_conflicts " "${deltaunit}"
# sum of 7th column (with delta per sec)
# sum of 7th column (with delta per sec)
typeset -i iTotal; iTotal=$( echo "$out" | awk '{ sum+=$7} END { print sum;}' )
typeset -i iTotal; iTotal=$( echo "$out" | awk '{ sum+=$7} END { print sum;}' )
if [ $iTotal -gt 0 ]; then
if [ $iTotal -gt 0 ]; then
ph.setStatus "warning"
ph.setStatus "critical"
fi
fi
descr+=" - currently $iTotal per sec"
descr+=" - currently $iTotal per ${deltaunit}"
;;
;;
"dbrows")
"dbrows")
@@ -275,6 +279,7 @@ case "${sMode}" in
@@ -275,6 +279,7 @@ case "${sMode}" in
;;
;;
"problems")
"problems")
 
deltaunit=min
descr="Problems and troublemakers (from pg_stat_database)"
descr="Problems and troublemakers (from pg_stat_database)"
renderCounters "select \
renderCounters "select \
sum(conflicts) as conflicts, \
sum(conflicts) as conflicts, \
@@ -282,14 +287,14 @@ case "${sMode}" in
@@ -282,14 +287,14 @@ case "${sMode}" in
sum(checksum_failures) as checksumfailures, \
sum(checksum_failures) as checksumfailures, \
sum(temp_files) as temp_files, \
sum(temp_files) as temp_files, \
sum(temp_bytes) as temp_bytes \
sum(temp_bytes) as temp_bytes \
from pg_stat_database "
from pg_stat_database" "${deltaunit}"
# sum of 7th column (with delta per sec)
# sum of 7th column (with delta per sec)
typeset -i iTotal; iTotal=$( echo "$out" | awk '{ sum+=$7} END { print sum;}' )
typeset -i iTotal; iTotal=$( echo "$out" | awk '{ sum+=$7} END { print sum;}' )
if [ $iTotal -gt 0 ]; then
if [ $iTotal -gt 0 ]; then
ph.setStatus "warning"
ph.setStatus "critical"
fi
fi
descr+=" - currently $iTotal per sec"
descr+=" - currently $iTotal per ${deltaunit}"
;;
;;
"replication")
"replication")
Loading