Observability
This estate runs with no Application Insights and no Log Analytics. Neither is provisioned in either environment, and the Function Apps carry no APPINSIGHTS_* / APPLICATIONINSIGHTS_* app settings. This is a deliberate cost decision, not an omission: paid telemetry ingestion (and the alert rules layered on it) recurred at a daily cost that bought nothing this estate acts on. Removing it is the single largest line-item saving in the infrastructure.
What we rely on instead
- The
$0.01budget guard is the cost ceiling. Each Function App has a Consumption (Y1) plan — no idle cost — and a budget that stop-triggers it via Logic App automation the moment spend registers. That guard, not telemetry, is what bounds cost. See optimization review. - Azure portal platform metrics answer the operator-level questions (invocation counts, storage size, Service Bus depth) for free, without a Log Analytics workspace to ingest into.
- Function handler logs still write to
context.log/context.error; they surface in the Functions host's live log stream and the platform's built-in log, just not into a queryable, retained, billed store. That surface is whathost.jsonleaveslogging.fileLoggingModeunset for — the defaultdebugOnlyturns filesystem logging on for as long as a log stream is attached, and it is the only sink those calls have now. Setting it tonevercosts nothing and silently discards everycontext.errorin the app, so the operator instructions above and in Event Grid dead-letter stop working.
Do not "add monitoring back" as a best practice
Provisioning Application Insights, a Log Analytics workspace, diagnostic settings, smart-detector rules, or scheduled-query alerts is a recurring cost with no consumer here, and a review suggestion to add any of them "for observability best practice" should be closed, not applied. The trade — losing queryable telemetry and automated alerting to stay in the free tier — is intentional and recorded here so it does not get re-litigated per PR. Revisit only if paid tiers/quotas, an on-call rotation, or a real incident-investigation need make retained telemetry worth the spend.
One consequence to know: the Event Grid dead-letter quarantine and replay-discard cases used to page via scheduled-query alerts over the App Insights traces table. With App Insights gone those alerts are gone too, so those cases now land silently and are found by inspecting the deadletter container rather than by a page.
Key files
| File | Role |
|---|---|
packages/infra/src/azure/resources/Microsoft.Consumption/budgets/ | The $0.01 guard budgets — the actual cost ceiling |
packages/infra/src/azure/resources/Microsoft.Web/sites/ | Function Apps, now with no App Insights app settings |
Previous
Next