monitor server onpremise
This commit is contained in:
parent
f2121c3412
commit
25045cf072
162
run.py
Normal file
162
run.py
Normal file
|
@ -0,0 +1,162 @@
|
|||
import os
|
||||
import re
|
||||
from time import sleep
|
||||
from datetime import datetime
|
||||
import time
|
||||
import requests
|
||||
import json
|
||||
# import schedule
|
||||
|
||||
bot_token_gr = "1072981445:AAGR5pcUbHI7acIvcRQWRTAmCIMPG4dacn4"
|
||||
bot_chatID_gr = "-329625622"
|
||||
bot_token_SOnTV = "1915371572:AAElb2Ea3ZzAoZvOM2B8DrjmtCtANtMppt0"
|
||||
bot_chatID_SOnTV = "763038225"
|
||||
name_server = 'Server Richy'
|
||||
service = 'docker'
|
||||
now = datetime.now()
|
||||
current_time = now.strftime("%H:%M:%S")
|
||||
memUsed = 0
|
||||
def check_stt_service():
|
||||
status = os.popen('sudo service' + ' ' + service + ' ' + 'status | grep running | wc -l')
|
||||
stt = status.read()
|
||||
return stt
|
||||
|
||||
def monitor_docker():
|
||||
lines = readfile()
|
||||
status_service = check_stt_service().split("\n")[0]
|
||||
print('Service docker status = ' + status_service)
|
||||
if status_service == '1':
|
||||
for line in lines:
|
||||
print(line.strip())
|
||||
l = line.strip().split('_')
|
||||
lts = ''.join([str(e) for e in l])
|
||||
# o = os.popen('docker inspect' + ' ' + line.strip())
|
||||
try:
|
||||
o = os.popen('sudo docker inspect' + ' ' + line.strip())
|
||||
data = json.loads(o.read())
|
||||
# print(data)
|
||||
try:
|
||||
stt = data[0]['State']['Health']['Status']
|
||||
# print(stt)
|
||||
if stt == 'healthy':
|
||||
print('docker inspect service ' + line.strip() + ' = ' + stt)
|
||||
pass
|
||||
else:
|
||||
print('docker inspect service ' + line.strip() + ' = ' + stt)
|
||||
telegram_bot_sendtext(name_server + ' ' + ' container' + ' ' + lts + ' ' + stt)
|
||||
except:
|
||||
stt = data[0]['State']['Status']
|
||||
# print(stt)
|
||||
if stt == 'running':
|
||||
print(stt)
|
||||
pass
|
||||
else:
|
||||
print('docker inspect service ' + line.strip() + ' = ' + stt)
|
||||
# print('---------------------')
|
||||
telegram_bot_sendtext(name_server + ' container' + ' ' + lts + ' ' + stt)
|
||||
except:
|
||||
print('Do not inspect service ' + line.strip())
|
||||
telegram_bot_sendtext(name_server + ' ' + ' container' + ' ' + lts + ' ' + ' not inspect')
|
||||
else:
|
||||
print(status_service)
|
||||
telegram_bot_sendtext(name_server + ' service ' + service + ' status dead. Turn on now!!!')
|
||||
|
||||
|
||||
def get_memory():
|
||||
t = time.localtime()
|
||||
dtime = (str(t.tm_hour) + ':' + str(t.tm_min) + ':' + str(t.tm_sec) + ' ' + str(t.tm_mday) + '/' + str(t.tm_mon) + '/' + str(t.tm_year))
|
||||
hournow = t.tm_hour
|
||||
cmd = 'cat /proc/meminfo'
|
||||
i = os.popen(cmd).read()
|
||||
mem = i.split()
|
||||
memTotal = float(mem[1])
|
||||
memAvailable = float(mem[7])
|
||||
memUsed = round((memTotal - memAvailable) * 100 / memTotal)
|
||||
swapTotal = float(mem[43])
|
||||
swapFree = float(mem[46])
|
||||
swapUsed = round((swapTotal-swapFree) * 100 /swapTotal)
|
||||
if memUsed >= 80:
|
||||
print(str(dtime) + ' ' + 'Memory used: ', memUsed, '%')
|
||||
# telegram_bot_sendtext(name_server + ' ' + ' memory used:' + ' ' + str(memUsed))
|
||||
if hournow in range(1,5):
|
||||
print(hournow)
|
||||
print("Send message to telegram!!!")
|
||||
telegram_bot_sendtext(name_server + ' ' + ' % Memory used:' + ' ' + str(memUsed) + ' . reboot server')
|
||||
# os.system('sudo reboot')
|
||||
else:
|
||||
print("Send message to telegram!!!")
|
||||
telegram_bot_sendtext(name_server + ' ' + ' % Memory used:' + ' ' + str(memUsed))
|
||||
else:
|
||||
print(str(dtime) + ' ' + 'Memory used: ', memUsed, '%')
|
||||
if swapUsed >= 80:
|
||||
print(str(dtime) + ' ' + 'Swap used: ', swapUsed, '%')
|
||||
telegram_bot_sendtext(name_server + ' ' + ' % Swap used:' + ' ' + str(swapUsed))
|
||||
else:
|
||||
print(str(dtime) + ' ' + 'Swap used: ', swapUsed, '%')
|
||||
return memUsed, swapUsed
|
||||
|
||||
def get_cpu():
|
||||
t = time.localtime()
|
||||
dtime = (str(t.tm_hour) + ':' + str(t.tm_min) + ':' + str(t.tm_sec) + ' ' + str(t.tm_mday) + '/' + str(t.tm_mon) + '/' + str(t.tm_year))
|
||||
cmd = 'grep "cpu " /proc/stat'
|
||||
output = os.popen(cmd)
|
||||
cpu = output.read().strip().split(' ')
|
||||
user = float(cpu[2])
|
||||
system = float(cpu[4])
|
||||
idle = float(cpu[5])
|
||||
cpu_used = round((user + system)*100 / (user + system + idle), 1)
|
||||
if cpu_used >= 80:
|
||||
print(str(dtime) + ' ' + 'CPU used: ', cpu_used, '%')
|
||||
telegram_bot_sendtext(name_server + ' ' + 'CPU used:' + ' ' + str(cpu_used))
|
||||
else:
|
||||
print(str(dtime) + ' ' + 'CPU used: ', cpu_used, '%')
|
||||
pass
|
||||
|
||||
def get_free_space():
|
||||
cmd = 'df -H /dev/sda2 --output=pcent'
|
||||
output = os.popen(cmd).read().split("\n")
|
||||
d_used = output[1].split("%")
|
||||
d = d_used[0].split(" ")
|
||||
if int(d[1]) >= 95:
|
||||
disk = d[1]
|
||||
print("Disk_used = " + d[1] + "%")
|
||||
telegram_bot_sendtext(name_server + ' ' + '% DISK used =' + ' ' + disk)
|
||||
else:
|
||||
print("Disk_used = " + d[1] + "%")
|
||||
pass
|
||||
|
||||
def telegram_bot_sendtext(bot_message):
|
||||
bot_token = bot_token_gr
|
||||
bot_chatID = bot_chatID_gr
|
||||
send_text = 'https://api.telegram.org/bot' + bot_token + '/sendMessage?chat_id=' + bot_chatID + '&parse_mode=Markdown&text=' + bot_message
|
||||
|
||||
response = requests.get(send_text)
|
||||
return response.json()
|
||||
|
||||
def readfile():
|
||||
try:
|
||||
file = open('hosts.txt', 'r')
|
||||
Lines = file.readlines()
|
||||
return Lines
|
||||
finally:
|
||||
file.close()
|
||||
mem = get_memory()
|
||||
bot_message = (name_server + ' ' + 'memory used:' + ' ' + str(mem[0]) + ' ' + 'swapused:' + ' ' + str(mem[1]))
|
||||
while(True):
|
||||
now = datetime.now()
|
||||
current_time = now.strftime("%H:%M")
|
||||
print("current_time = " + current_time)
|
||||
time_now = time.localtime()
|
||||
get_free_space()
|
||||
get_cpu()
|
||||
get_memory()
|
||||
# mem = get_memory()
|
||||
|
||||
bot_test = ("hello")
|
||||
if current_time == '09:00':
|
||||
telegram_bot_sendtext(bot_message)
|
||||
monitor_docker()
|
||||
# print(memUsed)
|
||||
# print(swapUsed)
|
||||
|
||||
sleep(59)
|
Loading…
Reference in New Issue
Block a user