feat: add azure opentelemtry monitoring

This commit is contained in:
Jonathan Kössler 2024-06-11 12:00:18 +02:00
parent 4536f9d35b
commit 7dbcdf1650
4 changed files with 1184 additions and 910 deletions

2058
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,8 @@
from dynaconf import Dynaconf
from fastapi import FastAPI
from kn_utils.logging import logger
from azure.monitor.opentelemetry import configure_azure_monitor
from opentelemetry import trace
from pyinfra.config.loader import get_pyinfra_validators, validate_settings
from pyinfra.queue.callback import Callback
@ -43,13 +45,20 @@ def start_standard_queue_consumer(
if settings.tracing.opentelemetry.enabled:
logger.info(f"OpenTelemetry tracing enabled.")
setup_trace(settings)
if settings.tracing.opentelemetry.azure_monitoring:
# Configure OpenTelemetry to use Azure Monitor with the
# APPLICATIONINSIGHTS_CONNECTION_STRING environment variable.
logger.info("Started Azure Monitoring.")
configure_azure_monitor()
else:
setup_trace(settings)
instrument_pika()
instrument_app(app)
app = add_health_check_endpoint(app, queue_manager.is_ready)
webserver_thread = create_webserver_thread_from_settings(app, settings)
webserver_thread.start()
queue_manager.start_consuming(callback)
queue_manager.start_consuming(callback)

View File

@ -23,16 +23,17 @@ kn-utils = { version = "^0.2.7", source = "gitlab-research" }
fastapi = "^0.109.0"
uvicorn = "^0.26.0"
# [tool.poetry.group.telemetry.dependencies]
opentelemetry-instrumentation-pika = "^0.43b0"
opentelemetry-exporter-otlp = "^1.22.0"
opentelemetry-instrumentation = "^0.43b0"
opentelemetry-api = "^1.22.0"
opentelemetry-sdk = "^1.22.0"
opentelemetry-exporter-otlp-proto-http = "^1.22.0"
opentelemetry-instrumentation-flask = "^0.43b0"
opentelemetry-instrumentation-requests = "^0.43b0"
opentelemetry-instrumentation-fastapi = "^0.43b0"
opentelemetry-instrumentation-pika = "^0.46b0"
opentelemetry-exporter-otlp = "^1.25.0"
opentelemetry-instrumentation = "^0.46b0"
opentelemetry-api = "^1.25.0"
opentelemetry-sdk = "^1.25.0"
opentelemetry-exporter-otlp-proto-http = "^1.25.0"
opentelemetry-instrumentation-flask = "^0.46b0"
opentelemetry-instrumentation-requests = "^0.46b0"
opentelemetry-instrumentation-fastapi = "^0.46b0"
wcwidth = "<=0.2.12"
azure-monitor-opentelemetry = "^1.6.0"
[tool.poetry.group.dev.dependencies]
pytest = "^7"

View File

@ -12,7 +12,7 @@ def processor_mock(_data: dict, _message: dict) -> dict:
if __name__ == "__main__":
arguments = parse_settings_path()
settings = load_settings(arguments.settings_path)
settings = load_settings(arguments)
callback = make_download_process_upload_callback(processor_mock, settings)
start_standard_queue_consumer(callback, settings)