iopsystems / rezolus

Systems performance telemetry
Other
64 stars 9 forks source link

Rezolus

Rezolus captures and exports high resolution data about systems performance. It sets itself apart from other telemetry agents by using:

Overview

Rezolus is designed to produce high resolution systems performance telemetry. It has a collection of samplers which instrument various aspects of systems performance including CPU, GPU, task scheduling, system calls, TCP, block IO, and more.

All of Rezolus's sampler focus on capturing key signals that can be used to understand how the workload is running on the underlying system. These insights are useful for understanding where bottlenecks and optimization opportunities might be. With high frequency sampling and eBPF, Rezolus can also provide insights into your workload itself like what typical block and network IO sizes are, the number and type of system calls being executed, and if there's spikes in utilization metrics.

Rezolus provides valuable data about systems performance and can be used to root cause production performance issues, capture better data in test environments, and provide signals for optimization efforts.

Configuration

Rezolus uses a TOML configuration. See config.toml in this project for an example config file.

Dashboard

If you are running Prometheus and Grafana for collecting and visualizing metrics, the dashboard.json file is an example Grafana dashboard that demonstrates some ways to use the collected data. This can help you get started on your own dashboards.

Getting Help

Join our Discord server to ask questions and have discussions.

If you have a problem using Rezolus or a question about Rezolus that you can't find an answer to, please open a new issue on GitHub

Building

Rezolus is built using the Rust toolchain. If you do not have the Rust toolchain installed, please see rust-lang.org to get started with Rust.

Build Dependencies

Rust >= 1.70.0

Linux

A minimum kernel version of 5.5 is required. The following distributions should work:

In addition to the base dependencies, the following are needed:

Debian and Ubuntu users can install all the required dependencies for a default build with:

sudo apt install clang libelf-dev make pkg-config

Steps

git clone https://github.com/iopsystems/rezolus
cd rezolus
cargo build --release

Configuration

See the config.toml file for an example configuration with explanations for the various options.

Installation

You can either manually install Rezolus and register it with your init system (eg systemd) or if you're using Debian or Ubuntu you can build a package for Rezolus using dpkg-buildpackage -b in the repository root. Note: you will need both devscripts and jq installed to generate the package.

Running

You may also run Rezolus manually after building from source. In the repository root you can run:

sudo target/release/rezolus config.toml

Contributing

To contribute to Rezolus first check if there are any open pull requests or issues related to the bugfix or feature you wish to contribute. If there is not, please start by opening a new issue on GitHub to either report the bug or get feedback on a new feature. This will allow one of the maintainers to confirm the bug and provide early input on new features.

Once you're ready to contribute some changes, the workflow is:

License

Rezolus is dual-licensed under the Apache License v2.0 and the MIT License, unless otherwise specified.

Detailed licensing information can be found in the COPYRIGHT document