Zabbix discovery regel voor SNMP devices

We gebruiken Zabbix voor het monitoren van servers, firewalls, switches, printers en allerlei andere apparaten die op het netwerk zijn aangesloten en waar we de status van willen weten. Het onderhouden van al die apparaten (‘hosts’ in Zabbix) kan bij een grote hoeveelheid apparaten écht een dagtaak zijn.

Zabbix Discovery

Zabbix maakt dit een stuk makkelijker met Discovery regels. Met deze regels kun je een ip reeks scannen op de aanwezigheid van apparaten. Vervolgens kun je hier acties aan hangen zodat er van alles gedaan kan worden op het moment dat er een apparaat gevonden wordt.

Binnen Zabbix bestaat het discovery process uit twee delen:

  • De discovery, deze scant een ip reeks op aanwezige apparaten.
  • Een action welke wordt uitgevoerd wanneer er een apparaat gevonden wordt.

Discovery regel

We beginnen met het aanmaken van een discovery regel. Hiervoor ga je naar de Zabbix web interface, Configuration -> Discovery.

Hier zie je de standaard discovery rule staan die aan is gemaakt tijdens de installatie van Zabbix. Als voorbeeld maken we een nieuwe regel aan.

  • Klik op Create discovery rule.
  • Geef de regel een naam.
  • Geef de IP reeks op die gescant moet worden.

Omdat we ons op dit moment richten op SNMP devices gaan we als check een SNMP check invoeren.

Klik bij Checks op “New” en vul in:

  • Check type SNMPv2 (tenzij je apparaten SNMPv1 zijn)
  • Port range is default 161
  • SNMP community is meestal public
  • SNMP OID 1.3.6.1.2.1.1.1

Die laatste is het belangrijkste. Uit de SNMP documentatie:

sysDescr OBJECT-TYPE
SYNTAX DisplayString (SIZE (0..255))
ACCESS read-only
STATUS mandatory
DESCRIPTION
"A textual description of the entity. This value
should include the full name and version
identification of the system's hardware type,
software operating-system, and networking
software. It is mandatory that this only contain
printable ASCII characters."
::= { system 1 }

Als we deze OID gebruiken zou Zabbix een waarde terug moeten krijgen die overeenkomt met de omschrijving van het apparaat zoals bijvoorbeeld een ups, switch, printer of iets dergelijks.

Voeg de regel toe en Zabbix zal elk uur de ip reeks scannen op apparaten. Gevonden apparaten kun je zien bij Monitoring -> Discovery.

Actions

Nu gebeurt er nog niets wanneer een apparaat gevonden wordt. Dit komt omdat er nog geen action aan gekoppeld is. Ga naar Configuration -> Actions. Rechts boven zie je een drop down menu van de Event Source. Klik hier op Discovery en dan op Create Action.

Als naam kun je van alles opgeven. Wij houden een naamgeving aan die lijkt op een SQL statement. Zoiets als: CREATE host FROM RULE discovery-192.168.0.x

Klik bij New Condition op de eerste drop down en selecteer “Received value”. De tweede drop down is de operator en is afhankelijk van je scenario. Stel even dat je UPS’en toe wilt voegen. Als je 1 model UPS hebt zou je hier “=” gebruiken en de volledige SysDescr invullen. Heb je van dezelfde fabrikant meerdere modellen maar wel met dezelfde items die je wilt monitoren, dan gebruik je hier “like” en hanteer je een iets ruimere waarde zoals bijvoorbeeld “APC UPS” zonder het exacte model nummer.

Vergeet niet op “add” te klikken!

Ga nu naar het tabblad Operations. Hier geef je aan wat er moet gebeuren wanneer deze actie wordt uitgevoerd. Je zou dus ook alleen een notificatie kunnen sturen zonder de host daadwerkelijk te gaan monitoren.

We gaan meerdere operations uitvoeren:

  • Add host
  • Link to template

Het template voor de host is afhankelijk van het merk en type apparaat. Kijk hiervoor op https://share.zabbix.com

Als het benodigde template hier niet bij staat zal je deze zelf aan moeten maken. Hoe dit moet komt in de volgende post.

Installatie van ELK (Elasticsearch, Logstash & Kibana)

Om alle log files, event logs e.d. te verzamelen en te kunnen doorzoeken gebruiken wij ELK. ELK is een verzameling van een aantal pakketten, namelijk: Elasticsearch, Logstash en Kibana
In deze blogpost leggen we uit hoe je ELK kunt installeren. Om te beginnen heb je een standaard minimale installatie nodig van CentOS. Uiteraard kan het ook op Debian/Ubuntu.

