• No results found

Het voorgaande stuk in het hoofdstuk gaf een overzicht van verschillende programma’s en scripts, deze sectie geeft een korte recap en geeft aan hoe de verschillende processen communiceren. Ook

6Docker is een container systeem om gemakkelijk verschillende programma’s in de achtergrond te draaien, een soort lichtge-

wicht virtualisatie, het garandeert portability. Het is een de-facto standaard geworden voor virtualisatie en portability, het schijnt zelfs te werken onder Windows 10.

(a) Een dashboard, bevat meerdere visualisaties. Dit is van de afgelopen 60 dagen, en 118 miljoen CAN berichten zij geanalyseerd voor het kaartje en de olie temperatuur plot.

(b) Het uitzetten van bijvoorbeeld het toerental op een kaart.

(c) Error dashboard van 1 week.

‘standaard’ tools, die hierboven niet beschreven zijn maar wel gebruikt worden worden hier even kort neergezet.

C.6.1

Tools

Hieronder volgt een overzicht van verschillende tools en wat ze doen, waarvoor ze gebruikt worden. De naam is een link naar de website. Eerst volgt een lijst systemen / servers.

Servers / systemen

• Docker: Standaard systeem om gecompartimentaliseerd processen te draaien, komt oorspron- kelijk uit de webserver wereld. Grootste voordeel is dat applicaties hierdoor portable blijven en op elk systeem met docker makkelijk gestart kunnen worden. Hierbij wordt de execution environment gespecificeerd met behulp van een Dockerfile, wat een simpel textbestand is. Onder andere de externe VPN server draait in een Docker ‘container’,de gehele ELK stack, de kaart-tile server voor Kibana en de Squid Proxy draaien allen in hun eigen containers.

• Squid: een HTTP proxy, draait ook in Docker en zorgt ervoor dat het VPN netwerk bereikbaar is via een proxy vanaf het SCHUITEMAKERnetwerk. (zodat Rob en Tim bij Kibana en overigen kunnen).

• cron(tab): Een systeem op op gezette intervallen programmas uit te voeren. Backup, log retrieval etc wordt allemaal via shell scripts gedaan die geautomatiseerd draaien met een cronjob. • Supervisor: Een process control system; kan verschillende programma’s uitvoeren en beheren.

Faciliteerd ook logging van deze.

• Vagrant: Een systeem om virtualmachines te managen, maakt het ook mogelijk om met een textbestand te specificeren hoe een nieuwe virtualmachine eruit moet komen te zien. Het creeeren en vernietigen van een VM is dan niets anders meer danvagrant upenvagrant destroy. Dit kan erg handig zijn om tijdelijk dingen te testen, of om een goed-gedefinieerde ontwikkel omgeving te hebben. Voor het draaien van servers is Docker meer geschikt.

• Tinc: Een VPN systeem wat in staat is om mesh netwerks op te zetten. Dit in tegenstelling tot de traditionele server - client opzet van bijvoorbeeldhttps://openvpn.net/ofhttps: //www.strongswan.org/. Dit voorziet communicatie tussen de machines gebruikt voor de INNOVADOongeacht waar ze zijn of hoe ze internet krijgen.

• elk-docker: Een Docker image die de ELK stack (zie boven) draait in Docker. ELK wordt gebruikt om data van meer dan 500 miljoen CAN berichten inzichtelijk te maken in luttele seconden. • ogc-server: EenWMSserver in Python, gebruikt om van een GeoJSON file tiles te serveren als

achtergrond voor Kibana.

• ansible: Een systeem voor remote administration van systemen. Gemaakt met het doel om het beheren van (veel) servers makkelijker te maken, kan fungeren als vervanging voor met de hand via SSH wijzigingen aanbrengen. Werkt via SSH. Momenteel enkel gebruikt om op Charlie de disk usage te checken en als deze vol is Rob een mailtje te sturen als deze vol dreigt te raken. Op termijn is dit waarschijnlijk een handig systeem om meerdere INNOVADO’s te managen.

(Commandline) Tools

• socat: Swiss army knife voor SOcket conCATenation. Gebruikt om supervisord, Kibana en Elasticsearch te exposen naar het VPN netwerk, of om tijdelijk de GÖTTINGof Trimble systemen in de INNOVADObereikbaar te maken over het VPN netwerk.

• rsync: Staat boven uitgebreid beschreven, een zeer flexibele kopieer tool. In staat zeer efficient data te transferen, synchroniseren, en zelfs op de oorspronkelijke locatie te verwijderen als de transfer successvol afgerond is. Wordt veelvuldig gebruikt voor datatransfer tussen machines. • mosh: Kort voor Mobile Shell, in feitte een SSH client met roaming support en graceful resumes

van openstaande connecties. Handig bij internet wat af en to disconnect. GewoonSSHheeft nog wel zijn nut, vooral voor de-D,-Len-Ropties, want dat kan niet via mosh. (Let bij mosh wel op; indien de verbinding niet netjes afgesloten wordt zal deze sessie op de server blijven draaien; de server weet immers niet of de verbinding tijdelijk weg is.)

• screen: Maakt het mogelijk om handig meerder processen te draaien over één ssh / mosh connectie. Zorgt ook dat processen in de achtergrond kunnen draaien, bijvoorbeeld via een mosh connectie in verschillende screen windows de roscore, lidar nodes en een window voor ‘rosbag’ op Charlie.

• virtualenv: Een tool voor PYTHONom te garanderen dat de juiste versie van packages gebruikt worden en ook het mogelijk maakt om andere versies dan op het systeem geinstalleerd staan te gebruiken. Dit vervult een beetje dezelfde taak als Docker, maar dan voor PYTHONscripts. Wordt gebruikt bij de inserter voor ELK, en de INNOVADOstatus server.

C.6.2

Architectuur

Voor verscheidene functies zijn verschillende tools, in figuur C.8 zijn enkel tools weergegeven die altijd draaien. Alhoewel ROS, op Charlie niet altijd draait maar wel is ingetekend, om aan te geven hoe ROS momenteel aan de encoder-waarden komt. Het enige wat standaard doorgestuurd wordt is is de status van de INNOVADOmet de eerder uitgelegde UDP pakketjes. Periodiek wordt door Hive de CAN en GÖTTINGrecordings van Charlie afgehaald.