Stuff
This commit is contained in:
commit
13273356dc
|
@ -0,0 +1,2 @@
|
|||
*.pyc
|
||||
*__pycache__
|
|
@ -0,0 +1,8 @@
|
|||
import socket
|
||||
class Cli:
|
||||
def __init__(self):
|
||||
self.servername = socket.gethostname()
|
||||
def gauge(self, name, value):
|
||||
print("g|server."+self.servername+"."+name+" "+str(value))
|
||||
def incr(self, name, value):
|
||||
print("i|server."+self.servername+"."+name+" "+str(value))
|
|
@ -0,0 +1,14 @@
|
|||
import psutil
|
||||
class CPU:
|
||||
interval = 10;
|
||||
loopCount = 0
|
||||
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
|
||||
def run(self):
|
||||
cpus = psutil.cpu_percent(interval=1, percpu=True)
|
||||
i = 0
|
||||
for cpu in cpus:
|
||||
i = i + 1
|
||||
self.exporter.gauge("cpu."+str(i), cpu)
|
|
@ -0,0 +1,17 @@
|
|||
import os
|
||||
import psutil
|
||||
class HDD:
|
||||
interval = 10;
|
||||
loopCount = 0
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
|
||||
def run(self):
|
||||
discs = psutil.disk_partitions()
|
||||
for disc in discs:
|
||||
name = disc.device.split("/")[-1]
|
||||
usage = psutil.disk_usage(disc.mountpoint)
|
||||
self.exporter.gauge("hdd."+name+".total", usage.total)
|
||||
self.exporter.gauge("hdd."+name+".used", usage.used)
|
||||
self.exporter.gauge("hdd."+name+".free", usage.free)
|
||||
self.exporter.gauge("hdd."+name+".percent", usage.percent)
|
|
@ -0,0 +1,12 @@
|
|||
import os
|
||||
class Load:
|
||||
interval = 10;
|
||||
loopCount = 0
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
|
||||
def run(self):
|
||||
load1, load5, load15 = os.getloadavg()
|
||||
self.exporter.gauge("load.1min", load1)
|
||||
self.exporter.gauge("load.5min", load5)
|
||||
self.exporter.gauge("load.11min", load15)
|
|
@ -0,0 +1,50 @@
|
|||
import psutil
|
||||
class Network:
|
||||
interval = 1;
|
||||
loopCount = 0
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
self.last = {}
|
||||
|
||||
def run(self):
|
||||
data = psutil.net_io_counters(True, False)
|
||||
for device in data:
|
||||
if device in self.last:
|
||||
bytes_sent = data[device].bytes_sent - self.last[device]["bytes_sent"]
|
||||
bytes_recv = data[device].bytes_sent - self.last[device]["bytes_recv"]
|
||||
packets_sent = data[device].packets_sent - self.last[device]["packets_sent"]
|
||||
packets_recv = data[device].packets_recv - self.last[device]["packets_recv"]
|
||||
errin = data[device].errin - self.last[device]["errin"]
|
||||
errout = data[device].errout - self.last[device]["errout"]
|
||||
dropin = data[device].dropin - self.last[device]["dropin"]
|
||||
dropout = data[device].dropout - self.last[device]["dropout"]
|
||||
self.exporter.incr("net."+device+".bytes_sent", bytes_sent)
|
||||
self.exporter.incr("net."+device+".bytes_recv", bytes_recv)
|
||||
self.exporter.incr("net."+device+".packets_sent", packets_sent)
|
||||
self.exporter.incr("net."+device+".packets_recv", packets_recv)
|
||||
self.exporter.incr("net."+device+".errin", errin)
|
||||
self.exporter.incr("net."+device+".errout", errout)
|
||||
self.exporter.incr("net."+device+".dropin", dropin)
|
||||
self.exporter.incr("net."+device+".dropout", dropout)
|
||||
else:
|
||||
self.last[device] = {}
|
||||
self.last[device]["bytes_sent"] = data[device].bytes_sent
|
||||
self.last[device]["bytes_recv"] = data[device].bytes_recv
|
||||
self.last[device]["packets_sent"] = data[device].packets_sent
|
||||
self.last[device]["packets_recv"] = data[device].packets_recv
|
||||
self.last[device]["errin"] = data[device].errin
|
||||
self.last[device]["errout"] = data[device].errout
|
||||
self.last[device]["dropin"] = data[device].dropin
|
||||
self.last[device]["dropout"] = data[device].dropout
|
||||
self.exporter.gauge("net."+device+".bytes_sent", data[device].bytes_sent)
|
||||
self.exporter.gauge("net."+device+".bytes_recv", data[device].bytes_recv)
|
||||
self.exporter.gauge("net."+device+".packets_sent", data[device].packets_sent)
|
||||
self.exporter.gauge("net."+device+".packets_recv", data[device].packets_recv)
|
||||
self.exporter.gauge("net."+device+".errin", data[device].errin)
|
||||
self.exporter.gauge("net."+device+".errout", data[device].errout)
|
||||
self.exporter.gauge("net."+device+".dropin", data[device].dropin)
|
||||
self.exporter.gauge("net."+device+".dropout", data[device].dropout)
|
||||
#print(device)
|
||||
#print(data[device].bytes_sent)
|
||||
#print(data)
|
||||
#self.exporter.gauge("users", len(psutil.users()))
|
|
@ -0,0 +1,11 @@
|
|||
import os
|
||||
class Processes:
|
||||
interval = 10;
|
||||
loopCount = 0
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
|
||||
def run(self):
|
||||
stream = os.popen('ps fax | wc -l')
|
||||
output = stream.read()
|
||||
self.exporter.gauge("processes", int(output))
|
|
@ -0,0 +1,25 @@
|
|||
from psutil import virtual_memory, swap_memory
|
||||
class Ram:
|
||||
interval = 10;
|
||||
loopCount = 0
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
|
||||
def run(self):
|
||||
mem = virtual_memory()
|
||||
self.exporter.gauge("ram.total", mem.total)
|
||||
self.exporter.gauge("ram.available", mem.available)
|
||||
self.exporter.gauge("ram.percent", mem.percent)
|
||||
self.exporter.gauge("ram.used", mem.used)
|
||||
self.exporter.gauge("ram.free", mem.free)
|
||||
self.exporter.gauge("ram.active", mem.active)
|
||||
self.exporter.gauge("ram.inactive", mem.inactive)
|
||||
self.exporter.gauge("ram.buffers", mem.buffers)
|
||||
self.exporter.gauge("ram.cached", mem.cached)
|
||||
self.exporter.gauge("ram.shared", mem.shared)
|
||||
self.exporter.gauge("ram.slab", mem.slab)
|
||||
mem = swap_memory()
|
||||
self.exporter.gauge("swap.total", mem.total)
|
||||
self.exporter.gauge("swap.percent", mem.percent)
|
||||
self.exporter.gauge("swap.used", mem.used)
|
||||
self.exporter.gauge("swap.free", mem.free)
|
|
@ -0,0 +1,9 @@
|
|||
import psutil
|
||||
class User:
|
||||
interval = 10;
|
||||
loopCount = 0
|
||||
def __init__(self, exporter):
|
||||
self.exporter = exporter
|
||||
|
||||
def run(self):
|
||||
self.exporter.gauge("users", len(psutil.users()))
|
|
@ -0,0 +1,2 @@
|
|||
psutil==5.6.7
|
||||
statsd==3.3.0
|
|
@ -0,0 +1,28 @@
|
|||
import time
|
||||
from exporter.cli import Cli
|
||||
from monitors.load import Load
|
||||
from monitors.hdd import HDD
|
||||
from monitors.processes import Processes
|
||||
from monitors.ram import Ram
|
||||
from monitors.cpu import CPU
|
||||
from monitors.user import User
|
||||
from monitors.network import Network
|
||||
|
||||
exporter = Cli()
|
||||
|
||||
checks = []
|
||||
checks.append(Load(exporter))
|
||||
checks.append(HDD(exporter))
|
||||
checks.append(Processes(exporter))
|
||||
checks.append(Ram(exporter))
|
||||
checks.append(CPU(exporter))
|
||||
checks.append(User(exporter))
|
||||
checks.append(Network(exporter))
|
||||
|
||||
while True:
|
||||
for check in checks:
|
||||
if check.loopCount > check.interval:
|
||||
check.run()
|
||||
check.loopCount = -1;
|
||||
check.loopCount = check.loopCount + 1
|
||||
time.sleep(1)
|
Loading…
Reference in New Issue