Installatie van Java  (JDK)

Java is er in een aantal smaken: JRE en JDK. Daarnaast kun je voor beide pakketten kiezen uit de open source variant, OpenJRE of OpenJDK en de closed sourced varianten van Oracle. Wij gebruiken de closed source JDK van Oracle.

Voor het gemak verifiëren we dat er geen Java geïnstalleerd is:

java -version
-bash: java: command not found

Geen Java aanwezig dus we gaan verder met het downloaden en installeren van de RPM. Doorloop hiervoor de volgende stappen:

  1. Ga naar de volgende website: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. Accepteer de license agreement
  3. Kopieer de download link. In Google chrome is dat rechts klikken op de link -> Copy link address. Je hebt de versie: linux-x64.rpm nodig
  4. Plak de link vervolgens in het volgende commando tussen de laatste qoutes: wget –no-cookies –no-check-certificate –header “Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie” “”
  5. Op dit moment krijg je dan het volgende commando:wget –no-cookies –no-check-certificate –header “Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie” “http://download.oracle.com/otn-pub/java/jdk/8u144-b01/090f390dda5b47b9b721c7dfaa008135/jdk-8u144-linux-x64.rpm”
  6. Als je dit op je CentOS server uitvoert en je krijgt de melding: -bash: wget: command not found kun je dat op lossen door het volgende uit te voeren:# sudo yum install wget
  7. Eenmaal gedownload gaan we het pakket installeren met (de versie kan uiteraard verschillen):# sudo rpm -ivh jdk-8u144-linux-x64.rpm

Als je nu weer het commando java -version uitvoert krijg je zoiets terug:

java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Installatie van Elasticsearch

De installatie van Elasticsearch is vrij eenvoudig en bestaat uit de volgende 4 stappen:

  1. Importeer eerst de GPG key voor de RPM package manager:
    # sudo rpm –import http://packages.elastic.co/GPG-KEY-elasticsearch
  2. Maak in de directory /etc/yum.repos.d het volgende bestand aan: elasticsearch.repo (# sudo nano /etc/yum.repos.d/elasticsearch.repo) en voeg het volgende in:
    [elasticsearch-5.x]
    name=Elasticsearch repository for 5.x packages
    baseurl=https://artifacts.elastic.co/packages/5.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=1
    autorefresh=1
    type=rpm-md
  3. Installeer Elasticsearch
    # sudo yum install elasticsearch

Aangezien er wordt aangegeven dat de service niet automatisch gestart wordt, is het een goed moment om dit gelijk te regelen.

  1. Voer het volgende commando uit:
    # sudo systemctl enable elasticsearch 
  2. Start Elasticsearch met:
    # sudo service elasticsearch start

Als alles goed is gegaan:

Starting elasticsearch (via systemctl): [ OK ]

Installeren van Kibana

De stappen voor het installeren van Kibana zijn vergelijkbaar met die van Elasticsearch. Aangezien de GPG key hetzelfde is voor de 3 pakketten hoeven we deze niet opnieuw te importeren.

  1. # sudo nano /etc/yum.repos.d/kibana.repo
  2. Kopieër het volgende naar het kibana.repo bestand:
    [kibana-4.4]
    name=Kibana repository for 4.4.x packages
    baseurl=http://packages.elastic.co/kibana/4.4/centos
    gpgcheck=1
    gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
    enabled=1
  3. Installeer Kibana met:
    # sudo yum install kibana
  4. Voer het volgende commando uit:
    # sudo chkconfig kibana on
  5. Start Kibana met:
    # sudo service kibana start

Installeren van Logstash

Als laatste voor nu gaan we Logstash installeren. Ook dit is vergelijkbaar met de vorige installaties.

  1. # sudo nano /etc/yum.repos.d/logstash.repo
  2. Kopieër het volgende naar het logstash.repo bestand:
    [logstash-2.2]
    name=logstash repository for 2.2 packages
    baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
    gpgcheck=1
    gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
    enabled=1
  3. Installeer Logstash met:
    # sudo yum install logstash
  4. Voer het volgende commando uit:
    # sudo chkconfig logstash on
  5. Start Logstash met:
    # sudo service logstash start

Afronding

In principe is de ELK stack nu geinstalleerd al zal deze nog niet veel doen. Aangezien de firewall standaard aan staat kun je er op dit moment nog niet bij. Je kunt de firewall uitzetten of de nodige regels toevoegen.

Het uitzetten van de firewall kan tijdelijk:

# sudo iptables -F

Of iets minder tijdelijk:

# sudo systemctl disable firewalld