RUMIA - Remote Unit MonItoring Application
This is a little but extensible, handy cross-platform BASH script that may be
used, at the moment, to monitor several stuff (availability, uptime, disk
consistency, CPU/HDD temperatures, battery charge level) on several remote
computers using only the text console (either computer screen or ssh session),
without a requirement of any compiler or build system (and also without ability
of doing this through SNMP, IPMI or HTTP/HTTPS, but you should rethink your life
if you are up to do it with plain bash + coreutils and virtually nothing
more).
Additionally, it contains another script that can execute arbitrary command on the chosen remote computers.
- bash
- coreutils
- ssh
- an ANSI-compatible UTF-8 console (e.g. putty/xterm)
- anything you specify in
requirefile for certain computer(s)
You should prepare a config file (see rumia.conf.example as an example)
as following:
-
PREFIXshould be a path where RUMIA is installed. It should contain language files, and, in typical installation,computers.dandtemplates.ddirs. -
COMPUTERS_Dshould be a path tocomputers.ddirectory. May be relative toPREFIXif BASH variable substitution is used. -
LOGFILEshould be a path to log file which will be appended with a complete temperature information assembled during each shot. May be relative toPREFIXif BASH variable substitution is used. Log file consists of lines that have the current time of a shot, followed by several tab-separated records in format likehostname:N=T, wherehostnameis a hostname of a machine,Nis a number of the temperature sensor, andTis a temperature that has been read from this sensor. Log file remains closed all time except the exact moments when information is appended to it, so you may freely delete or move it even when RUMIA is running: no stalled file handles will be left there. -
RUMIA_LANGshould be set according to a desired language. Currently available languages areen_USandru_RU. The correspondinglanguage.$RUMIA_LANGfile must exist in$PREFIX. -
NAME_LENGTHshould be a length of computer's name column. If not defined, not numerical, or less than 8, defaults to 8. -
MARKERshould be a name of a marker file that makes a computer visible to RUMIA. Usually this istemp_enabled. For further information, see below for a meaning oftemp_enabledfile. -
SMARKERshould be a name of a marker file that makes a computer visible toexecute_cmd. Usually this isssh_enabled. For further information, see below for a meaning ofssh_enabledfile. -
DELAYshould be set to a seconds between end of one shot and begin of the following (Note: it's not the time between start of each shot, so actual period time is equal to time consumed by one shot and this delay). -
SSH_OPTSshould be a bunch of additional options passed to each call tosshcommand. Used primarily for setting timeouts.
All variables are set using generic BASH syntax, e.g. no spaces should be between variable name, "=" sign, and variable value; values containing spaces must be enclosed in double or single quotes; BASH variable substitutions are allowed, etc.
In the example of rumia.conf, any of these variables may be redefined while
starting rumia. For example, if RUMIA is configured to use Russian language,
but you want to launch it in one shot mode with English output, you may run:
RUMIA_LANG=en_US ./rumia --oneshotUnless --config specified in command line, RUMIA reads the following files
as its config files (if any of them exist):
/etc/rumia.conf: system-wide RUMIA config file~/.config/rumia.conf: user-specific RUMIA config file~/.rumiarc: user-specific additions to RUMIA config file./rumia.conf: directory-specific RUMIA config file
Each next file take precedence over the previous ones (overriding the definitions made in it).
For each monitored computer, a specific subdirectory should be made inside
computers.d directory (there are various examples of it inside
computers.d.example subdirectory of RUMIA). Directory should have a name
that consists of 2-digit order mark, then a hyphen, and then a hostname
of a machine to which this directory is related (like 12-example). This
directory may contain the following files or symbolic links:
-
Marker files. These files are generally zero-sized and made by
touchcommand, and removed byrm(obviously).-
temp_enabled: Let RUMIA poll this computer at all. Every computer that does not have this marker is skipped while gathering information. The name of this marker file might be redefined by aMARKERvariable in the config file or in the command line; thus you may have the singlecomputers.ddirectory for different polling strategies. E.g. you may have a generic marker,temp_enabled, andhigh_attentionfor several computers that need high attention, and so, high polling rate. Then you just may have two sessions (e.g.tty1andtty2), and runDELAY=600 /opt/rumia/rumiaintty1, andMARKER=high_attention DELAY=60 /opt/rumia/rumiaintty2, and then, intty1you'll have all your computers that havetemp_enabledin their directories, and intty2you'll have a subset of them, of those who havehigh_attentionmarker file in their directories, and the latter will be polled ten times more often. Of course, it might be not a subset, but a completely different set that may or may not have a non-empty intersection with the first one. -
ssh_enabled: The same forexecute_cmd. Every computer that does not have this marker is skipped whenssh_enabled is called. As well as withtemp_enabled, the name of this marker file might be redefined by aSMARKERvariable in the config file or in the command line; thus you may have the singlecomputers.ddirectory for different SSH commands. E.g. you may have a generic marker,ssh_enabled, andssh_full_enabledfor several computers that have more advanced set of binaries available. Then you just may call/opt/rumia/execute_cmdfor generic SSH commands, andSMARKER=ssh_full_enabled /opt/rumia/execute_cmdfor more advanced commands to execute on computers that support them. -
absent: Let RUMIA know that this computer is intentionally absent. If it can't be reached byping_cmd, it produces "Sleep" message in the table instead of "Dead", so it could be considered not a failure that needs attention. -
other
*_enabledfiles: useful when runningexecute_cmdorrumiawith non-default marker files by usingMARKERandSMARKERvariables.
-
-
Data files. These files are generally symlinks to data files inside
templates.dsubdirectory, except when a file is supposed to be unique (e.g. SSH private key or computer's fancy name).-
key: private SSH key to use while connecting to computer. To successfully connect to computer, you must have public key of specified user in his/herauthorized_keysfile, and host fingerprint inknown_hostson the host where you run RUMIA. For latter one, you could just connect once from host where you run RUMIA, to the desired computer, and accept the certificate. -
fancyname: a fancy name for a computer that may be used instead of its hostname in the table (unless--nofancynamesis specified, or this file doesn't exist). For example, it may be a short form of hostname (e.g. "div193-host195.organization.com" could have a fancy name of "Host 195"); or it could be a beautifized name using symbols that are not allowed in a typical hostname (e.g. host "twilight-sparkle" may have fancy name of "Твайлайт" in Russian language). If fancy name or hostname (when fancy name is not used) is longer than 8 characters, it will be truncated. -
temp_nodes: Number of temperatures that are readable from a computer. If missing, no temperature or battery level check is performed. Usually it is a symlink to../../templates.d/nodes.*file which contains the desired number. -
temp_alert: Alerting temperature value. Temperatures lower that that are shown in gray, higher (but below critical) are shown in yellow. Has no effect iftemp_enabledortemp_nodesis missing. Usually it is a symlink to../../templates.d/temp_alert.*file which contains the desired temperature. -
temp_crit: As above, but a critical temperature value. Temperatures higher that that are shown in red. Has no effect iftemp_enabledortemp_nodesis missing. Usually it is a symlink to../../templates.d/temp_crit.*file which contains the desired temperature. -
require: A list of binaries (one for a line) which is to be checked for existence on the host where RUMIA is running when a certain computer is polled. Each of them is examined usingwhichcommand, and if at least one of them isn't found, then polling of this computer is skipped, and the corresponding message is displayed in the table. -
ssh_user: User name for SSH session. Has an effect only ifssh_cmdis a symlink tossh_cmd.sshpass. -
ssh_password: User password for SSH session. Has an effect only ifssh_cmdis a symlink tossh_cmd.sshpass. -
vpngw_host: A host to whichsshmust connect to achieve access to the specified computer. Has an effect only ifssh_cmdis a symlink tossh_cmd.gateway,ssh_cmd.recursive, orssh_cmd.gateway+recursivescript, and/orping_cmdis a symlink toping_cmd.recursive, orping_cmd.gateway+recursive. -
vpngw_port: A port to whichsshmust connect to achieve access to the specified computer. Has an effect only ifssh_cmdis a symlink tossh_cmd.gatewayorssh_cmd.gateway+recursivescript, and/orping_cmdis a symlink toping_cmd.gateway+recursive. -
vpngw_user: An username using whichsshmust connect to achieve access to the specified computer. Has an effect only ifssh_cmdis a symlink tossh_cmd.gatewayorssh_cmd.gateway+recursivescript, and/orping_cmdis a symlink toping_cmd.gateway+recursive. -
vpngw_keydir: A directory on gateway where public keys for subordinate computers are located. Should be full path, but should not contain trailing slash. Has an effect only ifssh_cmdis a symlink tossh_cmd.gateway+recursivescript.
-
-
Command files. These files are generally symlinks to the files inside
templates.dsubdirectory which are bash scripts (they should have appropriate permissions) that perform some command on a remote computer. each of them could use the following three exported environment variables:$MACHINE(a name of computer, as it is specified in the name of corresponding directory insidecomputers.d),$SCRIPTPATH(which is the actual path to subdirectory related to this computer undercomputers.d), and$SSH_OPTS(which is the additional options passed to SSH command, if used). If you have a specific requirement, you may put your own script(s) intemplates.d, and link these files to it.-
ssh_cmd: Prints a string to execute SSH command on remote computer. Should never fail on properly configured RUMIA. Could be symlinked to:-
../../templates.d/ssh_cmd.local: a simple SSH to remote computer as useruser(if not exist, defaults toroot), usingkeyas a private key. -
../../templates.d/ssh_cmd.gateway: SSH to remote computer using a specific host, port and user, that are specified invpngw_host,vpngw_port, andvpngw_user(if not exist, defaults toroot), correspondingly.keyis stll a private key. -
../../templates.d/ssh_cmd.recursive: SSH through other SSH tunnel. First we connect tovpngw_hostusingkey(if exists) as uservpngw_user(if not exist, defaults toroot), and then, after we connected, we proceed to connect to specified hostname as useruser(if not exist, defaults toroot), using$MACHINE.pkkey, which is located onvpngw_hostin directoryvpngw_keydir(if not exist, defaults to/root/keys). -
../../templates.d/ssh_cmd.gateway+recursive: a combination of above two methods. First we connect tovpngw_hostportvpngw_portas uservpngw_user(if not exist, defaults toroot), usingkey, and then, after we connected, we proceed to connect to specified hostname as useruser(if not exist, defaults toroot), using$MACHINE.pkkey, which is located onvpngw_hostin directoryvpngw_keydir(if not exist, defaults to/root/keys). -
../../templates.d/ssh_cmd.sshpass: a simple SSH to remote computer asssh_user(if not exist, defaults toroot) usingssh_passwordas SSH password. Obvioulsy it is absolutely insecure, avoid using this method by any measures. Note:requireshould contain "sshpass" for this, andsshpassutility should be installed on the computer where RUMIA is running.
-
-
ping_cmd: Check an availability of remote computer. If machine is unavailable, then no further polling is performed. Should print nothing, and return 0 on success and non-null on failure. Could be symlinked to:-
../../templates.d/ping_cmd.generic: a generic ping of remote computer. -
../../templates.d/ping_cmd.by_ssh: "pinging" a machine by opening an SSH session to it (usingssh_cmd's output) and checking ifsudocall intosudo_user(if not exist, defaults toroot) is successful. Useful if you connect to it through a gateway (usingssh_cmd.gatewayscript). -
../../templates.d/ping_cmd.recursive: a ping through SSH tunnel. First we connect tovpngw_hostusingkeyas uservpngw_user(if not exist, defaults toroot), and then, after we connected, we just ping specified hostname. Useful if you connect to it recursively (usingssh_cmd.recursivescript). -
../../templates.d/ping_cmd.gateway+recursive: a ping through SSH tunnel via gateway. First we connect tovpngw_hostportvpngw_portusingkeyas uservpngw_user(if not exist, defaults toroot), and then, after we connected, we just ping specified hostname. Useful if you connect to it recursively through gateway (usingssh_cmd.gateway+recursivescript).
-
-
uptime_cmd: Print an uptime of remote computer. Return value does not matter. Could be symlinked to:-
../../templates.d/uptime_cmd.generic: calling GNUuptimecommand through an SSH session to remote computer (usingssh_cmd's output). Also checks the correctness of remote clock; output of the command is colorized according to it: light gray if OK, yellow if clock skew is undetermined, red if it is more than 10 seconds. -
../../templates.d/uptime_cmd.windows: calling Windowsuptime.execommand through an SSH session to remote computer (usingssh_cmd's output). You may download the correspondinguptime.exebinary here. It is not the one made by Microsoft, since Microsoft's one doesn't work if being run by unprivileged user. Does not check the correctness of remote clock, output is uncolorized. -
../../templates.d/uptime_cmd.procfs: using data from/proc/uptimefile obtained through an SSH session to remote computer (usingssh_cmd's output). Useful if you have BASH with enabled procfs on Windows, but don't have any suitableuptime.exe. Also checks the correctness of remote clock; output of the command is colorized according to it: light gray if OK, yellow if clock skew is undetermined, red if it is more than 10 seconds.
-
-
cpuget_cmd: Print a CPU utilization of remote computer. Return value does not matter. Should print exactly 6 characters, of which leading and trailing ones are spaces, and should not produce a newline after that (so actual output should look like what commandsecho -n " 95 % ",echo -n " 2 % ", orecho -n " 100% "produce. Could be symlinked to:-
../../templates.d/cpuget_cmd.mpstat: callingmpstatcommand through an SSH session to remote computer (usingssh_cmd's output). Output will be colorized: 0..9% is light gray, 10..79% is cyan, 80..100% is bright white. -
../../templates.d/cpuget_cmd.csvlog: analyzing files specified inlogfilethrough an SSH session to remote computer (usingssh_cmd's output).logfilemay contain wildcards, like/c/PerfLogs/cpulog_*.csv, but may not contain spaces. Useful if you have Windows and uselogmanto dump CPU load to specified files in format like"09/22/2023 23:35:39.309","69.829614488284107665". Output will be colorized: 0..9% is light gray, 10..79% is cyan, 80..100% is bright white.
-
-
tempget_cmd: Print a temperature of remote computer's sensor number$1, starting from 0, or print "99.9" on error. Should print exactly 4 characters (but may produce a newline). Return value does not matter. Maximum 7 temperature sensors are now supported, and 6 if the last position is occupied by battery sensor. Actual number of sensors are specified intemp_nodesfile inside computer's subdirectory incomputers.d. Could be symlinked to:-
../../templates.d/tempget_cmd.generic: Callget_temperatureby SSH (usingssh_cmd's output) passing the first parameter to it. -
../../templates.d/tempget_cmd.hdd: Query/dev/sda(if first parameter is 0) or/dev/sdb(if first parameter is 1) for its temperature usingsmartctl. Note:smartctlutility should be installed on the remote computer. -
../../templates.d/tempget_cmd.csvlog: Analyze a file specified intemplogfilethrough an SSH session to remote computer (usingssh_cmd's output).templogfilemay not contain wildcards and spaces, and should look like/c/PerfLogs/GPU-Z_Sensor_Log.txt. First parameter is the index of temperature column in that file. Useful if you have Windows and use GPU-Z to dump GPU/CPU temperatures to a file in CSV-like (but with indents and without quotes) format like2023-09-22 23:36:08 , 54.0 , 80.3 ,. -
../../templates.d/tempget_cmd.difflog: Analyze two files specified incputempfileandgputempfilecorrespondingly, through an SSH session to remote computer (usingssh_cmd's output).*tempfilemay contain wildcards (in that case the first file found not older than 10 min by modification time is analyzed); if it contains spaces,(or), these characters must be escaped. E.g, it may look like/c/Program\ Files\ \(x86\)/SpeedFan/SFLog*.csv. If first parameter is 0,cputempfileis analyzed, and format is treated as SpeedFan log format: number of seconds since midnight, and then temperature in format like12.3or45,6. If first parameter is 1,gputempfileis analyzed, and its format treated as withtempget_cmd.csvlog, with the index of temperature column being 0. Useful if you have Windows and use SpeedFan to dump CPU temperature, and GPU-Z to dump GPU temperature to these two files.
-
-
gethdd_cmd: Check a consistency of remote computer's disk. Should return 0 on success and non-null on failure. On success, should print either nothing,OK, or percentage of used space on disk (without the percent sign). In the latter case, rumia will display it and colorize the output: 0..70% is light gray, 71..90% is yellow, 91..100% is bright red.
Could be symlinked to:
* `../../templates.d/gethdd_cmd.sda`: Check remote computer's `/dev/sda` by SSH (using `ssh_cmd`'s output and calling `get_hdd_state`). Deprecated, not recommended to use. Doesn't show used space. * `../../templates.d/gethdd_cmd.nvme`: Do the same, but for `/dev/nvme0n1`. Deprecated, not recommended to use. Doesn't show used space. * `../../templates.d/gethdd_cmd.rootfs`: Do the same, but for a device containing partition that is mounted as the rootfs. This is the only script that checks consistency of disk *and* shows used space. If `watchfs` file does not exist, it shows user space on rootfs; otherwise it checks all filesystems from there and displays the one with most used percentage. Empty `watchfs` is considered an error, it is displayed as 100% being used. * `../../templates.d/gethdd_cmd.mingw`: Don't check remote computer's disk, just show used space on it. You could use this script with Windows remote machines that have ssh access to them enabled and mingw-like bash is running there. Doesn't require `get_hdd_state` to be uploaded to remote machine. The `watchfs` file is used the same way as with `gethdd_cmd.rootfs` (note that typical mingw filesystem names usually are `/c`, `/d`, etc. for drives like `C:`, `D:`, etc.)-
battery_cmd: Print a battery level of remote computer. Return value does not matter. Should print exactly 6 characters, of which leading and trailing ones are spaces, and should not produce a newline after that (so actual output should look like what commandsecho -n " 95 % ",echo -n " 2 % ", orecho -n " 100% "produce. Could be symlinked to:-
../../templates.d/battery_cmd.uncolored: Print remote computer's battery level, connecting to it by SSH (usingssh_cmd's output) and callingget_battery. -
../../templates.d/battery_cmd.colored: Do the same, but colorize output: 0..20% is bright red, 21..50% is yellow, 51..100% is cyan.
-
-
Note: if you wish to place a separator between two lines, name a directory
using empty hostname. E.g., 31- will place a separator after 30-...,
but before 32-.... The contents of directory, which is used as a separator
mark, is ignored by rumia, except for chosen marker file (see temp_enabled
above), and totally ignored by execute_cmd. For example, to appear in generic
run of rumia, such separator's directory should contain temp_enabled
marker.
For RUMIA to be able to monitor computer's availability, this computer
should be able to reply to ping (if you're using ping_cmd.generic or
ping_cmd.recursive), or let SSH clients be connected to it (if you're using
ping_cmd.by_ssh.
Other things require execution of some commands in a SSH session.
For RUMIA to be able to monitor uptime of remote computer, it should have
uptime command (most POSIX-compliant OS do).
For RUMIA to be able to monitor CPU load of remote computer, it should have
mpstat command (in most Debian and Red Hat based OS it is contained within
the sysstat package).
For RUMIA to be able to check HDD state, and unless you're using
gethdd_cmd.mingw for it, you should copy remote_scripts/get_hdd_state
to the remote computer as get_hdd_state into any directory from $PATH.
Note: if you modified ssh_cmd so you log in as user other than root,
you might need to add that user to sudoers file. Also, if you're using
gethdd_cmd.rootfs command file, be sure that stat and bc commands
are available on remote computer.
For RUMIA to be able to check battery value, you should copy one of the
remote_scripts/get_battery_* scripts to the remote computer as get_battery
into any directory from $PATH. Note: if you modified ssh_cmd so you
log in as user other than root, you might need to add that user to sudoers
file. If none of these scripts are useful for you, you may write your own based
on supplied scripts as examples. It should read the battery value of your
system and print it as a decimal value from 0 to 100, or print 0 on error.
Output should not contain leading and trailing spaces, but may contain
a trailing newline.
For RUMIA to be able to check CPU temperatures, you should copy one of the
remote_scripts/get_temperature_* scripts to the remote computer as
get_temperature into any directory from $PATH. In most cases, best
choice is get_temperature_configurable, edited according to structure of
hwmon sysfs facility (note the comments inside this file). Note: if you
modified ssh_cmd so you log in as user other than root, you might need to
add that user to sudoers file. If none of these scripts are useful for you,
you may write your own based on supplied scripts as examples. It should read
the value of temperature sensor with number specified in $1 (starting from 0)
and print it as a fixed point value from 0.0 to 99.9, or print 99.9
on error. Output should not contain leading and trailing spaces, but may
contain a trailing newline.
To run monitoring system, just run rumia.
You can specify the following parameters:
-
--nofancynames: Don't use fancy names for computers, use actual hostnames (as in directory names insidecomputers.d) instead. -
--oneshot: Perform only one shot and immediately exit. Don't write anything into a log file. -
--noclear: Don't clear console screen on start, or when USR1 or USR2 is signaled; don't reposition cursor to the top of the screen on each new shot. Print new shot data just after the previous. -
--config <configfile>: Use predefined config file instead of default. Note: no other config files is read if this parameter is specified. The only parameter in command line that has a meaning, is the last one. -
--help: Show usage and exit. -
--version: Show version and exit.
Additionally, you may specify MACHINES environment variable to run RUMIA on
a subset of computers defined in computers.d which have temp_enabled
marker. For example, if you have 01-compA, 02-compB, 03-compC, and
04-compD subdirectories there, and first three have temp_enabled inside
them, then by default RUMIA would poll compA, compB and compC. But you may want
to run RUMIA like:
MACHINES="compA compC" ./rumia --oneshotThen it will poll just compA and compB, and nothing else. Specifying
MACHINES="compA compD", by the way, won't let compD to be polled; it is
implied that if a computer doesn't have its own temp_enabled, then RUMIA
has no knowledge of how to gather information from it.
It is useful to run rumia on some machine inside a tmux or screen
session, and if you're about to check computers' status, you might connect
to it, attach to session and check whatever you need, then detach and
disconnect, but tmux or screen session then continues to run.
Once started, RUMIA clears screen (if not told not to do so) and starts
checking each computer for which directory is exist inside computers.d.
Order of polling is determined by names of such directories. For example,
10-computerX will be checked before 20-computerY, and if you create
15-computerZ directory, it will be checked in between.
Information gathered is printed on the screen in a fancy table. This phase (until the last computer is checked) is called a shot.
After all information is gathered, RUMIA enters pause state, which lasts
for a certain time specified in rumia.conf.
Any change of contents of computers.d is applied immediately, and will be
used during the very next shot (more precise, to the moment when this computer
is to be polled during the shot). Changes in rumia.conf are applied, though,
once rumia is restarted.
You may send SIGINT to rumia process (or just press Ctrl+C, if it's in
foreground) to stop performing its operation and exit.
If you ran it not in one shot mode, you may also send SIGUSR1 to it while
it's in pause state, and RUMIA will prematurely end the pause state, clear
the screen again, and immediately start next shot. The corresponding hint is
displayed in top of the screen (if not in one shot mode).
You may also send SIGUSR2, and this will result in the same, but with
clearing most of config file variables, like PREFIX, COMPUTERS_D,
LOGFILE, RUMIA_LANG, MARKER, DELAY, and SSH_OPTS, and re-reading
them from config file. It also means that if you're specified some of these
variables in command line or environment, e.g. running rumia like
DELAY=60 rumia, thus overriding values specified in config file, these
overrides will be cancelled.
Note: if USR1 and USR2 are not signaled, RUMIA won't clear screen once
pause state is finished. Next shot will redraw each line separately, so even
when RUMIA performs a shot, you still have all information still available
on the screen, except the one for a computer currently being polled.
To execute a command you may want to run on several machines that are in your
computers.d, there is a execute_cmd script available. Generally, you may
run it just in the form like:
./execute_cmd commandHere, command is a command that will be executed on every computer defined
inside the computers.d directory that has specific marker file (it is named
ssh_enabled by default).
You can specify the following RUMIA parameters (before the actual command you wish to execute):
--config <configfile>;--help;--version.
They have the exact same meaning as for RUMIA itself.
Additionally, you may stop parsing parameters by specifying -- after all
execute_cmd parameters. So, execute_cmd --help will print help, but
execute_cmd -- --help will try to run --help binary instead (but it is
still useless in some cases, because bash and some other shells do not
recognize --help as binary name). And execute_cmd -- -- will try to run
-- binary in the same manner, by the way. Parameter parsing is stopped
on the first unrecognized command line token, so execute_cmd bash --help
will execute bash --help, and won't treat --help as execute_cmd
parameter.
Additionally, you may specify MACHINES environment variable to run
execute_cmd for specific machines only, same as for RUMIA.
Note: the command will be executed only on machines that have ssh_enabled
marker file in their computers.d subdirectories; other machines will be
skipped. You may redefine the name of this file by specifying it in SMARKER
variable, like this:
SMARKER=autofs_enabled ./execute_cmd ls /autofs/mountsThis command will list contents of /autofs/mounts only on those computers
that have autofs_enabled marker file in their computers.d subdirectories.
Actually, Rumia is a youkai girl from Touhou Project series, and she is known for some of her gastronomic addictions and appetite; just like Rumia from Touhou consumes her victims, RUMIA consumes (and aggregates) information from computers configured.
Now live with this information. :-)
