Skip to content

Commit da19e6b

Browse files
authored
Updates from editor
1 parent 5dc0684 commit da19e6b

1 file changed

Lines changed: 45 additions & 45 deletions

File tree

support/azure/azure-monitor/app-insights/telemetry/troubleshoot-high-data-ingestion.md

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
---
2-
title: Troubleshoot high data ingestion in Application Insights
2+
title: Troubleshoot High Data Ingestion in Application Insights
33
description: Provides a step-by-step guide to troubleshoot high data ingestion scenarios and provides methods to reduce costs.
4-
ms.date: 04/16/2025
4+
ms.date: 04/21/2025
55
ms.service: azure-monitor
66
ms.reviewer: jeanbisutti, toddfous, aaronmax, v-weizhu
77
ms.custom: sap:Application Insights
88
---
99
# Troubleshoot high data ingestion in Application Insights
1010

11-
An increase in billing charges for Application Insights or Log Analytics often occur due to high data ingestion. This article helps you troubleshoot this issue and provides methods to reduce data ingestion costs.
11+
An increase in billing charges for Application Insights or Log Analytics often occurs due to high data ingestion. This article helps you troubleshoot this issue and provides methods to reduce data ingestion costs.
1212

1313
## General troubleshooting steps
1414

1515
### Step 1: Identify resources presenting high data ingestion
1616

1717
In the Azure portal, navigate to your subscription and select **Cost Management** > **Cost analysis**. This blade offers cost analysis views to chart costs per resource, as follows:
1818

19-
:::image type="content" source="media/troubleshoot-high-data-ingestion/cost-analysis.png" alt-text="A screenshot thst shows the 'cost analysis' blade." border="false":::
19+
:::image type="content" source="media/troubleshoot-high-data-ingestion/cost-analysis.png" alt-text="Screenshot that shows the 'cost analysis' blade.":::
2020

2121

2222
### Step 2: Identify costly tables with high data ingestion
@@ -52,19 +52,19 @@ Once you've identified an Application Insights resource or a Log Analytics works
5252
| project-away BillingTelemetrySizeInBytes
5353
```
5454
55-
Similar to the record count queries, these queries above can assist in identifying the most active tables, allowing you to pinpoint specific tables for further investigation.
55+
Similar to the record count queries, the preceding queries can help identify the most active tables, allowing you to pinpoint specific tables for further investigation.
5656
5757
- Using Log Analytics workspace Workbooks
5858
5959
In the Azure portal, navigate to your Log Analytics workspace, select **Monitoring** > **Workbooks**, and then select **Usage** under **Log Analytics Workspace Insights**.
6060
61-
:::image type="content" source="media/troubleshoot-high-data-ingestion/log-analytics-usage-workbook.png" alt-text="A screenshot thst shows the Log Analytics workbook pane." lightbox="media/troubleshoot-high-data-ingestion/log-analytics-usage-workbook.png" border="false":::
61+
:::image type="content" source="media/troubleshoot-high-data-ingestion/log-analytics-usage-workbook.png" alt-text="Screenshot that shows the Log Analytics workbook pane." lightbox="media/troubleshoot-high-data-ingestion/log-analytics-usage-workbook.png":::
6262
6363
This workbook provides valuable insights, such as the percentage of data ingestion for each table and detailed ingestion statistics for each resource reporting to the same workspace.
6464
6565
### Step 3: Determine factors contributing to high data ingestion
6666
67-
After identifying the tables with high data ingestion, focus on the table with the highest activity and determine factors contributing to high data ingestion. This could be a specific application that generates more data than the others, an exception message that gets logged too frequently, or a new logger category that emits too information.
67+
After identifying the tables with high data ingestion, focus on the table with the highest activity and determine factors contributing to high data ingestion. This might be a specific application that generates more data than the others, an exception message that is logged too frequently, or a new logger category that emits too much information.
6868
6969
Here are some sample queries you can use for this identification:
7070
@@ -111,7 +111,7 @@ exceptions
111111
```
112112

113113

114-
You can try out different telemetry fields. For example, perhaps you first run the following query and observe there is no obvious cause for the excessive telemetry:
114+
You can try different telemetry fields. For example, perhaps you first run the following query and observe there's no obvious cause for the excessive telemetry:
115115

116116
```Kusto
117117
dependencies
@@ -147,11 +147,11 @@ exceptions
147147
| sort by count_ desc
148148
```
149149

150-
### Step 4: Investigate evolution of ingestion over time
150+
### Step 4: Investigate the evolution of ingestion over time
151151

