Suckless Graphs does two things:
sgc helps collect simple time series data locally in a CSV format anchored by epoch time, e.g.
$(date +%s) $(cat /sys/class/thermal/thermal_zone0/temp)
-d switch allows you to define a internet addressable server to push the data to.
sgd offers a service that notices changes and calls symlinked
*.sh scripts to plot that data. This is typically run on the server but
can be run on the client too.
- Designed for a time series
- sg-* are <100 SLOC
- Uses rsync to copy things over, network tolerant, keep a SSH control socket open to make it faster
- examples/ contains a systemd timer example to get interesting data to plot
- plotters/ are graphing scripts to plot PNGs or Web pages
Setting up "suckless graphing"
Notice the assumed
How to collect data
Assuming an example temperature script is in place:
$ ls /etc/systemd/system/sg* /etc/systemd/system/sgc-temp@.service /etc/systemd/system/sgc-temp@.timer systemctl list-timers | grep sgc sudo systemctl start sgc-temp@$USER.timer sudo systemctl enable sgc-temp@$USER.timer
Learn about systemd timers to adjust the frequency.
Data lands up in ~/.cache/sg/$HOSTNAME/temp
How to setup plotters for your data
sudo systemctl start sgd@$USER.service sudo systemctl enable sgd@$USER.service
In you collect data called "temp" from a machine named "foo" and you want a PNG version of the data generated on any update:
~/.cache/sg/foo/temp$ ln -s /usr/local/share/sg/plotters/gnuplot.sh
With that script symlinked into the data directory, sgd will execute *.sh when it notices new data.
So in this example
~/.cache/sg/foo/temp/gnuplot.png will be generated whenever a CSV has been appended to.
Linking to your webdir root
Step one, link in the plotter script:
~/.cache/sg/X1C3/temp$ ln -s /usr/local/share/sg/plotters/google.sh
Step two, link the generated output to your web root:
/usr/share/nginx/html$ ln -s ~/.cache/sg/X1C3/temp/google.html
If you get
13: Permission denied you need to:
chmod +rX -R ~/.cache/ chmod +rX $HOME