From 3155c744b3924e68213e542b9a22d858bb64cf83 Mon Sep 17 00:00:00 2001 From: "Suren A. Chilingaryan" Date: Mon, 16 Apr 2018 10:52:27 +0200 Subject: Provision monitoring scripts on request --- roles/ands_monitor/defaults/main.yml | 1 + roles/ands_monitor/tasks/main.yml | 9 ++++++ .../templates/scripts/check_server_status.sh.j2 | 34 ++++++++++++++++++++++ .../templates/scripts/check_uptime_status.sh.j2 | 8 +++++ 4 files changed, 52 insertions(+) create mode 100644 roles/ands_monitor/defaults/main.yml create mode 100644 roles/ands_monitor/tasks/main.yml create mode 100755 roles/ands_monitor/templates/scripts/check_server_status.sh.j2 create mode 100755 roles/ands_monitor/templates/scripts/check_uptime_status.sh.j2 (limited to 'roles') diff --git a/roles/ands_monitor/defaults/main.yml b/roles/ands_monitor/defaults/main.yml new file mode 100644 index 0000000..ee3cb7b --- /dev/null +++ b/roles/ands_monitor/defaults/main.yml @@ -0,0 +1 @@ +ands_script_path: "/opt/scripts" diff --git a/roles/ands_monitor/tasks/main.yml b/roles/ands_monitor/tasks/main.yml new file mode 100644 index 0000000..ac70d28 --- /dev/null +++ b/roles/ands_monitor/tasks/main.yml @@ -0,0 +1,9 @@ +- name: Create scripts directory + file: path="{{ ands_script_path }}" state=directory + +- name: "Deploy scripts" + template: src="{{ item | quote }}" dest="{{ ands_script_path }}/{{ script_name }}" owner=root group=root mode=0755 + vars: + script_name: "{{ item | basename | regex_replace('\\.j2','') }}" + with_fileglob: + - "{{ role_path }}/templates/scripts/*.j2" diff --git a/roles/ands_monitor/templates/scripts/check_server_status.sh.j2 b/roles/ands_monitor/templates/scripts/check_server_status.sh.j2 new file mode 100755 index 0000000..caa63ce --- /dev/null +++ b/roles/ands_monitor/templates/scripts/check_server_status.sh.j2 @@ -0,0 +1,34 @@ +#!/bin/bash + +fs=`df -lm / | grep -vi Filesystem | sed -e 's/[[:space:]]\+/ /g' | cut -d ' ' -f 4` +datafs=`df -lm /mnt/ands | grep -vi Filesystem | sed -e 's/[[:space:]]\+/ /g' | cut -d ' ' -f 4` +mem=`free -g | grep "Mem" | sed -e 's/[[:space:]]\+/ /g' | cut -d ' ' -f 7` +cpu=`uptime | sed -e "s/[[:space:]]/\n/g" | tail -n 1` + +if [ $fs -le 8192 ]; then + echo "Only $(($fs / 1024)) GB left in the root file system" +fi + +if [ $datafs -le 1048576 ]; then + echo "Only $(($datafs / 1024)) GB left in the data file system" +fi + +if [ $mem -le 16 ]; then + echo "The system is starving on memory, $mem GB left free" +fi + +if [ `echo "$cpu < 20" | bc` -eq 0 ]; then + echo "The system is starving on cpu, $cpu is load average for the last 15 min" +fi + +vol=$(/opt/MegaRAID/storcli/storcli64 /c0/v0 show | grep -P "^0/0" | grep "Optl" | wc -l) +if [ -z "$vol" -o "$vol" -eq 0 ]; then + echo "Raid volume is not optimal:" + /opt/MegaRAID/storcli/storcli64 /c0/v0 show | grep -P "^0/0" +fi + +disks=$(/opt/MegaRAID/storcli/storcli64 /c0 show | grep -P "(HDD|SSD)" | grep -v "Onln" | wc -l) +if [ -z "$disks" -o "$disks" -ne 0 ]; then + echo "Not all disks are online:" + /opt/MegaRAID/storcli/storcli64 /c0 show | grep -P "(HDD|SSD)" | grep -v "Onln" +fi diff --git a/roles/ands_monitor/templates/scripts/check_uptime_status.sh.j2 b/roles/ands_monitor/templates/scripts/check_uptime_status.sh.j2 new file mode 100755 index 0000000..0602fcb --- /dev/null +++ b/roles/ands_monitor/templates/scripts/check_uptime_status.sh.j2 @@ -0,0 +1,8 @@ +#!/bin/bash + +up=$(uptime | cut -d ' ' -f 4- | cut -d ',' -f 1 | sed -re 's/^\s*//') +load=$(uptime | cut -d ' ' -f 4- | cut -d ',' -f 4- | cut -d ':' -f 2 | cut -d ',' -f 3 | sed -re 's/^\s*//') +disks=$(/opt/MegaRAID/storcli/storcli64 /c0 show | grep -P "(HDD|SSD)" | grep "Onln" | wc -l) +data=`df -lh /mnt/ands | grep -vi Filesystem | sed -e 's/[[:space:]]\+/ /g' | cut -d ' ' -f 4` + +echo -n "1 Up $up \${color gray}/ $disks disks, $data free, load: $load" -- cgit v1.2.1