readme and install script

This commit is contained in:
David 2022-10-23 08:17:39 -04:00
commit facf699c22
2 changed files with 75 additions and 0 deletions

33
README.md Normal file
View File

@ -0,0 +1,33 @@
# steamos prometheus
Heavily inspired by [Xe's guide to getting tailscale running](https://tailscale.com/blog/steam-deck/), this script installs prometheus' `node_exporter` onto a Steam Deck in a way that _should_ survive system updates.
## Usage
Make sure you have `sudo` access when in desktop mode by [setting a password for your `deck` user](https://gitlab.com/popsulfr/steam-deck-tricks#easy-ssh-access-to-the-steam-deck).
Copy `./install.sh` onto your Deck, either over SSH or by copying it from a browser, then run `sudo bash ./install.sh`.
If this is the first time you've installed a system extension, run `sudo systemd-sysext merge`.
If you've already done something like the Tailscale install mentioned above, just `sudo systemd-sysext refresh`.
To make sure that system extensions are loaded after reboot, run
```sh
sudo systemctl enable systemd-sysext
sudo systemctl start systemd-sysext
```
Then you should be able to just
```sh
sudo systemctl enable prometheus-node-exporter
sudo systemctl start prometheus-node-exporter
```
Installing a collector for the metrics now available on `:9100` is left as an exercise for the reader, but I figure if you're devoted to tracking system metrics enough to try and install prometheus on your Steam Deck you've probably already got a setup for that.
## References
* <https://tailscale.com/blog/steam-deck/>
* <https://blogs.igalia.com/berto/2022/09/13/adding-software-to-the-steam-deck-with-systemd-sysext/>

42
install.sh Normal file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env bash
set -euo pipefail
dir="$(mktemp -d)"
pushd .
cd "${dir}"
BINARY=$(curl https://api.github.com/repos/prometheus/node_exporter/releases/latest | jq -r '.assets[] | select(.name | contains("linux-amd64")) | .browser_download_url')
curl -L $BINARY -o node-exporter.tgz
mkdir -p prometheus/usr/{bin,lib/{systemd/system,extension-release.d}}
tar xzf node-exporter.tgz
cp -vrf node_exporter-*/node_exporter prometheus/usr/bin/node_exporter
cat > prometheus/usr/lib/systemd/system/prometheus-node-exporter.service <<- EOM
[Unit]
Description=Prometheus exporter for machine metrics
Requires=network-online.target
After=network-online.target
[Service]
Restart=on-failure
ExecStart=/usr/bin/node_exporter
ExecReload=/bin/kill -HUP \$MAINPID
NoNewPrivileges=true
ProtectHome=read-only
ProtectSystem=strict
[Install]
WantedBy=multi-user.target
EOM
source /etc/os-release
echo -e "SYSEXT_LEVEL=1.0\nID=steamos\nVERSION_ID=${VERSION_ID}" >> prometheus/usr/lib/extension-release.d/extension-release.prometheus-node-exporter
mkdir -p /var/lib/extensions
rm -rf /var/lib/extensions/prometheus-node-exporter
cp -vrf prometheus /var/lib/extensions/prometheus-node-exporter
popd
rm -rf "${dir}"