Week 2: Onderzoek en Proof of Concept

Verder onderzoek: TICK stack

Tijdens mijn verder onderzoek naar TICK ben ik op een probleem gebotst, namelijk: de standaard versie van de InfluxDB biedt geen clustering aan. Clustering kun je enkel krijgen in de Enterprise-editie. Daarom vroeg ik mij eerst en vooral af of clustering wel noodzakelijk is voor dit project. De twee grote voordelen van clustering in grote databases zijn: fault tolerance en load balancing.

Aangezien het gaat om een centraal monitoring systeem die de som van de resultaten van alle individuele machines bijhoudt zal een server failure niet direct ernstige gevolgen hebben. Het is niet zo omdat deze database uit zou vallen dat de devs en klanten niets meer kunnen doen, integendeel. In in het geval van zo’n event kunnen de devs nog steeds terugvallen op de individuele monitoring systemen die op elke machine beschikbaar zijn.

Met load balancing wordt bedoeld dat de gebruikers automatisch naar de server gestuurd worden die het minst belast is. Ook zal dit volgens mij geen probleem vormen aangezien de monitoring server niet erg belast zal zijn.

Problemen

Telegraf komt standaard met een hele waslijst aan plugins. Eén van die plugins geeft het aantal gebruikers weer dat op het systeem aangemeld zijn. Toch is deze plugin niet volledig correct. Het resultaat dat teruggegeven wordt stemt overeen met de ‘last’ command. Hier zien we dus alle gebruikers die aan- en afgemeld zijn geweest sinds de laatste reboot, het kan dus ook zijn dat één bepaalde user meerdere keren in deze lijst voorkomt. Het zou dus beter zijn dat het teruggegeven resultaat overeen zou komen met het ‘w’ command.

Nu is het probleem echter: je kunt deze code niet zomaar aanpassen. Omdat de standaard plugins niet op de machine gedownload worden, maar vanop Github gelezen worden is het dus onmogelijk om de plugin te gaan tweaken. Daarom moest ik zelf een plugin gaan schrijven.

Dit probleem was echter makkelijk op te lossen door een custom plugin te schrijven. Telegraf herkent de plugin direct na implementatie en voegt deze data dan ook toe aan de databank.

Pros & cons van verschillende monitoring tools

Hieronder ziet u een tabel met alle voor- en nadelen van enkele bestaande, gratis en open-source application monitoring systemen. Tools die enkel het netwerk monitoren of agentless zijn heb ik bewust uit deze vergelijking gelaten.

 

Tool

Pros

Cons

Nagios Core

  • Monitors alle standaard protocollen (SMTP, HTTP, FTP, SSH,…)
  • Alerts per email of SMS
  • Meerdere alert-levels: Error, Warning & OK
  • Flapping detection
  • Automatisch topografisch overzicht
  • Volledig stand-alone
  • Heeft SSH toegang of een addon (NRPE) nodig om de systems internals te monitoren
  • Web-interface is read-only
  • Geen grafieken

Zabbix

  • Monitors alle standaard protocollen
  • Alerts per email of SMS
  • Sterke web-interface
  • De agent is beschikbaar op alle OS’s
  • Kan grafieken tekenen
  • Kan de log files monitoren
  • Dashboard is customizable
  • Real-time SLA rapportering
  •  Complexe installatie
  • Geen flapping detection
  • Documentatie is niet uitgebreid
  • Gebruikt een relationele databank

TICK Stack

  • Zeer sterke documentatie
  • Prachtige visualisatie van data
  • Meerdere en customizable dashboards
  • Uitbreidbaar a.d.h.v. plugins
  • Zeer uitgebreide manieren om alerts te genereren
  • Makkelijke installatie
  • SQL-like query systeem
  • Volledig pakket (agent, web-monitor, databank; geen extra software nodig)
  •  Databank ondersteunt geen clustering, enkel in de betalende Enterprise-editie

Icinga 2

  • Responsive UI
  • Performance monitoring
  • Alerts genereren
  • Rapporten
  • Visualisatie van data
  • Ondersteunt Graphite
  • Goede support
  •  Moeilijk te begrijpen documentatie

