Skip to main content

Azure integration

sovdev-logger works with Azure Monitor/Application Insights, but deliberately uses the standard OpenTelemetry SDK rather than Microsoft's own Azure Monitor OpenTelemetry Distro. Both are officially supported by Microsoft; see Why OTLP for the general case behind that choice. This page covers the Azure-specific tradeoff and the practical configuration.

Why the standard SDK, not the Azure distro​

Microsoft's own guidance recommends their distro "for new applications or customers to power Azure Monitor Application Insights" — it's more convenient (one-line setup) and Azure-specific. sovdev-logger uses the standard SDK instead:

  • Portability: the same SDK works identically against Loki (local development) and Azure Monitor (production) — the distro doesn't run against Loki.
  • No lock-in: switching observability backends later (Datadog, Grafana Cloud, self-hosted) is a configuration change, not a rewrite.
  • Azure still works fully: Application Insights accepts OTLP natively, and the azuremonitorexporter collector component routes standard OTLP traffic to Azure Monitor — you don't lose Azure functionality by not using the distro, you trade one-line convenience for portability.

The same code, three deployment scenarios​

sovdev-logger's SDK calls don't change between environments — only the configured OTLP endpoint does:

ScenarioWhere it runsOTLP endpointBackend
Local developmentNode.js/Python on a laptop127.0.0.1:4318, Host: otel.localhostLoki + Tempo + Prometheus → Grafana (local)
In-clusterA pod in the dev/test Kubernetes clusterotel-collector...svc.cluster.local:4318Same Loki/Tempo/Prometheus stack
Azure productionAzure Function / App Service / Container Appshttps://insights.azure.com/v1/logs, Authorization: Bearer <token>Application Insights (unified logs, traces, metrics)

All three route through an OpenTelemetry Collector, which receives OTLP and forwards to whichever backend is configured — the application code is identical in all three; only the collector's routing configuration changes.