add check_systemd_service, update service files, other minor adjustments

This commit is contained in:
Cyberes 2024-03-28 20:50:10 -06:00
parent 85c6156f97
commit 87d752780a
5 changed files with 71 additions and 4 deletions

View File

@ -12,7 +12,7 @@ from checker.types import try_int
## MySQL User Setup ## ## MySQL User Setup ##
Attention: The DB-user you type in must have CLIENT REPLICATION rights on the DB-server. Example: Attention: The DB-user you type in must have CLIENT REPLICATION rights on the DB-server. Example:
GRANT REPLICATION CLIENT on *.* TO 'nagios'@'monitoringhost' IDENTIFIED BY 'secret'; GRANT REPLICATION CLIENT,SLAVE MONITOR on *.* TO 'nagios'@'monitoringhost' IDENTIFIED BY 'secret';
If you use MariaDB 10.5 or newer, the DB user must have REPLICA MONITOR rights: If you use MariaDB 10.5 or newer, the DB user must have REPLICA MONITOR rights:
GRANT REPLICA MONITOR ON *.* TO 'nagios'@'monitoringhost' IDENTIFIED BY 'secret'; GRANT REPLICA MONITOR ON *.* TO 'nagios'@'monitoringhost' IDENTIFIED BY 'secret';

View File

@ -13,6 +13,7 @@ from proxmoxer import ProxmoxAPI, ResourceException
import checker.nagios as nagios import checker.nagios as nagios
from checker.markdown import list_to_markdown_table from checker.markdown import list_to_markdown_table
from checker.result import quit_check
from checker.units import filesize from checker.units import filesize
parser = argparse.ArgumentParser(description='Check the Proxmox API for network traffic for a host.') parser = argparse.ArgumentParser(description='Check the Proxmox API for network traffic for a host.')
@ -142,6 +143,9 @@ def main():
continue continue
check_data[metric]['value'] = avg check_data[metric]['value'] = avg
if not avg:
quit_check('no data', nagios.STATE_UNKNOWN)
if metrics_levels[metric]['type'] == 'filesize': if metrics_levels[metric]['type'] == 'filesize':
check_data[metric]['value_str'] = filesize(avg) check_data[metric]['value_str'] = filesize(avg)
check_data[metric]['value'] = f'{int(avg)}B' check_data[metric]['value'] = f'{int(avg)}B'

61
check_systemd_service.sh Executable file
View File

@ -0,0 +1,61 @@
#!/bin/bash
function usage {
echo "Usage:
-u [UNIT name]
-t Service is triggered by a timer and is allowed to be inactive"
}
# Initialize variables
UNIT=""
IS_TIMER=false
# Parse command line arguments
while getopts "u:t" opt; do
case ${opt} in
u )
UNIT=$OPTARG
;;
t )
IS_TIMER=true
;;
\? )
echo "Invalid option: $OPTARG" 1>&2
exit 1
;;
: )
echo "Invalid option: $OPTARG requires an argument" 1>&2
exit 1
;;
esac
done
shift $((OPTIND -1))
# Check if UNIT name is provided
if [ -z "$UNIT" ]; then
usage
exit -1
fi
# Check if the unit is enabled
enabled=$(systemctl is-enabled "$UNIT")
if [ "$enabled" != "enabled" ]; then
echo "CRITICAL - $UNIT is not enabled"
exit 2
fi
# Check if the unit is active
active=$(systemctl is-active "$UNIT")
substate=$(systemctl show "$UNIT" --property=SubState --value)
if [ "$active" != "active" ] || { [ "$substate" = "exited" ] && [ "$IS_TIMER" = false ]; }; then
echo "CRITICAL - $UNIT is not active"
exit 2
fi
if [ "$IS_TIMER" = true ] && [ "$substate" = "exited" ]; then
echo "OK - $UNIT is active (exited) and enabled"
else
echo "OK - $UNIT is active and enabled"
fi
exit 0

View File

@ -7,7 +7,8 @@ Requires=icinga2.service icinga-director.service
User=flask User=flask
ExecStart=/opt/venvs/icinga2/icinga2_checks/bin/python3 /opt/icinga2-checks/Other/fail-overdue.py --password XXXXX --insecure ExecStart=/opt/venvs/icinga2/icinga2_checks/bin/python3 /opt/icinga2-checks/Other/fail-overdue.py --password XXXXX --insecure
SyslogIdentifier=failoverdue SyslogIdentifier=failoverdue
Restart=always Restart=on-failure
RestartSec=5s
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View File

@ -9,7 +9,8 @@ Environment="ICINGA2KUMA_ICINGA2_PW=[your icinga2 API password]"
WorkingDirectory=/opt/icinga2-checks/Other WorkingDirectory=/opt/icinga2-checks/Other
ExecStart=/opt/venvs/icinga2/icinga2_checks/bin/gunicorn -b 0.0.0.0:8081 -w 4 icinga2kuma:app ExecStart=/opt/venvs/icinga2/icinga2_checks/bin/gunicorn -b 0.0.0.0:8081 -w 4 icinga2kuma:app
SyslogIdentifier=icinga2kuma SyslogIdentifier=icinga2kuma
Restart=always Restart=on-failure
RestartSec=5s
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target