Dashboards

Beispiel: Produktionsalarme

Bring die CloudWatch-Alarme, die dir wichtig sind, in ein Widget auf deinem Home-Bildschirm und Sperrbildschirm, mit den ausgelösten ganz oben. Bau es von Hand oder lass CloudFormation oder Terraform es mit den Alarmen synchron halten, die du bereitstellst.

Aktualisiert am 19. Oktober 2026

Was du baust

Du erstellst ein CloudWatch-Dashboard namens CloudPeek-Alarms mit einem Widget vom Typ Alarmstatus, das deine Produktionsalarme auflistet. Alarme im Zustand ALARM stehen immer zuerst, sodass du genau den Alarm siehst, der dich braucht. In CloudPeek sieht das so aus:

Erst die Alarme im Alarmzustand, dann die ohne genug Daten, dann die mit OK. Mittlere und größere Widgets zeigen, wie lange die letzte Änderung jeweils her ist.

Wenn deine Alarme schon existieren, dauert das etwa fünf Minuten.

Du willst alle Alarme, ohne Dashboard? Tippe in CloudPeek auf Widget erstellen, wähle Vorlage und dann unter „Protokolle und Überwachung“ Alarme oder Alarmübersicht. Alarme listet alle Alarme in der Standardregion des Kontos in derselben Reihenfolge auf, und du kannst es mit Bearbeiten umbenennen, z. B. in „Produktionsalarme“; Alarmübersicht zählt sie, z. B. „2 ausgelöst, 20 OK“. Um nur Alarme zu zeigen, deren Namen gleich beginnen, z. B. mit prod-, wähle in der Vorschau unter Anzeigen die Option Namen beginnen mit … (siehe Nur einige anzeigen). Hast du mehr als ein Konto hinzugefügt, wähle in der Vorschau Alle Konten, um alle Konten und die markierten Regionen abzudecken, mit einer Zeile pro Konto, z. B. „prod: 2 ausgelöst · staging: alle OK“ (siehe Alarme in allen Konten). Bau das Dashboard unten, um die Alarme einzeln auszuwählen oder Alarme aus mehreren Regionen zu zeigen.

Bevor du anfängst

  • CloudWatch-Alarme zum Beobachten: Metrikalarme oder zusammengesetzte Alarme, in beliebigen Regionen eines Kontos.
  • Zugriff für CloudPeek. Die Richtlinie CloudPeek aus Erste Schritte enthält bereits cloudwatch:DescribeAlarms, das Alarm-Widgets brauchen. Hast du das eingerichtet, kann es losgehen.
  • Eine Anmeldung, die CloudWatch-Dashboards erstellen darf, z. B. die eines Administrators.

Was es kostet. Das kostenlose Kontingent von CloudWatch umfasst drei Dashboards; darüber hinaus kostet jedes Dashboard 3 USD im Monat. Alarm-Widgets werden mit DescribeAlarms statt GetMetricData aktualisiert und verursachen daher keine Metrikgebühren: Abgerechnet wird pro Anfrage, und das kostenlose Kontingent von CloudWatch deckt die erste Million Anfragen eines Kontos pro Monat ab. Siehe CloudWatch-Preise.

1. Dashboard erstellen

Ein Dashboard listet Alarme anhand ihres ARN auf, z. B. arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-api-5xx-errors, der Region, Konto und Namen des Alarms enthält.

  1. Öffne CloudWatch › Alarme › Alle Alarme. Öffne jeden gewünschten Alarm und kopiere den ARN aus seinen Details.
  2. Wähle Dashboards › Dashboard erstellen. Nenne es CloudPeek-Alarms und wähle Dashboard erstellen. Wenn sich das Fenster Widget hinzufügen öffnet, schließe es.
  3. Wähle Aktionen › Quelle anzeigen/bearbeiten, ersetze die Quelle durch das Dashboard-JSON unten mit deinen ARNs statt der Beispiele und wähle Aktualisieren.
  4. Wähle Speichern.

Statt die Quelle zu bearbeiten, kannst du auch Widget hinzufügen › Alarmstatus wählen und die Alarme markieren. Füge dann in der Quelle "sortBy": "stateUpdatedTimestamp" hinzu, damit die neuesten Änderungen zuerst kommen.

