From aee46c8afccf2b16eb33b1e36a514b145e1187d3 Mon Sep 17 00:00:00 2001 From: Davide Cavalca Date: Mon, 28 Jun 2021 13:34:54 -0700 Subject: [PATCH] Add a few missing things - Install upstream systemd unit - Install upstream logrotate config - Add missing documentation - Expand the description --- README-upstream.md | 76 ++++++++++++++++++++++++++++++++++++++++++++++ below.service | 13 ++++++++ logrotate.conf | 11 +++++++ rust-below.spec | 50 ++++++++++++++++++++++++++++-- 4 files changed, 148 insertions(+), 2 deletions(-) create mode 100644 README-upstream.md create mode 100644 below.service create mode 100644 logrotate.conf diff --git a/README-upstream.md b/README-upstream.md new file mode 100644 index 0000000..2daa1c2 --- /dev/null +++ b/README-upstream.md @@ -0,0 +1,76 @@ +# below + +[![CI](https://github.com/facebookincubator/below/workflows/CI/badge.svg)](https://github.com/facebookincubator/below/actions?query=workflow%3ACI+branch%3Amaster+) +[![Matrix chat](https://img.shields.io/matrix/below:matrix.org)](https://matrix.to/#/!SrWxtbLuRUMrDbftgA:matrix.org?via=matrix.org) + +`below` is an interactive tool to view and record historical system data. It +has support for: + +* information regarding hardware resource utilization +* viewing the cgroup hierarchy +* cgroup and process information +* pressure stall information (PSI) +* `record` mode to record system data +* `replay` mode to replay historical system data +* `live` mode to view live system data +* `dump` subcommand to report script-friendly information (eg JSON and CSV) + +below does **not** have support for cgroup1. + +The name "below" stems from the fact that the below developers rejected many +of [atop](https://linux.die.net/man/1/atop)'s design and style decisions. + +## Demo + + + + + +## Installing + +First, install dependencies listed in [building.md](docs/building.md). + +```shell +$ cargo install below +$ below --help +``` + +For convenience, we also provide a Dockerfile and +[pre-built images](https://hub.docker.com/r/below/below) on Docker Hub. +See [docker.md](docs/docker.md) for how to use them. + +## Quickstart + +Live view of system: + +```shell +$ sudo below live +``` + +Run recording daemon: + +```shell +$ sudo cp ~/.cargo/bin/below /bin/below # if using cargo-install +$ sudo cp resctl/below/etc/below.service /etc/systemd/system +$ sudo systemctl daemon-reload +$ sudo systemctl start below +``` + +Replay historical data: + +```shell +$ below replay -t "3m ago" +``` + +## Comparison with alternative tools + +See [comparison.md](docs/comparison.md) for a feature comparison +with alternative tools. + +## Contributing + +See the [CONTRIBUTING](CONTRIBUTING.md) file for how to help out. + +## License + +See [LICENSE](LICENSE) file. diff --git a/below.service b/below.service new file mode 100644 index 0000000..6ef4b40 --- /dev/null +++ b/below.service @@ -0,0 +1,13 @@ +[Unit] +Description=below system monitor recording daemon +After=time-sync.target + +[Service] +ExecStart=/bin/below record --retain-for-s 604800 +# Enable backtraces in errors +Environment=RUST_LIB_BACKTRACE=1 +Restart=always +RestartSec=3 + +[Install] +WantedBy=multi-user.target diff --git a/logrotate.conf b/logrotate.conf new file mode 100644 index 0000000..90bfe05 --- /dev/null +++ b/logrotate.conf @@ -0,0 +1,11 @@ +/var/log/below/error_*.log { + daily + rotate 14 + maxage 14 + copytruncate + compress + notifempty + missingok + create 0644 root root + su root root +} diff --git a/rust-below.spec b/rust-below.spec index 7cda384..23e3f5c 100644 --- a/rust-below.spec +++ b/rust-below.spec @@ -4,9 +4,12 @@ %global crate below +%global forgeurl https://github.com/facebookincubator/below +%global commit 584fdef23f4c7a95a009b84746bb193b68843c1a + Name: rust-%{crate} Version: 0.2.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Interactive tool to view and record historical system data # Upstream license specification: Apache-2.0 @@ -18,12 +21,33 @@ Patch0: below-fix-metadata.diff # Fix record_replay_integration test Patch1: below-fix-tests.patch +# Get these from the repo as they aren't included in the crate +Source1: %{forgeurl}/raw/%{commit}/etc/below.service +Source2: %{forgeurl}/raw/%{commit}/etc/logrotate.conf +Source3: %{forgeurl}/raw/%{commit}/README.md#/README-upstream.md + ExclusiveArch: %{rust_arches} BuildRequires: rust-packaging +BuildRequires: systemd-rpm-macros %global _description %{expand: -Interactive tool to view and record historical system data.} +below is an interactive tool to view and record historical system data. It has +support for: + +- information regarding hardware resource utilization +- viewing the cgroup hierarchy +- cgroup and process information +- pressure stall information (PSI) +- record mode to record system data +- replay mode to replay historical system data +- live mode to view live system data +- dump subcommand to report script-friendly information (e.g. JSON and CSV) + +below does not have support for cgroup1. + +The name "below" stems from the fact that the below developers rejected many of +atop's design and style decisions.} %description %{_description} @@ -34,12 +58,25 @@ Summary: %{summary} %files -n %{crate} %license LICENSE +%doc README.md docs %{_bindir}/%{crate} +%{_unitdir}/%{crate}.service +%{_sysconfdir}/logrotate.d/%{crate}.conf %dir %{_localstatedir}/log/%{crate} +%post -n %{crate} +%systemd_post %{crate}.service + +%preun -n %{crate} +%systemd_preun %{crate}.service + +%postun -n %{crate} +%systemd_postun_with_restart %{crate}.service + %prep %autosetup -n %{crate}-%{version_no_tilde} -p1 %cargo_prep +cp -p %{SOURCE3} README.md %generate_buildrequires %cargo_generate_buildrequires @@ -49,6 +86,9 @@ Summary: %{summary} %install %cargo_install +install -D -p -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{crate}.service +install -D -p -m0644 %{SOURCE2} \ + %{buildroot}%{_sysconfdir}/logrotate.d/%{crate}.conf install -d -m1777 %{buildroot}%{_localstatedir}/log/%{crate} %if %{with check} @@ -57,5 +97,11 @@ install -d -m1777 %{buildroot}%{_localstatedir}/log/%{crate} %endif %changelog +* Mon Jun 28 2021 Davide Cavalca - 0.2.0-2 +- Install upstream systemd unit +- Install upstream logrotate config +- Add missing documentation +- Expand the description + * Tue Jun 15 2021 Davide Cavalca - 0.2.0-1 - Initial package