diff --git a/app.py b/app.py index 53e1dc5..3b89938 100644 --- a/app.py +++ b/app.py @@ -4,7 +4,7 @@ import json import httpx import configparser -from flask import Flask, request, jsonify, abort +from flask import Flask, request, jsonify, abort, Response from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import declarative_base, sessionmaker @@ -43,7 +43,6 @@ Base.metadata.create_all(engine) app = Flask(__name__) - def get_auth_header(): auth = request.headers.get("Authorization", "") if not auth.startswith("Bearer "): @@ -173,6 +172,26 @@ def notify(): }) +@app.route("/metrics", methods=["GET"]) +def metrics(): + session = SessionLocal() + + try: + token_count = session.query(DeviceToken).count() + finally: + session.close() + + metrics_output = ( + "# HELP apns_device_tokens_total Number of registered APNs device tokens\n" + "# TYPE apns_device_tokens_total gauge\n" + f"apns_device_tokens_total {token_count}\n" + ) + + return Response( + metrics_output, + mimetype="text/plain; version=0.0.4" + ) + if __name__ == "__main__": app.run(host="0.0.0.0", port=3000, debug=True) \ No newline at end of file