152152
Examine the evolution of ingestion over time based on the factors identified previously. This way can determine whether this behavior has been consistent or if changes occurred at a specific point. By analyzing data in this way, you can pinpoint when the change happened and provide a clearer understanding of the causes behind the high data ingestion. This insight will be important for addressing the issue and implementing effective solutions.
153153

154-
In the following queries, the [bin()](/kusto/query/bin-function) Kusto Query Language (KQL) scalar function is used to segment data into 1-day intervals. This approach facilitates trend analysis as you can see how data has changed or not changed over time.
154+
In the following queries, the [bin()](/kusto/query/bin-function) Kusto Query Language (KQL) scalar function is used to segment data into ome-day intervals. This approach facilitates trend analysis as you can see how data has changed or not changed over time.
155155

156156
```Kusto
157157
dependencies
@@ -174,7 +174,7 @@ dependencies
174174

175175
### Scenario 1: High data ingestion in Log Analytics
176176

177-
1. Query all tables within a Log Analytics workspace.
177+
1. Query all tables within a Log Analytics workspace:
178178

179179
```Kusto
180180
search *
@@ -186,9 +186,9 @@ dependencies
186186
| project-away TotalBilledSize
187187
```
188188
189-
You can get what table is the biggest contributor to costs. Here's an exmaple of `AppTraces`:
189+
You can know which table is the biggest contributor to costs. Here's an example of `AppTraces`:
190190
191-
:::image type="content" source="media/troubleshoot-high-data-ingestion/apptraces-table.png" alt-text="A screenshot thst shows that the AppTraces table is the biggest contributor to costs.":::
191+
:::image type="content" source="media/troubleshoot-high-data-ingestion/apptraces-table.png" alt-text="Screenshot that shows that the AppTraces table is the biggest contributor to costs.":::
192192
193193
2. Query the specific application driving the costs for traces:
194194
@@ -202,7 +202,7 @@ dependencies
202202
| project-away TotalBilledSize
203203
```
204204
205-
:::image type="content" source="media/troubleshoot-high-data-ingestion/specific-application-driving-costs-for-traces.png" alt-text="A screenshot thst shows the specific application driving the costs for traces.":::
205+
:::image type="content" source="media/troubleshoot-high-data-ingestion/specific-application-driving-costs-for-traces.png" alt-text="Screenshot that shows the specific application driving the costs for traces.":::
206206
207207
3. Run the following query specific to that application and look further into the specific logger categories sending telemetry to the `AppTraces` table:
208208
@@ -220,7 +220,7 @@ dependencies
220220
221221
The result shows two main categories responsible for the costs:
222222
223-
:::image type="content" source="media/troubleshoot-high-data-ingestion/logger-categories-sending-telemetry-to-apptraces.png" alt-text="A screenshot thst shows the specific logger categories sending telemetry to the AppTraces table.":::
223+
:::image type="content" source="media/troubleshoot-high-data-ingestion/logger-categories-sending-telemetry-to-apptraces.png" alt-text="Screenshot that shows the specific logger categories sending telemetry to the AppTraces table.":::
224224
225225
### Scenario 2: High data ingestion in Application Insight
226226
@@ -235,9 +235,9 @@ To determine the factors contributing to the costs, follow these steps:
235235
| sort by count_ desc
236236
```
237237
238-
Here's an exmaple that shows Azure Functions is generating lots of trace and exception telemetry:
238+
The following exmaple shows Azure Functions is generating lots of trace and exception telemetry:
239239
240-
:::image type="content" source="media/troubleshoot-high-data-ingestion/table-sdkversion-count.png" alt-text="A screenshot thst shows what table and SDK is generating most Trace and Exception telemetry.":::
240+
:::image type="content" source="media/troubleshoot-high-data-ingestion/table-sdkversion-count.png" alt-text="Screenshot that shows which table and SDK is generating the most Trace and Exception telemetry.":::
241241
242242
243243
2. Run the following query to get the specific app generating more traces than the others:
@@ -251,7 +251,7 @@ To determine the factors contributing to the costs, follow these steps:
251251
```
252252
253253
254-
:::image type="content" source="media/troubleshoot-high-data-ingestion/app-generating-more-traces.png" alt-text="A screenshot thst shows what app is generating most traces.":::
254+
:::image type="content" source="media/troubleshoot-high-data-ingestion/app-generating-more-traces.png" alt-text="Screenshot that shows which app is generating the most traces.":::
255255
256256
3. Refine the query to include that specific app and generate a count of records per each individual message:
257257
@@ -266,45 +266,45 @@ To determine the factors contributing to the costs, follow these steps:
266266
267267
The result can show the specific message increasing ingestion costs:
268268
269-
:::image type="content" source="media/troubleshoot-high-data-ingestion/app-message-count.png" alt-text="A screenshot thst shows a count of records per each individual message.":::
269+
:::image type="content" source="media/troubleshoot-high-data-ingestion/app-message-count.png" alt-text="Screenshot that shows a count of records per each message.":::
270270
271271
### Scenario 3: Reach daily cap unexpectedly
272272
273-
Assume you reached daily cap unexpected on September 4th. Use the following query to obtain a count of custom events and identify the most recent timestamp associated with each event:
273+
Assume you reached the daily cap unexpectedly on September 4th. Use the following query to obtain a count of custom events and identify the most recent timestamp associated with each event:
274274
275275
```Kusto
276276
customEvents
277277
| where timestamp between(datetime(8/25/2024) .. 15d)
278278
| summarize count(), min(timestamp) by name
279279
```
280280

