mirror of
https://github.com/dustinkirkland/byobu
synced 2025-08-19 13:09:52 -07:00
Add rcs_cost, a rackspace cloud server instance cost estimator
This commit is contained in:
commit
c7b960f483
5 changed files with 104 additions and 0 deletions
|
@ -42,6 +42,7 @@ mem_used=1
|
||||||
menu=1
|
menu=1
|
||||||
network=0
|
network=0
|
||||||
processes=0
|
processes=0
|
||||||
|
rcs_cost=0
|
||||||
reboot_required=1
|
reboot_required=1
|
||||||
release=1
|
release=1
|
||||||
services=1
|
services=1
|
||||||
|
|
|
@ -302,6 +302,7 @@ def readstatus():
|
||||||
status["menu"]=1
|
status["menu"]=1
|
||||||
status["network"]=0
|
status["network"]=0
|
||||||
status["processes"]=0
|
status["processes"]=0
|
||||||
|
status["rcs_cost"]=0
|
||||||
status["reboot_required"]=1
|
status["reboot_required"]=1
|
||||||
status["release"]=1
|
status["release"]=1
|
||||||
status["services"]=1
|
status["services"]=1
|
||||||
|
|
99
usr/lib/byobu/rcs_cost
Executable file
99
usr/lib/byobu/rcs_cost
Executable file
|
@ -0,0 +1,99 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# rcs_cost: approximate Rackspace Cloud Server cost (USD) of the current
|
||||||
|
# instance
|
||||||
|
#
|
||||||
|
# Copyright (C) 2009-2010 Jon Bernard
|
||||||
|
#
|
||||||
|
# Author: Jon Bernard <jbernard@debian.org>
|
||||||
|
#
|
||||||
|
# Derived from byobu's ec2_cost written by Dustin Kirkland, see
|
||||||
|
# Byobu's project page: https://launchpad.net/byobu for more information
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify it
|
||||||
|
# under the terms of the GNU General Public License as published by the
|
||||||
|
# Free Software Foundation, version 3 of the License.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful, but
|
||||||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
||||||
|
# Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License along
|
||||||
|
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
DETAIL=0
|
||||||
|
PKG="byobu"
|
||||||
|
color 2>/dev/null || color() { true; }
|
||||||
|
|
||||||
|
for arg in "$@"; do
|
||||||
|
case "$arg" in
|
||||||
|
-d|--detail)
|
||||||
|
DETAIL=1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Approximate Instance Cost Basis
|
||||||
|
# Memory US
|
||||||
|
# 256MB $0.015/h
|
||||||
|
# 512MB $0.030/h
|
||||||
|
# 1024MB $0.060/h
|
||||||
|
# 2048MB $0.120/h
|
||||||
|
# 4096MB $0.240/h
|
||||||
|
# 8192MB $0.480/h
|
||||||
|
# 15872MB $0.960/h
|
||||||
|
|
||||||
|
# Instance memory
|
||||||
|
memory=`grep "^MemTotal:" /proc/meminfo | awk '{print $2}'`
|
||||||
|
|
||||||
|
# Round memory down to the nearest multiple of 64MB
|
||||||
|
memory=$((${memory} - (${memory} % (64 * 1024))))
|
||||||
|
|
||||||
|
# Apply the going rate
|
||||||
|
INCREMENTS="256 512 1024 2048 4096 8192 16384 32768 65536"
|
||||||
|
for X in ${INCREMENTS}; do
|
||||||
|
test "$((${X} * 1024 + 65536))" -ge ${memory} && break
|
||||||
|
done
|
||||||
|
MEMORY_RATE=`echo "$X" | awk '{printf "%f", $1 / 256 * 15 / 1000}'`
|
||||||
|
|
||||||
|
# Data Transfer Cost Basis
|
||||||
|
# Incoming $0.08/GB
|
||||||
|
# Outgoing $0.22/GB
|
||||||
|
RX_RATE="0.08"
|
||||||
|
TX_RATE="0.22"
|
||||||
|
|
||||||
|
# Auto detect network interface
|
||||||
|
IF=`tail -n1 /proc/net/route | awk '{print $1}'`
|
||||||
|
|
||||||
|
ifconfig_out=`/sbin/ifconfig "$IF"`
|
||||||
|
|
||||||
|
# Calculate bandwidth cost
|
||||||
|
tx_gb=`echo "$ifconfig_out" | grep "TX bytes:" | sed "s/^.*TX bytes://" | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }'`
|
||||||
|
rx_gb=`echo "$ifconfig_out" | grep "RX bytes:" | sed "s/^.*RX bytes://" | awk '{ printf "%f", $1 / 1024 / 1024 / 1024 }'`
|
||||||
|
network_cost=`echo "$tx_gb" "$TX_RATE" "$rx_gb" "$RX_RATE" | awk '{printf "%f %f", $1*$2, $3*$4}' | awk '{printf "%f", $1 + $2}'`
|
||||||
|
|
||||||
|
# Calculate uptime cost
|
||||||
|
# BUG: This will only calculate uptime since boot!
|
||||||
|
# Some additional input will be required to account for reboots!!!
|
||||||
|
hours=`awk '{printf "%f", 1 + $1 / 60 / 60 }' /proc/uptime | sed 's/\..*$//' `
|
||||||
|
uptime_cost=`echo "$hours" | awk "{printf \"%f\", "$MEMORY_RATE" * $hours}"`
|
||||||
|
total_cost=`echo "$network_cost" "$uptime_cost" | awk '{printf "%.2f", $1 + $2}'`
|
||||||
|
|
||||||
|
if [ "$DETAIL" = "1" ]; then
|
||||||
|
echo "=========================================================="
|
||||||
|
echo "Estimated cost in Rackspace Cloud Server since last reboot"
|
||||||
|
echo "=========================================================="
|
||||||
|
echo " Network sent: $tx_gb GB @ \$$RX_RATE/GB"
|
||||||
|
echo " Network recv: $rx_gb GB @ \$$TX_RATE/GB"
|
||||||
|
echo " Network cost: \$$network_cost"
|
||||||
|
echo "----------------------------------------------------------"
|
||||||
|
echo " Uptime: $hours hr @ \$$MEMORY_RATE/hr"
|
||||||
|
echo " Uptime cost: \$$uptime_cost"
|
||||||
|
echo "----------------------------------------------------------"
|
||||||
|
echo "Total cost: ~\$$total_cost"
|
||||||
|
echo "=========================================================="
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "$(color K G)~\$$(color -)$(color b K G)%s$(color -) " $total_cost
|
|
@ -71,6 +71,7 @@ backtick 130 5 5 byobu-status custom
|
||||||
backtick 131 53 53 byobu-status services
|
backtick 131 53 53 byobu-status services
|
||||||
backtick 132 11 11 byobu-status time_utc
|
backtick 132 11 11 byobu-status time_utc
|
||||||
backtick 133 3 3 byobu-status disk_io
|
backtick 133 3 3 byobu-status disk_io
|
||||||
|
backtick 134 613 613 byobu-status rcs_cost
|
||||||
|
|
||||||
hardstatus alwayslastline
|
hardstatus alwayslastline
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,8 @@ byobu \- wrapper script for seeding a user's byobu configuration and launching s
|
||||||
|
|
||||||
\fBec2_cost\fP \- an estimation of the cost of the current boot of the system in terms of the Amazon EC2 billing model; displayed in the lower bar toward the right in green text on a black background; there is a leading '~' to indicate that this is an estimation, and the monetary units are US Dollars '$'
|
\fBec2_cost\fP \- an estimation of the cost of the current boot of the system in terms of the Amazon EC2 billing model; displayed in the lower bar toward the right in green text on a black background; there is a leading '~' to indicate that this is an estimation, and the monetary units are US Dollars '$'
|
||||||
|
|
||||||
|
\fBrcs_cost\fP \- an estimation of the cost of the current boot of the system in terms of the Rackspace Cloud Server billing model; displayed in the lower bar toward the right in green text on a black background; there is a leading '~' to indicate that this is an estimation, and the monetary units are US Dollars '$'
|
||||||
|
|
||||||
\fBfan_speed\fP \- cpu or system fan speed as reported by lm-sensors; displayed in the lower bar toward the right in black text on a grey background; there is a trailing 'rpm' for units
|
\fBfan_speed\fP \- cpu or system fan speed as reported by lm-sensors; displayed in the lower bar toward the right in black text on a grey background; there is a trailing 'rpm' for units
|
||||||
|
|
||||||
\fBhostname\fP \- the hostname of the system; displayed in the upper bar on the far right in bold black text on a grey background; there is a leading '@' symbol if the username status is also enabled
|
\fBhostname\fP \- the hostname of the system; displayed in the upper bar on the far right in bold black text on a grey background; there is a leading '@' symbol if the username status is also enabled
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue