Prometheus: Waarschuwingen

Hoe Prometheus-waarschuwingen werken en hoe u ze configureert

👋 Welkom bij de Stackhero-documentatie!

Stackhero biedt een kant-en-klare Prometheus cloud oplossing die tal van voordelen biedt, waaronder:

  • Alert Manager inbegrepen om meldingen te sturen naar Slack, Mattermost, PagerDuty, enz.
  • Toegewijde e-mailserver om onbeperkte e-mailmeldingen te verzenden.
  • Blackbox om HTTP, ICMP, TCP en meer te testen.
  • Eenvoudige configuratie met online configuratiebestand editor.
  • Moeiteloze updates met slechts één klik.
  • Optimale prestaties en robuuste beveiliging aangedreven door een privé en toegewijde VM.

Bespaar tijd en vereenvoudig uw leven: het kost slechts 5 minuten om de Prometheus cloud hosting oplossing van Stackhero te proberen!

Prometheus kan uw statistieken analyseren en waarschuwingen activeren op basis van door u gedefinieerde regels. Met Stackhero voor Prometheus worden waarschuwingen in twee fasen verwerkt. Eerst worden de Prometheus-waarschuwingsregels geëvalueerd en vervolgens neemt Alert Manager het over.

Alles is vooraf geïnstalleerd en geconfigureerd met Stackhero voor Prometheus, dus u hoeft alleen minimale instellingen uit te voeren, zoals het toevoegen van uw e-mailadres, om waarschuwingen te ontvangen.

Overzicht van Stackhero voor PrometheusOverzicht van Stackhero voor Prometheus

Wanneer Prometheus statistieken ophaalt, evalueert het deze aan de hand van regels die zijn gespecificeerd in het bestand rules-alert.yml. Deze waarschuwingsregels definiëren drempels en tijdvensters voor het activeren van waarschuwingen op basis van de verzamelde statistieken.

Een waarschuwing kan bijvoorbeeld worden geactiveerd als het schijfgebruik meer dan 80% bedraagt. Bovendien kunnen regels worden ingesteld om toekomstige omstandigheden te voorspellen en een waarschuwing te sturen als wordt geschat dat de schijfruimte binnen 24 uur volledig gevuld zal zijn.

Een ander veelvoorkomend gebruiksscenario is het detecteren van ongewoon gedrag. Bijvoorbeeld, als er een plotselinge piek in het netwerkbandbreedtegebruik is, kan een waarschuwing worden geactiveerd om mogelijke distributed denial-of-service (DDoS)-aanvallen of pogingen tot data-exfiltratie te detecteren.

Prometheus-waarschuwingsregels zijn direct opgenomen in de Prometheus-server.

Alert Manager ontvangt waarschuwingen die door Prometheus-waarschuwingsregels zijn geactiveerd. Het dedupliceert waarschuwingen, groepeert ze en stuurt ze vervolgens door via verschillende meldingskanalen zoals e-mail, Slack, Mattermost, PagerDuty en meer. Het configuratiebestand is alert-manager.yml.

Als er bijvoorbeeld een vertraging op de server optreedt, kunnen Prometheus-waarschuwingsregels afzonderlijke waarschuwingen activeren voor verhoogde belasting en CPU-gebruik. Alert Manager ontvangt deze waarschuwingen, groepeert ze omdat ze betrekking hebben op dezelfde server, en stuurt een enkele geconsolideerde melding naar de juiste ontvanger of team op basis van uw configuratie.

Als de vertraging aanhoudt, blijft Prometheus waarschuwingen sturen, maar Alert Manager zal dubbele berichten onderdrukken gedurende een bepaalde periode om te voorkomen dat uw team wordt overspoeld met overbodige waarschuwingen.

U kunt waarschuwingen ook dempen of volledig onderdrukken indien nodig. Zodra het onderliggende probleem is opgelost, wordt een herstelbericht verzonden om uw teams te informeren.

Dit voorbeeld illustreert een veelvoorkomend scenario, maar u kunt de configuratie volledig aanpassen aan uw specifieke vereisten.

waarschuwing Alert Manager is niet standaard inbegrepen bij Prometheus. Om u tijd te besparen en het proces te vereenvoudigen, hebben we Alert Manager geïntegreerd en geconfigureerd in Stackhero voor Prometheus, zodat u binnen enkele minuten waarschuwingen kunt verzenden met minimale inspanning.

U kunt Prometheus-waarschuwingsregels aanpassen door het bestand rules-alert.yml te bewerken. Om dit te doen, gaat u naar uw Stackhero-dashboard, selecteert u uw Prometheus-service en klikt u op "Configuratie van Prometheus-waarschuwingsregels".

