Difference between revisions of "Resource Monitoring Tools"
From Steak Wiki
Jump to navigationJump to search (→iotop) |
|||
Line 27: | Line 27: | ||
See what a program is doing. (Note: not available on ARM deb repos) | See what a program is doing. (Note: not available on ARM deb repos) | ||
+ | |||
+ | ==Monitor IP address up/down via ping== | ||
+ | |||
+ | <pre> | ||
+ | #!/bin/bash | ||
+ | |||
+ | SERVERIP=$1 | ||
+ | LOGFILE=$1_$(date +%A)_LOG | ||
+ | HISTORYFILE=$1_$(date +%A)_LOCKFILE | ||
+ | NOTIFYEMAIL=myemail@address.com | ||
+ | |||
+ | #setup this script in cron each minute, and also | ||
+ | #crontab requires historyfile / lockfile to be blanked (echo "" > file) each day or each hour, whatever you prefer. | ||
+ | #mkdir /var/log/networkalerts | ||
+ | #e.g. $ script.sh <ipaddress> | ||
+ | # in /etc/crontab | ||
+ | #* * * * * root /root/email_alerts/test_up.sh 192.168.1.1 | ||
+ | #0 */2 * * * root rm /var/log/networkalerts/*LOCKFILE | ||
+ | #0 0 * * * root rm /var/log/networkalerts/*$(date +%A)*LOG | ||
+ | |||
+ | |||
+ | ping -c 3 $SERVERIP >> /var/log/networkalerts/$LOGFILE | ||
+ | #keep track of time | ||
+ | date >> /var/log/networkalerts/$LOGFILE | ||
+ | |||
+ | #if return val is error (see man on ping regarding count and deadline) | ||
+ | if test $? -eq 1 | ||
+ | then | ||
+ | #if file empty | ||
+ | #[ -s FILE ] True if FILE exists and has a size greater than zero. Thus, you get "empty.txt" if "diff.txt" is not empty. ? Matthias Apr 1 '$ | ||
+ | #https://stackoverflow.com/questions/9964823/how-to-check-if-a-file-is-empty-in-bash | ||
+ | #https://mywiki.wooledge.org/BashGuide/TestsAndConditionals for all the other tests like -s | ||
+ | # [! -s file] to invert didn't work because of missing spaces (i think) | ||
+ | # must be space between [ and -s and also last bracket. test brackets are unintuitive so don't use them. | ||
+ | # if [ -s /var/log/networkalerts/$HISTORYFILE ] | ||
+ | if test -s /var/log/networkalerts/$HISTORYFILE | ||
+ | then | ||
+ | exit 5 | ||
+ | else | ||
+ | # Use your favorite mailer here: | ||
+ | # wiki.zoneminder.com/Email | ||
+ | echo "alert" | mutt -s "Network Down" -- $NOTIFYEMAIL | ||
+ | #lock file / history file | ||
+ | echo "alertsent" > /var/log/networkalerts/$HISTORYFILE | ||
+ | fi | ||
+ | fi | ||
+ | </pre> |
Revision as of 13:51, 15 October 2020
There are programs available to watch various aspects of your system.
iftop
See active internet connections. e.g.
# iftop -i eth1
Will show you websites that don't close a connection, when the tab is left open. A privacy and security nightmare. This is a reason why Javascript is bad.
vmstat
See RAM usage. Can be watched, to monitor swapping. e.g.
$ vmstat 3
Leave it running. It will update every 3 seconds.
iotop
See HDD accesses. e.g.
# iotop --only # iotop -o
only flag will show active processes only
# iotop -d 0.01 or -d 0.1
delay flag can be set to be faster than 1 second. Some writes are missed otherwise.
Monitor Library Reads from PID
$ ltrace -p -pidhere-
See what a program is doing. (Note: not available on ARM deb repos)
Monitor IP address up/down via ping
#!/bin/bash SERVERIP=$1 LOGFILE=$1_$(date +%A)_LOG HISTORYFILE=$1_$(date +%A)_LOCKFILE NOTIFYEMAIL=myemail@address.com #setup this script in cron each minute, and also #crontab requires historyfile / lockfile to be blanked (echo "" > file) each day or each hour, whatever you prefer. #mkdir /var/log/networkalerts #e.g. $ script.sh <ipaddress> # in /etc/crontab #* * * * * root /root/email_alerts/test_up.sh 192.168.1.1 #0 */2 * * * root rm /var/log/networkalerts/*LOCKFILE #0 0 * * * root rm /var/log/networkalerts/*$(date +%A)*LOG ping -c 3 $SERVERIP >> /var/log/networkalerts/$LOGFILE #keep track of time date >> /var/log/networkalerts/$LOGFILE #if return val is error (see man on ping regarding count and deadline) if test $? -eq 1 then #if file empty #[ -s FILE ] True if FILE exists and has a size greater than zero. Thus, you get "empty.txt" if "diff.txt" is not empty. ? Matthias Apr 1 '$ #https://stackoverflow.com/questions/9964823/how-to-check-if-a-file-is-empty-in-bash #https://mywiki.wooledge.org/BashGuide/TestsAndConditionals for all the other tests like -s # [! -s file] to invert didn't work because of missing spaces (i think) # must be space between [ and -s and also last bracket. test brackets are unintuitive so don't use them. # if [ -s /var/log/networkalerts/$HISTORYFILE ] if test -s /var/log/networkalerts/$HISTORYFILE then exit 5 else # Use your favorite mailer here: # wiki.zoneminder.com/Email echo "alert" | mutt -s "Network Down" -- $NOTIFYEMAIL #lock file / history file echo "alertsent" > /var/log/networkalerts/$HISTORYFILE fi fi