db: refs #8414 - add systemd service timmer for collectd data and nrpe adjust threshold
This commit is contained in:
parent
26988f3ea8
commit
6984cd1ece
roles/db
files
nrpe
processes_systemd
scripts
tasks
|
@ -2,3 +2,5 @@ command[check_disk_mysqldata]=/usr/lib/nagios/plugins/check_disk -w 10% -c 5% -p
|
|||
command[check_disk_mysqlbin]=/usr/lib/nagios/plugins/check_disk -w 10% -c 5% -p /mnt/mysqlbin
|
||||
command[check_disk_backup]=/usr/lib/nagios/plugins/check_disk -w 10% -c 5% -p /mnt/local-backup
|
||||
command[check_mysql_scheduler]=/etc/nagios/plugins/check_mysql_scheduler
|
||||
command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 600 -c 700
|
||||
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
[Unit]
|
||||
Description=Collect system processes and stats
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/root/scripts/collect_processes.sh
|
|
@ -0,0 +1,86 @@
|
|||
[Unit]
|
||||
Description=Timer for collecting system processes and stats
|
||||
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 00:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:30:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:35:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:40:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:45:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:50:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 00:55:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:30:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:35:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:40:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:45:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:50:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 01:55:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:30:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:35:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:40:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:45:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:50:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 02:55:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:30:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:35:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:40:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:45:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:50:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 03:55:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:30:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:35:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:40:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:45:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:50:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 04:55:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:30:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:35:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:40:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:45:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:50:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 05:55:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:00:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:05:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:10:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:15:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:20:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:25:00 Europe/Madrid
|
||||
OnCalendar=*-*-* 06:30:00 Europe/Madrid
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
# Script to collect system and process data for monitoring.
|
||||
#
|
||||
# Author: Xavi Lleó
|
||||
# Copyright (c) 2025 Verdnatura S.L. All rights reserved.
|
||||
# Version: 1.0.0
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Description:
|
||||
# This script collects system statistics and process information
|
||||
# and logs it to a file in /var/log/processes. It includes:
|
||||
# - CPU and memory usage with `top`
|
||||
# - Process queue statistics with `sar`
|
||||
# - Nagios process count check
|
||||
# - MySQL process list
|
||||
#
|
||||
# Execution:
|
||||
# The script is designed to be executed by a systemd timer every 5 minutes
|
||||
# between 02:30 and 06:30 AM daily. The timer is configured to run the
|
||||
# script located at /usr/local/bin/monitor_processes.sh.
|
||||
#
|
||||
# Log Location:
|
||||
# The log file will be stored in /var/log/processes with a timestamp in the filename.
|
||||
#
|
||||
# Example Timer Configuration:
|
||||
# The following systemd timer will execute the script every 5 minutes
|
||||
# between 02:30 and 06:30 AM:
|
||||
#
|
||||
# [Timer]
|
||||
# OnCalendar=*-*-* 02:30:00
|
||||
# Persistent=true
|
||||
# OnBootSec=10min
|
||||
# OnUnitActiveSec=5min
|
||||
# Until=*-*-* 06:30:00
|
||||
#
|
||||
# [Service]
|
||||
# Type=oneshot
|
||||
# ExecStart=/usr/local/bin/monitor_processes.sh
|
||||
#
|
||||
# Ensure that the systemd timer and service are enabled to run as expected.
|
||||
|
||||
LOG_DIR="/var/log/processes"
|
||||
mkdir -p "$LOG_DIR"
|
||||
|
||||
timestamp() {
|
||||
date +'%Y_%m_%d-%H:%M:%S'
|
||||
}
|
||||
|
||||
LOG_FILE="$LOG_DIR/processes_$(timestamp).log"
|
||||
|
||||
log() {
|
||||
echo "$1" >> "$LOG_FILE"
|
||||
}
|
||||
|
||||
check_command() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
log "Process and system data collection - $(timestamp)"
|
||||
log "-------------------------------------------"
|
||||
|
||||
commands=(
|
||||
"/usr/bin/top -b -n 1"
|
||||
"/usr/bin/sar -q 1 10"
|
||||
"/usr/lib/nagios/plugins/check_procs"
|
||||
"/usr/bin/mysql -Bse 'show processlist;'"
|
||||
)
|
||||
|
||||
for cmd in "${commands[@]}"; do
|
||||
cmd_name=$(echo $cmd | cut -d' ' -f1)
|
||||
|
||||
if check_command "$cmd_name"; then
|
||||
log "### Executing $cmd_name ###"
|
||||
eval $cmd >> "$LOG_FILE" 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
log "Error executing '$cmd_name'"
|
||||
fi
|
||||
else
|
||||
log "Skipping execution of '$cmd_name' due to missing command"
|
||||
fi
|
||||
done
|
||||
|
||||
log "-------------------------------------------"
|
||||
log "Log finished - $(timestamp)"
|
||||
|
|
@ -135,7 +135,7 @@
|
|||
|
||||
- when: mysql_dir.stat.exists
|
||||
block:
|
||||
|
||||
|
||||
- name: Sync MySQL data directory
|
||||
synchronize:
|
||||
src: /var/lib/mysql/
|
||||
|
@ -153,3 +153,28 @@
|
|||
- name: Mount all filesystems from /etc/fstab
|
||||
command: mount -a
|
||||
when: fstab.changed
|
||||
|
||||
- name: Copy systemd service and timer files
|
||||
copy:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
loop:
|
||||
- { src: 'processes_systemd/process_monitor.service', dest: '/lib/systemd/system/process_monitor.service' }
|
||||
- { src: 'processes_systemd/process_monitor.timer', dest: '/lib/systemd/system/process_monitor.timer' }
|
||||
notify: reload-systemd
|
||||
|
||||
- name: Copy collect_processes script to root path scripts
|
||||
copy:
|
||||
src: scripts/collect_processes.sh
|
||||
dest: /root/scripts/collect_processes.sh
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0755'
|
||||
- name: Enable process_monitor timer without starting it
|
||||
systemd:
|
||||
name: process_monitor.timer
|
||||
enabled: true
|
||||
state: stopped
|
||||
|
|
Loading…
Reference in New Issue