Liste die ARNs aller Alarme auf, deren Name mit prod- beginnt:

Shell
aws cloudwatch describe-alarms \
  --region us-east-1 \
  --alarm-name-prefix prod- \
  --query '[MetricAlarms[].AlarmArn, CompositeAlarms[].AlarmArn][]' \
  --output json

Setze sie statt der Beispiele in production-alarms.json ein (unten gezeigt) und führe dann Folgendes aus:

Shell
aws cloudwatch put-dashboard \
  --region us-east-1 \
  --dashboard-name CloudPeek-Alarms \
  --dashboard-body file://production-alarms.json

Oder baue mit jq das Dashboard in einem Schritt aus diesen Alarmen:

Shell
aws cloudwatch describe-alarms \
  --region us-east-1 \
  --alarm-name-prefix prod- \
  --query '[MetricAlarms[].AlarmArn, CompositeAlarms[].AlarmArn][]' \
  --output json |
jq '{widgets: [{type: "alarm", x: 0, y: 0, width: 12, height: 6,
  properties: {title: "Production alarms", sortBy: "stateUpdatedTimestamp", alarms: .}}]}' \
  > production-alarms.json

aws cloudwatch put-dashboard \
  --region us-east-1 \
  --dashboard-name CloudPeek-Alarms \
  --dashboard-body file://production-alarms.json

Führe es erneut aus, wenn du Alarme hinzufügst.

Wenn deine Alarme im selben Template stehen, liste sie mit ${Alarm.Arn} innerhalb von !Sub auf, dann passt das Dashboard immer zu den Alarmen, die du bereitstellst:

CloudFormation
  AlarmsDashboard:
    Type: AWS::CloudWatch::Dashboard
    Properties:
      DashboardName: CloudPeek-Alarms
      DashboardBody: !Sub |
        {
          "widgets": [
            {
              "type": "alarm", "x": 0, "y": 0, "width": 12, "height": 6,
              "properties": {
                "title": "Production alarms",
                "sortBy": "stateUpdatedTimestamp",
                "alarms": [
                  "${ApiErrorsAlarm.Arn}",
                  "${QueueDepthAlarm.Arn}"
                ]
              }
            }
          ]
        }

Hier sind ApiErrorsAlarm und QueueDepthAlarm Ressourcen vom Typ AWS::CloudWatch::Alarm im selben Template. Für Alarme, die anderswo definiert sind, stelle cloudpeek-alarms.yaml mit ihren ARNs bereit:

cloudpeek-alarms.yaml (Ressourcen)Herunterladen
Resources:
  # sortBy puts the most recent change first within each state; CloudPeek always lists alarms in
  # ALARM first. The ARNs are joined into a JSON array of strings.
  Dashboard:
    Type: AWS::CloudWatch::Dashboard
    Properties:
      DashboardName: !Ref DashboardName
      DashboardBody: !Sub
        - |
          {
            "widgets": [
              {
                "type": "alarm",
                "x": 0,
                "y": 0,
                "width": 12,
                "height": 6,
                "properties": {
                  "title": "${WidgetTitle}",
                  "sortBy": "stateUpdatedTimestamp",
                  "alarms": [ "${Alarms}" ]
                }
              }
            ]
          }
        - Alarms: !Join ['", "', !Ref AlarmArns]
Shell
aws cloudformation deploy \
  --stack-name CloudPeek-Alarms \
  --template-file cloudpeek-alarms.yaml \
  --parameter-overrides 'AlarmArns=arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-api-5xx-errors,arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-worker-queue-depth'

Wenn deine Alarme in derselben Konfiguration stehen, liste ihre arn-Attribute auf, dann passt das Dashboard immer zu den Alarmen, die du anwendest:

Terraform
resource "aws_cloudwatch_dashboard" "alarms" {
  dashboard_name = "CloudPeek-Alarms"
  dashboard_body = jsonencode({
    widgets = [{
      type = "alarm", x = 0, y = 0, width = 12, height = 6
      properties = {
        title  = "Production alarms"
        sortBy = "stateUpdatedTimestamp"
        alarms = [
          aws_cloudwatch_metric_alarm.api_5xx.arn,
          aws_cloudwatch_metric_alarm.queue_depth.arn,
        ]
      }
    }]
  })
}

