Implement web server metrics in Tornado #3

This commit is contained in:
Ian Renton
2025-12-23 14:23:50 +00:00
parent 23a6e08777
commit d463403018
9 changed files with 124 additions and 45 deletions

View File

@@ -1,14 +1,26 @@
from datetime import datetime
import pytz
import tornado
from core.config import ALLOW_SPOTTING
from core.constants import SOFTWARE_VERSION
from core.prometheus_metrics_handler import page_requests_counter
# Handler for all HTML pages generated from templates
class PageTemplateHandler(tornado.web.RequestHandler):
def initialize(self, template_name):
def initialize(self, template_name, web_server_metrics):
self.template_name = template_name
self.web_server_metrics = web_server_metrics
def get(self):
# Metrics
self.web_server_metrics["last_page_access_time"] = datetime.now(pytz.UTC)
self.web_server_metrics["page_access_counter"] += 1
self.web_server_metrics["status"] = "OK"
page_requests_counter.inc()
# Load named template, and provide variables used in templates
self.render(self.template_name + ".html", software_version=SOFTWARE_VERSION, allow_spotting=ALLOW_SPOTTING)