Skip to content

Commit

Permalink
Merge pull request #8 from supriyopaul/enhancement
Browse files Browse the repository at this point in the history
Type casting of all metrict data to type=float & test case for the same
  • Loading branch information
supriyopaul authored Mar 26, 2018
2 parents 71b5df1 + dd4085a commit b8f9767
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 38 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ deploy:
skip_cleanup: true
api_key:
secure: EAZzz4nCgY6+XM4Jfhchr9Z6pkQBFRbWUlWN81nMWyo7PqMfsrJ/PKY7m5nn2oVjiCc5bRpVnrncgZ9CCtQDNTaLowHgp7WJEwWzKl0JvX/aI2oucT5+Q7ETFPcYT1Pkgg+XFxU899HvFhDAI7aW43FKCKproCkIJoICZnYOviOocnYtkb1wpaSJQ+aOM9wq3JWbU83Tz5vhj/fQTJYYpiCiqbnpwdde3ki+V9YJYvZu4pNNj0/TZYNlfQTEF9Czdib3AlMWjSWGA6UxpegW1ZTLsTVbtU1xX+5k5QhunevGvvpFrZYFdrA8173Qb5ibU2yHKV1uaXA9jfPsjdAUjNMAgvpoJz+rXGZPfN8IGCHYHG86ar+CeRrW/PIRqFA9ABdQm3tJ7Xk4xj9+L7AKRn88rjVfMSBwv9rAPmLWhh77spwXAnjxC0f8n/W5wb4q1l7aAxFuK9alzC4N0rvuyNGCgUpCDsfHKP2kmi1GwjU11OZoEnFVFSO0zQv1auF11a1LdzN7vLIETW9xylxNafm+TndoKrzBl7HnxiIVRcnGh52nSlaWk5Cq8aFN8PkevpoFj9MQtD+fLs/9NkDqqwiYZ71sZ7USpE5UD5IWIA7B0ztMS+usa4CGI+QtFfpzWK//gd/Gt1j+XkFcshaY279EozZ/vop5FESSw+ibpi8=
name: serverstats-0.1.5
tag_name: 0.1.5
name: serverstats-0.1.6
tag_name: 0.1.6
on:
branch: master
repo: deep-compute/serverstats
Expand Down
File renamed without changes
File renamed without changes
77 changes: 43 additions & 34 deletions serverstats/serverstats.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@

def get_system_metrics():
'''
For keys in fields
>>> from serverstats import get_system_metrics
>>>
>>> fields = dict()
>>> dl = get_system_metrics()
>>> _fields = {'cpu': ['avg_load_5_min',
Expand All @@ -19,78 +20,86 @@ def get_system_metrics():
... 'disk': ['usage', 'total', 'free_percent', 'usage_percent', 'free'],
... 'ram': ['avail', 'usage_percent', 'avail_percent', 'usage', 'total', 'free'],
... 'swap': ['usage', 'total', 'free_percent', 'free', 'usage_percent']}
>>>
>>>
>>> for key, value in dl.iteritems():
... lst = list()
... if type(value) is dict and key != 'network_traffic':
... for t , c in value.iteritems():
... lst.append(t)
... fields[key] = lst
...
...
>>> _fields == fields
True
For type of every field
>>> from flatten_dict import flatten
>>> flat_dl = flatten(dl)
>>> for key in flat_dl:
... assert isinstance(flat_dl[key], float)
'''
load1, load5, load15 = psutil.os.getloadavg()
cpu_count = psutil.cpu_count()
load_avg_15_min = (load15 / float(cpu_count) * 100)
load_avg_5_min = (load5 / float(cpu_count) * 100)
load_avg_1_min = (load1 / float(cpu_count) * 100)
load_avg_15_min = (load15 / cpu_count * 100)
load_avg_5_min = (load5 / cpu_count * 100)
load_avg_1_min = (load1 / cpu_count * 100)

network_traffic_info = psutil.net_io_counters(pernic=True)
cpu_stats = psutil.cpu_times()
memory = psutil.virtual_memory()
swap_mem = psutil.swap_memory()
disk = psutil.disk_usage('/')

if swap_mem.total == 0:
swapmemory_free_percent = 0
if swap_mem.total == 0.0:
swapmemory_free_percent = 0.0
else:
swapmemory_free_percent = (swap_mem.free / float(swap_mem.total) * 100)
swapmemory_free_percent = (swap_mem.free / swap_mem.total * 100)

network_traffic = dict()
for interface in network_traffic_info:
network_traffic[interface] = {
'sent': network_traffic_info[interface].bytes_sent,
'received' : network_traffic_info[interface].bytes_recv
'sent': float(network_traffic_info[interface].bytes_sent),
'received' : float(network_traffic_info[interface].bytes_recv),
}

return dict(
#load_avg info
cpu=dict(
usage_percent=load_avg_15_min,
idle_percent=100.00 - load_avg_15_min,
iowait=cpu_stats.iowait,
avg_load_15_min=load15,
avg_load_5_min=load_avg_5_min,
avg_load_1_min=load_avg_1_min,
usage_percent=float(load_avg_15_min),
idle_percent=float(100.00 - load_avg_15_min),
iowait=float(cpu_stats.iowait),
avg_load_15_min=float(load15),
avg_load_5_min=float(load_avg_5_min),
avg_load_1_min=float(load_avg_1_min),
),

#ram info
ram=dict(
total=memory.total,
avail=memory.available,
usage=memory.used,
free=memory.free,
usage_percent=memory.percent,
avail_percent=(memory.available / float(memory.total) * 100)
total=float(memory.total),
avail=float(memory.available),
usage=float(memory.used),
free=float(memory.free),
usage_percent=float(memory.percent),
avail_percent=float((memory.available / memory.total * 100))
),

#swap memory info
swap=dict(
usage_percent=swap_mem.percent,
free_percent=swapmemory_free_percent,
total=swap_mem.total,
usage=swap_mem.used,
free=swap_mem.free,
usage_percent=float(swap_mem.percent),
free_percent=float(swapmemory_free_percent),
total=float(swap_mem.total),
usage=float(swap_mem.used),
free=float(swap_mem.free),
),

#disk info
disk=dict(
total=disk.total,
usage=disk.used,
free=disk.free,
usage_percent=disk.percent,
free_percent=(disk.free / float(disk.total) * 100),
total=float(disk.total),
usage=float(disk.used),
free=float(disk.free),
usage_percent=float(disk.percent),
free_percent=float((disk.free / disk.total * 100)),
),

#network traffic
Expand All @@ -114,7 +123,7 @@ def _log_system_metrics(self):
sleep(self.interval)

def define_args(self, parser):
parser.add_argument('-n', '--interval', type=int, default=5,
parser.add_argument('-n', '--interval', type=int, default=5,
help='Seconds to wait after collection of stats')

def run(self):
Expand Down
5 changes: 3 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

setup(
name="serverstats",
version="0.1.5",
version="0.1.6",
description="Collect important system metrics from a server and log them",
keywords="serverstats",
author="Deep Compute, LLC",
Expand All @@ -16,7 +16,8 @@
install_requires=[
"basescript==0.2.0",
"psutil==5.4.3",
"deeputil==0.1.2",
"deeputil==0.2.5",
"flatten-dict==0.0.2",
],
package_dir={'serverstats': 'serverstats'},
packages=find_packages('.'),
Expand Down

0 comments on commit b8f9767

Please sign in to comment.