Study of Anomaly Detection for Kafka Clusters using Chaos Engineering
2024 (English)Independent thesis Advanced level (degree of Master (Two Years)), 20 credits / 30 HE credits
Student thesisAlternative title
Studie av Anomaliupptäckt för Kafka-kluster med användning av Chaos Engineering (Swedish)
Abstract [en]
Distributed systems are gaining widespread adoption across IT organizations. Monitoring failures in these systems, which consist of loosely coupled applications, is cumbersome and requires manual attention. This study focuses on implementing anomaly detection within a sandbox running Kafka to detect failures automatically. To train and test the models, ”Chaos Engineering” is used to inject controlled failures into the system. Since the sandbox is not currently under load, a load simulator is created to mimic five different scenarios: constant load, linear increase load, linear decrease load, sine load, and a real-life scenario load. The study also investigates the ability to forecast metrics over various forecasting horizons, from 5, 10, to 30 minutes into the future. The forecasting model showed varying performance results depending on the current load on the sandbox and the metric being forecasted, as some metrics showed high volatility, leading to worse forecasting performance. Overall, increasing the forecasting horizon led to worse predictions, but within reasonable margins. The study concluded that the CPU usage metric performed best for the real-life simulation as well as for the sine load across all models. For the linear increase, the metric for consumer group lag was the best for all models. This metric also performed best for LSTM during the linear decrease load; however, KNN’s best metrics were network error increase and memory usage. The best metric for Isolation Forest was topic offset. For the constant simulation, Kafka latency was the best metric for LSTM and KNN, while network error performed best for Isolation Forest. In terms of overall model performance, KNN was the best for the real-life simulation and the linear increase load. Isolation Forest performed best for the sine, linear decrease, and constant simulations. The study also concludes that Chaos Engineering within the sandbox was able to inject enough errors for the models to react differently to the loads compared to the regular load simulations. The novel approach introduced in this study offers a methodology for building a machine learning model within a test environment using Chaos Engineering without the need for production data or real-life usage.
Abstract [sv]
Distribuerade system får alltmer spridning inom IT-organisationer. För dessa system, som består av löst kopplade applikationer, är övervakning av fel besvärligt och kräver manuell uppmärksamhet. Denna studie fokuserar på att implementera en model för att upptäcka anomalier inom en testmiljö som kör Kafka. För att träna och testa modellerna används ”Chaos Engineering” för att injicera kontrollerade fel i systemet. Eftersom testmiljön för närvarande inte är under användning skapas en belastningssimulator för att efterlikna fem olika scenarier: konstant belastning, linjär ökning av belastning, linjär minskning av belastning, sinusbelastning och en verklig scenario-belastning. Studien undersöker också förmågan att prognostisera mätvärden i olika prognostiseringstidsramar, från 5, 10 till 30 minuter in i framtiden. Prognosmodellen visade varierande prestanda beroende på den aktuella belastningen på testmiljön och beroende på vilket mätvärde som prognostiseras. Övergripande ledde ökande prognostiseringstidsramar till sämre förutsägelser däremot inom rimliga gränser. Studien drog slutsatsen att mätvärdet för CPU-användning presterade bäst för den verkliga simuleringen samt för sinusbelastningen för alla modeller. För den linjära ökningen var mätvärdet för ”consumer group lag” bäst för alla modeller. Mätvärdet var också bäst för LSTM under den linjära minskningen av belastning, medan KNN bästa mätvärde var nätverksfel och minnesanvändning. Isolation Forests bästa mätvärde var “topic offset”. För den konstanta simuleringen var Kafka-latens det bästa mätvärdet för LSTM och KNN medan nätverksfel presterade bäst för Isolation Forest. När det gäller den övergripande modellprestandan var KNN bäst för den verkliga simuleringen och den linjära ökningen av belastning. Isolation forest presterade bäst för sinus, linjär minskning och konstant simulering. Denna studie drar också slutsatsen att Chaos Engineering inom testmiljön kunde injicera tillräckligt med fel för att modellerna skulle reagera olika på belastningarna jämfört med de vanliga belastningsimuleringarna.
Place, publisher, year, edition, pages
2024. , p. 64
Series
TRITA-EECS-EX ; 2024:610
Keywords [en]
Apache Kafka, Kafka, Kubernetes, Anomaly Detection, Unsupervised Machine Learning, Chaos Engineering, Load Simulation
Keywords [sv]
Apache Kafka, Kubernetes, Anomalidetektering, Oövervakat Maskininlärning, Chaos Engineering, Lastsimulering
National Category
Computer and Information Sciences
Identifiers
URN: urn:nbn:se:kth:diva-359767OAI: oai:DiVA.org:kth-359767DiVA, id: diva2:1936647
External cooperation
Irori AB
Supervisors
Examiners
2025-02-172025-02-112025-02-17Bibliographically approved