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("