Max and Zoe Discuss Dataverse API Incoming Calls and Plugin Execution Logs

Max: Hey Zoe, I’ve been working with Dataverse and heard about tracking API incoming calls and plugin execution logs. Can you explain how this works and how I can query this information?

Zoe: Sure, Max! Dataverse provides detailed performance data for API incoming calls, plugin execution logs, and SDK operations. This data is sent to Application Insights where you can query and analyze it.

Max: That sounds helpful. Let’s start with API incoming calls. How do I query these in Application Insights?

Zoe: API incoming calls can be found in the requests table. Here’s a basic query to summarize user agent counts:

requests
| summarize count() by tostring(customDimensions.userAgent)

Max: What about plugin execution logs?

Zoe: Plugin execution logs are found in the dependencies table. Here’s an example query to retrieve plugin logs:

dependencies
| where type == "Plugin"
| take 100

This will give you details like the plugin name, duration, and other custom dimensions.

Max: And for SDK operations?

Zoe: SDK operation logs are also in the dependencies table. Here’s a sample query to retrieve SDK logs:

dependencies
| where type startswith "SDK"
| take 10

This will show you the type of SDK request, the entity targeted, and other relevant details.

Max: What if I need to find exceptions?

Zoe: Exceptions are captured in the exceptions table. Here’s a query to retrieve exception details:

exceptions
| take 10

You can also filter by user ID if you’re tracking a specific user’s errors:

exceptions
| where user_Id == '12345678-68cd-4e73-908f-126342b36315'

Max: How do I know if a plugin update caused performance issues?

Zoe: You can query the average duration of a specific plugin over time. Here’s an example:

dependencies
| where ['type'] == "Plugin"
| where name startswith "[InsertYourPluginName]"
| summarize avg(duration) by name

Max: Can I see how the API was performing before a reported issue?

Zoe: Absolutely. Use this query to analyze API performance over time:

requests
| where url == "https://<URLHere>"
| summarize avg(duration), count() by bin(timestamp, 1h)
| render timechart

This shows performance trends and request counts over time.

Max: What about creating custom dashboards?

Zoe: Yes, you can build custom dashboards in Application Insights to monitor and visualize data based on your queries.

Max: Can I track plugin performance and failure rates during peak usage?

Zoe: Yes, here’s a query to understand plugin performance:

dependencies
| where ['type'] == "Plugin"
| where name == "[Plugin name here]"
| summarize avg(duration) by bin(timestamp, 1h)
| render timechart

Max: What about handling 429 errors?

Zoe: The 429 errors are tracked as well. Use this basic query to understand them:

requests
| where resultCode == "429"

Max: Can I track execution paths and see if a plugin is slowing down due to calls it makes?

Zoe: Yes, all messages and plugins executed for a request are logged. You can query these to analyze execution paths. For example, use the operation_ParentId to track specific requests:

union *
| where operation_ParentId contains <requestId>

Max: Thanks, Zoe! This really helps me understand how to use Application Insights for Dataverse.

Zoe: Anytime, Max! These tools are incredibly powerful for monitoring and troubleshooting your Dataverse environment. If you have any more questions, feel free to ask!

Leave a comment