Initial commit of healthcheck script
This commit is contained in:
parent
9312f812c8
commit
2ca06eb92a
49
healthcheck.py
Normal file
49
healthcheck.py
Normal file
@ -0,0 +1,49 @@
|
||||
import requests
|
||||
import subprocess
|
||||
|
||||
from dotenv import load_dotenv
|
||||
from os import getenv
|
||||
from time import sleep
|
||||
|
||||
load_dotenv()
|
||||
|
||||
CHECK_INTERVAL = int(getenv('CHECK_INTERVAL'))
|
||||
|
||||
CONFIG = [
|
||||
{'url': getenv('MOSHFERATU_DEV_URL'), 'container_name': getenv('MOSHFERATU_DEV_CONTAINER')},
|
||||
{'url': getenv('MOSHINGTON_URL'), 'container_name': getenv('MOSHINGTON_CONTAINER')}
|
||||
]
|
||||
|
||||
def healthy(url):
|
||||
"""Check the health of a web application by pinging the given URL."""
|
||||
try:
|
||||
response = requests.get(url, timeout = 20)
|
||||
if response.status_code == 200:
|
||||
print(f'Healthcheck successful for {url}')
|
||||
return True
|
||||
else:
|
||||
print(f'Healthcheck failed for {url} with status code: {response.status_code}')
|
||||
return False
|
||||
except requests.RequestException as e:
|
||||
print(f'Healthcheck request failed for {url}: {e}')
|
||||
return False
|
||||
|
||||
def restart_docker_container(container_name):
|
||||
"""Restart the specified Docker container."""
|
||||
print(f'Restarting Docker container: {container_name}...')
|
||||
result = subprocess.run(['docker', 'restart', container_name], capture_output = True, text = True)
|
||||
if result.returncode == 0:
|
||||
print(f'Docker container {container_name} restarted successfully.')
|
||||
else:
|
||||
print(f'Failed to restart Docker container {container_name}: {result.stderr}')
|
||||
|
||||
if __name__ == '__main__':
|
||||
while True:
|
||||
for config in CONFIG:
|
||||
url = config['url']
|
||||
container_name = config['container_name']
|
||||
|
||||
if not healthy(url):
|
||||
restart_docker_container(container_name)
|
||||
|
||||
sleep(CHECK_INTERVAL)
|
Loading…
Reference in New Issue
Block a user