DOI: 10.5281/zenodo.16982695
title: LO2v2: An Updated and Improved Microservice Dataset of Logs and Metrics

description: LO2v2: An Updated and Improved Microservice Dataset of Logs and Metrics

This repository hosts the second version of the LO2 dataset created jointly by University of Oulu (M3S) and University of Helsinki (EvoTestOps) during the MuFAno project. LO2 dataset is a data of monitoring data (logs, metrics and traces) of a microservice system implementing the OAuth2.0 protocol. The runtime data is created via execution of Locust tests. The data is gathered from Docker daemon and deployed cAdvisor, NodeExporter and Prometheus containers.

Previous version

For the LO2v1 (referred to like that retrospectively), check our PROMISE2025 paper (see References below) and corresponding Zenodo repositories (see Related Works below).

Improvements

For the thorough discussion of the improvements w.r.t LO2v1, check the IEEE Data Descriptions paper.

The main changes to the data collection and composition of the dataset are:



Collection of service (container) metrics via cAdvisor

Random shuffling of tests in each run



Run log file is introduced to track the order, start, and end times of the tests



Random duration of each test within a run (between 20 and 180 seconds)

Random duration of a pause between tests within a run (between 1 and 5 seconds)


Terms used in the dataset description



Task - a specific operation performed by Locust on a tested API (e.g., perform a GET request that should return a 404 error). In the data collection script, tasks are tagged either "correct" or "error", with correct tasks implementing requests according to documentation (200, 301 responses), and "error" tasks designed to trigger some error response (401, 404 responses).

Test - an execution of a specific set of tasks. In LO2, we have a correct test executing only "correct" tasks and error tests, that execute all "correct" tasks and an additional task designed to cause a specific error. 

Run - an execution of all possible defined tests. In LO2, a run consists of 54 tests - one correct test and 53 error tests, for each "error" task implemented in Locust.


Structure of the dataset

The LO2v2 dataset consists of 115 runs, each of 54 tests.

Each run is a directory named "LO2_run_UNIX", where UNIX is the Unix timestamp of the beginning of the run.

The subdirectories of each run are tests, named after the specific task that was triggered in them (the correct test executing only correct tasks is called "correct"). Additionally, a run_log.log file is present, which chronicles the execution of tests during the run.

Each test directory contains:



Log files for each container + locust

Metrics directory containing:



JSON file for cAdvisor and NodeExporter metrics collected with Prometheus

CSV for traces of each container collected by the injected JaegerAgent

last_fetch_time.txt, containing the end of the interval that the metrics and traces were queried for.




Contents

There are several zip archives in this upload:

LO2v2.zip (62 Gb)

The entire updated LO2v2 dataset in raw form, consisting of 115 data runs. The uncompressed data is about 640 Gb.

LO2v2-metrics.zip (1.2 Gb)

Host- and container-level metrics exported to CSV files from raw JSON files. The uncompressed data is about 6.3 Gb.

light-oauth2.zip (20 Mb)

Replication package - source code of the light-oauth2 system, Locust tests, data collection scripts

light-oauth2-metrics.zip (77.5 Mb)

Repository containing one example run, script to convert JSON metrics into CSV, and a script to perform Principal Component Analysis presented in the paper.

light-oauth2-logs.zip (2.7Gb)

Repository containing scripts and data for the log analysis reported in the paper.

License

The dataset is shared CC-BY-4.0 license. The code (both the original project and our own scripts, including locust tests) is shared under the Apache 2.0 license.