### NOTE: Much of these values are not useful for us yet, as they need to be tracked over
### time to see any useful patterns. It's all parsed though, for ease of future use.
# See https://www.kernel.org/doc/Documentation/admin-guide/iostats.rst
my($major_number,
$minor_number,
$device_name,
$reads_completed_successfully,# Since boot
$reads_merged,# How often adjacent reads are merged before being passed to the IO driver
$sectors_read,# This is the total number of sectors read successfully.
$time_spent_reading,# This is the total number of milliseconds spent by all reads
$writes_completed,# Since boot
$writes_merged,# How often adjacent writes are merged before being passed to the IO driver
$sectors_written,# This is the total number of sectors written successfully
$time_spent_writing,# This is the total number of milliseconds spent by all writes
$ios_currently_in_progress,# Number of I/Os currently in progress. - This is what we care about the most
$time_spent_doing_ios,# This field increases so long as above is non-zero. counts jiffies when at least one request was started or completed. If request runs more than 2 jiffies then some I/O time might be not accounted in case of concurrent requests
$weighted_time_spent_doing_ios,# Weighted number of milliseconds spent doing I/Os. This field is incremented at each I/O start, I/O completion, I/O merge, or read of these stats by the number of I/Os in progress times the number of milliseconds spent doing I/O since the last update of this field. This can provide an easy measure of both I/O completion time and the backlog that may be accumulating.
$discards_completed_successfully,# This is the total number of discards completed successfully.
$discards_merged,# How often adjacent discards are merged before being passed to the IO driver
$sectors_discarded,# This is the total number of sectors discarded successfully
$time_spent_discarding,# This is the total number of milliseconds spent by all discards
$flush_requests_completed_successfully,# This is the total number of flush requests completed successfully.
$time_spent_flushing# This is the total number of milliseconds spent by all flush requests.
### TODO: all configured bonds and slaved interfaces should be 'activated' before this returns, even if their cable is out. Wait for this, with a default 300s timeout.
anvil-manage-daemons \- Tool used to monitor and manage Anvil! daemons.
.SHSYNOPSIS
.Banvil-manage-daemons
\fI\,<command> \/\fR[\fI\,options\/\fR]
.SHDESCRIPTION
When run with '\fB\-\-monitor\fR', it will run as a daemon, checking all other Anvil! daemons. If any are found to be 'failed', they will be stopped and restarted.
.TP
.SHOPTIONS
.TP
\-?, \-h, \fB\-\-help\fR
Show this man page.
.TP
\fB\-\-log\-secure\fR
When logging, record sensitive data, like passwords.
.TP
\-v, \-vv, \-vvv
Set the log level to 1, 2 or 3 respectively. Be aware that level 3 generates a significant amount of log data.
.SS"Commands:"
.TP
\fB\-\-enable\fR
All Anvil! daemons that are not enabled will be enabled.
.TP
\fB\-\-disable\fR
All Anvil! daemons that are not disabled will be disabled.
.TP
\fB\-\-log\-only\fR
if this is passed, it monitors the status of the daemons, but does not try to recover failed ones.
.TP
\fB\-\-monitor\fR
This is set to the job UUID when the request to boot is coming from a database job. When set, the referenced job will be updated and marked as complete / failed when the run completes.
.TP
\fB\-\-now\fR
This can be used with \fB\-\-enable\fR or \fB\-\-disable\fR to have the daemons started or stopped immediately.
.TP
\fB\-\-start\fR
This will start all daemons that are not already running.
.TP
\fB\-\-status\fR
Reports the state of all daemons.
.TP
\fB\-\-stop\fR
This will stop all daemons that are not already stopped.
.IP
.SHAUTHOR
Written by Madison Kelly, Alteeve staff and the Anvil! project contributors.
anvil-monitor-performance \- Tool used to log system performance to anvil.conf to assist with performance issue debugging.
.SHSYNOPSIS
.Banvil-monitor-performance
\fI\,<command> \/\fR[\fI\,options\/\fR]
.SHDESCRIPTION
This tool uses the Get->load_average() method to collect performance data and then records the parsed data to the Anvil! logs.
.TP
This is meant to be a light-weight tool run by the same-named systemd daemon. It does not connect to the database.
.TP
.SHOPTIONS
.TP
\-?, \-h, \fB\-\-help\fR
Show this man page.
.TP
\fB\-\-log\-secure\fR
When logging, record sensitive data, like passwords.
.TP
\-v, \-vv, \-vvv
Set the log level to 1, 2 or 3 respectively. Be aware that level 3 generates a significant amount of log data.
.SS"Commands:"
.TP
\fB\-\-detailed\fR
Log extended performance data. This shows extended and per-cpu-core and per block device metrics.
.TP
\fB\-\-interval\fR <seconds>
By default, the performance data is collected and logged every five seconds. If you want to change this frequency, you can use this switch to set the interval seconds you wish to use.
.TP
\fB\-\-print\fR
By default, this programs logs to /var/log/anvil.log. This switch also sends the logged data to STDOUT.
.TP
\fB\-\-run\-once\fR <uuid>
This tells the program to collect and report the performance data once, and then to exit.
.IP
.SHAUTHOR
Written by Madison Kelly, Alteeve staff and the Anvil! project contributors.
striker-get-screenshots \- Tool used to collect screenshots from Anvil! subnodes and DR hosts
.SHSYNOPSIS
.Bstriker-get-screenshots
\fI\,<command> \/\fR[\fI\,options\/\fR]
.SHDESCRIPTION
striker-get-screenshots \- This uses the libvirtd API to collect screenshots from servers running on Anvil! subnodes and DR hosts. These are used to display periodic views into servers on the Striker dashboard.
.TP
.SHOPTIONS
.TP
\-?, \-h, \fB\-\-help\fR
Show this man page.
.TP
\fB\-\-log-secure\fR
When logging, record sensitive data, like passwords.
.TP
\-v, \-vv, \-vvv
Set the log level to 1, 2 or 3 respectively. Be aware that level 3 generates a significant amount of log data.
.SS"Commands:"
.TP
\fB\-\-job\-uuid\fR
This is the jobs -> job_uuid to execute. Generally this is only used by other programs.
.IP
.SHAUTHOR
Written by Madison Kelly, Alteeve staff and the Anvil! project contributors.
@ -2714,7 +2715,19 @@ The file: [#!variable!file!#] needs to be updated. The difference is:
<keyname="log_0832">The host: [#!variable!host_name!#] was found not found in the '/etc/hosts' file! We'll wait a few seconds and check again.</key>
<keyname="log_0833">All host names were found in '/etc/hosts', ready to proceed!</key>
<keyname="log_0834">One or more hosts are not yet in the '/etc/hosts' file with expected IPs. We'll wait a short bit and check again.</key>
<keyname="log_0835">There are entries we need to add to the '/etc/hosts' file before we can form the cluster, updating it now.</key>
<keyname="log_0835">The CPU load average is; (one / five / ten minutes): [#!variable!one_minute!# / #!variable!five_minutes!# / #!variable!ten_minutes!#].</key>
<keyname="log_0837">Time spend (in secs) doing; IO wait: [#!variable!io_wait!#], user mode: [#!variable!user_mode!#], niced user mode: [#!variable!user_mode_nice!#], system mode: [#!variable!system_mode!#], idle tasks: [#!variable!idle_tasks!#], hard IRQ: [#!variable!hard_irq!#], soft IRQ: [#!variable!soft_irq!#].</key>
<keyname="log_0838">CPU Core: [#!variable!core!#], time doind (seconds); user mode: [#!variable!user_mode!#], niced user mode: [#!variable!user_mode_nice!#], system mode: [#!variable!system_mode!#], idle tasks: [#!variable!idle_tasks!#], hard IRQ: [#!variable!hard_irq!#], soft IRQ: [#!variable!soft_irq!#].</key>
<keyname="log_0839">Drive: [#!variable!device_name!#], IOs currently in progress: [#!variable!in_progress!#], weighted time spent: [#!variable!weighted_time_spent!# sec].</key>
<keyname="log_0840">CPU percent time doing; (IO wait / user / system / nice'd / idle / involuntary wait): [#!variable!iowait!# / #!variable!user!# / #!variable!system!# / #!variable!nice!# / #!variable!idle!#/ #!variable!steal!#].</key>
<keyname="name_0001">Normal Password</key><!-- none in mail-server -->
@ -4165,6 +4181,9 @@ We will try to proceed anyway.</key>
</key>
<keyname="warning_0168">Please specify a storage group to use to add the new drive to.</key>
<keyname="warning_0169">[ Warning ] - After reconfiguring the network, we've failed to connect to any database for two minutes. Rebooting in case this fixes the connection.</key>
<keyname="warning_0170">[ Warning ] - The attempt to boot: [#!variable!host_name!#] appears to have failed. The return code received was: [#!variable!return_code!#] (expected '0'). The output, if any, was: [#!variable!output!#].</key>
<keyname="warning_0171">[ Warning ] - The daemon: [#!variable!daemon!#] appears to have failed! Attempting to restart it now.</key>
<keyname="warning_0172">[ Warning ] - The line: [#!variable!line!#] that was going to be added to the hosts file is invalid, removing it.</key>