Introduction

stethoscope is a command line tool to filter and format the events coming from the MonetDB profiler. This profiler emits two JSON objects, one at the start and one at the end of every MAL instruction executed. stethoscope connects to a MonetDB server process, reads the objects emitted by the profiler and performs various transformations specified by the user.

Its name is inspired by the medical device, called a stethoscope. It can be attached to a body to listen to the lungs and heart. The same holds for stethoscope. You can attach it to a running MonetDB server and immediately see what it is doing.

Conceptually the user specifies a transformation pipeline. The pipeline is applied to every JSON object emitted by the server and has the following stages:

Reading

After a connection to the MonetDB server is established, stethoscope reads one string, representing a JSON object, from the connection.

Parsing

The string is first parsed into a Python dictionary. The user cannot affect the execution of this stage. (But take a look at the raw pipeline below).

Transforming

The various user-specified transformers are run on the Python dictionary. Transformers add or remove key-value pairs from the dictionaries.

Filtering

Filters remove whole objects from the stream based on a user defined predicate. (not yet implemented)

Formatting

Formatters change how the object is displayed to the user.