diff --git a/app.py b/app.py index c22b1c9..d568403 100644 --- a/app.py +++ b/app.py @@ -1,5 +1,6 @@ import os from flask import Flask, render_template, request, flash +from prometheus_flask_exporter import PrometheusMetrics import google.generativeai as genai from markdown import markdown from dotenv import load_dotenv @@ -9,6 +10,13 @@ load_dotenv() app = Flask(__name__) app.secret_key = os.environ.get("FLASK_SECRET_KEY", "prod-secret-7721") +metrics = PrometheusMetrics(app) +metrics.info('app_info', 'Application info', version='1.0.5') + +conversion_counter = metrics.counter( + 'txt2md_conversions_total', 'Total number of text conversions' +) + # API Configuration api_key = os.environ.get("AI_API_KEY") if api_key: @@ -36,6 +44,7 @@ def index(): response = model.generate_content(prompt) markdown_content = response.text converted_html = markdown(markdown_content, extensions=['extra', 'codehilite']) + conversion_counter.inc() except Exception as e: flash(f"Error during processing: {str(e)}", "error") diff --git a/k8s/deployment.yaml b/k8s/deployment.yaml index a3d321d..5690c7e 100644 --- a/k8s/deployment.yaml +++ b/k8s/deployment.yaml @@ -70,7 +70,7 @@ spec: serviceAccountName: txt2md-sa containers: - name: txt2md - image: europe-west3-docker.pkg.dev/project-84ddd43d-e408-4cb9-8cb/txt2md-repo/txt2md:v1.0.4 + image: europe-west3-docker.pkg.dev/project-84ddd43d-e408-4cb9-8cb/txt2md-repo/txt2md:v1.0.5 ports: - containerPort: 5000 env: @@ -98,3 +98,19 @@ spec: port: 80 targetPort: 5000 type: ClusterIP +--- +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: txt2md-monitor + namespace: default + labels: + release: monitoring # Matches the Prometheus operator selector +spec: + selector: + matchLabels: + app: txt2md + endpoints: + - port: http + interval: 30s + path: /metrics diff --git a/requirements.txt b/requirements.txt index 3616bb9..c94725d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ flask google-generativeai python-dotenv markdown +prometheus-flask-exporter