An Azure service that provides an event-driven serverless compute platform.
Hi @Dharmesh Joshi ,
There are a couple of different levers involved:
- reducing what your Function Apps send (sampling + filtering + log levels), and
- protecting/limiting ingestion with daily caps (Application Insights and/or the Log Analytics workspace).
- Reducing noisy telemetry from Azure Functions (recommended approach)
For Azure Functions =>Application Insights, the platform supports controlling telemetry volume primarily via sampling and host.json telemetry settings, plus log levels.
A. Sampling (default on for Functions)
Azure Functions enables sampling by default, which reduces telemetry volume during high activity. If you still see too much data (or want to improve the signal), you can adjust sampling so more (or different) telemetry is retained.
In Functions, a common pattern is to tune sampling for your scenario rather than turning it off everywhere.
B. Exclude noisy telemetry types via host.json
A practical approach is to keep exceptions and selected traces, while excluding the most verbose categories.
You can do this by using the excludedTypes section in host.json under the Application Insights configuration. The Functions templates even exclude Request telemetry by default (since it can be very information-dense due to bindings/triggers).
C. Adjust local log levels in host.json
Your host.json log configuration can also cause telemetry to be omitted. For example, if executions are mapped to a host logging category and that category is set to Warning, you won’t see what would have been captured at Information.
So if you want “useful” data (like exceptions) but fewer background info traces, a combination of:
- higher default level (for broad categories), and
- lower level for the specific categories you care about
is often effective.
D. Consider whether the “noisy app” needs extra filtering
Since one of your Function Apps is IoT Hub triggered, it’s very likely that it produces high-volume telemetry. For that app, it’s especially useful to apply the selective controls above (sampling adjustments and/or excludedTypes) rather than affecting all Function Apps the same way.
Summary recommendation for your goal (“exceptions + selected log messages, reduce requests/dependencies/traces”):
- keep sampling enabled (don’t disable in production)
- use
excludedTypesto exclude specific telemetry types you don’t need - ensure log levels in
host.jsonmatch what you want to keep
- Understanding Application Insights daily cap vs Log Analytics daily cap
You’re mostly correct, with one key nuance: both caps apply and whichever cap is reached first stops ingestion.
- Application Insights daily cap limits the daily ingestion for that specific Application Insights resource.
- Log Analytics workspace daily cap limits the daily ingestion for the Log Analytics workspace (for all data sent to that workspace).
When both are in play (workspace-based scenarios), ingestion stops when either cap is hit.
Also:
- Daily cap is evaluated as GB/day (and there can be a small overflow as part of ingestion optimization).
- If the daily cap is reached, you lose ingestion for the remainder of the day (so it’s intended as a guardrail for unexpected spikes, not a target to “hit”.)
If multiple Application Insights resources send to the same workspace
Yes, because the workspace daily cap limits total ingestion into that workspace, it can impact all sources sending data to the same workspace when the workspace limit is reached (since the workspace cap is shared).
- Staying within monthly free allowance
- Use sampling + filtering to reduce volume before it becomes costly.
- Use daily caps to protect against unexpected bursts, but don’t rely on hitting the cap to manage your steady-state ingestion (because you’ll lose telemetry once it’s reached).
Hope this helps!
If the resolution was helpful, kindly take a moment to click on and click on Yes for was this answer helpful. And, if you have any further query do let us know.