From a244d2dc60f8bfa2668fe65c831256c3f03ecf8b Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Thu, 21 Dec 2023 10:54:42 +0100 Subject: [PATCH] rename backup server check --- check_iml_backup_server | 149 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100755 check_iml_backup_server diff --git a/check_iml_backup_server b/check_iml_backup_server new file mode 100755 index 0000000..9427730 --- /dev/null +++ b/check_iml_backup_server @@ -0,0 +1,149 @@ +#!/bin/bash +# ====================================================================== +# +# Check IML BACKUP SERVER +# +# requires access to storage_helper.sh +# in /opt/imlbackup/server/ +# +# ---------------------------------------------------------------------- +# 2020-07-27 v0.x <axel.hahn@iml.unibe.ch> +# 2023-12-20 v0.2 <axel.hahn@iml.unibe.ch> +# 2023-12-21 v1.0 <axel.hahn@iml.unibe.ch> first version +# ====================================================================== + + +. $(dirname $0)/inc_pluginfunctions +export self_APPVERSION=1.0 + +sInstalldir=/opt/imlbackup/server +sScript=storage_helper.sh +sMode= + +# ---------------------------------------------------------------------- +# FUNCTIONS +# ---------------------------------------------------------------------- + +function showHelp(){ + local _self; _self=$(basename $0) + cat <<EOF +$( ph.showImlHelpHeader ) + +Show status of backup server. +You can get the count of connections or the status of server backup. + +See https://os-docs.iml.unibe.ch/iml-backup-server/ + +SYNTAX: +$_self [-d DIRECTORY] -m MODE + +OPTIONS: + -h or --help show this help. + -d or --dir set installation dir of iml deployment to find its check skript + default dir: ${sInstalldir} + script: ${sInstalldir}/${sScript} + -m or --mode mode: set type of result; one of status|backupstatus + backupstatus status of backup sets of all servers + status count of connected servers + +EXAMPLE: +$_self -m status +$_self -m backupstatus + +EOF +} + +function _getServerOfStatus(){ + local _key="$1" + local _data="$2" + grep "$_key .*| [0-9].* |" <<< "$_data" +} + +function _getStatusCount(){ + _getServerOfStatus "$1" "$2" | wc -l +} +# ---------------------------------------------------------------------- +# MAIN +# ---------------------------------------------------------------------- + +# --- check param -h +while [[ "$#" -gt 0 ]]; do case $1 in + -h|--help) showHelp; exit 0;; + -d|--dir) sInstalldir=$2; shift ;shift;; + -m|--mode) sMode=$2; + shift ;shift + if ! grep -E "^(status|backupstatus)$" <<< "$sMode" >/dev/null; then + ph.abort "ERROR: unknown mode [$sMode]." + fi + ;; + *) echo "ERROR: Unknown parameter: $1"; showHelp; exit 1; +esac; done + +if [ -z "$sMode" ]; then + ph.abort "ERROR: The mode was not set. Use parameter -m for it. Get help wit -h." +fi + +myscript="$sInstalldir/$sScript" + +if [ ! -x "$myscript" ]; then + ph.abort "UNKNOWN: $myscript is not available / executable. Use -d to fix the installation dir. Get help wit -h." +fi + +# --- read data +data=$( "$myscript" "$sMode" ) + +case "$sMode" in + "backupstatus") + typeset -i iTotal; iTotal=$( grep "^total : " <<< "$data" | cut -f 2 -d ":" | awk '{ print $1 }' ) + typeset -i iErrors; iErrors=$( grep "^errors: " <<< "$data" | cut -f 2 -d ":") + + typeset -i iOK; iOK=$( _getStatusCount "\." "$data" ) + typeset -i iNotStarted; iNotStarted=$( _getStatusCount "\?" "$data") + typeset -i iDisable; iDisable=$( _getStatusCount "D" "$data" ) + typeset -i iRunning; iRunning=$( _getStatusCount "R" "$data") + + if [ $iErrors -gt 0 ]; then + ph.setStatus critical + fi + if [ $iNotStarted -eq $iTotal ]; then + ph.setStatus unknown + fi + ph.status "Server Backups - $iTotal servers in backup - $iErrors errors - $iDisable disbled - $iRunning running" + echo List of server backups grouped by status + echo + ( + # draw 1st line with table header + echo "$data" | grep "server.*start.*end" + echo + + # show servers grouped by status + for mystatus in E D R "\?" D "\." + do + _getServerOfStatus "$mystatus" "$data" + done + echo -e "\e[0m" + echo "$data" | grep "server.*start.*end" + echo + ) | tr '|' ':' + + ph.perfadd "notstarted" "${iNotStarted}" "" "" 0 $iTotal + ph.perfadd "disabled" "${iDisable}" "" "" 0 $iTotal + ph.perfadd "ok" "${iOK}" "" "" 0 $iTotal + ph.perfadd "running" "${iRunning}" "" "" 0 $iTotal + ph.perfadd "error" "${iErrors}" "" "" 0 $iTotal + ;; + "status") + typeset -i iRunning; iRunning=$( grep "STATUS" <<< "$data" | cut -f 2 -d " ") + typeset -i iMax; iMax=$( grep "STATUS" <<< "$data" | cut -f 8 -d " " | tr -d '.') + + # --- status output + ph.status "Backups running: $iRunning (max $iMax)" + # echo "$data" + + ph.perfadd "running" "${iRunning}" "" "" 0 $iMax + ;; +esac + +ph.exit + +# ---------------------------------------------------------------------- -- GitLab