Observability and Chaos Engineering for System Calls in Containerized Applications

Chaos engineering is about testing the resilience of systems in production to see if they perform as expected during changing conditions. Container usage is becoming more common and as such applying principles of chaos engineering to their usage is important. In this thesis we investigate something...

Full description

Bibliographic Details
Main Author: Simonsson, Jesper
Format: Others
Language:English
Published: KTH, Skolan för elektroteknik och datavetenskap (EECS) 2019
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-263093
id ndltd-UPSALLA1-oai-DiVA.org-kth-263093
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-2630932019-11-19T09:47:48ZObservability and Chaos Engineering for System Calls in Containerized ApplicationsengObserverbarhet och kaosteknik för systemanrop i containerbaserade applikationerSimonsson, JesperKTH, Skolan för elektroteknik och datavetenskap (EECS)2019Computer and Information SciencesData- och informationsvetenskapChaos engineering is about testing the resilience of systems in production to see if they perform as expected during changing conditions. Container usage is becoming more common and as such applying principles of chaos engineering to their usage is important. In this thesis we investigate something that every containerized application uses, system calls and their possible perturbations consisting of the tuple (s, e, d), a system call, error code and delay. The perturbations consist of 9 different system calls, 7 error codes and 3 possible delays. Targets for these perturbations are mainly containerized HTTP-based applications. Included with this is the need for observability and as such monitoring is created for system calls, HTTP and resource based metrics. For this purpose an application called ChaosOrca was developed with support for both monitoring and system call perturbations on containers. We find that for the nine system calls and four applications evaluated the system call perturbations that have an effect on some of the applications were: open, poll, read, readv, select, sendf ile64, write and writev. With the only perturbation able to result in a crash being the perturbation of the select system call with an error code. Furthermore, we find that the metrics collected are enough to reason about the system behavior, where having a network protocol specific metric is useful but not always necessary. Kaosteknik handlar om att testa ett systems robusthet i produktion för att se hur det kan hantera förändrade förhållanden. Containeranvändning är något som blir mer vanligt och att då applicera principerna för kaosteknik kan anses viktigt. I den här uppsatsen undersöker vi något som alla applikationer som kör i containrar använder, systemanrop och dess möjliga störningskombinationer på formatet (s, e, d), ett systemanrop, en felkod och en fördröjning. Störningskombinationerna består av 9 olika systemanrop, 7 felkoder och 3 olika fördröjningar. Mål för dessa störningskombinationer var huvudsakligen HTTPbaserade applikationer. Inkluderat för detta är ett behov för observerbarhet och som följd skapas övervakning av systemanrop, HTTP och systemresurser. För att uppfylla kraven utvecklades en mjukvara kallad ChaosOrca med support för både övervakning och modifiering av systemanrop. Vi kommer fram till att för de nio systemanrop och fyra applikationer som utvärderats så var de som hade en effekt på någon av applikationerna: open, poll, read, readv, select, sendf ile64, write and writev. Den enda systemanropstörning som orsakade en krasch var select med en felkod. Fortsättningsvis finner vi att de mätvärden som samlats in är tillräckliga för att kunna utvärdera applikationernas beteende, där de nätverksprotokoll specifika mätvärdena är givande men inte alltid behövs. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-263093TRITA-EECS-EX ; 2019:538application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Computer and Information Sciences
Data- och informationsvetenskap
spellingShingle Computer and Information Sciences
Data- och informationsvetenskap
Simonsson, Jesper
Observability and Chaos Engineering for System Calls in Containerized Applications
description Chaos engineering is about testing the resilience of systems in production to see if they perform as expected during changing conditions. Container usage is becoming more common and as such applying principles of chaos engineering to their usage is important. In this thesis we investigate something that every containerized application uses, system calls and their possible perturbations consisting of the tuple (s, e, d), a system call, error code and delay. The perturbations consist of 9 different system calls, 7 error codes and 3 possible delays. Targets for these perturbations are mainly containerized HTTP-based applications. Included with this is the need for observability and as such monitoring is created for system calls, HTTP and resource based metrics. For this purpose an application called ChaosOrca was developed with support for both monitoring and system call perturbations on containers. We find that for the nine system calls and four applications evaluated the system call perturbations that have an effect on some of the applications were: open, poll, read, readv, select, sendf ile64, write and writev. With the only perturbation able to result in a crash being the perturbation of the select system call with an error code. Furthermore, we find that the metrics collected are enough to reason about the system behavior, where having a network protocol specific metric is useful but not always necessary. === Kaosteknik handlar om att testa ett systems robusthet i produktion för att se hur det kan hantera förändrade förhållanden. Containeranvändning är något som blir mer vanligt och att då applicera principerna för kaosteknik kan anses viktigt. I den här uppsatsen undersöker vi något som alla applikationer som kör i containrar använder, systemanrop och dess möjliga störningskombinationer på formatet (s, e, d), ett systemanrop, en felkod och en fördröjning. Störningskombinationerna består av 9 olika systemanrop, 7 felkoder och 3 olika fördröjningar. Mål för dessa störningskombinationer var huvudsakligen HTTPbaserade applikationer. Inkluderat för detta är ett behov för observerbarhet och som följd skapas övervakning av systemanrop, HTTP och systemresurser. För att uppfylla kraven utvecklades en mjukvara kallad ChaosOrca med support för både övervakning och modifiering av systemanrop. Vi kommer fram till att för de nio systemanrop och fyra applikationer som utvärderats så var de som hade en effekt på någon av applikationerna: open, poll, read, readv, select, sendf ile64, write and writev. Den enda systemanropstörning som orsakade en krasch var select med en felkod. Fortsättningsvis finner vi att de mätvärden som samlats in är tillräckliga för att kunna utvärdera applikationernas beteende, där de nätverksprotokoll specifika mätvärdena är givande men inte alltid behövs.
author Simonsson, Jesper
author_facet Simonsson, Jesper
author_sort Simonsson, Jesper
title Observability and Chaos Engineering for System Calls in Containerized Applications
title_short Observability and Chaos Engineering for System Calls in Containerized Applications
title_full Observability and Chaos Engineering for System Calls in Containerized Applications
title_fullStr Observability and Chaos Engineering for System Calls in Containerized Applications
title_full_unstemmed Observability and Chaos Engineering for System Calls in Containerized Applications
title_sort observability and chaos engineering for system calls in containerized applications
publisher KTH, Skolan för elektroteknik och datavetenskap (EECS)
publishDate 2019
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-263093
work_keys_str_mv AT simonssonjesper observabilityandchaosengineeringforsystemcallsincontainerizedapplications
AT simonssonjesper observerbarhetochkaosteknikforsystemanropicontainerbaseradeapplikationer
_version_ 1719293027395043328