[comment]: # translation:outdated

[comment]: # ({622befb9-622befb9})
# 3 SNMP traps

[comment]: # ({/622befb9-622befb9})

[comment]: # ({d7b4b718-ff07904b})
#### Overzicht

Het ontvangen van SNMP-traps is het tegenovergestelde van het opvragen van SNMP-enabled apparaten.

In dit geval wordt de informatie verzonden vanaf een SNMP-enabled apparaat en wordt deze verzameld of "gevangen" door Zabbix.

Gewoonlijk worden traps verzonden wanneer er een verandering van toestand optreedt en de agent maakt verbinding met de server op poort 162 (in tegenstelling tot poort 161 aan de kant van de agent die wordt gebruikt voor het opvragen). Het gebruik van traps kan sommige kortdurende problemen detecteren die zich voordoen te midden van het opvraaginterval en die mogelijk worden gemist door de query-gegevens.

Het ontvangen van SNMP-traps in Zabbix is ontworpen om te werken met **snmptrapd** en een van de mechanismen voor het doorgeven van de traps aan Zabbix - hetzij een Bash- of Perl-script of SNMPTT.

::: noteclassic
De eenvoudigste manier om trap-monitoring in te stellen na het configureren van Zabbix
is het gebruik van de Bash-scriptoplossing, omdat Perl en SNMPTT vaak
ontbreken in moderne distributies en een complexere configuratie vereisen.
Deze oplossing maakt echter gebruik van een script geconfigureerd als `traphandle`.
Voor betere prestaties op productiesystemen kunt u de ingebedde Perl-oplossing gebruiken
(either script with `do perl` option or SNMPTT).
:::

Het werkproces voor het ontvangen van een trap:

1.  `snmptrapd` ontvangt een trap
2.  `snmptrapd` geeft de trap door aan het ontvangende script (Bash, Perl)
    of SNMPTT
3.  De ontvanger analyseert, formatteert en schrijft de trap naar
    een bestand
4.  Zabbix SNMP-trapper leest en analyseert het trapbestand
5.  Voor elke trap vindt Zabbix alle "SNMP trapper" items met hostinterfaces die overeenkomen met het ontvangen trapadres. Let op dat alleen de geselecteerde "IP" of "DNS" in de hostinterface wordt gebruikt tijdens de matching.
6.  Voor elk gevonden item wordt de trap vergeleken met regexp in
    `snmptrap[regexp]`. De trap wordt ingesteld als de waarde van **alle**
    overeenkomende items. Als er geen overeenkomend item wordt gevonden en er een
    `snmptrap.fallback` item is, wordt de trap ingesteld als de waarde van dat item.
