| Title: OpenBSD ttyplot examples | |
| Author: Solène | |
| Date: 29 July 2019 | |
| Tags: openbsd ttyplot | |
| Description: | |
| 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" |