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