added script
This commit is contained in:
parent
c89aac328b
commit
276e157dcf
3
.gitignore
vendored
3
.gitignore
vendored
@ -158,5 +158,6 @@ cython_debug/
|
|||||||
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
||||||
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
.idea/
|
||||||
|
|
||||||
|
checks.yaml
|
||||||
|
40
docker-healthcheck.py
Normal file
40
docker-healthcheck.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# /usr/bin/env python3
|
||||||
|
|
||||||
|
import requests
|
||||||
|
import yaml
|
||||||
|
import docker
|
||||||
|
import docker.errors
|
||||||
|
|
||||||
|
|
||||||
|
def read_checks() -> dict:
|
||||||
|
with open("./checks.yaml") as f:
|
||||||
|
checks = yaml.safe_load(f)
|
||||||
|
return checks
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> None:
|
||||||
|
checks = read_checks()
|
||||||
|
if "self" in checks:
|
||||||
|
requests.get(checks["self"])
|
||||||
|
|
||||||
|
client = docker.from_env()
|
||||||
|
for container_id in checks:
|
||||||
|
if container_id == "self":
|
||||||
|
continue
|
||||||
|
try:
|
||||||
|
container = client.containers.get(container_id)
|
||||||
|
container_status = container.attrs["State"]["Status"]
|
||||||
|
if container_status in ["healthy", "running"]:
|
||||||
|
requests.post(checks[container_id])
|
||||||
|
else:
|
||||||
|
requests.post(
|
||||||
|
checks[container_id] + "/fail",
|
||||||
|
f"Container has status '{container_status}' which is not one of 'healthy' or 'running'"
|
||||||
|
)
|
||||||
|
except docker.errors.NotFound:
|
||||||
|
if "self" in checks:
|
||||||
|
requests.post(checks["self"] + "/fail", f"Container '{container_id}' not found.")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
Loading…
Reference in New Issue
Block a user