Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hint
Deze inhoud is een fragment uit het eBook, Cloud Native .NET Applications for Azure ontwerpen, beschikbaar op .NET Docs of als een gratis downloadbare PDF die offline kan worden gelezen.
Er zijn veel goede gecentraliseerde hulpprogramma's voor logboekregistratie en ze variëren van gratis, opensource-hulpprogramma's tot duurdere opties. In veel gevallen zijn de gratis tools net zo goed als of beter dan de betaalde aanbiedingen. Een dergelijk hulpprogramma is een combinatie van drie opensource-onderdelen: Elasticsearch, Logstash en Kibana.
Gezamenlijk worden deze hulpprogramma's de Elastic Stack of ELK-stack genoemd.
Elastische stack
Elastic Stack is een krachtige optie voor het verzamelen van informatie uit een Kubernetes-cluster. Kubernetes biedt ondersteuning voor het verzenden van logboeken naar een Elasticsearch-eindpunt. U hoeft alleen maar aan de slag te gaan met het instellen van de omgevingsvariabelen, zoals wordt weergegeven in afbeelding 7-5:
KUBE_LOGGING_DESTINATION=elasticsearch
KUBE_ENABLE_NODE_LOGGING=true
Afbeelding 7-5. Configuratievariabelen voor Kubernetes
Met deze stap wordt Elasticsearch op het cluster geïnstalleerd en worden alle clusterlogboeken naar het cluster verzonden.
Afbeelding 7-6. Een voorbeeld van een Kibana-dashboard met de resultaten van een query op logboeken die zijn opgenomen uit Kubernetes
Zie Logboekregistratie configureren (Kibana) voor meer informatie over configuratie.
Wat zijn de voordelen van Elastic Stack?
Elastic Stack biedt gecentraliseerde logboekregistratie op een voordelige, schaalbare, cloudvriendelijke manier. De gebruikersinterface stroomlijnt gegevensanalyse, zodat u uw tijd kunt besteden aan het verzamelen van inzichten uit uw gegevens in plaats van te vechten met een onhandige interface. Het biedt ondersteuning voor een groot aantal invoergegevens, zodat uw gedistribueerde toepassing meer en verschillende soorten services omvat. U kunt verwachten dat u logboek- en metrische gegevens in het systeem kunt blijven invoeren. De Elastic Stack biedt ook ondersteuning voor snelle zoekopdrachten, zelfs in grote gegevenssets, waardoor zelfs grote toepassingen gedetailleerde gegevens kunnen vastleggen en er nog steeds op een performante manier inzicht in hebben.
Logstash
Het eerste onderdeel is Logstash. Dit hulpprogramma wordt gebruikt voor het verzamelen van logboekgegevens uit een groot aantal verschillende bronnen. Logstash kan bijvoorbeeld logboeken van schijf lezen en ook berichten ontvangen van logboekregistratiebibliotheken zoals Serilog. Logstash kan enkele eenvoudige filters en uitbreidingen uitvoeren op de logboeken wanneer ze binnenkomen. Als uw logboeken bijvoorbeeld IP-adressen bevatten, kan Logstash worden geconfigureerd om een geografische zoekopdracht uit te voeren en een land/regio of zelfs plaats van herkomst voor dat bericht te verkrijgen.
Serilog is een logboekbibliotheek voor .NET-talen, waarmee geparameteriseerde logboekregistratie mogelijk is. In plaats van een tekstueel logboekbericht te genereren waarin velden worden ingesloten, worden parameters gescheiden gehouden. Met deze bibliotheek kunt u intelligenter filteren en zoeken. Een voorbeeldconfiguratie van Serilog voor het schrijven naar Logstash wordt weergegeven in afbeelding 7-7.
var log = new LoggerConfiguration()
.WriteTo.Http("http://localhost:8080")
.CreateLogger();
Afbeelding 7-7. Serilog-configuratie voor het rechtstreeks schrijven van logboekgegevens naar logstash via HTTP
Logstash gebruikt een configuratie zoals in afbeelding 7-8.
input {
http {
#default host 0.0.0.0:8080
codec => json
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index=>"sales-%{+xxxx.ww}"
}
}
Afbeelding 7-8. Een Logstash-configuratie voor het verbruik van logboeken uit Serilog
Voor scenario's waarbij uitgebreide logboekbewerking niet nodig is, is er een alternatief voor Logstash, bekend als Beats. Beats is een reeks hulpprogramma's die een groot aantal gegevens kunnen verzamelen van logboeken naar netwerkgegevens en uptime-informatie. Veel toepassingen gebruiken zowel Logstash als Beats.
Zodra de logboeken zijn verzameld door Logstash, moet deze ergens worden geplaatst. Hoewel Logstash veel verschillende uitvoer ondersteunt, is Elasticsearch een van de meer opwindende.
Elasticsearch
Elasticsearch is een krachtige zoekmachine die logboeken kan indexeren zodra ze binnenkomen. Hiermee kunt u snel query's uitvoeren op de logboeken. Elasticsearch kan grote hoeveelheden logboeken verwerken en kan in extreme gevallen over vele knooppunten worden uitgebreid.
Logboekberichten die zijn gemaakt om parameters te bevatten of waarvan parameters zijn gescheiden via Logstash-verwerking, kunnen direct worden opgevraagd omdat Elasticsearch deze informatie behoudt.
In afbeelding 7-9 wordt een query weergegeven waarin wordt gezocht naar de top 10 pagina's die bezocht zijn door jill@example.com
.
"query": {
"match": {
"user": "jill@example.com"
}
},
"aggregations": {
"top_10_pages": {
"terms": {
"field": "page",
"size": 10
}
}
}
Afbeelding 7-9. Een Elasticsearch-query voor het vinden van de top 10 pagina's die door een gebruiker worden bezocht
Informatie visualiseren met Kibana-webdashboards
Het laatste onderdeel van de stapel is Kibana. Dit hulpprogramma wordt gebruikt voor interactieve visualisaties in een webdashboard. Dashboards kunnen zelfs worden gemaakt door gebruikers die niet technisch zijn. De meeste gegevens die zich in de Elasticsearch-index bevindt, kunnen worden opgenomen in de Kibana-dashboards. Individuele gebruikers hebben mogelijk andere dashboardwensen en Kibana maakt deze aanpassing mogelijk door gebruikersspecifieke dashboards toe te staan.
Elastic Stack installeren in Azure
De Elastische stack kan op veel manieren worden geïnstalleerd in Azure. Zoals altijd is het mogelijk om virtuele machines in te richten en Elastic Stack rechtstreeks erop te installeren. Deze optie heeft de voorkeur voor sommige ervaren gebruikers, omdat deze de hoogste mate van aanpassing biedt. Implementatie op infrastructuur als een service introduceert aanzienlijke beheeroverhead, waardoor degenen die dat pad nemen, eigenaar worden van alle taken die zijn gekoppeld aan infrastructuur als een service, zoals het beveiligen van de machines en het behouden van up-to-date met patches.
Een optie met minder overhead is om gebruik te maken van een van de vele Docker-containers waarop de Elastic Stack al is geconfigureerd. Deze containers kunnen worden neergezet in een bestaand Kubernetes-cluster en naast toepassingscode worden uitgevoerd. De sebp/elk-container is een goed gedocumenteerde en geteste Elastic Stack-container.
Een andere optie is een onlangs aangekondigd ELK-as-a-service-aanbieding.