Binnen de wereld van gedistribueerde systemen en enterprise-integraties is het monitoren van applicatielogs essentieel voor het waarborgen van de stabiliteit, prestaties en beveiliging van services. WSO2 Micro Integrator is een krachtige integratieruntime die is ontworpen voor een microservices-architectuur. Het platform speelt een cruciale rol bij het uitvoeren van bedrijfskritische integraties, het afhandelen van complexe workflows en het faciliteren van API-interacties.
Voor WSO2 Micro Integrator zorgt het op een naadloze en gestructureerde manier verzamelen, monitoren en analyseren van logs voor soepelere operationele processen en snellere probleemoplossing, wat de algehele betrouwbaarheid van services verhoogt.
Door WSO2-logs te integreren met Grafana kunnen gebruikers deze logs visualiseren, alerts instellen en logs correleren met andere metrics voor een compleet en geïntegreerd inzicht. In deze blog richten we ons op hoe je Grafana Alloy kunt inzetten om WSO2 Micro Integrator-logs te scrapen, deze door te sturen naar Grafana Loki en ze uiteindelijk weer te geven in de Grafana-interface voor efficiënte monitoring en troubleshooting.

Wat zijn Grafana, Loki en Alloy?
Voordat we ingaan op de configuratie, lichten we eerst de belangrijkste componenten toe die onze loggingoplossing mogelijk maken:
Loki: Loki is een horizontaal schaalbaar, hoog beschikbaar en multi-tenant log-aggregatiesysteem, ontwikkeld door Grafana Labs. In tegenstelling tot traditionele logmanagementsystemen is Loki geoptimaliseerd voor kostenefficiëntie, doordat alleen metadata wordt geïndexeerd en niet de logregels zelf.
Grafana: Grafana is een veelgebruikte open-source platform voor monitoring en observability. Het stelt gebruikers in staat om metrics, logs en alerts te visualiseren via configureerbare dashboards. Dankzij de mogelijkheid om te integreren met diverse databronnen (zoals Prometheus, Loki, MySQL, enzovoort) is Grafana een veelgebruikte tool voor het realtime monitoren van applicaties.
Grafana Alloy: Alloy is een log-collection agent die is ontworpen om logs te verzamelen uit verschillende bronnen (zoals Docker-containers, Kubernetes-pods of logbestanden) en deze door te sturen naar Grafana Loki. Het vereenvoudigt het verzamelen van logs door een efficiënte en configureerbare manier te bieden om logdata naar Loki te verzenden. Daarmee is Alloy uitermate geschikt voor het monitoren van gecontaineriseerde omgevingen, zoals Podman.
Grafana Alloy configureren voor het verzamelen van WSO2 Micro Integrator-logs
Nu we de gebruikte tools begrijpen, gaan we dieper in op hoe je Grafana Alloy configureert om logs te verzamelen van WSO2 Micro Integrator die draait in een Podman containeromgeving, en deze te publiceren naar een bestaande Loki- en Grafana-setup.
Stap 1: Grafana Alloy configureren en installeren
1. Configuratiebestand: Maak een configuratiebestand (config.alloy) aan waarin je vastlegt hoe Alloy logs moet verzamelen en doorsturen.

Deze Alloy-configuratie beschrijft hoe logs van WSO2 Micro Integrator, draaiend in een Podman-omgeving, worden verzameld en doorgestuurd naar Loki. Hieronder lichten we de configuratie stap voor stap toe:
a. Logbestand-matching: In dit onderdeel wordt vastgelegd welke logbestanden Alloy moet verzamelen.

- path_targets: Dit is een array met logbestandspaden en bijbehorende metadata-labels die de omgeving beschrijven.
- path: Het daadwerkelijke pad naar het logbestand op het systeem (bijvoorbeeld /tmp/mi-logs/wso2carbon.log).
- Metadata-velden zoals Environment, ServiceName en Node voegen extra context toe aan de logs:
- “Environment” = “Dev”: Geeft aan dat deze logs afkomstig zijn uit een ontwikkelomgeving.
- “ServiceName” = “Micro Integrator”: Geeft aan dat de logs afkomstig zijn van de WSO2 Micro Integrator-service.
- “Node” = “MI-Node1”: Geeft aan dat de logs afkomstig zijn van een specifieke node binnen de omgeving (bijvoorbeeld MI-Node1).
b. Log scraping-configuratie: Dit onderdeel instrueert Alloy om de logbestanden te verzamelen die zijn gedefinieerd in het local.file_match.milogs-blok.