Hier sind api_5xx und queue_depth Ressourcen vom Typ aws_cloudwatch_metric_alarm in derselben Konfiguration. Wenn du Alarme mit for_each erstellst, liste sie alle mit [for alarm in aws_cloudwatch_metric_alarm.prod : alarm.arn] auf. Für Alarme, die anderswo definiert sind, wende cloudpeek-alarms.tf mit ihren ARNs an:

cloudpeek-alarms.tf (Dashboard)Herunterladen
variable "alarm_arns" {
  description = "The ARNs of the alarms to list. Each ARN names its own region, so one widget can list alarms from several regions."
  type        = list(string)

  validation {
    condition     = length(var.alarm_arns) > 0
    error_message = "List at least one alarm ARN."
  }
}

# sortBy puts the most recent change first within each state; CloudPeek always lists alarms in
# ALARM first.
resource "aws_cloudwatch_dashboard" "alarms" {
  dashboard_name = var.dashboard_name
  dashboard_body = jsonencode({
    widgets = [
      {
        type   = "alarm"
        x      = 0
        y      = 0
        width  = 12
        height = 6
        properties = {
          title  = var.widget_title
          sortBy = "stateUpdatedTimestamp"
          alarms = var.alarm_arns
        }
      },
    ]
  })
}
terraform.tfvars
alarm_arns = [
  "arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-api-5xx-errors",
  "arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-worker-queue-depth",
]
Shell
terraform init
terraform apply

2. Konto hinzufügen und Widget anheften

  1. Öffne CloudPeek und füge im Tab Konten das Konto mit deinen Alarmen hinzu, mit einem Zugriffsschlüssel oder über IAM Identity Center. Siehe Erste Schritte, Schritt 2.
  2. Öffne im Tab Konten das Konto, dann das Dashboard CloudPeek-Alarms, und tippe bei Production alarms auf Anheften.
  3. Füge CloudPeek zu deinem Home-Bildschirm hinzu (siehe Home-Bildschirm und Sperrbildschirm). Es zeigt zuerst Production alarms, das zuletzt angeheftete Widget. Die mittlere Größe zeigt, wann sich jeder Alarm zuletzt geändert hat; die kleine eignet sich für einen schnellen Blick auf die Anzahl.
  4. Tippe auf das Widget, um alle Alarme mit dem Grund von CloudWatch für ihren Zustand und dessen Beginn zu sehen und jeden davon in der AWS-Konsole zu öffnen. Tippe bei einem mittleren oder großen Widget auf einen Alarm, um direkt dorthin zu springen.

Ergebnis: Das Widget listet deine Alarme auf, ausgelöste ganz oben. Auf dem Sperrbildschirm von iPhone und iPad zeigt es die Zusammenfassung, z. B. „1 im Alarm“ oder „Alle OK“.

Das Dashboard erklärt

Egal welches Werkzeug du nutzt, am Ende sieht das Dashboard so aus, mit den ARNs deiner eigenen Alarme:

production-alarms.jsonHerunterladen
{
  "widgets": [
    {
      "type": "alarm",
      "x": 0,
      "y": 0,
      "width": 12,
      "height": 6,
      "properties": {
        "title": "Production alarms",
        "sortBy": "stateUpdatedTimestamp",
        "alarms": [
          "arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-api-5xx-errors",
          "arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-worker-queue-depth",
          "arn:aws:cloudwatch:us-east-1:123456789012:alarm:prod-api-high-cpu"
        ]
      }
    }
  ]
}
  • Ein alarm-Widget listet Alarme anhand ihres ARN auf, so viele du willst.
  • "sortBy": "stateUpdatedTimestamp" listet innerhalb jedes Zustands die neueste Änderung zuerst auf, in CloudPeek und in der CloudWatch-Konsole.
  • Jeder ARN enthält seine Region, und CloudPeek sucht jeden Alarm in seiner eigenen Region. So kann ein Widget Alarme aus mehreren Regionen auflisten.

