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