Title : OpenBSD ttyplot examples
Author: Solène
Date  : 29 July 2019
Tags  : openbsd68 openbsd

I said I will rewrite [ttyplot](https://github.com/tenox7/ttyplot) examples to
make them work on OpenBSD.

Here they are, but a small notice before:

Examples using **systat** will only work for 10000 seconds , or increase that
-d parameter, or wrap it in an infinite loop so it restart (but don't loop
systat for one run at a time, it needs to start at least once for producing
results).

The **systat** examples won't work before OpenBSD 6.6, which is not yet
released at the time I'm writing this, but it'll work on a -current after 20 july 2019.

I made a change to systat so it flush output at every cycle, it was not
possible to parse its output in realtime before.

Enjoy!


## Examples list

### ping

Replace test.example by the host you want to ping.

    ping test.example | awk '/ms$/ { print substr($7,6) ; fflush }' | ttyplot -t "ping in ms"


### cpu usage

    vmstat 1 | awk 'NR>2 { print 100-$(NF); fflush(); }' | ttyplot -t "Cpu usage" -s 100


### disk io

     systat -d 1000 -b  iostat 1 | awk '/^sd0/ && NR > 20 { print $2/1024 ; print $3/1024 ; fflush }' | ttyplot -2 -t "Disk read/write in kB/s"


### load average 1 minute

    { while :; do uptime ; sleep 1 ; done } | awk '{ print substr($8,0,length($8)-1) ; fflush }' | ttyplot -t "load average 1"


### load average 5 minutes

    { while :; do uptime ; sleep 1 ; done } | awk '{ print substr($9,0,length($9)-1) ; fflush }' | ttyplot -t "load average 5"


### load average 15 minutes

    { while :; do uptime ; sleep 1 ; done } | awk '{ print $10 ; fflush }' | ttyplot -t "load average 15"


### wifi signal strengh

Replace iwm0 by your interface name.

    { while :; do ifconfig iwm0 | tr ' ' '\n' ; sleep 1 ; done } | awk '/%$/ { print ; fflush }' | ttyplot -t "Wifi strength in %" -s 100


### cpu temperature

    { while :; do sysctl -n hw.sensors.cpu0.temp0 ; sleep 1 ; done } | awk '{ print $1 ; fflush }' | ttyplot -t "CPU temperature in °C"


### pf state searches rate

    systat -d 10000 -b pf 1 | awk '/state searches/ { print $4 ; fflush }' | ttyplot -t "PF state searches per second"


### pf state insertions rate

    systat -d 10000 -b pf 1 | awk '/state inserts/ { print $4 ; fflush }' | ttyplot -t "PF state searches per second"


### network bandwidth

Replace trunk0 by your interface.
This is the same command as in my previous article.

    netstat -b -w 1 -I trunk0 | awk 'NR>3 { print $1/1024; print $2/1024; fflush }' | ttyplot -2 -t "IN/OUT Bandwidth in KB/s" -u "KB/s" -c "#"


## Tip

You can easily use those examples over ssh for gathering data, and leave the
plot locally as in the following example:

    ssh remote_server "netstat -b -w 1 -I trunk0" | awk 'NR>3 { print $1/1024; print $2/1024; fflush }' | ttyplot -2 -t "IN/OUT Bandwidth in KB/s" -u "KB/s" -c "#"

or

    ssh remote_server "ping test.example" | awk '/ms$/ { print substr($7,6) ; fflush }' | ttyplot -t "ping in ms"