- targets: Hier worden de path_targets uit het eerder gedefinieerde local.file_match “milogs”-blok gebruikt. Alloy zal de logs uit deze bestanden verzamelen.
- forward_to: Dit geeft aan waar Alloy de logs na het verzamelen naartoe moet sturen. In dit geval worden de logs doorgestuurd naar het Loki write-endpoint dat is gedefinieerd in de volgende sectie (loki.write “local_loki”).
c. Logs naar Loki sturen: In dit onderdeel wordt Alloy geconfigureerd om de verzamelde logs te verzenden naar een specifieke Loki-instantie.

- url: Dit is de URL van de log-ingestion API van de Loki-server. De logs worden naar de Loki-server gepusht via
http://<grafana-loki-host>:3100/loki/api/v1/push. - Vervang <grafana-loki-host> door de daadwerkelijke hostnaam of het IP-adres van je Grafana Loki-instantie.
- Logbestanden mounten: Zorg ervoor dat het pad naar de logbestanden van WSO2 Micro Integrator correct is gemount in de Podman-container waarin Alloy draait. In dit voorbeeld is /opt/wso2/apps/logs/mi/ de directory op de hostmachine waar de WSO2-logs zijn opgeslagen.
- Configuratie mounten: Zorg ervoor dat het in stap 1 aangemaakte configuratiebestand wordt gemount naar het containerpad /etc/alloy/config.alloy. In dit geval mount je het hostpad /opt/wso2/apps/alloy/config.alloy naar het containerpad /etc/alloy/config.alloy.
- Alloy installeren: Download en installeer de Grafana Alloy-container voor jouw omgeving. De installatie verschilt afhankelijk van het gebruik van Podman of Docker. Voor een Podman-omgeving kun je Alloy als container draaien zoals hieronder wordt beschreven.

Stap 2: Loki configureren voor het ontvangen van logs
Zorg ervoor dat je Loki-instantie actief is en correct is geconfigureerd om logs te ontvangen van Grafana Alloy. Let op: deze blog richt zich specifiek op het configureren van Alloy voor log scraping en behandelt niet de installatie of configuratie van Loki en Grafana zelf.
Step 3: Viewing Logs in Grafana
5. Add Loki as a Data Source: In Grafana, add Loki as a data source by navigating to Configuration > Data Sources > Loki and provide the URL where Loki is running (e.g., http://localhost:3100).
6. Create Dashboards: Once Loki is configured, you can create custom dashboards in Grafana to view the WSO2 logs.
7. Logs verkennen: Gebruik de Explore-functionaliteit in Grafana om specifieke logevents te doorzoeken en problemen te analyseren. Dit maakt het eenvoudig om fouten te identificeren of logstromen realtime te monitoren.

Samenvatting
Het monitoren van WSO2 Micro Integrator-logs met Grafana biedt een krachtige en visuele manier om de gezondheid en prestaties van je integratieservices te volgen. Door Grafana Alloy te gebruiken voor het verzamelen van logs, Loki voor efficiënte opslag en Grafana voor het verkennen en visualiseren ervan, krijg je volledig inzicht in het gedrag van je applicaties en kun je issues snel oplossen.
In deze blog is beschreven hoe je Grafana Alloy configureert binnen een Podman-containeromgeving en hoe je logs vervolgens visualiseert in Grafana. Een dergelijke opzet zorgt voor naadloze logaggregatie en monitoring, waardoor je potentiële problemen voor blijft en optimale serviceprestaties kunt garanderen.
Heb je vragen over Podman, Grafana, Loki, Alloy of WSO2 Micro Integrator? De experts van Yenlo staan klaar om je te helpen het maximale uit je integratieomgeving te halen.
