Remove all global variables
This commit is contained in:
@ -19,7 +19,7 @@ class NullHandler(logging.Handler):
|
|||||||
|
|
||||||
|
|
||||||
class Agent(object):
|
class Agent(object):
|
||||||
def __init__(self, server_address="/var/agentx/master", period=30.0):
|
def __init__(self, server_address="/var/agentx/master", period=30.0, args=None):
|
||||||
self.logger = logging.getLogger("agentx.agent")
|
self.logger = logging.getLogger("agentx.agent")
|
||||||
self.logger.addHandler(NullHandler())
|
self.logger.addHandler(NullHandler())
|
||||||
|
|
||||||
@ -31,6 +31,7 @@ class Agent(object):
|
|||||||
self._net = Network(server_address=server_address)
|
self._net = Network(server_address=server_address)
|
||||||
|
|
||||||
self._oid_list = []
|
self._oid_list = []
|
||||||
|
self._args = args
|
||||||
|
|
||||||
def _update(self):
|
def _update(self):
|
||||||
ds = self.update()
|
ds = self.update()
|
||||||
|
@ -64,29 +64,27 @@ def get_description_by_ifname(config, name):
|
|||||||
|
|
||||||
class MyAgent(agentx.Agent):
|
class MyAgent(agentx.Agent):
|
||||||
def setup(self):
|
def setup(self):
|
||||||
global vppstat, vpp, logger, args
|
|
||||||
|
|
||||||
self.config = None
|
self.config = None
|
||||||
if args.config:
|
if self._args.config:
|
||||||
try:
|
try:
|
||||||
with open(args.config, "r") as f:
|
with open(self._args.config, "r") as f:
|
||||||
self.logger.info("Loading configfile %s" % args.config)
|
self.logger.info("Loading configfile %s" % self._args.config)
|
||||||
self.config = yaml.load(f, Loader=yaml.FullLoader)
|
self.config = yaml.load(f, Loader=yaml.FullLoader)
|
||||||
self.logger.debug("Config: %s" % self.config)
|
self.logger.debug("Config: %s" % self.config)
|
||||||
except:
|
except:
|
||||||
self.logger.error("Couldn't read config from %s" % args.config)
|
self.logger.error("Couldn't read config from %s" % self._args.config)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.logger.info("Connecting to VPP Stats Segment")
|
self.logger.info("Connecting to VPP Stats Segment")
|
||||||
vppstat = VPPStats(socketname="/run/vpp/stats.sock", timeout=2)
|
self.vppstat = VPPStats(socketname="/run/vpp/stats.sock", timeout=2)
|
||||||
vppstat.connect()
|
self.vppstat.connect()
|
||||||
except:
|
except:
|
||||||
self.logger.error("Could not connect to VPPStats segment")
|
self.logger.error("Could not connect to VPPStats segment")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
vpp = VPPApi(clientname="vpp-snmp-agent")
|
self.vpp = VPPApi(clientname="vpp-snmp-agent")
|
||||||
vpp.connect()
|
self.vpp.connect()
|
||||||
except:
|
except:
|
||||||
self.logger.error("Could not connect to VPP API")
|
self.logger.error("Could not connect to VPP API")
|
||||||
return False
|
return False
|
||||||
@ -97,41 +95,33 @@ class MyAgent(agentx.Agent):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
global vppstat, vpp, args
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
vppstat.connect()
|
self.vppstat.connect()
|
||||||
except:
|
except:
|
||||||
self.logger.error("Could not connect to VPPStats segment")
|
self.logger.error("Could not connect to VPPStats segment")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
|
||||||
vpp.connect()
|
|
||||||
except:
|
|
||||||
self.logger.error("Could not connect to VPP API")
|
|
||||||
return False
|
|
||||||
|
|
||||||
ds = agentx.DataSet()
|
ds = agentx.DataSet()
|
||||||
ifaces = vpp.get_ifaces()
|
ifaces = self.vpp.get_ifaces()
|
||||||
lcp = vpp.get_lcp()
|
lcp = self.vpp.get_lcp()
|
||||||
|
|
||||||
num_ifaces = len(ifaces)
|
num_ifaces = len(ifaces)
|
||||||
num_vppstat = len(vppstat["/if/names"])
|
num_vppstat = len(self.vppstat["/if/names"])
|
||||||
num_lcp = len(lcp)
|
num_lcp = len(lcp)
|
||||||
self.logger.debug("LCP: %s" % (lcp))
|
self.logger.debug("LCP: %s" % (lcp))
|
||||||
self.logger.debug(
|
self.logger.debug(
|
||||||
"Retrieved Interfaces: vppapi=%d vppstats=%d lcp=%d"
|
"Retrieved Interfaces: vppapi=%d vppstat=%d lcp=%d"
|
||||||
% (num_ifaces, num_vppstat, num_lcp)
|
% (num_ifaces, num_vppstat, num_lcp)
|
||||||
)
|
)
|
||||||
|
|
||||||
if num_ifaces != num_vppstat:
|
if num_ifaces != num_vppstat:
|
||||||
self.logger.warning(
|
self.logger.warning(
|
||||||
"Interfaces count mismatch: vppapi=%d vppstats=%d"
|
"Interfaces count mismatch: vppapi=%d vppstat=%d"
|
||||||
% (num_ifaces, num_vppstat)
|
% (num_ifaces, num_vppstat)
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(len(vppstat["/if/names"])):
|
for i in range(len(self.vppstat["/if/names"])):
|
||||||
ifname = vppstat["/if/names"][i]
|
ifname = self.vppstat["/if/names"][i]
|
||||||
idx = 1000 + i
|
idx = 1000 + i
|
||||||
|
|
||||||
ds.set("1.3.6.1.2.1.2.2.1.1.%u" % (idx), "int", idx)
|
ds.set("1.3.6.1.2.1.2.2.1.1.%u" % (idx), "int", idx)
|
||||||
@ -217,117 +207,117 @@ class MyAgent(agentx.Agent):
|
|||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.10.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.10.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx"][:, i].sum_octets() % 2 ** 32,
|
self.vppstat["/if/rx"][:, i].sum_octets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.11.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.11.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/rx"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.12.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.12.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.13.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.13.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx-no-buf"][:, i].sum() % 2 ** 32,
|
self.vppstat["/if/rx-no-buf"][:, i].sum() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.14.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.14.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx-error"][:, i].sum() % 2 ** 32,
|
self.vppstat["/if/rx-error"][:, i].sum() % 2 ** 32,
|
||||||
)
|
)
|
||||||
|
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.16.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.16.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/tx"][:, i].sum_octets() % 2 ** 32,
|
self.vppstat["/if/tx"][:, i].sum_octets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.17.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.17.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/tx"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/tx"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.18.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.18.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.19.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.19.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/drops"][:, i].sum() % 2 ** 32,
|
self.vppstat["/if/drops"][:, i].sum() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.2.2.1.20.%u" % (idx),
|
"1.3.6.1.2.1.2.2.1.20.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/tx-error"][:, i].sum() % 2 ** 32,
|
self.vppstat["/if/tx-error"][:, i].sum() % 2 ** 32,
|
||||||
)
|
)
|
||||||
|
|
||||||
ds.set("1.3.6.1.2.1.31.1.1.1.1.%u" % (idx), "str", ifName)
|
ds.set("1.3.6.1.2.1.31.1.1.1.1.%u" % (idx), "str", ifName)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.2.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.2.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/rx-multicast"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.3.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.3.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/rx-broadcast"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/rx-broadcast"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.4.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.4.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/tx-multicast"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.5.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.5.%u" % (idx),
|
||||||
"u32",
|
"u32",
|
||||||
vppstat["/if/tx-broadcast"][:, i].sum_packets() % 2 ** 32,
|
self.vppstat["/if/tx-broadcast"][:, i].sum_packets() % 2 ** 32,
|
||||||
)
|
)
|
||||||
|
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.6.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.6.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/rx"][:, i].sum_octets(),
|
self.vppstat["/if/rx"][:, i].sum_octets(),
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.7.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.7.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/rx"][:, i].sum_packets(),
|
self.vppstat["/if/rx"][:, i].sum_packets(),
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.8.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.8.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/rx-multicast"][:, i].sum_packets(),
|
self.vppstat["/if/rx-multicast"][:, i].sum_packets(),
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.9.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.9.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/rx-broadcast"][:, i].sum_packets(),
|
self.vppstat["/if/rx-broadcast"][:, i].sum_packets(),
|
||||||
)
|
)
|
||||||
|
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.10.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.10.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/tx"][:, i].sum_octets(),
|
self.vppstat["/if/tx"][:, i].sum_octets(),
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.11.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.11.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/tx"][:, i].sum_packets(),
|
self.vppstat["/if/tx"][:, i].sum_packets(),
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.12.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.12.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/tx-multicast"][:, i].sum_packets(),
|
self.vppstat["/if/tx-multicast"][:, i].sum_packets(),
|
||||||
)
|
)
|
||||||
ds.set(
|
ds.set(
|
||||||
"1.3.6.1.2.1.31.1.1.1.13.%u" % (idx),
|
"1.3.6.1.2.1.31.1.1.1.13.%u" % (idx),
|
||||||
"u64",
|
"u64",
|
||||||
vppstat["/if/tx-broadcast"][:, i].sum_packets(),
|
self.vppstat["/if/tx-broadcast"][:, i].sum_packets(),
|
||||||
)
|
)
|
||||||
|
|
||||||
speed = 0
|
speed = 0
|
||||||
@ -370,8 +360,6 @@ class MyAgent(agentx.Agent):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
global args
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
|
parser = argparse.ArgumentParser(formatter_class=argparse.RawTextHelpFormatter)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"-a",
|
"-a",
|
||||||
@ -404,7 +392,7 @@ def main():
|
|||||||
agentx.setup_logging(debug=args.debug)
|
agentx.setup_logging(debug=args.debug)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
a = MyAgent(server_address=args.address, period=args.period)
|
a = MyAgent(server_address=args.address, period=args.period, args=args)
|
||||||
a.run()
|
a.run()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Unhandled exception:", e)
|
print("Unhandled exception:", e)
|
||||||
|
Reference in New Issue
Block a user