Ontwikkel een geautomatiseerd escalatieproces voor Nagios of Zabbix
description
Met deze prompt kun je een efficiënt escalatiesysteem opzetten dat helpt om kritieke netwerkproblemen snel en gestructureerd aan te pakken. Dit vermindert downtime en verbetert de samenwerking tussen teams door duidelijke communicatie en automatische meldingen. Het is beter dan algemene monitoringoptimalisaties omdat het zich richt op responsprocessen en communicatieflows.
prompt
Help me bij het ontwerpen van een geautomatiseerd escalatieproces in <monitoring_tool> voor mijn netwerk. Beschrijf hoe ik meldingen kan doorsturen naar verschillende teams of personen op basis van ernst en tijdsduur van de waa ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een stapsgewijze benadering om een geautomatiseerd escalatieproces in Nagios te ontwerpen voor jouw netwerk:
1. Nagios-configuratie voor meldingen:
- Definieer services en hosts voor routers, switches en firewalls.
- Stel contactgroepen en contactpersonen in voor de verschillende teams of personen, bijvoorbeeld netwerkbeheer, security, etc.
2. Instellen van escalatiecriteria:
- Gebruik de ingebouwde checkinterval- en retry-instellingen om de tijdsduur van waarschuwingen te monitoren.
- Maak gebruik van de "host or service escalation" functies in Nagios.
3. Gebruik van 'Escalation' configuraties:
- Definieer escalatie-regels in de Nagios 'escalation' definitie.
- Voorbeeld: Als een waarschuwing langer dan 15 minuten blijft bestaan, verhoog de prioriteit of stuur een escalatie.
4. Condities voor escalatie:
- Voeg in de 'services' of 'hosts' de 'max_check_attempts' en 'check_interval' toe om de duur van de waarschuwing te bepalen.
- Gebruik de 'state' en 'time' in de Nagios 'event handlers' of via externe scripts om te controleren hoe lang een waarschuwing bestaat.
5. Automatisering met scripts:
- Maak een extern script (bijvoorbeeld in Bash of Python) dat periodiek de status van de services controleert.
- Als een waarschuwing langer dan 15 minuten bestaat, stuur dan een escalatie.
6. Communicatiekanalen:
- Configureer contactgroepen met de juiste communicatiekanalen (E-mail en SMS). Bijvoorbeeld:
- Voor e-mail: gebruik de 'mail' command in Nagios.
- Voor SMS: gebruik een SMS-gateway API of een e-mail-naar-SMS dienst.
7. Escalatieroutes:
- Stel meerdere contactgroepen in, bijvoorbeeld:
- Eerste lijn: Basismeldingen naar netwerkbeheer.
- Bij langdurige of hoog risico waarschuwingen: Escalatie naar security of hogere managers.
8. Voorbeeldconfiguratie fragment:
```nagios
define contact {
contact_name netwerkbeheer
alias Netwerkbeheer
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email beheer@jouwdomein.nl
}
define contactgroup {
contactgroup_name netwerkteam
members netwerkbeheer
}
define service {
host_name router1
service_description Connectivity
check_command check_ping
max_check_attempts 1
normal_check_interval 5
retry_check_interval 1
notification_interval 15
notification_options w,c,r
contact_groups netwerkteam
}
```
9. Scripts voor escalatie:
- Maak een script dat de status van services controleert en na 15 minuten zonder herstel een nieuwe melding verstuurt.
- Bijvoorbeeld: een cronjob die elke minuut draait en de status bewaart.
10. Testen en fine-tunen:
- Voer tests uit door een service op te zetten die langer dan 15 minuten uitvalt.
- Controleer of de escalatie correct wordt uitgevoerd en de juiste teams bereiken.
Door deze stappen te volgen, creëer je een robuust en automatisch escalatieproces in Nagios dat meldingen effectief doorstuurt op basis van ernst en tijdsduur, via e-mail en sms.
provider: deepseek
model: deepseek-chat
Zeker, ik help u graag bij het ontwerpen van een geautomatiseerd escalatieproces in Nagios. Hieronder vindt u een stapsgewijze handleiding in het Nederlands.
### Overzicht van het Escalatieproces
U wilt dat:
1. **Alle waarschuwingen** eerst naar een primair team/persoon gaan (bijv. NOC of een eerste-lijnsbeheerder).
2. Als een waarschuwing van **hoog risico** is **en** langer dan **15 minuten** actief blijft zonder te zijn opgelost, deze automatisch wordt geëscaleerd naar een secundair team of senior beheerder.
3. De primaire melding via **e-mail** gaat en de geëscaleerde melding via **SMS** (of een andere, dringendere channel).
---
### Stap 1: Definieer Uw Contacten en Contactgroepen
Eerst moet u de personen en teams definiëren in Nagios.
1. **Maak contacten aan** (`contacts.cfg` of in uw configuratiemap):
Dit zijn de individuele personen. Definieer hier hun e-mail en SMS-gateway adres (bijv. `1234567890@provider-sms-gateway.com`).
```bash
# Voorbeeld definitie voor een eerste-lijnsbeheerder
define contact {
contact_name jansen_primair
alias Jan Jansen - Primair
email j.jansen@uwbedrijf.nl
# Voor SMS, gebruik het veld 'pager' of een aangepast attribuut
pager 0612345678@sms.provider.nl
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email, notify-service-by-sms
host_notification_commands notify-host-by-email, notify-host-by-sms
}
# Voorbeeld definitie voor een senior netwerkbeheerder (escalatie)
define contact {
contact_name pietersen_secundair
alias Erik Pietersen - Escalatie
email e.pietersen@uwbedrijf.nl
pager 0687654321@sms.provider.nl
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email, notify-service-by-sms
host_notification_commands notify-host-by-email, notify-host-by-sms
}
```
2. **Maak contactgroepen aan** (`contactgroups.cfg`):
Groepeer uw contacten logisch.
```bash
# Primaire groep voor eerste meldingen
define contactgroup {
contactgroup_name netwerk-primair-team
alias Primair Netwerk Team
members jansen_primair
}
# Groep voor geëscaleerde meldingen
define contactgroup {
contactgroup_name netwerk-escalatie-team
alias Escalatie Netwerk Team
members pietersen_secundair
}
```
### Stap 2: Definieer Uw Hosts en Services met Escalatie
Nu moet u de escalatieregels koppelen aan de specifieke netwerkapparaten (hosts) en de checks die u erop uitvoert (services).
1. **Host definitie** (bijv. voor een router in `hosts.cfg`):
Wijs de primaire contactgroep toe aan de host.
```bash
define host {
use generic-router
host_name core-router-01
alias Onze Belangrijke Core Router
address 192.168.1.1
contacts jansen_primair # Individueel contact
contact_groups netwerk-primair-team # Primaire groep
... # overige parameters
}
```
2. **Service definitie** (bijv. Ping check in `services.cfg`):
Dit is waar u de escalatie specifiek configureert. U moet het veld `escalation_options` gebruiken om aan te geven voor welke states (Warning, Critical, Unknown) de escalatie geldt.
```bash
# Basis service definitie voor ping
define service {
use generic-service
host_name core-router-01
service_description PING
check_command check_ping!100.0,20%!500.0,60%
contact_groups netwerk-primair-team
# Escalatie regel koppelen aan deze service
service_escalations netwerk-hoog-risico-escalatie
}
```
### Stap 3: Configureer de Escalatieregels (Kern van het Ontwerp)
Dit is de daadwerkelijke escalatiedefinitie. U maakt een bestand aan, bijvoorbeeld `escalations.cfg`.
```bash
# Escalatieregel voor hoog-risico services die langer dan 15 minuten critical zijn
define serviceescalation {
# Naam van de escalatieregel
escalation_name netwerk-hoog-risico-escalatie
# Waarop is deze escalatie van toepassing?
# Link naar host_name en service_description uit service definitie
host_name core-router-01, core-switch-01, firewall-01 # of gebruik een hostgroup zoals 'netwerk-critical-devices'
service_description PING, HTTP, SSH, CPU_Load # Services waarop geëscaleerd moet worden
# ESCALATIECRITERIA:
# Eerste criterium: Alleen escaleren bij 'critical' of 'warning' states (u,c)
escalation_options c
# Tweede criterium: Tijdsduur. 'first_notification' is het startpunt.
# Als de service na 15 minuten (3e notificatie, aangenomen notificatie-interval van 5 min) nogsteeds down is, trigger escalatie.
first_notification 3
last_notification 0 # 0 = blijf escaleren tot het probleem is opgelost
# Naar wie escaleer je en met welke methode?
# De 'contact_groups' hier overschrijft de contact_groups van de service zelf.
contact_groups netwerk-escalatie-team
# BELANGRIJK: Zorg dat de notificatie-commando's voor deze groep zijn ingesteld op SMS.
# Dit regel je in de definitie van de contactgroep of het individuele contact (zie Stap 1).
}
```
**Uitleg tijdsduur (`first_notification`):**
Nagios werkt met notificatie-intervallen. Stel uw `normal_check_interval` is 5 minuten en uw `notification_interval` is ook 5 minuten.
* T=0: Service wordt CRITICAL -> Eerste notificatie naar `netwerk-primair-team`.
* T=5 min: Tweede notificatie naar primair team.
* T=15 min: Derde notificatie. Omdat `first_notification` is ingesteld op `3`, wordt deze notificatie **geëscaleerd** naar `netwerk-escalatie-team`. Omdat deze groep is geconfigureerd met SMS-commando's, gaat er nu een SMS uit.
### Stap 4: Configureer Notificatie-commando's voor SMS
Zorg dat het SMS-commando correct is gedefinieerd (meestal in `commands.cfg`). Dit is afhankelijk van uw SMS-gateway (bijv. een script dat een HTTP-request doet, of een e-mail naar een speciale afleveradres).
```bash
# Voorbeeld van een SMS notificatiecommando dat een shellscript aanroept
define command {
command_name notify-service-by-sms
command_line /usr/local/nagios/etc/scripts/sendsms.sh -n "$CONTACTPAGER$" -m "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ - $LONGDATETIME$"
}
define command {
command_name notify-host-by-sms
command_line /usr/local/nagios/etc/scripts/sendsms.sh -n "$CONTACTPAGER$" -m "$NOTIFICATIONTYPE$: $HOSTALIAS$ is $HOSTSTATE$ - $LONGDATETIME$"
}
```
### Samenvatting en Controlelijst
1. [ ] **Contacten en Groepen**: Gedefinieerd met juiste e-mail en SMS-gegevens.
2. [ ] **Hosts en Services**: Gekoppeld aan de primaire contactgroep en voorzien van de `service_escalations` directive.
3. [ ] **Escalatieregels** (`escalations.cfg`): Correct gedefinieerd met:
* Juiste `host_name` en `service_description`.
* `escalation_options` ingesteld op `c` (critical).
* `first_notification` ingesteld op `3` (voor ~15 minuten bij 5-min intervals).
* `contact_groups`指向 de escalatiegroep.
4. [ ] **SMS Commando's**: Getest en werkend.
5. [ ] **Configuratie Valideren**: Voer altijd `sudo nagios -v /usr/local/nagios/etc/nagios.cfg` uit om syntaxfouten te vinden voordat u de service herstart.
Dit ontwerp zorgt voor een robuust en geautomatiseerd escalatieproces dat precies voldoet aan uw criteria.
error: Generation failed [deepseek] prompt_id=2671 locale=fr err=DeepSeek connection/timeout