Command Line Tool
Scheduler
Voor zo goed als al mijn websites en applicaties geldt dat er dagelijks een back-up gemaakt moet worden. En die back-up moet ook dagelijks naar een offsite locatie verplaatst worden. Om er zeker van te zijn dat deze back-up niet ineens veel kleiner is wil ik dat controleren en indien er iets niet in de haak is direct actie ondernemen. Bijna net zo belangrijk als een back-up is het hebben van een geldig SSL-certificaat. Zonder dat certificaat blokkeren de meeste browsers de verbinding naar de website en haken bezoekers af. Dus als de vervaldatum van zo'n certificaat in zicht komt wil ik dat weten. En zo zijn er nog meer dingen waarvan ik dagelijks (of meerdere keren per dag) gecontroleerd wil hebben of alles goed gaat. En als het dan toch even niet helemaal gaat zoals het hoort? Dan krijg ik direct een notificatie op mijn telefoon zodat ik gelijk actie kan ondernemen.
Deze applicatie is een verzameling van allerlei kleine stukjes code, of scripts, die controles uitvoeren. Door deze scripts op een eenzelfde manier in te richten en te bundelen is de Scheduler ontstaan; een PHP-applicatie die met behulp van Symfony Console en Symfony Schedule er voor zorgt dat allerlei taken uitgevoerd worden. Ik heb deze applicatie zowel op een offsite locatie als op al mijn servers draaien. Met behulp van configuratie kan ik taken aan en uit zetten. Het maken van een back-up gebeurt op de (web)servers, het downloaden van die back-up alleen op de offsite locatie. Handig en overzichtelijk!
In het verleden had ik een verzameling van losse scripts die allemaal hun eigen taakje hadden. In de crontab (vertaald: de Windows Taakmanager, maar dan voor Linux) stonden deze scripts dan allemaal geregistreerd. Dit is nu allemaal geschiedenis. Door een applicatie te maken waar alle scripts zijn opgenomen als Symfony Command en de crontab is vervangen door de Symfony Schedule bundle kan er gebruik gemaakt worden van gedeelde code. Zo heb ik een losse service gemaakt die de API van PushOver aanroept voor het versturen van een notificatie. Hierdoor kunnen alle taken een notificatie versturen als dat nodig is, maar hoef ik de code hiervoor niet tig keer op te nemen.
Ik maak voor het monitoren van mijn servers gebruik van Beszel. Als de serverbelasting of het geheugengebruik van een server te hoog wordt krijg ik een push notificatie. In het overzicht van Beszel staat ook per server of er updates zijn, maar helaas is op dit moment de notificatie daarvoor nog niet geregeld in Beszel. Wel is er een API beschikbaar, dus ik heb een Command gemaakt dat verbinding maakt met de API van Beszel, ophaalt of er servers zijn waarvoor er updates beschikbaar zijn en een push notificatie stuurt als dat voor een of meerdere servers van toepassing is. Hierdoor kan ik snel updates installeren en mogelijke problemen met de beveiliging van mijn servers en applicatie vroegtijdig voorkomen.
Veelgestelde vragen
Binnen dit project gebruikte technieken
Ook zo'n project?
Benieuwd wat ik voor jouw website, webshop of maatwerkapplicatie kan betekenen? Neem gerust contact met mij op.