Bash Script to send report to telegram if high resource usage is found in the server.
Here is a bash script that can monitor server load and memory usage at regular intervals. It has been tested on Centos 7. The telegram API is used to send attachment instead of just text message. This is because sending text has character limit. Resource usage statistics can be sent in attachment instead of plain message.
#!/bin/bash#This script monitors server load and memory usage for every 10 seconds and sends notification to telegram in case of high usage.#Include telegram chat id and bot token ID herechat_id="123456789"token="112233445:AABbcd1FfggHHi22jkLmmn0PPQQRstu"#Temporary files to store dataresource_usage_info=/tmp/resource_usage_info.txtmsg_caption=/tmp/telegram_msg_caption.txt#Set threshold levels for memory usage and load here. If the usage exceeds these values, the notification will be sent.mem_threshold=90 #Should be interger. This is in percentageload_threshold=$(nproc) #Should be integer. Usually total number of cores.#Telegram API to send notificaiton.function telegram_send{curl -s -F chat_id=$chat_id -F document=@$resource_usage_info -F caption="$caption" https://api.telegram.org/bot$token/sendDocument > /dev/null 2&>1}#Monitoring Load on the serverwhile :do min_load=$(cat /proc/loadavg | cut -d . -f1) if [ $min_load -ge $load_threshold ] then echo -e "High CPU usage detected on $(hostname)\n$(uptime)" > $msg_caption echo -e "CPU usage report from $(hostname)\nServer Time : $(date +"%d%b%Y %T")\n\n\$uptime\n$(uptime)\n\n%CPU %MEM USER\tCMD" > $resource_usage_info ps -eo pcpu,pmem,user,cmd | sed '1d' | sort -nr >> $resource_usage_info caption=$(<$msg_caption) telegram_send rm -f $resource_usage_info rm -f $msg_caption sleep 900 #stop executing script for 15 minutes fi sleep 10#Monitoring Memory usage on the server mem=$(free -m) mem_usage=$(echo "$mem" | awk 'NR==2{printf "%i\n", ($3*100/$2)}') if [ $mem_usage -gt $mem_threshold ] then echo -e "High Memory usage detected on $(hostname)\n$(echo $mem_usage% memory usage)" > $msg_caption echo -e "Memory consumption Report from $(hostname)\nServer Time : $(date +"%d%b%Y %T")\n\n\$free -m output\n$mem\n\n%MEM %CPU USER\tCMD" > $resource_usage_info ps -eo pmem,pcpu,user,cmd | sed '1d' | sort -nr >> $resource_usage_info caption=$(<$msg_caption) telegram_send rm -f $resource_usage_info rm -f $msg_caption sleep 900 #stop executing script for 15 minutes fi sleep 10done
No comments:
Post a Comment
Thank You , For Immediate Assistance Plz Put Email Copy to Deviceporting@gmail.com