We hebben al enkele standaard waarschuwingsregels toegevoegd aan uw Stackhero voor Prometheus-instantie, dus u hoeft het bestand rules-alert.yml meestal niet te wijzigen, tenzij aanpassing vereist is.

Hieronder staat een voorbeeld van een waarschuwing die wordt geactiveerd als het schijfgebruik meer dan 90% bedraagt:

- alert: "HostOutOfDiskSpace"
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
  for: 2m
  labels:
    severity: "warning"
  annotations:
    summary: "Host out of disk space (instance {{ $labels.instance }})"
    description: "Disk is almost full (< 10% left)"
    value: "{{ $value }}"

Hier is nog een voorbeeld dat een potentiële verzadiging van de schijfruimte binnen de volgende 24 uur voorspelt:

- alert: "HostDiskWillFillIn24Hours"
  expr: (node_filesystem_avail_bytes * 100) / node_filesystem_size_bytes < 10 and ON (instance, device, mountpoint) predict_linear(node_filesystem_avail_bytes{fstype!~"tmpfs"}[1h], 24 * 3600) < 0 and ON (instance, device, mountpoint) node_filesystem_readonly == 0
  for: 2m
  labels:
    severity: "warning"
  annotations:
    summary: "Host disk will fill in 24 hours (instance {{ $labels.instance }})"
    description: "Filesystem is predicted to run out of space within the next 24 hours at the current write rate"
    value: "{{ $value }}"

U kunt veel aanvullende voorbeelden van waarschuwingsregels vinden op de Awesome Prometheus Alerts website.

Om Alert Manager te configureren, bewerkt u het bestand alert-manager.yml. In uw Stackhero-dashboard selecteert u uw Prometheus-service en klikt u op "Configuratie van Alert Manager".

Hieronder presenteren we de basisprincipes. Voor meer details verwijzen wij u naar de officiële documentatie.

De eerste stap is het configureren van de receivers. Elke receiver is een set van meldingsintegraties (zoals e-mail, Slack, enz.) geïdentificeerd door een unieke name.

U kunt bijvoorbeeld een receiver maken met de naam "critical_alert" voor meldingen die worden geactiveerd door waarschuwingen met een kritieke ernst. U kunt ook een receiver maken zoals "devops_team" om waarschuwingen naar uw DevOps-team te sturen.

Het instellen van een receiver-naam op "critical_alert" alleen zal geen waarschuwingen verzenden. De associatie tussen waarschuwingen en de receiver wordt gemaakt in de routes-configuratie die hieronder wordt beschreven.

Zodra een receiver is gedefinieerd, moet u de bijbehorende meldingsintegraties instellen. Deze kunnen e-mails, Slack/Mattermost-meldingen, PagerDuty, Opsgenie, Webhook en meer omvatten.

Hieronder staat een voorbeeld van een receiver genaamd "critical_alert" die een e-mail naar twee gebruikers stuurt en een Slack-bericht naar het #alerts-kanaal:

receivers:
- name: "critical_alert"

  # Stuur kritieke waarschuwingen via e-mail
  email_configs:
    - send_resolved: true
      to: "user@mycompany.com"

  # Stuur kritieke waarschuwingen naar Slack of Mattermost
  slack_configs:
    - send_resolved: true
      api_url: "<your Slack or Mattermost API URL>"
      channel: "#alerts"
      title: "{{ range .Alerts }}{{ .Annotations.summary }}\n{{ end }}"
      text: "{{ range .Alerts }}{{ .Annotations.description }}\n{{ end }}"

U kunt meerdere receivers definiëren om verschillende soorten waarschuwingen te verwerken. U kunt bijvoorbeeld een hebben voor kritieke waarschuwingen, een andere voor foutwaarschuwingen en een andere voor andere soorten waarschuwingen.

Instanties van Stackhero voor Prometheus bevatten een toegewijde en privé e-mailserver waarmee u een onbeperkt aantal e-mailwaarschuwingen kunt verzenden zonder extra kosten.

Nadat u uw receivers hebt geconfigureerd, moet u de routes instellen. De routes vertellen Alert Manager hoe om te gaan met inkomende waarschuwingen van Prometheus en waar ze naartoe moeten worden gestuurd (meestal naar een van uw vooraf geconfigureerde receivers).

Hieronder staat een basisvoorbeeld dat waarschuwingen met een ernst van "critical" naar de receiver genaamd "critical_alert" stuurt:

route:
  routes:
    - match:
        severity: "critical"
      receiver: "critical_alert"

We hebben enkele routes vooraf geconfigureerd in het bestand alert-manager.yml dat bij uw Stackhero voor Prometheus-instantie wordt geleverd. Om waarschuwingen te ontvangen, hoeft u alleen de secties email_configs en/of slack_configs bij te werken met uw meldingsgegevens.