Wie Alarme sortiert werden

  • Alarme im Zustand ALARM kommen in CloudPeek immer zuerst, dann Alarme ohne genug Daten, dann solche, die es nicht finden kann, dann Alarme mit OK. Hast du mehr Alarme, als hineinpassen, werden die angezeigt, die dich brauchen.
  • Ohne sortBy sortiert die Konsole Alarme nach Namen, und CloudPeek behält die Reihenfolge bei, in der sie aufgelistet sind, weiterhin mit den Alarmen im Zustand ALARM zuerst.
  • Ein kleines Widget zeigt seine Zusammenfassung und die ersten drei oder vier Alarme. Mittlere und größere Widgets zeigen so viele, wie hineinpassen, bei einem großen etwa ein Dutzend, jeweils mit der Zeit seit der letzten Zustandsänderung. Weitere werden als +N weitere gezählt.
  • Die Zusammenfassung auf kleinen Widgets und dem Sperrbildschirm lautet N im Alarm in Rot, Alle OK in Grün, wenn alle Alarme OK sind, Keine Daten, wenn noch keiner genug Daten hat, oder N unbekannt, wenn manche keine Daten haben oder nicht gefunden werden.
  • Das Symbol jedes Alarms zeigt seinen Zustand: siehe Alarmlisten.

Bei Alarm benachrichtigt werden

CloudPeek kann dich benachrichtigen, wenn einer der Alarme eines Alarm-Widgets in den Zustand ALARM wechselt, mit dem Namen des Alarms und dem Grund von CloudWatch, z. B. „Threshold Crossed: 1 datapoint [12.0] was greater than the threshold (10.0).“ Das funktioniert mit jedem Alarm-Widget: einem aus einem Dashboard angehefteten wie Production alarms oder den Vorlagen Alarme und Alarmübersicht, auch über alle deine Konten hinweg; dann benachrichtigt es dich, wenn in einem davon ein Alarm ausgelöst wird (siehe Alarme in allen Konten).

  1. Tippe im Tab Widgets auf Production alarms, um seine eigene Ansicht zu öffnen.
  2. Aktiviere Bei Alarm benachrichtigen unter der Liste der Alarme.
  3. Beim ersten Mal fragt dein Gerät, ob CloudPeek dir Benachrichtigungen senden darf (unter Android ab Android 13): Tippe auf Erlauben (unter Android „Zulassen“).

Ergebnis: Der Schalter ist eingeschaltet. Findet eine Aktualisierung einen der Alarme des Widgets im Alarmzustand, der es bei der vorherigen Aktualisierung noch nicht war, bekommst du eine Benachrichtigung wie „prod-api-5xx-errors ist im Alarmzustand“. Tippe darauf, um die Ansicht des Widgets zu öffnen, mit dem Grund jedes Alarms und einem Link zu jedem in der AWS-Konsole.

Benachrichtigungen entstehen bei den Aktualisierungen des Widgets: durch Home-Bildschirm-Widgets, die es zeigen (und auf iPhone und iPad Sperrbildschirm-Widgets), auch durch eine Übersicht, die es auflistet, und in der App. Lass das Widget auf deinem Home-Bildschirm, wie in Schritt 2, sonst wird es nur aktualisiert, während CloudPeek geöffnet ist.

