Monitor the performance of a cloud application
Troubleshooting an application's performance requires monitoring and reliable investigation. Issues in performance can arise from database queries, connectivity between services, under-provisioned resources, or memory leaks in code.
Continuously monitoring services and checking the health state of current workloads is key in maintaining the overall performance of the workload. An overall monitoring strategy considers these factors:
- Resiliency of the infrastructure, application, and dependent services
- Application and infrastructure performance
How are you monitoring to ensure the workload is scaling appropriately?
- Enable and capture telemetry throughout your application to build and visualize end-to-end transaction flows for the application.
- See metrics from Azure services, such as CPU and memory utilization, bandwidth information, current storage utilization, and more.
- Use resource and platform logs to get information about what events occur and under which conditions.
- For scalability, look at the metrics to determine how to provision resources dynamically and scale with demand.
- In the collected logs and metrics, look for signs that might make a system or its components suddenly become unavailable.
- Use log aggregation technology to gather information across all application components.
- Store logs and key metrics of critical components for statistical evaluation and predicting trends.
- Identify antipatterns in the code.
In this section
Follow these questions to assess the workload at a deeper level.
|Are application logs and events correlated across all application components?||Correlate logs and events for subsequent interpretation. This correlation gives you visibility into end-to-end transaction flows.|
|Are you collecting Azure Activity Logs within the log aggregation tool?||Collect platform metrics and logs to get visibility into the health and performance of services that are part of the architecture.|
|Are application and resource-level logs aggregated in a single data sink, or is it possible to cross-query events at both levels?||Implement a unified solution to aggregate and query application and resource-level logs, such as Azure Log Analytics.|
The monitoring operations should utilize Azure Monitor. You can analyze data, set up alerts, get end-to-end views of your applications, and use machine learning–driven insights to identify and resolve problems quickly. Export logs and metrics to services such as Azure Log Analytics or an external service like Splunk. Also, application technologies such as Application Insights can enhance the telemetry coming out of applications.
Based on insights gained through monitoring, optimize your code. One option might be to consider other Azure services that might be more appropriate for your objectives.