7.  Als de trap niet is ingesteld als de waarde van een item, logt Zabbix standaard de niet-gekoppelde trap. (Dit is geconfigureerd via "Log unmatched SNMP
    traps" in Beheer → Algemeen → Overige.)

[comment]: # ({/d7b4b718-ff07904b})

[comment]: # ({new-657fb528})
##### Notes on HA failover

During high-availability (HA) node switch, Zabbix will continue processing after the last record within the last ISO 8601 timestamp; if the same record is not found then only the timestamp will be used to identify last position.

[comment]: # ({/new-657fb528})

[comment]: # ({e64b3118-a8df124c})
#### SNMP-traps configureren

Het configureren van de volgende velden in de frontend is specifiek voor dit itemtype:

-   Uw host moet een SNMP-interface hebben

In *Gegevensverzameling → Hosts*, in het veld **Hostinterface**, stelt u een SNMP-interface in met het juiste IP- of DNS-adres. Het adres van elke ontvangen trap wordt vergeleken met de IP- en DNS-adressen van alle SNMP-interfaces om de overeenkomstige hosts te vinden.

-   Configureer het item

In het veld **Sleutel** gebruikt u een van de SNMP-trapsleutels:

|Sleutel|<|<|
|--|--|------|
|Omschrijving|Terugwaarde|Opmerkingen|
|**snmptrap**\[regexp\]|<|<|
|Vangt alle SNMP-traps die overeenkomen met de [reguliere expressie](/manual/regular_expressions) die is opgegeven in **regexp**. Als regexp niet is gespecificeerd, vangt het elke willekeurige trap.|SNMP-trap|Dit item kan alleen worden ingesteld voor SNMP-interfaces.<br>Gebruikermacro's en globale reguliere expressies worden ondersteund in de parameter van deze itemsleutel.|
|**snmptrap.fallback**|<|<|
|Vangt alle SNMP-traps die niet werden gevangen door een van de snmptrap\[\] items voor die interface.|SNMP-trap|Dit item kan alleen worden ingesteld voor SNMP-interfaces.|

::: noteclassic
Multiline regular expression matching wordt op dit moment niet ondersteund.
:::

Stel het **Type informatie** in op 'Log' zodat de tijdstempels worden geparseerd. Merk op dat andere formaten zoals 'Numeriek' ook acceptabel zijn, maar mogelijk een aangepaste trap-handler vereisen.

::: notetip
Om SNMP-trapbewaking te laten werken, moet dit eerst correct worden ingesteld (zie hieronder).
:::

[comment]: # ({/e64b3118-a8df124c})

[comment]: # ({56d22f70-a08bce2a})
#### setup SNMP trap bewaking

[comment]: # ({/56d22f70-a08bce2a})

[comment]: # ({188ba649-581aa946})
##### Zabbix server/proxy configureren

Om de traps te lezen, moet Zabbix server of proxy worden geconfigureerd om het SNMP-trapperproces te starten en te verwijzen naar het trapebestand dat wordt geschreven door SNMPTT of een Bash/Perl trape-ontvanger. Om dit te doen, bewerkt u het configuratiebestand ([zabbix\_server.conf](/manual/appendix/config/zabbix_server) of [zabbix\_proxy.conf](/manual/appendix/config/zabbix_proxy)):

```ini
StartSNMPTrapper=1
SNMPTrapperFile=[TRAPEBESTAND]
```

::: notewarning
Als de systemd-parameter **[PrivateTmp](http://www.freedesktop.org/software/systemd/man/systemd.exec.html#PrivateTmp=)** wordt gebruikt, werkt dit bestand waarschijnlijk niet in */tmp*.
:::

##### Bash trape-ontvanger configureren

Vereisten: alleen snmptrapd.

Een Bash trape-ontvanger [script](https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh) kan worden gebruikt om traps rechtstreeks van snmptrapd naar Zabbix-server door te sturen. Om dit te configureren, voegt u de `traphandle` optie toe aan het snmptrapd configuratiebestand (`snmptrapd.conf`), zie [voorbeeld](https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/etc/snmp/snmptrapd.conf).

[comment]: # ({/188ba649-581aa946})

[comment]: # ({c6cc588a-0aa82990})
##### Configuratie van Perl trappenontvanger

Vereisten: Perl, Net-SNMP gecompileerd met --enable-embedded-perl (standaard gedaan sinds Net-SNMP 5.4)

Een Perl trappenontvanger (zoek naar misc/snmptrap/zabbix\_trap\_receiver.pl)
kan worden gebruikt om trappen rechtstreeks van snmptrapd naar de Zabbix-server door te sturen. Om het te configureren:

- voeg het Perl-script toe aan het snmptrapd-configuratiebestand (snmptrapd.conf), bijvoorbeeld:

```perl
perl do "[VOLLEDIG PAD NAAR HET PERL ONTVANGER SCRIPT]";
```

- configureer de ontvanger, bijvoorbeeld:

```ini
$SNMPTrapperFile = '[TRAP BESTAND]';
$DateTimeFormat = '[DATUM TIJD FORMAAT]';
```

::: notetip
Als de naam van het script niet tussen aanhalingstekens staat, zal snmptrapd weigeren op te starten met meldingen vergelijkbaar met deze:<br><br>

```yaml
Regexp modifiers "/l" and "/a" are mutually exclusive at (eval 2) line 1, at end of line
Regexp modifier "/l" may not appear twice at (eval 2) line 1, at end of line
```

:::

[comment]: # ({/c6cc588a-0aa82990})

[comment]: # ({d074e405-af1e38f9})
##### SNMPTT configureren

Allereerst moet snmptrapd worden geconfigureerd om SNMPTT te gebruiken.

::: notetip
Voor de beste prestaties moet SNMPTT worden geconfigureerd als
een daemon met **snmptthandler-embedded** om de traps door te geven. Zie
instructies voor [het configureren van SNMPTT](http://snmptt.sourceforge.net/docs/snmptt.shtml).
:::

Wanneer SNMPTT is geconfigureerd om de traps te ontvangen, configureer `snmptt.ini`:

1.  Schakel het gebruik van de Perl-module van het NET-SNMP-pakket in:

```ini
net_snmp_perl_enable = 1
```

2.  Log de traps naar het trapebestand dat door Zabbix wordt gelezen:

```ini
log_enable = 1
log_file = [TRAPEBESTAND]
```
    
3.  Stel het datum-tijd formaat in:

```ini
date_time_format = %H:%M:%S %Y/%m/%d
```

::: notewarning
Het "net-snmp-perl" pakket is verwijderd in RHEL 8.0-8.2; 
hersteld in RHEL 8.3. Voor meer informatie, zie de [bekende
problemen](/manual/installation/known_issues#snmp_traps).
:::

Formatteer nu de traps zodat Zabbix ze herkent (bewerk snmptt.conf):

1.  Elke FORMAT-regel moet beginnen met "ZBXTRAP \[address\]", waarbij
    \[address\] wordt vergeleken met IP- en DNS-adressen van SNMP
    interfaces op Zabbix. Bijvoorbeeld:

```ini
EVENT coldStart .1.3.6.1.6.3.1.1.5.1 "Status Events" Normal
FORMAT ZBXTRAP $aA Apparaat opnieuw geïnitialiseerd (coldStart)
```

2.  Zie hieronder meer over het formaat van SNMP-traps.

::: noteimportant
Gebruik geen onbekende traps - Zabbix zal ze niet kunnen herkennen. 
Onbekende traps kunnen worden afgehandeld door een algemeen evenement in snmptt.conf te definiëren:<br><br>

```ini
EVENT general .* "Algemeen evenement" Normaal
```

:::

[comment]: # ({/d074e405-af1e38f9})

[comment]: # ({9b97c542-cd001892})
##### SNMP trap formaat

Alle aangepaste Perl trap ontvangers en SNMPTT trapconfiguraties moeten de trap op de volgende manier formatteren:

```yaml
[tijdstempel] [de trap, deel 1] ZBXTRAP [adres] [de trap, deel 2]
```

waarbij

-   \[tijdstempel\] - het tijdstempel dat wordt gebruikt voor logitems
-   ZBXTRAP - de kop die aangeeft dat er een nieuwe trap begint in deze regel
-   \[adres\] - IP-adres dat wordt gebruikt om de host voor deze trap te vinden

Merk op dat "ZBXTRAP" en "\[adres\]" uit het bericht worden verwijderd tijdens de verwerking. Als de trap op een andere manier is opgemaakt, kan Zabbix de trappen onverwachts interpreteren.

Voorbeeldtrap:

```bash
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normaal "Statusgebeurtenissen" localhost - ZBXTRAP 192.168.1.1 Link down on interface 2. Admin state: 1. Operationele status: 2
```

Dit zal resulteren in de volgende trap voor de SNMP-interface met IP=192.168.1.1:

```bash
11:30:15 2011/07/27 .1.3.6.1.6.3.1.1.5.3 Normaal "Statusgebeurtenissen"
localhost - Link down on interface 2. Admin state: 1. Operationele status: 2
```

[comment]: # ({/9b97c542-cd001892})

[comment]: # ({536ec22b-357f1824})
#### Systeemvereisten

[comment]: # ({/536ec22b-357f1824})

[comment]: # ({3866234a-6245c6ae})
##### Ondersteuning voor grote bestanden

Zabbix heeft ondersteuning voor grote bestanden voor SNMP-trapperbestanden. De maximale bestandsgrootte die Zabbix kan lezen is 2\^63 (8 EiB). Houd er rekening mee dat het bestandssysteem een lagere limiet voor de bestandsgrootte kan opleggen.

[comment]: # ({/3866234a-6245c6ae})

[comment]: # ({0f27a9bb-0f27a9bb})
##### Logrotatie

Zabbix biedt geen logsrotatiesysteem - dat moet door de gebruiker worden afgehandeld. De logrotatie moet eerst het oude bestand een nieuwe naam geven en pas daarna verwijderen, zodat er geen trappen verloren gaan:

1. Zabbix opent het trapperbestand op de laatst bekende locatie en gaat naar stap 3.
2. Zabbix controleert of het momenteel geopende bestand is geroteerd door het inode-nummer te vergelijken met het inode-nummer van het gedefinieerde trapperbestand. Als er geen geopend bestand is, wordt de laatste locatie opnieuw ingesteld en gaat Zabbix naar stap 1.
3. Zabbix leest de gegevens uit het momenteel geopende bestand en stelt de nieuwe locatie in.
4. De nieuwe gegevens worden geparseerd. Als dit het geroteerde bestand was, wordt het bestand gesloten en gaat het terug naar stap 2.
5. Als er geen nieuwe gegevens waren, wacht Zabbix 1 seconde en gaat terug naar stap 2.

[comment]: # ({/0f27a9bb-0f27a9bb})

[comment]: # ({608a14bd-608a14bd})
##### Bestandssysteem

Vanwege de implementatie van het trapperbestand heeft Zabbix een bestandssysteem nodig dat inodes ondersteunt om bestanden te onderscheiden (de informatie wordt verkregen via een stat() oproep).

[comment]: # ({/608a14bd-608a14bd})

[comment]: # ({f26a4d36-ee69482d})
##### Voorbeeldconfiguraties met verschillende SNMP-protocolversies

Dit voorbeeld maakt gebruik van snmptrapd en een Bash-ontvangerscript om traps door te sturen naar de Zabbix-server.

Configuratie:

1. Configureer Zabbix om SNMP-trapper te starten en
    stel het trapebestand in. Voeg toe aan `zabbix_server.conf`:

```ini
StartSNMPTrapper=1
SNMPTrapperFile=/tmp/my_zabbix_traps.tmp
```

2. Download het Bash-script naar `/usr/sbin/zabbix_trap_handler.sh`:

```bash
curl -o /usr/sbin/zabbix_trap_handler.sh https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/usr/sbin/zabbix_trap_handler.sh
```

Pas indien nodig de ZABBIX_TRAPS_FILE-variabele in het script aan. Gebruik de standaardwaarde,
maak eerst de bovenliggende map aan:

```bash
mkdir -p /var/lib/zabbix/snmptraps
```

3. Voeg het volgende toe aan `snmtrapd.conf` (raadpleeg een werkend [voorbeeld](https://raw.githubusercontent.com/zabbix/zabbix-docker/6.4/Dockerfiles/snmptraps/alpine/conf/etc/snmp/snmptrapd.conf)):

```ini
traphandle default /bin/bash /usr/sbin/zabbix_trap_handler.sh
```

4. Maak een SNMP-item TEST aan:

    Host SNMP-interface IP: 127.0.0.1\
    Sleutel: `snmptrap["linkup"]`\
    Tijdsindeling loggen: yyyyMMdd.hhmmss

5. Vervolgens configureren we `snmptrapd` voor onze gekozen SNMP-protocolversie
    en sturen testtraps met behulp van het `snmptrap`-hulpprogramma.

##### SNMPv1, SNMPv2

De SNMPv1- en SNMPv2-protocollen vertrouwen op "community string" authenticatie. In het onderstaande voorbeeld
zullen we "secret" gebruiken als community string. Het moet op dezelfde waarde worden ingesteld op SNMP-trapverzenders.

Let op dat hoewel SNMPv2 nog steeds veel wordt gebruikt in productieomgevingen, het geen enkele versleuteling of echte afzenderauthenticatie biedt. De gegevens worden als platte tekst verzonden en daarom
moeten deze protocolversies alleen worden gebruikt in beveiligde omgevingen zoals een privénetwerk en mogen ze nooit worden gebruikt over een openbaar of door derden beheerd netwerk.

SNMP-versie 1 wordt tegenwoordig niet echt meer gebruikt, omdat het geen 64-bits tellers ondersteunt en
als een verouderd protocol wordt beschouwd.

Om SNMPv1- of SNMPv2-traps te accepteren, moet u de volgende regel aan `snmptrapd.conf` toevoegen. Vervang "secret" door de SNMP-communitystring die is geconfigureerd op SNMP-trapverzenders:

```ini
authCommunity log,execute,net secret
```

Vervolgens kunnen we een testtrap verzenden met behulp van `snmptrap`. We zullen in dit voorbeeld de veelvoorkomende "link up" OID gebruiken:

```bash
snmptrap -v 2c -c secret localhost 0 linkUp.0
```

##### SNMPv3

SNMPv3 adresseert beveiligingsproblemen in SNMPv1/v2 en biedt authenticatie en versleuteling.
U kunt de MD5- of meerdere SHA-authenticatiemethoden en DES/meerdere AES als cipher gebruiken.

Voeg de volgende regels toe aan `snmptrapd.conf` om SNMPv3 te activeren:

```ini
createUser -e 0x8000000001020304 traptest SHA mypassword AES
authuser log,execute traptest
```

:::noteimportant
Let op het trefwoord "execute" dat toestaat om scripts uit te voeren voor dit gebruikersbeveiligingsmodel.
:::

```bash
snmptrap -v 3 -n "" -a SHA -A mypassword -x AES -X mypassword -l authPriv -u traptest -e 0x8000000001020304 localhost 0 linkUp.0
```

::: notewarning
Als u sterke versleutelingsmethoden zoals AES192 of AES256 wilt gebruiken, gebruik dan
net-snmp vanaf versie 5.8. U moet het mogelijk opnieuw compileren met de `configure`
optie: `--enable-blumenthal-aes`.
Oudere versies van net-snmp ondersteunen geen AES192/AES256.
Zie ook: http://www.net-snmp.org/wiki/index.php/Strong_Authentication_or_Encryption
:::

##### Verificatie

In beide voorbeelden ziet u vergelijkbare regels in uw `/var/lib/zabbix/snmptraps/snmptraps.log`:

```bash
20220805.102235 ZBXTRAP 127.0.0.1
UDP: [127.0.0.1]:35736->[127.0.0.1]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0
```

De itemwaarde in Zabbix zal zijn:

```bash
2022-08-05 10:22:35	2022-08-05 10:22:33	

20220805.102233 UDP: [127.0.0.1]:35736->[127.0.0.1]:162
DISMAN-EVENT-MIB::sysUpTimeInstance = 0:0:00:00.00
SNMPv2-MIB::snmpTrapOID.0 = IF-MIB::linkUp.0
```

[comment]: # ({/f26a4d36-ee69482d})

[comment]: # ({91956d23-75026475})
#### Zie ook

-   [Zabbix blogartikel over SNMP-traps](https://blog.zabbix.com/snmp-traps-in-zabbix)
-   [Configuratie van snmptrapd (officiële net-snmp documentatie)](https://net-snmp.sourceforge.io/wiki/index.php/TUT:Configuring_snmptrapd)
-   [Configuratie van snmptrapd voor het ontvangen van SNMPv3-meldingen (officiële net-snmp documentatie)](https://net-snmp.sourceforge.io/wiki/index.php/TUT:Configuring_snmptrapd_to_receive_SNMPv3_notifications)

[comment]: # ({/91956d23-75026475})
