Das Ziel danach wählen, wie schnell jemand handeln muss
Der größte Teil des Benachrichtigungsrauschens entsteht dadurch, dass Alerts an einen Kanal gesendet werden, der mehr Dringlichkeit suggeriert, als sie haben. Wählen Sie das Ziel danach, wie schnell jemand handeln muss.- Kunden verlieren heute Nacht Geld oder Zugriff. On-Call, etwa PagerDuty oder Opsgenie.
- Es wird schlimmer, aber noch ist nichts verloren. Team-Chat, etwa Slack.
- Morgen ist wirklich in Ordnung. E-Mail oder ein Chat-Kanal mit wenig Verkehr.
- Nichts, weil es bereits bekannt ist. Überhaupt kein notifier.
Jeden Trigger auf die Serie eingrenzen, die Sie tatsächlich meinen
Ein Trigger öffnet nicht einen Alert. Er öffnet einen Alert pro passender Serie. Ein Host-Trigger, der beim Standard-hostname* bleibt, erfasst jeden Host, der an die App meldet, sodass 30 Hosts, die gemeinsam einen Schwellenwert überschreiten, 30 Benachrichtigungen für ein Problem erzeugen.
Grenzen Sie den Umfang ein, bis die Benachrichtigung genau sagt, was betroffen ist:
- Ersetzen Sie
*durch einen bestimmten hostname oder ein Präfix wieweb-*. Tag-Werte akzeptieren Wildcards,hostname=frontend*grenzt einen Trigger also auf eine Maschinenklasse ein. - Grenzen Sie Trigger für Fehlerrate und Antwortzeit auf einen einzelnen namespace ein, damit
web,backgroundundadminunterschiedliche Schwellenwerte und unterschiedliche Ziele tragen können. - Fügen Sie ein Tag für die konkrete Ressource hinzu, die Sie interessiert, etwa einen einzelnen mountpoint statt jedes gemounteten Dateisystems.
Exakte Tag-Filter verwenden oder eine dedizierte Alert-Metrik senden
Diese Einschränkung verursacht viele Support-Anfragen zu störendem Alerting, und es lohnt sich, sie zu verstehen, bevor Sie eine Metrik entwerfen. Angenommen, Sie senden einen Counter namensapi_request, versehen mit dem Tag status, damit Sie ihn nach 200, 404 und 500 aufschlüsseln können. Wenn Sie nur an einem exakten Wert interessiert sind, etwa status=500, verwenden Sie diesen exakten Wert im Trigger. Das Problem beginnt, wenn Sie eine Gruppe von Werten wollen: alle 5xx-Antworten, alles außer 200 oder jede fehlgeschlagene Antwort. Ein Tag-Filter kann keine Ausschlüsse oder Bereiche ausdrücken, und * passt auf jeden Wert dieses Tags. Ein Trigger mit breitem Wildcard kann Alerts für erfolgreiche Status neben Fehlern öffnen, und das meiste, was eintrifft, beschreibt eine korrekt funktionierende Anwendung.
Die Lösung ist, die Bedingung, bei der Sie alarmieren möchten, an der Stelle, an der Sie sie senden, zu einer eigenen Serie zu machen. Behalten Sie die getaggte Metrik, wenn sie für Charts nützlich ist, und senden Sie eine zweite, engere für das Alerting:
Shell
Tag-Werte auf eine kleine, feste Menge begrenzen
Verwenden Sie niemals einen Wert als Tag-Wert, der pro Ereignis eindeutig ist. Request-IDs, Auftragsnummern, Kunden-IDs und Zeitstempel sehen alle wie nützlicher Kontext aus und verursachen alle dieselben zwei Probleme. Jeder eindeutige Wert ist eine eigene Serie. Ein Trigger über diese Metrik öffnet einen Alert pro Wert, was eine unbegrenzte Anzahl von Alerts erzeugen kann. Tags mit hoher Kardinalität machen außerdem Metrik-Charts und Alerting schwer handhabbar. Ein Tag-Wert sollte eine Handvoll Varianten haben, die Sie aus dem Gedächtnis aufzählen könnten. Taggen Sie zum Beispiel nach einer begrenzten Dimension wieregion und nicht nach einer eindeutigen ID:
Bei Raten alarmieren, nicht bei Zählwerten
Eine Fehleranzahl überschreitet einen festen Schwellenwert immer dann, wenn der Traffic wächst, und benachrichtigt Sie so an Ihrem geschäftigsten Tag, unabhängig davon, ob etwas nicht stimmt. Die Fehlerrate bleibt um 4 Uhr morgens und in der Spitze gleichermaßen aussagekräftig. Der Wechsel von einem Zählwert zu einer Rate ist oft die einzige Änderung, die aus einem nächtlichen Alert einen nützlichen macht. Behalten Sie Zählwerte nur dort, wo jedes Auftreten zählt und das Volumen naturgemäß niedrig ist, etwa bei Fehlern in einem Zahlungsablauf.warm-up an die Veränderlichkeit der Metrik anpassen
warm-up ist die Zeit, die AppSignal wartet, bevor ein Alert geöffnet wird. Während dieser Wartezeit muss die Metrik – je nach Trigger – über oder unter dem Schwellenwert bleiben. Das filtert einminütige Ausreißer heraus, etwa einen langsamen deploy, eine Garbage-Collection-Pause oder einen neu startenden Host. Legen Sie warm-up danach fest, wie stark sich die Metrik von Minute zu Minute verändert, und nicht danach, wie schwerwiegend die Metrik ist. Beginnen Sie für die meisten Produktions-Alerts mit null bis zwei Minuten. Verwenden Sie einen längeren warm-up nur dann, wenn eine Metrik häufig ausschlägt und sich schnell erholt. Speicher und Swap verändern sich allmählich, sie brauchen daher oft wenig oder keinen warm-up. Wenn Sie 30 oder 60 Minuten benötigen, um Benachrichtigungen zu reduzieren, prüfen Sie stattdessen Schwellenwert oder Umfang.cooldown verwenden, wenn eine Metrik nahe ihrem Schwellenwert bleibt
cooldown verhindert, dass ein Vorfall einen Strom von Öffnungs- und Schließbenachrichtigungen erzeugt, während eine Metrik den Schwellenwert wiederholt überschreitet. Die meisten Trigger brauchen ihn nie. Die Ausnahme sind sich langsam verändernde Ressourcenmetriken, die einen längeren cooldown brauchen können: eine Festplatte nahe 80 % kann diese Linie mehrmals überschreiten, bevor jemand Platz freigibt, sodass sie ohne langen cooldown jedes Mal erneut alarmieren kann, wenn der Wert sich über und unter den Schwellenwert bewegt. Dreißig bis 60 Minuten verwandeln mehrere Benachrichtigungen in einen Alert, der offen bleibt, bis das Problem behoben ist.Den cooldown bei einem uptime monitor nicht erhöhen
Den cooldown zu erhöhen ist die übliche Lösung für einen Trigger, der wiederholt öffnet und schließt, aber hier ist es die falsche Lösung. Wenn ein uptime monitor fehlschlägt, bedeutet das, dass der Endpoint nicht geantwortet hat. Die zweite Benachrichtigung zu unterdrücken macht die erste nicht weniger zutreffend. Greifen Sie stattdessen zu warm-up. AppSignal prüft Ihren Endpoint jede Minute aus vier Regionen und verfolgt jede Region separat, sodass ein Ausfall bis zu vier Alerts öffnen kann und ein Netzwerkproblem zwischen einer einzelnen Region und Ihrem Endpoint einen Alert öffnet, während Ihre Anwendung gesund ist. Ein warm-up von mindestens einer Minute filtert diesen Fall heraus, ohne einen echten Ausfall zu verbergen.Jede Benachrichtigung soll sich selbst erklären
Alert-Müdigkeit hängt nicht nur davon ab, wie viele Benachrichtigungen eintreffen. Sie hängt auch davon ab, wie viel Arbeit es kostet, jede einzelne zu verstehen. Drei Felder liefern diesen Kontext: Name. Sagen Sie, was falsch ist, nicht welche Metrik sich bewegt hat. Ein Trigger für eine benutzerdefinierte Metrik heißt zunächst Custom metric, und eine Liste von Triggern, die alle so heißen, lässt sich nicht triagieren. Beschreibung. Behandeln Sie sie als Runbook. Kurz ist in Ordnung, aber das Feld unterstützt mehrere Absätze, Befehle und Links. Die nützlichsten Beschreibungen enthalten die Informationen, die eine reagierende Person sonst rekonstruieren müsste: die relevante Zahl („das Limit des Load Balancers ist 320”), die Gegenmaßnahmen in der richtigen Reihenfolge, einen Diagnoseschritt, wie lange die Behebung dauert und was die Ursache beim letzten Mal war. Dashboard. Verlinken Sie das Dashboard, das die Metrik neben verwandten Metriken zeigt, damit die Benachrichtigung der reagierenden Person einen Ausgangspunkt für die Untersuchung gibt.Ihre Trigger planmäßig prüfen
Alert-Konfigurationen veralten. Trigger überleben die Vorfälle, die sie motiviert haben, Schwellenwerte für den Traffic des letzten Jahres passen nicht mehr, und in einem Trigger benannte Hosts werden ersetzt. Fragen Sie etwa vierteljährlich für jeden Trigger: Hat er in den letzten 90 Tagen geöffnet, hat jemand darauf reagiert, hat er viele Alerts für einen Vorfall geöffnet, und ist sein Ziel noch das richtige? Ein Alert, auf den niemand reagiert, sollte nachjustiert, umgeleitet oder archiviert werden. Das gesamte Set zu prüfen geht vom Terminal aus schneller als durch das Öffnen jedes einzelnen Triggers:Shell
triggers list, ändern Sie die Felder, die Sie nachjustieren möchten, und geben Sie optionale Werte an, die Sie behalten wollen, etwa notifier-IDs, Tags und den Dashboard-Link:
Shell
Shell
Wie AppSignal auf AppSignal alarmiert
Wir betreiben AppSignal auf AppSignal, und unser Operations-Team optimiert dieses Setup seit Jahren. Seine Form ist ein sinnvolles Ziel, das Sie anstreben können:
Fünf Muster in dieser Tabelle sind für Produktions-Alerts nützlich:
- warm-ups sind kurz. Die meisten liegen zwischen null und zwei Minuten. Der einzige lange betrifft die Festplattennutzung, und er ist mit einer Stunde cooldown kombiniert, statt an deren Stelle zu treten.
- cooldown wird einmal und bewusst verwendet. Nur die Festplattennutzung bleibt üblicherweise über dem Schwellenwert, bis jemand handelt, daher braucht nur sie ihn.
- Nicht jeder Alert benachrichtigt On-Call. Die Verbindungsobergrenze geht an den Team-Chat, weil sie ein Kapazitätsproblem vorhersagt und keinen Ausfall beschreibt.
- E-Mail wird ergänzt, nicht ersetzt. Die Replikationsverzögerung erreicht ein On-Call-Tool und E-Mail zugleich, weil E-Mail der einzige Kanal ist, der weiter erinnert, solange ein Alert offen bleibt.
- Jeder Trigger trägt eine Beschreibung. Die nützlichsten nennen das relevante Limit, geben zwei Gegenmaßnahmen in der richtigen Reihenfolge und halten fest, was die Ursache beim letzten Mal war.
Nächste Schritte
- Arbeiten Sie die Einstellungen im Detail mit Alerts optimieren durch.
- Prüfen Sie mit Alerting in der Produktion, dass nichts Wichtiges unbeobachtet bleibt.
- Finden Sie eine Startkonfiguration für einen bestimmten Alert in den Vorlagen für Alerts.
- Formen Sie eine Metrik beim Senden für das Alerting, mit benutzerdefinierten Metriken.