Skip to content

Commit 9738007

Browse files
committed
improved multiprocessing, stripped down amount of OIDs scanned by the SNMP Traffic Sensor
1 parent a95b8b5 commit 9738007

File tree

2 files changed

+57
-23
lines changed

2 files changed

+57
-23
lines changed

probe.py

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,8 @@ def main():
9393
'protocol': config['protocol'],
9494
'key': key_sha1
9595
}
96+
procs = []
97+
out_queue = multiprocessing.Queue()
9698
task = False
9799
while not task:
98100
json_payload_data = []
@@ -112,30 +114,35 @@ def main():
112114
gc.collect()
113115
if str(json_response) != '[]':
114116
json_response_chunks = [json_response[i:i + 10] for i in range(0, len(json_response), 10)]
115-
procs = []
116-
117117
for element in json_response_chunks:
118-
out_queue = multiprocessing.Queue()
119118
for part in element:
120119
if config['debug']:
121120
logging.debug(part)
122121
for sensor in sensor_list:
123122
if part['kind'] == sensor.get_kind():
123+
print part['kind']
124124
p = multiprocessing.Process(target=sensor.get_data, args=(part, out_queue),
125125
name=part['kind'])
126126
procs.append(p)
127127
p.start()
128128
else:
129129
pass
130130
gc.collect()
131-
for i in range(len(procs)):
132-
json_payload_data.append(out_queue.get())
133-
for p in procs:
134-
p.join(2)
135-
procs = []
136-
p.terminate()
137-
del p
138-
del out_queue
131+
try:
132+
while len(json_payload_data) < len(element):
133+
out = out_queue.get()
134+
json_payload_data.append(out)
135+
except Exception as e:
136+
logging.error(e)
137+
print e
138+
pass
139+
#print len(json_response_chunks)
140+
#print len(json_payload_data)
141+
#p.join()
142+
#p.terminate()
143+
#del p
144+
#del out_queue
145+
#procs = []
139146
url_data = mini_probe.create_url(config, 'data')
140147
try:
141148
request_data = requests.post(url_data, data=json.dumps(json_payload_data), verify=False)
@@ -157,6 +164,14 @@ def main():
157164
time.sleep(int(config['baseinterval']) / 3)
158165

159166
# Delete some stuff used in the loop and run the garbage collector
167+
for p in procs:
168+
if not p.is_alive():
169+
p.join()
170+
p.terminate()
171+
del p
172+
#p.join()
173+
#p.terminate()
174+
#del p
160175
del json_response
161176
del json_payload_data
162177
gc.collect()

sensors/snmptraffic.py

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
sys.exit()
3131

3232

33+
3334
class SNMPTraffic(object):
3435

3536
def __init__(self):
@@ -122,25 +123,43 @@ def get_sensordef():
122123
def snmp_get(self, target, countertype, community, port, ifindex):
123124
if countertype == "1":
124125
data = []
125-
oid_endings = range(1, 19)
126-
for number in oid_endings:
127-
data.append("1.3.6.1.2.1.2.2.1.%s.%s" % (str(number), str(ifindex)))
126+
#data2 = []
127+
#oid_endings = range(1, 19)
128+
#for number in oid_endings:
129+
#data.append("1.3.6.1.2.1.2.2.1.%s.%s" % (str(number), str(ifindex)))
130+
data.append("1.3.6.1.2.1.2.2.1.10.%s" % str(ifindex))
131+
data.append("1.3.6.1.2.1.2.2.1.16.%s" % str(ifindex))
128132
else:
129133
data = []
130-
oid_endings = range(1, 20)
131-
for number in oid_endings:
132-
data.append("1.3.6.1.2.1.31.1.1.1.%s.%s" % (str(number), str(ifindex)))
134+
#oid_endings = range(1, 20)
135+
#for number in oid_endings:
136+
#data.append("1.3.6.1.2.1.31.1.1.1.%s.%s" % (str(number), str(ifindex)))
137+
data.append("1.3.6.1.2.1.31.1.1.1.6.%s" % str(ifindex))
138+
data.append("1.3.6.1.2.1.31.1.1.1.10.%s" % str(ifindex))
133139
snmpget = cmdgen.CommandGenerator()
134140
error_indication, error_status, error_index, var_binding = snmpget.getCmd(
135141
cmdgen.CommunityData(community), cmdgen.UdpTransportTarget((target, port)), *data)
136142
if countertype == "1":
137-
traffic_in = str(long(var_binding[9][1]))
138-
traffic_out = str(long(var_binding[15][1]))
139-
traffic_total = str(long(var_binding[9][1]) + long(var_binding[15][1]))
143+
#print var_binding[0][1]
144+
#print var_binding[1][1]
145+
#sys.exit()
146+
#traffic_in = str(long(var_binding[9][1]))
147+
traffic_in = str(long(var_binding[0][1]))
148+
#traffic_out = str(long(var_binding[15][1]))
149+
traffic_out = str(long(var_binding[1][1]))
150+
#traffic_total = str(long(var_binding[9][1]) + long(var_binding[15][1]))
151+
traffic_total = str(long(var_binding[0][1]) + long(var_binding[1][1]))
140152
else:
141-
traffic_in = str(long(var_binding[5][1]))
142-
traffic_out = str(long(var_binding[9][1]))
143-
traffic_total = str(long(var_binding[5][1]) + long(var_binding[9][1]))
153+
#print var_binding[0][1]
154+
#print var_binding[1][1]
155+
156+
#sys.exit()
157+
#traffic_in = str(long(var_binding[5][1]))
158+
traffic_in = str(long(var_binding[0][1]))
159+
#traffic_out = str(long(var_binding[9][1]))
160+
traffic_out = str(long(var_binding[1][1]))
161+
#traffic_total = str(long(var_binding[5][1]) + long(var_binding[9][1]))
162+
traffic_total = str(long(var_binding[0][1]) + long(var_binding[1][1]))
144163

145164
channellist = [
146165
{

0 commit comments

Comments
 (0)