Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325

Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
import agent_util import sys import os from datetime import datetime from agent_util import float import fnmatch class BandwidthPlugin(agent_util.Plugin): textkey = "bandwidth" label = "Bandwidth" @classmethod def get_metadata(self, config): def add_to_interfaces(iface): if any(fnmatch.fnmatch(iface, f) for f in filter_interfaces): return if type(interfaces) == set: interfaces.add(iface) else: interfaces.append(iface) status = agent_util.SUPPORTED msg = None interfaces = set() filter_interfaces = [] filter_interfaces_config = config.get("filter_interfaces") if filter_interfaces_config: if filter_interfaces_config[0] == "[": filter_interfaces_config = filter_interfaces_config.strip("[]") for f in filter_interfaces_config.split(","): f = f.strip() if f: if f[0] == '"': f = f.strip('"') elif f[0] == "'": f = f.strip("'") if f: filter_interfaces.append(f) if "freebsd" in sys.platform or "darwin" in sys.platform: netstat_binary = agent_util.which("netstat") if not netstat_binary: self.log.info("netstat not found") status = agent_util.UNSUPPORTED msg = "Please install netstat." return {} if status is agent_util.SUPPORTED: ret, output = agent_util.execute_command("%s -ib" % netstat_binary) self.log.debug("BANDWIDTH INFO") self.log.debug(output) if config.get("debug", False): self.log.debug( "#####################################################" ) self.log.debug("Bandwidth command 'netstat -ib' output:") self.log.debug(output) self.log.debug( "#####################################################" ) output = output.splitlines()[1:] for line in output: if line == "" or "lo" in line: continue stuff = line.strip().split() iface = stuff[0] add_to_interfaces(iface) elif "aix" in sys.platform: if not agent_util.which("netstat"): self.log.info("netstat not found") status = agent_util.UNSUPPORTED msg = "Please install netstat." return {} # Get the list of network devices interfaces = [] ret, output = agent_util.execute_command( "netstat -v | grep 'ETHERNET STATISTICS'" ) output = output.strip().split("\n") for line in output: fields = line.split() try: add_to_interfaces(fields[2].strip("(").strip(")")) except: pass metadata = {} metadata["bandwidth.kbytes.in"] = { "label": "Kilobytes IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.kbytes.out"] = { "label": "Kilobytes OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.packets.in"] = { "label": "Packets IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } metadata["bandwidth.packets.out"] = { "label": "Packets OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } return metadata elif "sunos" in sys.platform: if not agent_util.which("netstat"): self.log.info("netstat not found") status = agent_util.UNSUPPORTED msg = "Please install netstat." return {} # Get the list of network devices interfaces = [] ret, output = agent_util.execute_command("netstat -i") output = output.strip().split("\n") for line in output: fields = line.split() if not fields: continue if fields[0] in ("lo", "inet", "ether", "Name"): continue try: add_to_interfaces(fields[0]) except: pass metadata = {} metadata["bandwidth.kbytes.in"] = { "label": "Kilobytes IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.kbytes.out"] = { "label": "Kilobytes OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.packets.in"] = { "label": "Packets IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } metadata["bandwidth.packets.out"] = { "label": "Packets OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } return metadata elif "vmware" in sys.platform: if not agent_util.which("esxcli"): self.log.info("esxcli not found") status = agent_util.UNSUPPORTED msg = "Please confirm esxcli is installed." return {} interfaces = [] ret, out = agent_util.execute_command("esxcli network nic list") iface_table = out.split("\n") for iface in iface_table: # skip the headers, dividers and any empty items if iface.startswith("Name") or iface.startswith("--") or iface == "": continue add_to_interfaces(iface.split()[0]) metadata = {} metadata["bandwidth.kbytes.in"] = { "label": "Kilobytes IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.kbytes.out"] = { "label": "Kilobytes OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.packets.in"] = { "label": "Packets IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } metadata["bandwidth.packets.out"] = { "label": "Packets OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } return metadata elif "hp-ux" in sys.platform: ret, out = agent_util.execute_command("nwmgr -g") iface_table = out.splitlines() interfaces = [] for line in iface_table: if not line.lower().startswith("lan"): continue iface = line.split() if iface[1] != "UP": continue add_to_interfaces(iface[0]) metadata = {} metadata["bandwidth.kbytes.in"] = { "label": "Kilobytes IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.kbytes.out"] = { "label": "Kilobytes OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.packets.in"] = { "label": "Packets IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } metadata["bandwidth.packets.out"] = { "label": "Packets OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } return metadata else: # Default Linux options if not os.path.exists("/proc/net/dev"): self.log.info("/proc/net/dev not found") status = agent_util.UNSUPPORTED msg = "/proc/net/dev not found" return {} if status is agent_util.SUPPORTED: # get the interfaces output = open("/proc/net/dev", "r").read() output = output.splitlines() if config.get("debug", False): self.log.debug( "#####################################################" ) self.log.debug("Content of file '/proc/net/dev':") self.log.debug(str(output)) self.log.debug( "#####################################################" ) for line in output[2:]: stuff = line.strip().split() iface, bytes_read = stuff[0].split(":") add_to_interfaces(iface) interfaces = list(interfaces) interfaces.sort() if status is agent_util.SUPPORTED and not interfaces: status = agent_util.MISCONFIGURED msg = "No network interfaces found." metadata = {} metadata["bandwidth.kbytes.in"] = { "label": "Kilobytes IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.kbytes.out"] = { "label": "Kilobytes OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.packets.in"] = { "label": "Packets IN per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } metadata["bandwidth.packets.out"] = { "label": "Packets OUT per second", "options": interfaces, "status": status, "error_message": msg, "unit": "packets", } if "freebsd" not in sys.platform and "darwin" not in sys.platform: metadata["bandwidth.monthly.in"] = { "label": "Kilobytes IN for the month", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } metadata["bandwidth.monthly.out"] = { "label": "Kilobytes OUT for the month", "options": interfaces, "status": status, "error_message": msg, "unit": "kB", } return metadata def check(self, textkey, interface, config): interface_found = False if "freebsd" in sys.platform: ret, output = agent_util.execute_command("netstat -ib") lines = output.splitlines()[1:] for line in lines: if "lo" in line or line == "": continue line = line.split() ( si, mtu, network, addr, packets_read, ierr, idrop, bytes_read, packets_written, oerr, bytes_written, coll, ) = line packets_read = int(packets_read) packets_written = int(packets_written) kbytes_read = int(bytes_read) / 1024 kbytes_written = int(bytes_written) / 1024 if si == interface and network.startswith("