** DONE Poor Man's Monitoring of a Remote Linux Host via Syncthing :blog:linux:software:tip:diy: CLOSED: [2019-07-07 Sun 14:37] SCHEDULED: <2019-07-07 Sun> :PROPERTIES: :CREATED: [2019-07-07 Sun 13:39] :ID: 2019-07-07-simple-linux-monitoring :END: :LOGBOOK: - State "DONE" from "DONE" [2019-07-09 Tue 10:08] - State "DONE" from "STARTED" [2019-07-07 Sun 14:37] :END: Updates: - 2019-07-09: Explanation on Git and changed cron job from "@daily" to "@reboot". This is because the "@daily" cron job may only be executed at a fixed time during the night where the notebook is usually not running. This is depending on the specific GNU/Linux distribution used. I'm helping some old lady by administrating her notebook. I set it up with Xubuntu LTS GNU/Linux which comes with the very easy to use and fast [[https://en.wikipedia.org/wiki/Xfce][Xfce]] environment: not bloated and offers everything necessary. I stripped down the "start menu" such that it only shows the ten apps she's using. Remote access is done via TeamViewer if necessary. Today, I set it up with a neat monitoring I'm going to explain in this post. -------------- The purpose is to have the possibility to take a quick look at the most basic status information whenever I want to. For that, I wrote a small shell script named =autologs.sh=: #+BEGIN_SRC sh #!/bin/sh ## This script saves some basic infos about this host and commits them via git ## NOTE: if you add a new file, it has to be added to the Git repo manually. ## directory where the results are written to: LOGDIR="/home/USER/.vk/share/autologs" ## ----------------------------------------------------------------------- ## ## get list of current cron jobs crontab -l > "${LOGDIR}"/root-crontab.txt ## get list of installed Debian packages dpkg --get-selections > "${LOGDIR}"/dpkg--get-selections.txt ## get current log file of Debian packages in order to review updates cp /var/log/apt/history.log "${LOGDIR}"/var-log-apt-history.log ## how much space is left on the drives? df -h > "${LOGDIR}"/df-h.txt ## when were the most recent backups? ls -la /home/USER/.cache/deja-dup > "${LOGDIR}"/deja-dup_files.log ## what hardware is attached? lspci > "${LOGDIR}"/lspci.txt lsusb > "${LOGDIR}"/lsusb.txt hwinfo --short > "${LOGDIR}"/hwinfo--short.txt ## ----------------------------------------------------------------------- ## ## commit everything after being generated git -C "${LOGDIR}" add "${LOGDIR}" git -C "${LOGDIR}" commit -a -m "`date '+%Y-%m-%dT%H.%M.%S autocommit by autologs.sh'`" #end #+END_SRC Of course, "USER" is replaced with the account name. The folder =/home/USER/.vk/= is a hidden one which I shared via [[https://en.wikipedia.org/wiki/Syncthing][Syncthing]]. Syncthing doesn't need a public IP or a firewall rule in order to synchronize two folders between two hosts that are online at the same time. I configured Syncthing to [[https://docs.syncthing.net/users/autostart.html#linux][start as user service via systemd]] automatically. My own (receiving) host runs 24/7 and is therefore always available whenever the other notebook is running. The =autologs.sh= is invoked two minutes after each boot via [[https://en.wikipedia.org/wiki/Cron][cron]] as user =root= on the remote notebook: : @reboot sleep 2m ; /home/USER/.vk/share/autologs/autologs.sh It then produces the files mentioned in the script, they are synchronized via Syncthing to my personal host where I can take a look on some status information any time. I'm committing to a local Git repository because Git is extremely efficient in storing a history of linear text files that change slightly over time. It also provides decent tools to visualize differences between two given points in time. Using the described method obove, I do have an up-to-date status report on remote hosts without having direct access to the remote host. Nothing fancy, simple to set up, reliable in use and probably a small trick you haven't thought of yet.