Telemetry and Monitoring Guide
Overview
This comprehensive guide covers the complete observability stack for applications deployed on Azure Kubernetes Service (AKS), including:
-
Infrastructure Deployment: Setting up Azure Managed Prometheus and Grafana using Terraform
-
Application Telemetry: Enabling Application Insights logging in Node.js applications using the framework
-
Enterprise Monitoring: Integrating Dynatrace with Prometheus metrics from AKS clusters
By following this guide, you’ll establish a complete observability pipeline that captures infrastructure metrics, application logs, and provides enterprise-grade monitoring capabilities.
Table of Contents
- TL;DR
- Stage 1: Configure Monitoring Infrastructure
- Stage 2: Configure Grafana Data Source Tracking
- Stage 3: Configure Team Permissions in Grafana
- Application Insights Configuration
- Environment-Specific Configuration
- Overview
Part 1: Deploying Prometheus and Grafana on Terraform
TL;DR
Quick Summary: Enable Azure Managed Prometheus monitoring for AKS clusters in three stages:
Stage 1 (Application/Operations Workspace): Update AKS module to v1.1.19+, create Azure Monitor Workspace (AMW), Data Collection Endpoint (DCE), Data Collection Rule (DCR), and associate with AKS cluster. Grant Grafana UAMI “Monitoring Data Reader” role. Optionally configure Prometheus recording rules.
Stage 2 (DevOps Workspace): Add the AMW resource ID to the prometheus_azure_monitor_workspaces list in az-devops-lz-tf/shared_services/config/prd.eastus2.auto.tfvars to enable automatic Grafana data source creation.
Stage 3 (Grafana Permissions): Configure team access by adding team definitions in az-devops-lz-tf/grafana/config/prd.eastus2.auto.tfvars with Entra ID group mappings and appropriate permissions (Query/Admin).
Key Requirements: AKS module ≥ v1.1.19, Grafana UAMI principal ID, access to both application and DevOps repositories.
This guide provides step-by-step instructions for enabling Azure Managed Prometheus monitoring on AKS clusters. This is a three-stage operation that requires configuration in both the application/operations workspace and the DevOps workspace.
Prerequisites
-
AKS cluster module version 1.1.19 or higher
-
User Assigned Managed Identity (UAMI) for AKS
-
Grafana workspace UAMI principal ID (for monitoring data reader role)
-
Access to both application and DevOps landing zone repositories
Stage 1: Configure Monitoring Infrastructure
Example Implementation
See the full working example in:
-
Repository:
az-platform-lz-tf -
Path:
operations/sandbox_shared_services/ -
Files:
- main.tf (lines 349-446)
- variables.tf (lines 315-338)
- config/sbx.eastus2.auto.tfvars (lines 100+)
Step 1: Update Module Version
Ensure your AKS cluster module is at version 1.1.19 or higher and add the value true for monitor_metrics_enabled:
You can also include the optional variables prometheus_labels_allowed and prometheus_annotations_allowed for fine-grained control over metric metadata collection:
-
prometheus_labels_allowed: Specifies which Kubernetes labels should be scraped and attached to Prometheus metrics. This controls the number of unique metric combinations by limiting the label dimensions collected. Use this when you need specific labels for filtering/grouping (e.g., app, environment, version) while excluding labels with many unique values that could cause storage and performance issues.
-
prometheus_annotations_allowed: Specifies which Kubernetes annotations should be scraped and attached to Prometheus metrics. Annotations often contain deployment metadata, version information, or operational context. Use this to capture useful operational data (e.g.,
deployment.kubernetes.io/revision, custom deployment IDs) without collecting all annotations.
Why use these variables?
-
Reduce metric explosion: Prevents too many unique metric combinations from labels with many unique values (e.g., pod IDs, timestamps, dynamic values)
-
Control costs: Lower storage and query costs by limiting metadata dimensions
-
Improve performance: Faster queries and reduced memory usage in Prometheus/Grafana
-
Selective monitoring: Include only the labels/annotations relevant to your dashboards and alerts
Example usage:
Step 2: Add Required Variables
Add the following variables to your variables.tf:
Step 3: Create Azure Monitor Workspace (AMW)
Add the Azure Monitor Workspace module to your main.tf:
Step 4: Create Data Collection Endpoint (DCE)
Add the Data Collection Endpoint module:
Step 5: Create Data Collection Rule (DCR)
Add the Data Collection Rule module:
Step 6: Create Data Collection Rule Association (DCRA)
Associate the DCR with each AKS cluster:
Step 7: Configure Grafana Role Assignment
Grant the Grafana UAMI access to read monitoring data:
Step 8: Configure Prometheus Rule Groups (Optional)
Add recording rules for node metrics (This is an example, use whatever is necessary for your apps needs):
Step 9: Update Configuration File
Add the required values to your .auto.tfvars file:
Step 10: Apply the Configuration
Submit a PR and merge the code changes into the main branch to trigger a Spacelift run.
After successful deployment, note the Azure Monitor Workspace ID from the output. You will need this for Stage 2.
Stage 2: Configure Grafana Data Source Tracking
⚠️ IMPORTANT: The Azure Monitor Workspace ID from Stage 1 must be merged into the DevOps shared services configuration to enable data source tracking in the Grafana workspace.
This step ensures that Grafana can discover and connect to your newly created Prometheus data source by integrating the Azure Monitor Workspace into the Grafana instance configuration.
Step 1: Locate the Azure Monitor Workspace ID
From Stage 1, retrieve the Azure Monitor Workspace resource ID. It will be in this format:
Example:
You can retrieve this from:
-
Terraform output:
module.monitor_workspace.id -
Azure Portal: Navigate to the AMW → Properties → Resource ID
-
Azure CLI:
az monitor account show --name <workspace-name> --resource-group <rg-name> --query id
Step 2: Create a Pull Request in az-devops-lz-tf
Navigate to the DevOps Landing Zone repository (az-devops-lz-tf) and locate the shared services configuration.
File to Edit: shared_services/config/prd.eastus2.auto.tfvars
Add your Azure Monitor Workspace ID to the prometheus_azure_monitor_workspaces list:
Important Notes:
-
This is a list, so multiple Azure Monitor Workspaces can be tracked
-
Each workspace added here will automatically create a Grafana data source
-
The data source will be named:
Managed_Prometheus_{workspace-name} -
Ensure proper comma separation between list items
Step 3: Understand the Integration Flow
The Grafana module in shared_services/main.tf automatically integrates Azure Monitor Workspaces:
When Terraform applies this configuration:
-
Grafana creates a managed data source for each AMW ID
-
The Grafana UAMI (configured in Stage 1) authenticates to the AMW
-
The data source becomes queryable in Grafana as
Managed_Prometheus_{workspace-name}
Step 4: Verify Variable Definition
Ensure the variable exists in shared_services/variables.tf:
This variable should already exist in the DevOps shared services configuration. If not, add it.
Step 5: Submit the Pull Request
Create a PR with the following details:
PR Title: Add Azure Monitor Workspace for {cluster-name} Prometheus Integration
PR Description:
Step 6: Apply and Verify
After the PR is merged and Terraform is applied:
Check Grafana Data Sources:
-
Navigate to Grafana → Configuration → Data Sources
-
Verify new data source:
Managed_Prometheus_{workspace-name} -
Click on the data source and select “Save & Test”
-
Should show: “Successfully queried the Azure Monitor Workspace”
Test Prometheus Queries:
-
Go to Explore in Grafana
-
Select your new data source
-
Run a test query:
up -
Should return metrics from your AKS cluster
Verify Metrics Flow:
-
Go to Dashboards → Azure Managed Prometheus
-
Select a Dashboard to confirm metrics visibility
Step 7: Configure Team Permissions (If Applicable)
If using the Grafana team management from earlier in this conversation, update the teams configuration in az-devops-lz-tf/grafana/config/prd.eastus2.auto.tfvars:
This ensures the appropriate teams have access to query the Prometheus data source in Grafana.
Stage 3: Configure Team Permissions in Grafana
After the Azure Monitor Workspace has been integrated into Grafana (Stage 2), you need to configure team permissions to control access to the Prometheus data source.
Step 1: Identify Required Information
Before creating the PR, gather the following information:
-
Monitor Workspace Name: From Stage 1 (e.g.,
sbx-eus2-prom-ops-amw-001) -
Entra ID Group ID: The Object ID of the Azure AD/Entra group that should have access
- Navigate to Azure Portal → Entra ID → Groups
- Find your group → Overview → Object ID
- Example: b76d9990-2716-4ead-8cef-abb3cff4e60d
-
Team Name: A descriptive name for the Grafana team (typically matches cluster or application name)
Step 2: Create Pull Request in az-devops-lz-tf
Navigate to the DevOps Landing Zone repository (az-devops-lz-tf/grafana) and locate the Grafana configuration.
File to Edit: grafana/config/prd.eastus2.auto.tfvars
Add a new team configuration to the teams map:
Step 3: Configure Permission Levels
Choose the appropriate permission level for your team:
Query Permission (Read-Only)
-
Use case: Teams that only need to view and query metrics
-
Access: Can run queries, view dashboards, but cannot modify the data source
Query + Built-in Role
-
Use case: Teams needing broader Grafana access beyond just the data source
-
Options:
- Viewer: Can view dashboards and data sources
- Editor: Can create and edit dashboards
- Admin: Full Grafana administration rights
Admin Permission
-
Use case: Platform/DevOps teams managing the data source
-
Access: Full control over the data source configuration
Step 4: Understand the Configuration Structure
The Grafana configuration creates the following resources:
Key Points:
-
The team name (map key) becomes the Grafana team name
-
The
monitor_workspace_nameis used to automatically find the correct data source -
Data source name format:
Managed_Prometheus_{workspace-name} -
Multiple Entra ID groups can be linked to a single team
Step 5: Verify Configuration Prerequisites
Before submitting the PR, ensure:
-
✅ Stage 2 Complete: Azure Monitor Workspace is added to
shared_services/config/prd.eastus2.auto.tfvars -
✅ Terraform Applied: The Grafana data source exists in Grafana
-
✅ Entra Group Exists: The specified group ID is valid and accessible
-
✅ Group Members: Users are already members of the Entra ID group
Step 6: Submit the Pull Request
Create a PR with the following details:
PR Title: Add Grafana Team and Permissions for {team-name}
PR Description:
Step 7: Apply and Verify
After the PR is merged and Terraform is applied:
Verify Team Creation:
-
Log into Grafana as an admin
-
Navigate to Configuration → Teams
-
Confirm your new team exists
Check Group Mapping:
-
Click on the team name
-
Go to “External group sync”
-
Verify the Entra ID group is linked
Verify Data Source Permissions:
-
Navigate to Configuration → Data Sources
-
Select
Managed_Prometheus_{workspace-name} -
Click on “Permissions” tab
-
Confirm your team has the configured permissions
Test User Access:
-
Have a member of the Entra ID group log into Grafana
-
Navigate to Explore
-
Select the data source from the dropdown
-
Run a test query:
up{cluster="{cluster-name}"} -
Verify metrics are returned
Validate Permission Restrictions:
-
Confirm users can query but not modify the data source (if Query-only)
-
Test that users cannot access other data sources (if not granted)
Step 8: Troubleshooting Common Issues
Data Source Not Found
-
Error:
[GET /datasources/name/{name}] getDataSourceByName (status 404): {} -
Resolution:
- Ensure Stage 2 is complete and Terraform has been applied
- Verify the workspace name matches exactly (case-sensitive)
- Check data source exists: Grafana → Configuration → Data Sources
Entra Group Not Syncing
- Resolution:
- Verify the group Object ID is correct
- Check Grafana has proper Entra ID integration configured
- Wait 5-10 minutes for sync to occur
- Users may need to log out and back in
Permission Validation Error
-
Error:
Invalid value for "value" parameter: argument must not be null. -
Resolution:
- Ensure built_in_role is either omitted or set to a valid value
- Valid values: Viewer, Editor, Admin
- If using Query-only permission, omit built_in_role entirely
Step 9: Multiple Teams (Optional)
You can configure multiple teams for different access patterns:
Each team will:
-
Have access to the same data source
-
Have different permission levels
-
Be linked to different Entra ID groups
-
Appear as separate teams in Grafana
Complete Workflow Summary
Stage 1: Application/Operations Landing Zone
Deploy monitoring infrastructure:
-
Azure Monitor Workspace (AMW)
-
Data Collection Endpoint (DCE)
-
Data Collection Rule (DCR)
-
Data Collection Rule Association (DCRA)
-
Prometheus Rule Groups
-
Grafana UAMI role assignment
Stage 2: DevOps Landing Zone - Shared Services
Integrate AMW with Grafana:
-
Add AMW resource ID to
prometheus_azure_monitor_workspaceslist -
Grafana automatically creates managed data source
-
Data source named:
Managed_Prometheus_{workspace-name}
Stage 3: DevOps Landing Zone - Grafana
Configure team access:
-
Create Grafana team
-
Link Entra ID group to team
-
Grant data source permissions to team
-
Verify user access and permissions
Result: Teams can now access Prometheus metrics from AKS clusters through Grafana with appropriate permission levels based on their role.
Validation
After completing all stages, verify the setup:
Check Data Collection Rule Association:
-
Navigate to your AKS cluster in Azure Portal
-
Go to Settings → Insights → Data Collection Settings
-
Verify the DCR association is present
Verify Prometheus Metrics:
-
Navigate to the Azure Monitor Workspace in Azure Portal
-
Query some basic metrics (e.g.,
up,kube_node_info)
Check Grafana Data Source:
-
Log into Grafana
-
Navigate to Configuration → Data Sources
-
Verify the
Managed_Prometheus_<workspace-name>data source exists -
Test the connection and run a simple query
Verify Permissions:
-
Ensure the Grafana UAMI has “Monitoring Reader” role on the AMW
-
Check role assignments in the AMW’s Access Control (IAM) blade
Troubleshooting
No data appearing in Grafana
-
Verify the DCR association is created for the AKS cluster
-
Check that the query endpoint URL in Grafana matches the AMW’s query endpoint
-
Ensure the Grafana UAMI has proper permissions
Data Collection Rule issues
-
Verify the DCE is in the same region as the AKS cluster
-
Check that the data flow, data sources, and destinations are correctly configured
-
Review activity logs for any deployment errors
Role assignment errors
-
Confirm the Grafana UAMI principal ID is correct
-
Verify the UAMI has been properly created in the DevOps subscription
-
Check for any RBAC propagation delays (can take 5-10 minutes)
Additional Resources
Part 2: Enabling Application Telemetry
This section covers how to configure Application Insights logging in your Node.js applications using the framework-nodejs-logging package version 2.1.3.
Application Insights Configuration
Following the new pattern below, update the logging files in /internal to follow this pattern, using version framework-nodejs-logging@2.1.3 with the Direct Construction method.
Test your settings by clearing npm cache (if needed): npm cache clean --force and running npm install from this git repository.
Authentication Modes
The AppInsightsLogConfigProfile supports two authentication modes:
1. Traditional Authentication (API Key)
Use this mode when you have an instrumentation key embedded in the connection string:
2. Managed Identity Authentication (Recommended for Azure)
Use this mode when deploying to Azure services with managed identity enabled. This is more secure as it eliminates the need to store API keys.
System-Assigned Managed Identity:
User-Assigned Managed Identity:
Local Development:
For local development, use DefaultAzureCredential which tries multiple authentication methods:
Direct Construction:
You can also create the profile directly:
Important Notes
-
Connection String Format: When using managed identity, your connection string must include the
IngestionEndpoint. The library will validate this and throw an error if it’s missing. -
Azure RBAC Permissions: Ensure your managed identity has the Monitoring Metrics Publisher role assigned to the Application Insights resource.
-
Environment-Specific Configuration: It’s recommended to use environment variables to configure authentication dynamically:
Environment-Specific Configuration
Recommended Pattern for Production Applications:
Integration with Fastify:
Best Practices
-
Never log sensitive data or PII (Personally Identifiable Information)
-
Use structured logging with consistent field names
-
Configure appropriate log levels for different environments
-
Monitor Application Insights ingestion to control costs
-
Use correlation IDs to trace requests across services
-
Set up alerts for critical errors and performance thresholds
Part 3: Integrating Dynatrace with Prometheus
Dynatrace Overview
Dynatrace is an enterprise-grade observability platform that provides advanced monitoring, AI-powered analytics, and automated root cause analysis. By integrating Dynatrace with Azure Managed Prometheus, you can:
-
Centralize observability: Consolidate Prometheus metrics with Dynatrace’s full-stack monitoring
-
AI-powered insights: Leverage Davis AI for automatic problem detection and root cause analysis
-
Advanced analytics: Use Dynatrace’s query language (DQL) for complex metric analysis
-
Unified dashboards: Combine infrastructure, application, and business metrics in one platform
-
Enterprise features: Access SLO tracking, service-level monitoring, and compliance reporting
Architecture Overview
Deployment Options
There are two primary approaches to integrate Dynatrace with Prometheus on AKS:
Option 1: OneAgent + ActiveGate (Recommended)
Pros:
-
Full-stack observability (infrastructure + application + Prometheus metrics)
-
Automatic instrumentation of applications
-
AI-powered problem detection
-
Simplified deployment and management
Cons:
-
Requires Dynatrace OneAgent license
-
More resource consumption on cluster nodes
Option 2: ActiveGate Only (Metrics-focused)
Pros:
-
Lower resource consumption
-
Focused on metrics collection only
-
Lower cost (doesn’t require full OneAgent license)
Cons:
-
No automatic application instrumentation
-
Limited to Prometheus metrics only
-
No full-stack visibility
Terraform Configuration
Prerequisites
Before implementing Dynatrace integration, ensure you have:
-
Dynatrace Tenant/Cluster: Active Dynatrace SaaS or Managed environment
-
Dynatrace API Token: With the following scopes:
- activeGateTokenManagement.create
- entities.read
- metrics.ingest
- InstallerDownload
-
Dynatrace PaaS Token: For OneAgent deployment
-
Azure Monitor Workspace: Deployed from Part 1 of this guide
-
Terraform Access: Permissions to deploy resources in AKS cluster
Step 1: Add Required Variables
Add Dynatrace-specific variables to your variables.tf:
Step 2: Create Dynatrace Namespace
Create a dedicated namespace for Dynatrace components:
Step 3: Create Kubernetes Secrets for Dynatrace
Store Dynatrace tokens securely in Kubernetes secrets:
Step 4: Deploy Dynatrace OneAgent (Optional)
Deploy OneAgent as a DaemonSet for full-stack monitoring:
Step 5: Deploy Dynatrace ActiveGate
Deploy ActiveGate for Prometheus metrics scraping:
Step 6: Create ActiveGate Service
Expose ActiveGate service for internal access:
Step 7: Configure Prometheus Remote Write
Configure Azure Managed Prometheus to send metrics to Dynatrace:
Step 8: Update Configuration File
Add Dynatrace-specific values to your .auto.tfvars file:
Step 9: Secure Secrets Management
Recommended Approach: Azure Key Vault Integration
Step 10: Apply Configuration
- Store secrets in Azure Key Vault:
-
Create a PR with all Dynatrace configuration
-
Merge to main branch to trigger Spacelift run
-
Monitor deployment in Terraform output
Dynatrace Validation
After deployment, verify the integration:
Step 1: Verify OneAgent Deployment
Expected output: OneAgent pods should be in Running state on all nodes.
Step 2: Verify ActiveGate Deployment
Expected output: ActiveGate should report healthy status.
Step 3: Verify Dynatrace UI
-
Log into Dynatrace: Navigate to your Dynatrace tenant
-
Check Hosts: Infrastructure → Hosts → Verify AKS nodes appear
-
Check Kubernetes: Kubernetes → Clusters → Find your AKS cluster
-
Check Metrics: Metrics → Explore metrics → Search for Prometheus metrics
-
Verify Ingestion: Settings → Monitoring → Monitored entities → Kubernetes
Step 4: Query Prometheus Metrics in Dynatrace
-
Navigate to Metrics in Dynatrace
-
Search for common Prometheus metrics:
- up: Monitor all targets
- container_cpu_usage_seconds_total: Container CPU metrics
- kube_pod_info: Kubernetes pod information
- node_memory_MemAvailable_bytes: Node memory metrics
- Create custom dashboards combining:
- Prometheus infrastructure metrics
- Application Insights telemetry
- Dynatrace AI insights
Step 5: Configure Dynatrace Alerting
Create alerting rules in Dynatrace:
-
Navigate to Settings → Anomaly detection → Custom events for alerting
-
Create metric events for Prometheus metrics:
Example: High CPU Alert
Example: Pod Crash Alert
Advanced Configuration
Metric Filtering
To control which Prometheus metrics are sent to Dynatrace, configure metric filters:
Custom Dashboards
Create Dynatrace dashboards combining multiple data sources:
-
Infrastructure View: Combine Prometheus node metrics with Dynatrace host monitoring
-
Application Performance: Merge Application Insights traces with Kubernetes metrics
-
Business Metrics: Correlate application logs with infrastructure health
SLO Configuration
Define Service Level Objectives in Dynatrace:
- Availability SLO:
- Metric: up{job="kubernetes-nodes"}
- Target: 99.9% availability
- Timeframe: 30 days
- Performance SLO:
- Metric: http_request_duration_seconds
- Target: 95% of requests < 500ms
- Timeframe: 7 days
Cost Optimization
To optimize Dynatrace costs:
-
Filter Metrics: Only send high-value metrics to Dynatrace
-
Use Recording Rules: Pre-aggregate metrics in Prometheus before sending
-
Adjust Retention: Configure appropriate retention periods in Dynatrace
-
Monitor DPM Usage: Track Davis Data Units (DDU) consumption
-
Leverage Sampling: Use trace sampling for high-volume applications
Troubleshooting Dynatrace Integration
OneAgent Not Reporting
-
Verify tokens: Check API and PaaS tokens are valid
-
Check connectivity: Ensure AKS can reach Dynatrace endpoints
-
Review logs:
kubectl logs -n dynatrace -l app.kubernetes.io/name=oneagent -
Validate RBAC: Ensure OneAgent has proper Kubernetes permissions
ActiveGate Not Scraping Metrics
-
Check configuration: Verify Prometheus endpoint is accessible
-
Test connectivity: Use
curlfrom ActiveGate pod to AMW query endpoint -
Review capabilities: Ensure
metrics_ingestcapability is enabled -
Check firewall rules: Verify network security groups allow traffic
Metrics Not Appearing in Dynatrace
-
Verify ingestion: Check Dynatrace Settings → Monitoring overview
-
Review filters: Ensure
write_relabel_configsaren’t dropping metrics -
Check metric names: Dynatrace may transform Prometheus metric names
-
Validate credentials: Confirm API token has
metrics.ingestscope
High DDU Consumption
-
Analyze metric cardinality: Identify high-cardinality metrics
-
Implement filtering: Use
write_relabel_configsto drop unnecessary metrics -
Use recording rules: Pre-aggregate metrics to reduce data points
-
Review retention policies: Adjust retention based on requirements
Security Considerations
- Token Management:
- Store Dynatrace tokens in Azure Key Vault
- Rotate tokens regularly (every 90 days)
- Use separate tokens for different environments
- Network Security:
- Use Private Link for Dynatrace connectivity (if available)
- Implement network policies to restrict Dynatrace component communication
- Enable TLS for all Dynatrace communications
- RBAC:
- Grant minimal Kubernetes permissions to Dynatrace components
- Use dedicated service accounts for OneAgent and ActiveGate
- Regular audit of Dynatrace access permissions
- Data Privacy:
- Configure metric relabeling to strip sensitive labels
- Review Dynatrace data residency requirements
- Implement data masking for PII in logs
Best Practices Summary
-
Start with ActiveGate Only: Test Prometheus integration before deploying full OneAgent
-
Use Managed Identity: Leverage Azure managed identities where possible
-
Monitor Resource Usage: Track OneAgent and ActiveGate resource consumption
-
Implement Gradual Rollout: Deploy to sandbox/dev environments first
-
Create Runbooks: Document troubleshooting procedures for common issues
-
Set Up Alerting: Configure alerts for Dynatrace component health
-
Regular Reviews: Periodically review metrics being sent to optimize costs
-
Leverage AI: Use Dynatrace Davis AI for anomaly detection and root cause analysis
Conclusion
This comprehensive guide has covered:
-
Infrastructure Setup: Deploying Azure Managed Prometheus and Grafana using Terraform with proper RBAC and team permissions
-
Application Telemetry: Configuring Application Insights with managed identity authentication for secure logging
-
Enterprise Monitoring: Integrating Dynatrace with Prometheus for AI-powered observability and advanced analytics
By following these three parts, you’ve established a complete, enterprise-grade observability stack that provides:
-
Infrastructure monitoring through Prometheus and Grafana
-
Application insights through Application Insights and structured logging
-
AI-powered analytics through Dynatrace integration
-
Unified visibility across the entire stack
This architecture enables your teams to proactively monitor, troubleshoot, and optimize applications running on Azure AKS with industry-leading tools and best practices.
Next Steps
-
Create Custom Dashboards: Build team-specific dashboards in both Grafana and Dynatrace
-
Set Up Alerting: Configure alerts based on your SLOs and operational requirements
-
Implement SLOs: Define and track Service Level Objectives across your services
-
Optimize Costs: Regular review of metrics ingestion and storage costs
-
Train Teams: Conduct training sessions on using the observability tools effectively
-
Document Runbooks: Create operational runbooks for common scenarios