Momenteel gaat mijn keuze sterk uit naar de TICK Stack. Volgens mij is deze tool het makkelijkste uitbreidbaar naar de wensen van de gebruiker. Daarnaast, wanneer alle data numeriek is en in grafieken moet worden weergegeven is Chronograf (onderdeel van TICK Stack) volgens mij de mooiste front-end. Een derde reden om mijn keuze te rechtvaardigen is InfluxDB. Aangezien er in dit project enkel met numerieke data gewerkt zal worden is het interessant om te werken met een Time-Series DMBS. Tenslotte hangt ook alles samen. InfluxDB, Telegraf, Chronograf & Kapacitor zijn door dezelfde mensen gebouwd waardoor de samenwerking tussen deze vier dan ook sterk uitgewerkt is.

TICK Stack: proof of concept

Van Zeticon heb ik een MediaHaven installatie gekregen waarop ik allerlei zaken kan uittesten. Dit maakte het mij mogelijk om de agent op deze machine te gaan installeren en uitgebreid te gaan testen. Daarnaast werd ik hierdoor ook meer vertrouwd met de custom services die draaien op deze installatie (zoals Pretranscorders, Transcoders,…). Op deze installatie zal een proof of concept gebouwd worden.

TICK stack en MediaHaven

Op deze MediaHaven installatie heb ik reeds de agent Telegraf geïnstalleerd. Met behulp van enkele scripts is het mij gelukt om deze installatie autonoom te laten gebeuren. Het enige wat vooraf nog moest gebeuren is het installatie script uitvoerrechten geven.

Scripts

Naast de default plugins die Telegraf met zich meebrengt is het noodzakelijk om ook nog custom scripts te schrijven die instaan voor het ophalen en opslaan van data. Zo heb ik o.a. al plugins geschreven die het aantal logins bijhouden en het aantal bestanden op een MediaHaven installatie geüpload zijn. Ten tweede worden ook alle Fail2Ban gegevens opgeslagen. Zo kan ik een alert triggeren wanneer iemand een mislukte login poging pleegde of wanneer iemand gebanned wordt. Verder wordt ook de staat van enkele MediaHaven-specifieke services in het oog gehouden zoals de pretranscoders, transcoders en exportmanagers.

Alerts

Ook heb ik mij wat verdiept in TICKscripts, dit zijn scripts die gebruikt worden om alerts te genereren. Ik heb onder meer een deadman script geschreven die een alert stuurt wanneer een server offline gaat. Een deadman gedraagt zich zoals een dead man’s switch. Ik heb de switch zo ingesteld dat er een melding gestuurd wordt naar Slack, maar het kan natuurlijk ook per mail of andere platformen.
In afbeelding 1 zie je hoe dit script eruit ziet, in afbeelding 2 vind je de alerts op Slack.

TICKscript.PNG
Afbeelding 1: Deadman in TICK

Deze code zal kijken in de databank van telegraf of hij nog relevante data ontvangt van de systemen. Wanneer dit niet het geval is zal hij een message sturen naar het Slack platform (geconfigureerd in Kapacitor). De ‘.stateChangesOnly()’ zorgt ervoor dat enkel een alert getriggered wordt wanneer de server van offline naar online gaat of andersom.

Knipsel.PNG
Afbeelding 2: Alerts op Slack

Scripting

Aangezien de agent, samen met alle custom en default plugins, op iedere MediaHaven geïnstalleerd moet kunnen worden is het vanzelfsprekend dat hier scripts voor geschreven worden. Het zou immers onmogelijk zijn om alles op elke MediaHaven installatie apart te gaan installeren. Daarom heb ik enkele plugins geschreven die instaan voor de installatie van de agent, het aanpassen van de rechten van de agent, het aanpassen van het configuratiebestand en die daarnaast ook nog eens de custom geschreven plugins installeren. In een latere fase zou het misschien ook interessant zijn om hier een package voor te schrijven zodat alles bijvoorbeeld simpelweg geïnstalleerd kan worden via het command ‘apt-get install zeticon-monitoring’.

Gebruikte URL’s

https://www.techopedia.com/definition/17/clustering-databases

https://github.com/influxdata/telegraf/blob/master/docs/CONFIGURATION.md

https://www.thegeekstuff.com/2009/03/4-ways-to-identify-who-is-logged-in-on-your-linux-system/

https://github.com/shirou/gopsutil/blob/c432be29ccce470088d07eea25b3ea7e68a8afbb/host/host_linux.go

https://github.com/influxdata/telegraf/blob/master/plugins/inputs/system/system.go

https://www.itcentralstation.com/product_reviews/nagios-core-review-29488-by-kristof-kovacs

http://phillbarber.blogspot.be/2015/03/nagios-vs-sensu-vs-icinga2.html

https://www.rudimartinsen.com/2017/12/22/exploring-the-tick-stack/

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit / Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit / Bijwerken )

Verbinden met %s