Source code for marcodeployer.statusmonitor

# -*- encoding: utf-8 -*-
from __future__ import division
from __future__ import absolute_import
import subprocess
from time import strftime, localtime

[docs]def get_data(): """ Returns the status information from several system calls/Python modules as a dictionary The following keys are returned in the dictionary: - time - hostname - ip - uptime - kernel_name - top - memtotal - memfree - membuffered - memcached - swaptotal - swapfree - temperature - top_list - cpus (itself a list) """ response_dict = {} response_dict["time"] = strftime("%a, %d %b %Y %H:%M:%S", localtime()) response_dict["hostname"] = subprocess.Popen("hostname", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["ip"] = subprocess.Popen("/sbin/ifconfig eth0| grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') if len(response_dict["ip"]) == 0: response_dict["ip"] = subprocess.Popen(" /sbin/ifconfig eth0 | grep 'inet\ ' | cut -d: -f2 | awk '{ print $2 }'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["kernel_name"] = subprocess.Popen("uname -r", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["memtotal"] = subprocess.Popen("egrep --color 'MemTotal' /proc/meminfo | egrep '[0-9.]{4,}' -o", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["memfree"] = subprocess.Popen("egrep --color 'MemFree' /proc/meminfo | egrep '[0-9.]{4,}' -o", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["membuffered"] = subprocess.Popen("egrep --color 'Buffers' /proc/meminfo | egrep '[0-9.]{4,}' -o", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["memcached"] = subprocess.Popen("egrep --color 'Cached' /proc/meminfo | egrep '[0-9.]{4,}' -o", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["swaptotal"] = subprocess.Popen("egrep --color 'SwapTotal' /proc/meminfo | egrep '[0-9.]{4,}' -o", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["swapfree"] = subprocess.Popen("egrep --color 'SwapFree' /proc/meminfo | egrep '[0-9.]{4,}' -o", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["temperature"] = float(subprocess.Popen("cat /sys/class/thermal/thermal_zone0/temp", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8')) / 1000.0 response_dict["top"] = subprocess.Popen("top -d 0.5 -b -n2 | grep 'Cpu(s)'|tail -n 1 | awk '{print $2 + $4}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') # response_dict["top"] = subprocess.Popen("top -d 0.5 -b -n2 | tail -n 10 | awk '{print $12}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') # response_dict["uptime"] = subprocess.Popen("uptime | tail -n 1 | awk '{print $1}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["uptime"] = subprocess.Popen("uptime | tail -n 1 | awk '{print $3 $4 $5}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["top_list"] = subprocess.Popen("ps aux --width 30 --sort -rss --no-headers | head | awk 'BEGIN { OFS = \"-\" } ; {print $3,$4,$11}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["load_average"] = subprocess.Popen("uptime | awk 'BEGIN { OFS = \"-\" } ; { print $3,$8,$9,$10 }'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["rx"] = subprocess.Popen("ifconfig eth0 | grep \"RX bytes\" | awk '{ print $2 }' | cut -d\":\" -f2", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') response_dict["tx"] = subprocess.Popen("ifconfig eth0 | grep \"TX bytes\" | awk '{ print $6 }' | cut -d\":\" -f2", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8') #cpus = subprocess.Popen("mpstat -P ALL | grep -A 5 "+'"%idle"'+ "| tail -n +3 | awk -F"+' " "'+" '{print $ 12 }'",shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8').split('\n') cpus = subprocess.Popen("top -d 0.4 -b -n2 | grep \"Cpu\" | tail -n 4 | awk '{print $2 + $4}'", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8').split('\n') try: cpus.remove("") except ValueError: pass #subprocess.Popen("top -b -n1 | grep Cpu | sed -r 's@.+:\s([0-9\.]+).+@\1@' | awk '{ print $4 }' | grep \"[0-9]\"|cut -f 1 -d '['", shell=True, stdout=subprocess.PIPE).stdout.read().decode('utf-8').split('\n') cpus_float = [float(c.replace(',','.')) for c in cpus] response_dict["cpus"] = cpus_float return response_dict