Compare commits
3 commits
1cde0c3b86
...
675bb089d8
Author | SHA1 | Date | |
---|---|---|---|
|
675bb089d8 | ||
|
28d084da36 | ||
|
d0b3649213 |
3 changed files with 65 additions and 11 deletions
25
.pre-commit-config.yaml
Normal file
25
.pre-commit-config.yaml
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
# Pre-commit hooks to run tests and ensure code is cleaned.
|
||||||
|
# See https://pre-commit.com for more information
|
||||||
|
---
|
||||||
|
repos:
|
||||||
|
- repo: https://github.com/codespell-project/codespell
|
||||||
|
rev: v2.2.2
|
||||||
|
hooks:
|
||||||
|
- id: codespell
|
||||||
|
args:
|
||||||
|
- --ignore-words-list=exten
|
||||||
|
- --skip="./.*,*.csv,*.json,*.ini,*.subject,*.txt,*.html,*.log,*.conf"
|
||||||
|
- --quiet-level=2
|
||||||
|
- --ignore-regex=.*codespell-ignore$
|
||||||
|
#- --write-changes # Uncomment to write changes
|
||||||
|
exclude_types: [csv, json]
|
||||||
|
- repo: https://github.com/adrienverge/yamllint
|
||||||
|
rev: v1.32.0
|
||||||
|
hooks:
|
||||||
|
- id: yamllint
|
||||||
|
ignore: .github/
|
||||||
|
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||||
|
rev: v2.7.1
|
||||||
|
hooks:
|
||||||
|
- id: prettier
|
||||||
|
args: ["--print-width", "100"]
|
|
@ -7,7 +7,7 @@ Checks are done by running Icinga/Nagios compatible check plugins inside contain
|
||||||
- `/usr/lib/nagios/plugins/check_apt`: for Debian based image, provide by the `monitoring-plugins-basic` debian package
|
- `/usr/lib/nagios/plugins/check_apt`: for Debian based image, provide by the `monitoring-plugins-basic` debian package
|
||||||
- `/usr/lib/nagios/plugins/check_apk`: for Alpine based image, see [project](https://gitea.zionetrix.net/bn8/check_apk) for install instructions
|
- `/usr/lib/nagios/plugins/check_apk`: for Alpine based image, see [project](https://gitea.zionetrix.net/bn8/check_apk) for install instructions
|
||||||
|
|
||||||
__Note:__ The first plugin detected as installed will be used.
|
**Note:** The first plugin detected as installed will be used.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,13 @@ function in_array() {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function implode() {
|
||||||
|
local d=${1-} f=${2-}
|
||||||
|
if shift 2; then
|
||||||
|
printf %s "$f" "${@/#/$d}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function usage() {
|
function usage() {
|
||||||
error="$1"
|
error="$1"
|
||||||
[ -n "$error" ] && echo "$error"
|
[ -n "$error" ] && echo "$error"
|
||||||
|
@ -132,8 +139,9 @@ fi
|
||||||
EXIT_CODE=0
|
EXIT_CODE=0
|
||||||
declare -A CONTAINER_STATUS_FILE
|
declare -A CONTAINER_STATUS_FILE
|
||||||
declare -A CONTAINER_PID
|
declare -A CONTAINER_PID
|
||||||
declare -A UPTODATE
|
declare -A UP_TO_DATE
|
||||||
declare -A ERRORS
|
declare -A ERRORS
|
||||||
|
declare -A UNKNOWNS
|
||||||
CHECKED_CONTAINERS=( )
|
CHECKED_CONTAINERS=( )
|
||||||
|
|
||||||
debug "List running containers..."
|
debug "List running containers..."
|
||||||
|
@ -224,23 +232,26 @@ do
|
||||||
rm -f ${CONTAINER_STATUS_FILE[$container]}
|
rm -f ${CONTAINER_STATUS_FILE[$container]}
|
||||||
if [ $ex -eq 0 ]
|
if [ $ex -eq 0 ]
|
||||||
then
|
then
|
||||||
UPTODATE+=( ["$container"]=$STATUS )
|
UP_TO_DATE+=( ["$container"]=$STATUS )
|
||||||
else
|
else
|
||||||
ERRORS+=( ["$container"]=$STATUS )
|
ERRORS+=( ["$container"]=$STATUS )
|
||||||
|
[ $ex -ge 3 ] && UNKNOWNS+=( "$container" )
|
||||||
fi
|
fi
|
||||||
[ $EXIT_CODE -ge $ex ] && continue
|
[ $EXIT_CODE -ge $ex ] && continue
|
||||||
[ $ex -gt 3 ] && ex=3
|
[ $ex -gt 3 ] && ex=3
|
||||||
EXIT_CODE=$ex
|
EXIT_CODE=$ex
|
||||||
done
|
done
|
||||||
|
|
||||||
|
NOTFOUNDS=()
|
||||||
if ! is_empty $ONLY_CONTAINERS
|
if ! is_empty $ONLY_CONTAINERS
|
||||||
then
|
then
|
||||||
for container in ${ONLY_CONTAINERS[@]}
|
for container in ${ONLY_CONTAINERS[@]}
|
||||||
do
|
do
|
||||||
if ! in_array $container ${CHECKED_CONTAINERS[@]}
|
if ! in_array $container ${CHECKED_CONTAINERS[@]}
|
||||||
then
|
then
|
||||||
debug "$container - Not found"
|
debug "$container - Container not found"
|
||||||
ERRORS+=( ["$container"]="Not found" )
|
ERRORS+=( ["$container"]="Container not found" )
|
||||||
|
NOTFOUNDS+=( "$container" )
|
||||||
EXIT_CODE=3
|
EXIT_CODE=3
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
@ -248,28 +259,46 @@ fi
|
||||||
|
|
||||||
debug "Final exit code: $EXIT_CODE"
|
debug "Final exit code: $EXIT_CODE"
|
||||||
|
|
||||||
|
debug "Check containers (${#CHECKED_CONTAINERS[@]}): $( implode ", " "${CHECKED_CONTAINERS[@]}" )"
|
||||||
|
debug "Containers with errors (${#ERRORS[@]}): $( implode ", " "${!ERRORS[@]}" )"
|
||||||
|
debug "Not found containers (${#NOTFOUNDS[@]}): $( implode ", " "${NOTFOUNDS[@]}" )"
|
||||||
|
|
||||||
|
# Compute performance data
|
||||||
|
let CONTAINER_COUNTS=${#CHECKED_CONTAINERS[@]}+${#NOTFOUNDS[@]}
|
||||||
|
PERF_DATA=(
|
||||||
|
"uptodate_containers=${#UP_TO_DATE[@]};;;0;$CONTAINER_COUNTS"
|
||||||
|
"containers_with_errors=${#ERRORS[@]};1;;0;$CONTAINER_COUNTS"
|
||||||
|
"unknown_state_containers=${#UNKNOWNS[@]};;;0;$CONTAINER_COUNTS"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Display check result message
|
||||||
case $EXIT_CODE in
|
case $EXIT_CODE in
|
||||||
0)
|
0)
|
||||||
echo "OK - All containers are uptodate"
|
echo -n "OK - All ${#UP_TO_DATE[@]} container(s) are up-to-date"
|
||||||
;;
|
;;
|
||||||
1)
|
1)
|
||||||
echo "WARNING - some containers need to be updated"
|
echo -n "WARNING - ${#ERRORS[@]} container(s) need to be updated"
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
echo "CRITICAL - some containers need to be updated"
|
echo -n "CRITICAL - ${#ERRORS[@]} container(s) need to be updated"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "UNKNOWN - fail to retrieve status of some containers"
|
echo -n "UNKNOWN - fail to retrieve status of ${#UNKNOWNS[@]} container(s)"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Add performance data
|
||||||
|
echo " |$( implode " " "${PERF_DATA[@]}" )"
|
||||||
|
|
||||||
|
# Display details, starting by errors
|
||||||
for container in ${!ERRORS[@]}
|
for container in ${!ERRORS[@]}
|
||||||
do
|
do
|
||||||
echo ${container} - ${ERRORS[${container}]}
|
echo ${container} - ${ERRORS[${container}]}
|
||||||
done
|
done
|
||||||
|
|
||||||
for container in ${!UPTODATE[@]}
|
for container in ${!UP_TO_DATE[@]}
|
||||||
do
|
do
|
||||||
echo ${container} - ${UPTODATE[${container}]}
|
echo ${container} - ${UP_TO_DATE[${container}]}
|
||||||
done
|
done
|
||||||
|
|
||||||
exit $EXIT_CODE
|
exit $EXIT_CODE
|
||||||
|
|
Loading…
Reference in a new issue