Naar de inhoud
Inzichten

Centrale PHP Logging Patterns

Elastic stack

Iedereen kent het, er gaat iets mis in onze applicatie en we beginnen de vervelende taak van 'grep'ing door duizenden lijnen van logs om erachter te komen wat er aan de hand is. Als je een paar servers of containers hebt, wordt dit een bijna onmogelijke taak en de klassieke SSH en tail zullen je niet meer goed van dienst zijn. In dit gesprek sprak Philipp Krenn, ontwikkelaar bij Elastic, over enkele loggingpatronen met behulp van de Elastic Stack

Elastic stack

Wat is deze Elastic Stack? De Elastic Stack bestaat voornamelijk uit vier diensten. Uiteraard Elastic Search, die zal dienen als een database voor al onze logs. Kibana zal de presentatielaag verzorgen, hier kunnen we een nette weergave van onze logs maken en wat meer gebruikersvriendelijke interfaces creëren. Beats zal onze logs doorsturen naar onze database. Tot slot wordt de logstash gebruikt om de gegevens die we naar onze Elastic Search willen sturen, te ontleden en te verrijken.

    Krenn stelde vijf manieren voor om uw logs te centraliseren in uw Elastic Stack, bedrijven moeten die kiezen die het beste bij hun behoeften passen. Ik zal ze kort doornemen, maar zorg ervoor dat je de code voorbeelden op zijn github bekijkt.

    • Parsing: Door gebruik te maken van de grok debugger in Kibana, kan je de relevante informatie uit een logfile ontleden tot iets leesbaars en filterbaars door gebruik te maken van reguliere uitdrukkingen. Na verloop van tijd zal je een goede voorbeeldgrootte van herbruikbare expressies hebben om snel de gegevens te krijgen die u nodig heeft voor meerdere projecten. Als alternatief biedt Elastic ook de data visualizer die mogelijke velden kan detecteren en uw werk gemakkelijker kan maken.
      Nadelen: Regex is vervelend. Hoe zit het met multiline logs? Hoe zit het met verschillende logformaten?
    • Send: Natuurlijk ka je ook een appender, zoals GelfHandler of ElasticSearchHandler, gebruiken om events meteen naar Elastic te sturen zonder dat ze eerst in een logbestand moeten worden opgeslagen. 
      Nadelen: Dit is zeer strak gekoppeld. Je zal geen logs hebben tijdens storingen.
    • Structured: Je kan evenementen in een gestructureerd formaat als JSON schrijven en ze daarna centraliseren, daarvoor heb je zelfs geen logstash nodig om de bestanden te parsen. De Elastic community biedt het Elastic Common Schema aan om je te helpen JSON-bestanden te normaliseren. De ECS specificeert een gemeenschappelijke set van velden bij het opslaan van gebeurtenisgegevens in Elasticsearch.
      Nadelen:  Nogmaals, dit is zeer nauw gekoppeld. Serialisatie is erg traag en zal wat overhead geven.
    • Containerize: Enter Docker containers. Iedereen gebruikt Docker containers tegenwoordig, toch? Natuurlijk kun je alles in je Docker-logs loggen en dit naar Elastic sturen. Je kan je logs eenvoudig verrijken door metadata van Docker zelf toe te voegen. Dit is waarschijnlijk de manier waarop de meeste bedrijven dit doen. Via de Docker-aansluiting kan je alle logbestanden van lopende containers verzamelen en verwerken.
      Nadelen: Een beetje ingewikkelder om op te zetten en goed te krijgen.
    • Orchestrate: Kubernetes is de volgende stap in het runnen van niet georchestreerde Docker containers. Door het opzetten van een daemonset van Fluentd-containers kan deze automatisch alle logs van alle nodes verzamelen. Kubernetes zorgt ervoor dat bij het schalen van het aantal nodes in de cluster alle logging consistent blijft.  Door de eenvoudige schaalbaarheid is Kubernetes de ideale keuze om je ELK Stack te hosten, omdat het zich eenvoudig kan aanpassen aan de variabele hoeveelheid logs die u wilt verwerken.
      Nadelen: Instelling op expertniveau

      Conclusie

      Je hoeft niet alles uit te zoeken en je hele infrastructuur op z'n kop te zetten om een mooi log pattern te hebben. Kies de structuur die het beste werkt voor je organisatie en werk toe naar betere oplossingen wanneer die geschikt zijn. Dit gesprek gaf een aantal mooie voorbeelden en hopelijk wat inspiratie om een professionele logging infrastructuur in je bedrijf te hebben.

      Meer inzichten

      • SymfonyCon 2024: code in harmonie

        Editie 2024 van SymfonyCon vond plaats in het prachtige Wenen, dus een van onze experts ging ter plaatse. Even de nachttrein op, wat cultuur opsnuiven, en dan: volop focussen op twee dagen vol Symfony. Onze inzichten lees je in dit verslag! 

        SymfonyCon 2024: code in harmonie
      • Qodo: een AI-copiloot voor coderen en testen

        Recent kwamen we Qodo op het spoor: een tool die met behulp van Artificiële Intelligentie (AI) ons kan helpen coderen en testen. In deze blog lees je ons relaas van de eerste ervaringen.

        Qodo: een AI-copiloot voor coderen en testen
      • Lunar en Codana slaan de handen in elkaar

        Lunar en Codana slaan de handen in elkaar en gaan samen verder onder de naam Codana. Deze fusie creëert een digital product studio met meer dan 30 experts en een duidelijke ambitie: uitgroeien tot een toonaangevende speler op de Belgische en Europese markt.

        Lunar en Codana slaan de handen in elkaar
      • Het nieuw avontuur van Lore bij Codana

        Lore Vanderlinden vertelt je alles over haar avontuur bij Codana. Ze combineert een technische achtergrond als front-end ontwikkelaar met een passie voor ondernemen in haar rol als projectmanager. Ontdek hoe dat in zijn werk gaat in deze blog! 

        Het nieuw avontuur van Lore bij Codana
      • Van Stagiair naar Digital Project Manager bij Codana

        Wat begon als een zoektocht naar een stageplek, groeide uit tot een kans die Jelmer nooit had durven dromen: een vaste rol in een dynamisch en ambitieus bedrijf. Lees hier alles over zijn traject bij Codana.

        Van Stagiair naar Digital Project Manager bij Codana
      • Cross-platform applicaties met React Native

        Nog nooit was het ontwikkelen van native mobiele applicaties zo toegankelijk als vandaag. Bij Codana doen we dit door gebruik te maken het React Native, een open-source framework dat werd ontwikkeld door Meta.

        Cross-platform applicaties met React Native