Grafana Dashboards

Unified monitoring & visualization — Azure · AWS · GCP

Concept

Grafana is the universal dashboarding tool across all three clouds. Each cloud also has its own native monitoring solution, but Grafana can pull data from all three simultaneously for unified multi-cloud dashboards.

Native Monitoring
Azure Monitor
Amazon CloudWatch
Cloud Monitoring (Stackdriver)
Managed Grafana
Azure Managed Grafana
Amazon Managed Grafana
Cloud Monitoring (Grafana plugin)
Metrics Source
Azure Monitor Data Source
CloudWatch Data Source
Cloud Monitoring Data Source
Logs Source
Azure Log Analytics
CloudWatch Logs
Cloud Logging
Alerting
Azure Monitor Alerts (Action Groups)
CloudWatch Alarms (SNS/Lambda)
Cloud Monitoring Alerting (Notification Channels)
Distributed Tracing
Application Insights
X-Ray
Cloud Trace

Grafana Dashboard JSON (GCP K8s Pod Status)

{
  "datasource": {
    "type": "stackdriver",
    "uid": "my-gcp-project"
  },
  "targets": [{
    "query": {
      "metricType": "logging.googleapis.com/user/error_count",
      "filters": [
        "resource.type=k8s_pod",
        "severity>=ERROR"
      ]
    }
  }]
}

○ Azure — Azure Managed Grafana

Setup: Create an Azure Managed Grafana instance. Link to Azure Monitor + Log Analytics. Supports managed identity for secure data source access.

CLI: az grafana create -g prod-rg -n my-grafana

○ AWS — Amazon Managed Grafana

Setup: Create workspace. Configure IAM role for CloudWatch access. Supports SAML/OIDC SSO. Pre-built dashboards for AWS services.

CLI: aws grafana create-workspace --name my-grafana --authentication-providers ["SAML"]

○ GCP — Self-Managed Grafana on GKE

Setup: Deploy Grafana via Helm on GKE. Add Google Cloud Monitoring data source. Use Workload Identity for service account auth.

Helm: helm repo add grafana https://grafana.github.io/helm-charts && helm install grafana grafana/grafana

Key Prometheus + Grafana Alert Rule

alert: PodCrashLoopBackOff
expr: rate(kube_pod_status_phase{phase="CrashLoopBackOff"}[5m]) > 0
for: 2m
labels:
  severity: critical
annotations:
  summary: Pod {{ $labels.pod }} is crash looping in {{ $labels.namespace }}
  description: Check kubectl logs {{ $labels.pod }} -n {{ $labels.namespace }}