feat: add prometheus metrics and ServiceMonitor
This commit is contained in:
parent
2a625c66c7
commit
f941a465f5
9
app.py
9
app.py
|
|
@ -1,5 +1,6 @@
|
||||||
import os
|
import os
|
||||||
from flask import Flask, render_template, request, flash
|
from flask import Flask, render_template, request, flash
|
||||||
|
from prometheus_flask_exporter import PrometheusMetrics
|
||||||
import google.generativeai as genai
|
import google.generativeai as genai
|
||||||
from markdown import markdown
|
from markdown import markdown
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
@ -9,6 +10,13 @@ load_dotenv()
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
app.secret_key = os.environ.get("FLASK_SECRET_KEY", "prod-secret-7721")
|
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 Configuration
|
||||||
api_key = os.environ.get("AI_API_KEY")
|
api_key = os.environ.get("AI_API_KEY")
|
||||||
if api_key:
|
if api_key:
|
||||||
|
|
@ -36,6 +44,7 @@ def index():
|
||||||
response = model.generate_content(prompt)
|
response = model.generate_content(prompt)
|
||||||
markdown_content = response.text
|
markdown_content = response.text
|
||||||
converted_html = markdown(markdown_content, extensions=['extra', 'codehilite'])
|
converted_html = markdown(markdown_content, extensions=['extra', 'codehilite'])
|
||||||
|
conversion_counter.inc()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
flash(f"Error during processing: {str(e)}", "error")
|
flash(f"Error during processing: {str(e)}", "error")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,7 +70,7 @@ spec:
|
||||||
serviceAccountName: txt2md-sa
|
serviceAccountName: txt2md-sa
|
||||||
containers:
|
containers:
|
||||||
- name: txt2md
|
- 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:
|
ports:
|
||||||
- containerPort: 5000
|
- containerPort: 5000
|
||||||
env:
|
env:
|
||||||
|
|
@ -98,3 +98,19 @@ spec:
|
||||||
port: 80
|
port: 80
|
||||||
targetPort: 5000
|
targetPort: 5000
|
||||||
type: ClusterIP
|
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
|
||||||
|
|
|
||||||
|
|
@ -2,3 +2,4 @@ flask
|
||||||
google-generativeai
|
google-generativeai
|
||||||
python-dotenv
|
python-dotenv
|
||||||
markdown
|
markdown
|
||||||
|
prometheus-flask-exporter
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue