diff --git a/app.py b/app.py index 8d4b4d9..b229e0c 100644 --- a/app.py +++ b/app.py @@ -1,4 +1,5 @@ -# -*- coding: utf-8 -*- +import os +import logging from fastapi import FastAPI, responses, status, Request from pydantic import BaseModel from typing import List, Optional, Dict, Any, Union @@ -7,11 +8,26 @@ general, playground_question as playground_question_db_bo, ) -from submodules.model import session +from submodules.model import session, telemetry import traceback -app = FastAPI() +OTLP_GRPC_ENDPOINT = os.getenv("OTLP_GRPC_ENDPOINT", "tempo:4317") + +app_name = "refinery-neural-search" +app = FastAPI(title=app_name) + +if telemetry.ENABLE_TELEMETRY: + print("WARNING: Running telemetry.", flush=True) + telemetry.setting_app_name(app_name) + telemetry.setting_otlp(app, app_name=app_name, endpoint=OTLP_GRPC_ENDPOINT) + app.add_middleware(telemetry.PrometheusMiddleware, app_name=app_name) + app.add_route("/metrics", telemetry.metrics) + + # Filter out /metrics + logging.getLogger("uvicorn.access").addFilter( + lambda record: "GET /metrics" not in record.getMessage() + ) @app.middleware("http") diff --git a/start b/start index 026e12d..e73cba1 100755 --- a/start +++ b/start @@ -2,11 +2,13 @@ DEBUG_MODE=false DEBUG_PORT=15676 +ENABLE_TELEMETRY=false -while getopts d flag +while getopts dg flag do case "${flag}" in d) DEBUG_MODE=true;; + g) ENABLE_TELEMETRY=true;; esac done @@ -32,6 +34,7 @@ docker run -d --rm \ -p 7063:80 \ -e POSTGRES=postgresql://postgres:kern@graphql-postgres:5432 \ -e QDRANT_PORT=6333 \ +-e ENABLE_TELEMETRY=$ENABLE_TELEMETRY \ --mount type=bind,source="$(pwd)"/,target=/app \ -v /var/run/docker.sock:/var/run/docker.sock \ --network dev-setup_default \ diff --git a/submodules/model b/submodules/model index d5300f1..687078b 160000 --- a/submodules/model +++ b/submodules/model @@ -1 +1 @@ -Subproject commit d5300f13c3b2cc6da16f36ffd6349795923b2c64 +Subproject commit 687078b4b48a86324d968b2116044845aad646b6