Kein Ersatz für die Alarmierung der Rufbereitschaft. Benachrichtigungen entstehen bei den Aktualisierungen des Widgets und kommen daher nur so schnell, wie Widgets aktualisiert werden: auf iPhone und iPad oft im Abstand von mehreren zehn Minuten und seltener im Stromsparmodus oder wenn du das Widget selten ansiehst; unter Android höchstens alle 15 Minuten und seltener, während das Gerät Akku spart (siehe Wann Widgets aktualisiert werden). Auch das Öffnen der App aktualisiert es. Alarmiere bei Alarmen, die innerhalb von Minuten jemanden brauchen, weiterhin über Amazon SNS oder dein Rufbereitschafts-Tool.

  • Jeder Alarm wird bei jedem Wechsel in den Alarmzustand einmal gemeldet, egal wie viele Aktualisierungen oder Widgets ihn finden. Ein Alarm, der schon im Alarmzustand ist, wenn du die Benachrichtigungen einschaltest, wird beim nächsten Auslösen gemeldet. Ein Wechsel von OK zu „nicht genug Daten“ ist kein Auslösen und wird daher nicht gemeldet.
  • Bis zu drei Alarme, die gleichzeitig ausgelöst werden, bekommen je eine eigene Benachrichtigung. Bei mehr kommt eine einzige Benachrichtigung, die alle nennt, z. B. „4 Alarme sind im Alarmzustand“.
  • Ein Alarm mit demselben Namen wie ein anderer im Widget wird mit seiner Region genannt und kontenübergreifend mit seiner AWS-Konto-ID, wenn erst sie die beiden unterscheidet, z. B. „api-5xx (us-east-1, 222222222222) ist im Alarmzustand“.
  • Benachrichtigungen werden auf deinem Smartphone oder Tablet aus dem erzeugt, was das Widget abgerufen hat. Nichts wird an CloudPeek oder einen Push-Dienst gesendet, und sie brauchen keine AWS-Berechtigung, die das Widget nicht schon hat.
  • Entfernst du das Widget, werden seine Benachrichtigungen ausgeschaltet, und Rückgängig schaltet sie wieder ein.
  • Sind Benachrichtigungen für CloudPeek in den Einstellungen deines Geräts ausgeschaltet, zeigt die Ansicht des Widgets „CloudPeek darf dich nicht benachrichtigen. Erlaube es in den Einstellungen, damit du benachrichtigt wirst.“ Tippe auf iPhone und iPad auf Einstellungen öffnen, aktiviere Mitteilungen erlauben und kehre dann zu CloudPeek zurück. Tippe unter Android auf Einstellungen öffnen; damit öffnen sich die Benachrichtigungseinstellungen von CloudPeek. Schalte sie ein und kehre dann zurück.

Fehlerbehebung

Ein Alarm zeigt einen gestrichelten Kreis

CloudPeek konnte ihn nicht finden. Prüfe, ob Name, Region und Konto im ARN genau zum Alarm passen: Bei Alarmnamen wird zwischen Groß- und Kleinschreibung unterschieden. CloudPeek sucht Alarme in dem Konto, aus dem du das Widget angeheftet hast. Ein Alarm in einem anderen AWS-Konto kann also nicht gefunden werden; setze ihn auf ein Dashboard in diesem Konto und füge dieses Konto zu CloudPeek hinzu.

Ein Alarm zeigt ein Fragezeichen

Er hat noch nicht genug Daten, damit CloudWatch ihn auswerten kann, wie in der Konsole. Er steht nach den Alarmen im Zustand ALARM.

CloudPeek meldet „Zugriff verweigert“

Die Anmeldung braucht cloudwatch:DescribeAlarms. Das ist in der Richtlinie CloudPeek enthalten und in der von AWS verwalteten Richtlinie CloudWatchReadOnlyAccess.

Benachrichtigungen kommen nicht an

Prüfe, ob Bei Alarm benachrichtigen für das Widget eingeschaltet ist, ob seine Ansicht nicht meldet, dass Benachrichtigungen ausgeschaltet sind, und ob das Widget auf deinem Home-Bildschirm liegt (oder auf iPhone und iPad auf deinem Sperrbildschirm), denn die Aktualisierungen dort lösen sie aus. Sie kommen nur so oft, wie das Widget aktualisiert wird, und ein Alarm, der schon im Alarmzustand war, wird beim nächsten Auslösen gemeldet. Siehe Bei Alarm benachrichtigt werden.

Die Reihenfolge in der Konsole ist anders

Ohne "sortBy": "stateUpdatedTimestamp" sortiert die CloudWatch-Konsole Alarme nach Namen. Füge es zu den Eigenschaften des Widgets hinzu, damit die Reihenfolge zu CloudPeek passt.

Etwas anderes

Siehe Fehlerbehebung oder schreib an support@cloudpeek.app. Schick uns niemals deinen geheimen Zugriffsschlüssel.