2 Commits

Author SHA1 Message Date
1fe443d53d Update README 2025-07-24 13:47:06 +02:00
ab04fb52b9 Monitoring-Endpunkt hinzugefügt 2025-07-24 13:45:39 +02:00
2 changed files with 48 additions and 1 deletions

View File

@@ -105,6 +105,31 @@ Elpatrons Datumsrechner ist als PWA installierbar (z.B. auf Android/iOS-Homescre
- App-Icon und Theme-Color für Homescreen
- Installation über Browser-Menü ("Zum Startbildschirm hinzufügen")
## Monitoring & Healthcheck
Die App bietet einen Monitoring-Endpunkt unter `/monitor`, der Statusinformationen als JSON zurückgibt (z.B. für Uptime-Robot, Docker Healthcheck oder eigene Tools):
- Status (ok)
- Aktuelle Serverzeit
- Uptime (Sekunden seit Start)
- Pageviews der letzten 7 Tage
Beispiel-Aufruf:
```
GET https://date.elpatron.me/monitor
```
Antwort:
```json
{
"status": "ok",
"message": "App running",
"time": "2025-07-24T13:37:00.123456",
"uptime_seconds": 12345,
"pageviews_last_7_days": 42
}
```
## Entwicklung & Hinweise
- Die HTML-Templates liegen im Ordner `templates/` (Trennung von Logik und Darstellung)

24
app.py
View File

@@ -1,8 +1,11 @@
from flask import Flask, render_template, request, redirect, url_for, session, abort
from flask import Flask, render_template, request, redirect, url_for, session, abort, jsonify
from datetime import datetime, timedelta
import numpy as np
from dateutil.relativedelta import relativedelta
import os
import time
app_start_time = time.time()
app = Flask(__name__)
app.secret_key = os.environ.get('SECRET_KEY', 'dev-key')
@@ -183,5 +186,24 @@ def stats():
return render_template('stats_dashboard.html', pageviews=pageviews, func_counts=func_counts, impressions_per_day=impressions_per_day)
@app.route('/monitor')
def monitor():
log_path = os.path.join('log', 'pageviews.log')
pageviews = 0
if os.path.exists(log_path):
with open(log_path, encoding='utf-8') as f:
for line in f:
if 'PAGEVIEW' in line:
pageviews += 1
uptime = int(time.time() - app_start_time)
return jsonify({
"status": "ok",
"message": "App running",
"time": datetime.now().isoformat(),
"uptime_seconds": uptime,
"pageviews_last_7_days": pageviews
})
if __name__ == '__main__':
app.run(debug=True, host="0.0.0.0")