All Projects → kaihendry → Sg

kaihendry / Sg

suckless graphs

Programming Languages

shell
77523 projects

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)

sgc's -d switch allows you to define a internet addressable server to push the data to.

Optionally 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.

sg features

  • Simple
  • 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"

make

Notice the assumed /usr/local/share/ directory

How to collect data

Assuming an example temperature script is in place:

$ ls /etc/systemd/system/sg*
/etc/systemd/system/[email protected]  /etc/systemd/system/[email protected]

systemctl list-timers | grep sgc
sudo systemctl start [email protected]$USER.timer
sudo systemctl enable [email protected]$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 [email protected]$USER.service
sudo systemctl enable [email protected]$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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].