Resolves issue #4
This commit is contained in:
parent
c4edd9badd
commit
39059f342e
2 changed files with 61 additions and 40 deletions
|
@ -1,6 +1,7 @@
|
||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
|
|
||||||
monitoringPeriod = 30
|
hostMonitoringPeriod = 5
|
||||||
|
urlMonitoringPeriod = 10
|
||||||
urls = ["https://www.bootlesshacker.com"]
|
urls = ["https://www.bootlesshacker.com"]
|
||||||
urlTimeout = 10
|
urlTimeout = 10
|
||||||
maxWorkers = 4
|
maxWorkers = 4
|
||||||
|
|
34
main.py
34
main.py
|
@ -28,12 +28,15 @@ import os
|
||||||
import time
|
import time
|
||||||
import log
|
import log
|
||||||
import requests
|
import requests
|
||||||
|
import threading
|
||||||
from functools import partial
|
from functools import partial
|
||||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||||
from bs4 import BeautifulSoup
|
from bs4 import BeautifulSoup
|
||||||
|
|
||||||
def loadUrl(url):
|
def loadUrl(url):
|
||||||
|
|
||||||
|
headers = { 'User-Agent': 'Monutil monitor' }
|
||||||
|
|
||||||
response = requests.get(url, timeout=config.urlTimeout, headers=headers)
|
response = requests.get(url, timeout=config.urlTimeout, headers=headers)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
@ -43,6 +46,8 @@ def prepareUrl(src, baseUrl):
|
||||||
return baseUrl.rstrip("/") + "/" + src.lstrip("/")
|
return baseUrl.rstrip("/") + "/" + src.lstrip("/")
|
||||||
return src
|
return src
|
||||||
|
|
||||||
|
def monitorHost():
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
|
|
||||||
load1, load5, load15 = psutil.getloadavg() # this takes time to warm up if not running script on *nix
|
load1, load5, load15 = psutil.getloadavg() # this takes time to warm up if not running script on *nix
|
||||||
|
@ -55,11 +60,11 @@ while True:
|
||||||
print("CPU %: " + str(loadavg))
|
print("CPU %: " + str(loadavg))
|
||||||
print("Memory %: " + str(memory))
|
print("Memory %: " + str(memory))
|
||||||
|
|
||||||
# Log CPU/Memory
|
time.sleep(config.hostMonitoringPeriod)
|
||||||
|
|
||||||
headers = {
|
def monitorUrls():
|
||||||
'User-Agent': 'Monutil monitor'
|
|
||||||
}
|
while True:
|
||||||
|
|
||||||
for url in config.urls:
|
for url in config.urls:
|
||||||
|
|
||||||
|
@ -75,20 +80,35 @@ while True:
|
||||||
imageUrls = [img['src'] for img in html.find_all('img')]
|
imageUrls = [img['src'] for img in html.find_all('img')]
|
||||||
|
|
||||||
with ThreadPoolExecutor(max_workers=config.maxWorkers) as executor:
|
with ThreadPoolExecutor(max_workers=config.maxWorkers) as executor:
|
||||||
responses = [executor.submit(loadUrl, prepareUrl(url, baseUrl)) for url in imageUrls]
|
|
||||||
|
|
||||||
|
responses = [executor.submit(loadUrl, prepareUrl(url, baseUrl)) for url in imageUrls]
|
||||||
responses = [future.result() for future in as_completed(responses)]
|
responses = [future.result() for future in as_completed(responses)]
|
||||||
|
|
||||||
for response in responses:
|
for response in responses:
|
||||||
|
|
||||||
if not response.status_code == 200:
|
if not response.status_code == 200:
|
||||||
urlFail = True
|
urlFail = True
|
||||||
|
|
||||||
endTime = time.time()
|
endTime = time.time()
|
||||||
timeDiff = endTime - startTime
|
timeDiff = endTime - startTime
|
||||||
|
|
||||||
print(timeDiff)
|
print(timeDiff)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
|
||||||
urlFail = True
|
urlFail = True
|
||||||
|
|
||||||
time.sleep(config.monitoringPeriod)
|
time.sleep(config.urlMonitoringPeriod)
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
hostMonitorThread = threading.Thread(target=monitorHost)
|
||||||
|
urlMonitorThread = threading.Thread(target=monitorUrls)
|
||||||
|
|
||||||
|
hostMonitorThread.start()
|
||||||
|
urlMonitorThread.start()
|
||||||
|
|
||||||
|
hostMonitorThread.join()
|
||||||
|
urlMonitorThread.join()
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
Loading…
Add table
Reference in a new issue