47 lines
1.1 KiB
Python
47 lines
1.1 KiB
Python
from flask import Flask, jsonify, request
|
|
import sqlite3
|
|
import time
|
|
|
|
app = Flask(__name__)
|
|
|
|
DB = "/data/metrics.db"
|
|
|
|
def init_db():
|
|
conn = sqlite3.connect(DB)
|
|
c = conn.cursor()
|
|
c.execute("""
|
|
CREATE TABLE IF NOT EXISTS metrics (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
target TEXT,
|
|
latency REAL,
|
|
status TEXT,
|
|
timestamp TEXT
|
|
)
|
|
""")
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
@app.route("/report", methods=["POST"])
|
|
def report():
|
|
data = request.json
|
|
conn = sqlite3.connect(DB)
|
|
c = conn.cursor()
|
|
c.execute("INSERT INTO metrics (target, latency, status, timestamp) VALUES (?, ?, ?, ?)",
|
|
(data["target"], data["latency"], data["status"], time.ctime()))
|
|
conn.commit()
|
|
conn.close()
|
|
return {"message": "stored"}
|
|
|
|
@app.route("/metrics")
|
|
def metrics():
|
|
conn = sqlite3.connect(DB)
|
|
c = conn.cursor()
|
|
c.execute("SELECT target, latency, status, timestamp FROM metrics ORDER BY id DESC LIMIT 20")
|
|
rows = c.fetchall()
|
|
conn.close()
|
|
return jsonify(rows)
|
|
|
|
if __name__ == "__main__":
|
|
init_db()
|
|
app.run(host="0.0.0.0", port=5000)
|