Add -o option
Some checks reported errors
continuous-integration/drone/push Build encountered an error
Some checks reported errors
continuous-integration/drone/push Build encountered an error
This option control the output of the script. Possible output are human (same as usual), html and csv. This commit also does some minor syntax changes.
This commit is contained in:
parent
7cdea6920e
commit
e179979d23
49
kvmstats
49
kvmstats
|
@ -8,7 +8,7 @@ error () {
|
||||||
}
|
}
|
||||||
|
|
||||||
usage () {
|
usage () {
|
||||||
echo 'usage: kvmstats [-a] [-u k|m|g]' >&2
|
echo 'usage: kvmstats [-a] [-u k|m|g] [-o h|human|html|csv]' >&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,9 +18,29 @@ do
|
||||||
done
|
done
|
||||||
|
|
||||||
POW=$(echo 1024 ^ 3 | bc)
|
POW=$(echo 1024 ^ 3 | bc)
|
||||||
|
FMT=human
|
||||||
while [ $# -ne 0 ] && echo "$1" | grep -q '^-[[:alnum:]]'
|
while [ $# -ne 0 ] && echo "$1" | grep -q '^-[[:alnum:]]'
|
||||||
do
|
do
|
||||||
case $1 in
|
case $1 in
|
||||||
|
'-a')
|
||||||
|
SHOW_AVAIL=y
|
||||||
|
;;
|
||||||
|
'-o')
|
||||||
|
case $2 in
|
||||||
|
'h' | 'human')
|
||||||
|
FMT=human
|
||||||
|
;;
|
||||||
|
'html')
|
||||||
|
FMT=html
|
||||||
|
;;
|
||||||
|
'csv')
|
||||||
|
FMT=csv
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
usage
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
;;
|
||||||
'-u')
|
'-u')
|
||||||
case $2 in
|
case $2 in
|
||||||
'k')
|
'k')
|
||||||
|
@ -36,9 +56,6 @@ do
|
||||||
usage
|
usage
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
'-a')
|
|
||||||
SHOW_AVAIL=y
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
usage
|
usage
|
||||||
esac
|
esac
|
||||||
|
@ -50,7 +67,7 @@ do
|
||||||
echo "$VM"
|
echo "$VM"
|
||||||
virsh vcpucount --maximum --current "$VM"
|
virsh vcpucount --maximum --current "$VM"
|
||||||
# libvirt store memory in KiB, POW must be lowered by 1
|
# libvirt store memory in KiB, POW must be lowered by 1
|
||||||
virsh domstats --balloon "$VM" | awk 'BEGIN { FS="=" } /balloon.maximum/ { print $2 / '$((POW / 1024))'}'
|
virsh domstats --balloon "$VM" | awk -F= '/balloon.maximum/ { print $2 / '$((POW / 1024))'}'
|
||||||
for BLK in $(virsh domblklist "$VM" | sed '1,2d;/-$/d;/^$/d' | cut -d\ -f1)
|
for BLK in $(virsh domblklist "$VM" | sed '1,2d;/-$/d;/^$/d' | cut -d\ -f1)
|
||||||
do
|
do
|
||||||
virsh domblkinfo "$VM" "$BLK"
|
virsh domblkinfo "$VM" "$BLK"
|
||||||
|
@ -59,10 +76,18 @@ do
|
||||||
done | xargs -n5 | {
|
done | xargs -n5 | {
|
||||||
echo vm vcpu ram disk running
|
echo vm vcpu ram disk running
|
||||||
awk '{ print } /yes$/ { vcpu += $2; ram += $3; disk += $4; running++ } END { print "TOTAL(running)", vcpu, ram, disk, running }'
|
awk '{ print } /yes$/ { vcpu += $2; ram += $3; disk += $4; running++ } END { print "TOTAL(running)", vcpu, ram, disk, running }'
|
||||||
if [ "$SHOW_AVAIL" ]
|
test "$SHOW_AVAIL" && {
|
||||||
then
|
nproc
|
||||||
AV_CPU=$(nproc)
|
awk '/^MemTotal:/ { print int($2 / '$((POW / 1024))' ) }' /proc/meminfo
|
||||||
AV_MEM=$(awk '/^MemTotal:/ { print int($2 / '$((POW / 1024))' ) }' /proc/meminfo)
|
} | xargs printf 'AVAILABLE %s %s\n'
|
||||||
echo AVAILABLE "$AV_CPU" "$AV_MEM"
|
} | case $FMT in
|
||||||
fi
|
'human')
|
||||||
} | column -t
|
column -t
|
||||||
|
;;
|
||||||
|
'html')
|
||||||
|
awk 'BEGIN{print "<html><body><table>"}{printf "<tr>";for(i=1;i<=NF;i++)printf "<td>%s</td>", $i;print "</tr>"}END{print "</table></body></html>"}'
|
||||||
|
;;
|
||||||
|
'csv')
|
||||||
|
tr ' ' ','
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
20
kvmstats.html
Normal file
20
kvmstats.html
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<HTML><BODY><TABLE>
|
||||||
|
<TR><TD>vm vcpu ram disk running</TD></TR>
|
||||||
|
<TR><TD>icinga2-web</TD><TD>4</TD><TD>4</TD><TD>30</TD><TD>yes</TD></TR>
|
||||||
|
<TR><TD>icinga2-node</TD><TD>4</TD><TD>4</TD><TD>30</TD><TD>yes</TD></TR>
|
||||||
|
<TR><TD>bruno</TD><TD>4</TD><TD>2</TD><TD>12</TD><TD>yes</TD></TR>
|
||||||
|
<TR><TD>evoadmin-web_packweb</TD><TD>2</TD><TD>1</TD><TD>3</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>icinga-test</TD><TD>8</TD><TD>4</TD><TD>15</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>debian10</TD><TD>2</TD><TD>2</TD><TD>22</TD><TD>yes</TD></TR>
|
||||||
|
<TR><TD>ansible-test1</TD><TD>2</TD><TD>1</TD><TD>17</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>debian7</TD><TD>4</TD><TD>4</TD><TD>0</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>debian8</TD><TD>4</TD><TD>4</TD><TD>18</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>debian9</TD><TD>4</TD><TD>4</TD><TD>30</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>EvoBSD</TD><TD>2</TD><TD>1</TD><TD>42</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>EvoMaquette</TD><TD>4</TD><TD>8</TD><TD>15</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>for-build-rescue-cd</TD><TD>8</TD><TD>4</TD><TD>4</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>grafana</TD><TD>4</TD><TD>4</TD><TD>5</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>installbuster</TD><TD>1</TD><TD>1</TD><TD>20</TD><TD>no</TD></TR>
|
||||||
|
<TR><TD>TOTAL(running)</TD><TD>0</TD><TD>0</TD><TD>0</TD><TD>4</TD></TR>
|
||||||
|
<TR><TD>AVAILABLE</TD><TD>8</TD><TD>39</TD></TR>
|
||||||
|
</TABLE></BODY></HTML>
|
Loading…
Reference in a new issue