Migrate services part
This commit is contained in:
parent
7c59e4ae57
commit
73bce8f6e5
157 changed files with 3883 additions and 9 deletions
roles/healthcheck/files
7
roles/healthcheck/files/Dockerfile
Normal file
7
roles/healthcheck/files/Dockerfile
Normal file
|
@ -0,0 +1,7 @@
|
|||
FROM ubuntu
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt update -y \
|
||||
&& apt install -y curl dnsutils msmtp gettext-base python3-pip python3-requests \
|
||||
&& pip install matrix-nio
|
54
roles/healthcheck/files/data/http
Executable file
54
roles/healthcheck/files/data/http
Executable file
|
@ -0,0 +1,54 @@
|
|||
#!/usr/bin/sh
|
||||
|
||||
cd /opt/ || exit
|
||||
|
||||
hc_url="https://hc-ping.com/$HTTP_HC_UID"
|
||||
services_down=""
|
||||
error=""
|
||||
|
||||
alias curl_hc='curl -LA "$USER_AGENT" --retry 3'
|
||||
|
||||
check_url ()
|
||||
{
|
||||
url="https://$1$2"
|
||||
printf "checking url %s ." "$url"
|
||||
dig A "$1" >/dev/null
|
||||
printf "."
|
||||
result=$(curl -LsSfv --connect-timeout 30 --retry 3 "$url" 2>&1)
|
||||
code="$?"
|
||||
printf ".\n"
|
||||
#shellcheck disable=SC2181
|
||||
if [ "$code" = "0" ]
|
||||
then
|
||||
echo "... good"
|
||||
else
|
||||
services_down=$(printf "%s\n%s" "$services_down" "$1")
|
||||
error=$(printf "%s\n==========\n%s:\n%s" "$error" "$1" "$result")
|
||||
echo "... bad"
|
||||
fi
|
||||
}
|
||||
|
||||
#check_url "acme.serguzim.me" "/health"
|
||||
check_url "analytics.serguzim.me"
|
||||
check_url "auth.serguzim.me"
|
||||
check_url "ci.serguzim.me"
|
||||
#check_url "cloud.serguzim.me" "/login?noredir=1"
|
||||
check_url "git.serguzim.me"
|
||||
check_url "hook.serguzim.me"
|
||||
check_url "mail.serguzim.me"
|
||||
#check_url "msrg.cc" # disabled because it keeps creating false alerts
|
||||
check_url "registry.serguzim.me" "/account/sign-in"
|
||||
check_url "rss.serguzim.me"
|
||||
#check_url "serguzim.me" # disabled because it keeps creating false alerts
|
||||
check_url "status.serguzim.me" "/status/serguzim-net"
|
||||
check_url "tick.serguzim.me"
|
||||
check_url "wiki.serguzim.me"
|
||||
check_url "www.reitanlage-oranienburg.de"
|
||||
|
||||
if [ "$error" = "" ]
|
||||
then
|
||||
curl_hc "$hc_url" >/dev/null
|
||||
echo "ALL GOOD"
|
||||
else
|
||||
curl_hc --data-raw "$services_down$error" "$hc_url/fail" >/dev/null
|
||||
fi
|
17
roles/healthcheck/files/data/mail
Executable file
17
roles/healthcheck/files/data/mail
Executable file
|
@ -0,0 +1,17 @@
|
|||
#!/usr/bin/sh
|
||||
|
||||
cd /opt/ || exit
|
||||
|
||||
hc_url="https://hc-ping.com/$MAIL_HC_UID"
|
||||
|
||||
alias curl_hc='curl -LA "$USER_AGENT" --retry 3'
|
||||
|
||||
envsubst < template.msmtprc > /tmp/msmtprc
|
||||
envsubst < mailcheck.template.mail > /tmp/mailcheck.mail
|
||||
|
||||
result=$(msmtp -C /tmp/msmtprc -a default "$MAIL_HC_UID@hc-ping.com" < /tmp/mailcheck.mail 2>&1)
|
||||
if [ "$?" != "0" ]
|
||||
then
|
||||
echo "$result"
|
||||
curl_hc --data-raw "$result" "$hc_url/fail" >/dev/null
|
||||
fi
|
5
roles/healthcheck/files/data/mailcheck.template.mail
Normal file
5
roles/healthcheck/files/data/mailcheck.template.mail
Normal file
|
@ -0,0 +1,5 @@
|
|||
To: ${MAIL_HC_UID}@hc-ping.com
|
||||
From: ${MAIL_USER}
|
||||
Subject: Healthcheck
|
||||
|
||||
Mailserver alive
|
45
roles/healthcheck/files/data/matrix
Executable file
45
roles/healthcheck/files/data/matrix
Executable file
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/python3
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import requests
|
||||
import sys
|
||||
|
||||
import asyncio
|
||||
from nio import AsyncClient, RoomMessageNotice
|
||||
|
||||
healthcheck_url = "https://hc-ping.com/" + os.environ['MATRIX_HC_UID']
|
||||
|
||||
def send_ping(success, msg=""):
|
||||
url = healthcheck_url
|
||||
if not success:
|
||||
url += "/fail"
|
||||
|
||||
requests.get(url, data=msg, headers={'user-agent': os.environ['USER_AGENT']})
|
||||
|
||||
async def main():
|
||||
try:
|
||||
client = AsyncClient(os.environ['MATRIX_SERVER'])
|
||||
client.access_token = os.environ['MATRIX_TOKEN']
|
||||
client.device_id = os.environ['USER_AGENT']
|
||||
await client.room_send(
|
||||
room_id = os.environ['MATRIX_ROOM'],
|
||||
message_type = "m.room.message",
|
||||
content = {
|
||||
"msgtype": "m.text",
|
||||
"body": "!ping"
|
||||
}
|
||||
)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
|
||||
print("exception during login or sending")
|
||||
send_ping(False, str(e))
|
||||
sys.exit(1)
|
||||
await client.close()
|
||||
|
||||
send_ping(True)
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
asyncio.new_event_loop().run_until_complete(main())
|
13
roles/healthcheck/files/data/template.msmtprc
Normal file
13
roles/healthcheck/files/data/template.msmtprc
Normal file
|
@ -0,0 +1,13 @@
|
|||
defaults
|
||||
auth on
|
||||
tls on
|
||||
tls_trust_file /etc/ssl/certs/ca-certificates.crt
|
||||
logfile /tmp/msmtp.log
|
||||
|
||||
account default
|
||||
host ${MAIL_HOST}
|
||||
port ${MAIL_PORT}
|
||||
tls_starttls on
|
||||
from ${MAIL_USER}
|
||||
user ${MAIL_USER}
|
||||
password ${MAIL_PASS}
|
24
roles/healthcheck/files/docker-compose.yml
Normal file
24
roles/healthcheck/files/docker-compose.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
version: "3.7"
|
||||
|
||||
x-common-elements:
|
||||
&common-elements
|
||||
build:
|
||||
context: .
|
||||
image: registry.serguzim.me/services/healthcheck
|
||||
restart: never
|
||||
env_file:
|
||||
- service.env
|
||||
volumes:
|
||||
- ./data/:/opt
|
||||
network_mode: host
|
||||
|
||||
services:
|
||||
http:
|
||||
<<: *common-elements
|
||||
command: "/opt/http"
|
||||
matrix:
|
||||
<<: *common-elements
|
||||
command: "/opt/matrix"
|
||||
mail:
|
||||
<<: *common-elements
|
||||
command: "/opt/mail"
|
4
roles/healthcheck/files/healthcheck@.timer
Normal file
4
roles/healthcheck/files/healthcheck@.timer
Normal file
|
@ -0,0 +1,4 @@
|
|||
[Timer]
|
||||
OnCalendar=*:0/5
|
||||
[Install]
|
||||
WantedBy=timers.target
|
Loading…
Add table
Add a link
Reference in a new issue