import collectd import random import socket import os #== Our Own Functions go here: ==# def configer(ObjConfiguration): collectd.debug('Configuring Stuff') def initer(): collectd.debug('initing stuff') def reader(input_data=None): metric1 = collectd.Values(); metric1.plugin = 'stamina' metric1.type = 'gauge' metric1.values = [random.random()] metric1.host = str(socket.gethostname()) metric1.dispatch() cgroupDir = '/sys/fs/cgroup/' lxcDir = '/libvirt/lxc/' memoryDir = cgroupDir + 'memory' + lxcDir for dirname, dirnames, filenames in os.walk(memoryDir): for subdirname in dirnames: lxcName = os.path.relpath(subdirname) with open(os.path.join(dirname, subdirname)+'/memory.stat', 'r') as f: lines = f.read().splitlines() mem_rss = 0 mem_cache = 0 mem_swap = 0 for line in lines: data = line.split() if data[0] == "total_rss": mem_rss = int(data[1]) elif data[0] == "total_cache": mem_cache = int(data[1]) elif data[0] == "total_swap": mem_swap = int(data[1]) memory_rss = collectd.Values(); memory_rss.plugin = str(lxcName + '-mem_rss') memory_rss.type = 'gauge' memory_rss.values = [mem_rss] memory_rss.host = str(socket.gethostname()) memory_rss.dispatch() memory_cache = collectd.Values(); memory_cache.plugin = str(lxcName + '-mem_cache') memory_cache.type = 'gauge' memory_cache.values = [mem_cache] memory_cache.host = str(socket.gethostname()) memory_cache.dispatch() memory_swap = collectd.Values(); memory_swap.plugin = str(lxcName + '-mem_swap') memory_swap.type = 'gauge' memory_swap.values = [mem_swap] memory_swap.host = str(socket.gethostname()) memory_swap.dispatch() cpuacctDir = cgroupDir + 'cpu,cpuacct' + '/system/libvirtd.service/' + lxcDir for dirname, dirnames, filenames in os.walk(cpuacctDir): for subdirname in dirnames: lxcName = os.path.relpath(subdirname) cpu_usage = 0 with open(os.path.join(dirname, subdirname)+'/cpuacct.usage', 'r') as f: cpu_usage = int(f.readline()) CPU_usage = collectd.Values(); CPU_usage.plugin = str(lxcName + '-CPU_usage') CPU_usage.type = 'gauge' CPU_usage.values = [cpu_usage] CPU_usage.host = str(socket.gethostname()) CPU_usage.dispatch() #== Hook Callbacks, Order is important! ==# collectd.register_config(configer) collectd.register_init(initer) collectd.register_read(reader)