281-
This analysis indicates that certain events started ingested on September 4th and subsequently became noisy very quickly.
281+
This analysis indicates that certain events started being ingested on September 4th and subsequently became noisy very quickly.
282282

283-
:::image type="content" source="media/troubleshoot-high-data-ingestion/custom-events.png" alt-text="A screenshot thst shows a count of custom events.":::
283+
:::image type="content" source="media/troubleshoot-high-data-ingestion/custom-events.png" alt-text="Screenshot that shows a count of custom events.":::
284284

285285
## Reduce data ingestion costs
286286

287287
After identifying the factors in the Azure Monitor tables responsible for unexpected data ingestion, reduce data ingestion costs using the following methods per your scenarios:
288288

289-
### Method 1: Update daily cap configuration
289+
### Method 1: Update the daily cap configuration
290290

291-
Adjust the daily cap to prevent excess telemetry ingestion.
291+
Adjust the daily cap to prevent excessive telemetry ingestion.
292292

293-
### Method 2: Switch table plan
293+
### Method 2: Switch the table plan
294294

295-
Switch to another supported table plan for Application Insights. Billing for data ingestion depends on the table plan and the region of the Log Analytics workspace. See [Table plans](/azure/azure-monitor/logs/data-platform-logs) and [Tables that support the Basic table plan in Azure Monitor Logs](/azure/azure-monitor/logs/basic-logs-azure-tables).
295+
Switch to another supported table plan for Application Insights. Billing for data ingestion depends on the table plan and the region of the Log Analytics workspace. See [Table plans](/azure/azure-monitor/logs/data-platform-logs#table-plans) and [Tables that support the Basic table plan in Azure Monitor Logs](/azure/azure-monitor/logs/basic-logs-azure-tables).
296296

297-
### Method 3: Use telemetry SDK features for Java agent
297+
### Method 3: Use telemetry SDK features for the Java agent
298298

299299
The default recommended solution is using [sampling overrides](/azure/azure-monitor/app/java-standalone-sampling-overrides). The Application Insights Java agent provides [two types of sampling](/azure/azure-monitor/app/java-standalone-config#sampling). A common use case is [suppressing collecting telemetry for health checks](/azure/azure-monitor/app/java-standalone-sampling-overrides#suppress-collecting-telemetry-for-health-checks).
300300

301-
There are some supplemental methods to sampling overrides:
301+
There are some supplemental methods for sampling overrides:
302302

303-
- Reduce cost from the `traces` table:
303+
- Reduce the cost from the `traces` table:
304304

305-
- [Reduce the telemetry log level](/azure/azure-monitor/app/java-standalone-config#autocollected-logging)
306-
- [Remove application (not frameworks/libs) logs with MDC attribute and sampling override](/azure/azure-monitor/app/java-standalone-sampling-overrides#suppress-collecting-telemetry-for-log)
307-
- Disable log instrumentation by updating the *applicationinsights.json* file:
305+
- [Reduce the telemetry log level](/azure/azure-monitor/app/java-standalone-config#autocollected-logging).
306+
- [Remove application (not frameworks/libs) logs with the MDC attribute and sampling override](/azure/azure-monitor/app/java-standalone-sampling-overrides#suppress-collecting-telemetry-for-log).
307+
- Disable log instrumentation by updating the **applicationinsights.json** file:
308308

309309
```JSON
310310
{
@@ -316,36 +316,36 @@ There are some supplemental methods to sampling overrides:
316316
}
317317
```
318318

319-
- Reduce cost from the `dependencies` table:
319+
- Reduce the cost from the `dependencies` table:
320320

321321
- [Suppress collecting telemetry for the Java method producing the dependency telemetry](/azure/azure-monitor/app/java-standalone-sampling-overrides#suppress-collecting-telemetry-for-a-java-method).
322322
- [Disable the instrumentation](/azure/azure-monitor/app/java-standalone-config#suppress-specific-autocollected-telemetry) producing the dependency telemetry data.
323323

324-
If the dependency is a database call, you then won't see the database on the application map. If you remove the dependency instrumentation of an HTTP call or a message (for example a Kafka message), all the downstream telemetry data are dropped.
324+
If the dependency is a database call, you won't see the database on the application map. If you remove the dependency instrumentation of an HTTP call or a message (for example, a Kafka message), all the downstream telemetry data are dropped.
325325

326-
- Reduce cost from the `customMetrics` table:
326+
- Reduce the cost from the `customMetrics` table:
327327

328-
- [Increase the metrics interval](/azure/azure-monitor/app/java-standalone-config#metric-interval)
329-
- [Exclude a metric with a telemetry processor](/azure/azure-monitor/app/java-standalone-telemetry-processors#metric-filter)
330-
- [Increase the heartbeat interval](/azure/azure-monitor/app/java-standalone-config#heartbeat)
328+
- [Increase the metrics interval](/azure/azure-monitor/app/java-standalone-config#metric-interval).
329+
- [Exclude a metric with a telemetry processor](/azure/azure-monitor/app/java-standalone-telemetry-processors#metric-filter).
330+
- [Increase the heartbeat interval](/azure/azure-monitor/app/java-standalone-config#heartbeat).
331331

332-
- Reduce OpenTelemetry attributes cost:
332+
- Reduce the cost of OpenTelemetry attributes:
333333

334-
OpenTelemetry attributes are added to the **customDimensions** column. They are represented as properties in Application Insights. You can remove attributes by using [an attribute telemetry processor](/azure/azure-monitor/app/java-standalone-telemetry-processors#attribute-processor). For more information, see [Telemetry processor examples - Delete](/azure/azure-monitor/app/java-standalone-telemetry-processors-examples#delete).
334+
OpenTelemetry attributes are added to the **customDimensions** column. They're represented as properties in Application Insights. You can remove attributes by using [an attribute telemetry processor](/azure/azure-monitor/app/java-standalone-telemetry-processors#attribute-processor). For more information, see [Telemetry processor examples - Delete](/azure/azure-monitor/app/java-standalone-telemetry-processors-examples#delete).
335335

336-
### Method 4: Update application code (log levels or exceptions)
336+
### Method 4: Update the application code (log levels or exceptions)
337337

338-
In some scenarios, updating the application code directly might help reduce the amount of telemetry being generated and consumed by the Application Insights backend service. A common example might be a noisy exception surfaced by the application.
338+
In some scenarios, updating the application code directly might help reduce the amount of telemetry generated and consumed by the Application Insights backend service. A common example might be a noisy exception surfaced by the application.
339339

340340
## References
341341

342-
- [Azure Monitor Pricing](https://azure.microsoft.com/pricing/details/monitor/)
342+
- [Azure Monitor pricing](https://azure.microsoft.com/pricing/details/monitor/)
343343
- [Change pricing tier for Log Analytics workspace](/azure/azure-monitor/logs/change-pricing-tier)
344-
- [Table plans in Azure Monitor](/azure/azure-monitor/logs/data-platform-logs)
344+
- [Table plans in Azure Monitor](/azure/azure-monitor/logs/data-platform-logs#table-plans)
345345
- [Azure Monitor cost and usage](/azure/azure-monitor/cost-usage)
346346
- [Analyze usage in a Log Analytics workspace](/azure/azure-monitor/logs/analyze-usage)
347347
- [Cost optimization in Azure Monitor](/azure/azure-monitor/fundamentals/best-practices-cost)
348348

349349
[!INCLUDE [Third-party disclaimer](../../../../includes/third-party-contact-disclaimer.md)]
350350

351-
[!INCLUDE [Azure Help Support](../../../../includes/azure-help-support.md)]
351+
[!INCLUDE [Azure Help Support](../../../../includes/azure-help-support.md)]

0 commit comments

Comments
 (0)