django-orchestra/orchestra/contrib/vps/backends.py

33 lines
1.2 KiB
Python

from orchestra.contrib.resources import ServiceMonitor
class OpenVZTraffic(ServiceMonitor):
model = 'vps.VPS'
resource = ServiceMonitor.TRAFFIC
def process(self, line):
""" diff with last stored value """
object_id, value = line.split()
last = self.get_last_data(object_id)
if not last or last.value > value:
return object_id, value
return object_id, value-last.value
def monitor(self, container):
""" Get OpenVZ container traffic on a Proxmox +2.0 cluster """
context = self.get_context(container)
self.append(
"CONF=$(grep -r 'HOSTNAME=\"%(hostname)s\"' /etc/pve/nodes/*/openvz/*.conf)" % context)
self.append('NODE=$(echo "${CONF}" | cut -d"/" -f5)')
self.append('CTID=$(echo "${CONF}" | cut -d"/" -f7 | cur -d"\." -f1)')
self.append(
"ssh root@${NODE} vzctl exec ${CTID} cat /proc/net/dev \\\n"
" | grep venet0 \\\n"
" | awk -F: '{print $2}' \\\n"
" | awk '{print $1+$9}'")
def get_context(self, container):
return {
'hostname': container.hostname,
}