def f5_engine_monit_interf(snmp_ip, snmp_comm, splunk_host, splunk_key, splunk_url, default_info): print(snmp_ip + ' : INICIO INTERFACE') session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) spk_session = requests.Session() ## INTERFACE - LEITURA DAS OID print(snmp_ip + ' : LER INTERFACE') sysInterfaceStatName = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatName') sysInterfaceStatPktsIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatPktsIn') sysInterfaceStatPktsOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatPktsOut') sysInterfaceStatBytesIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatBytesIn') sysInterfaceStatBytesOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatBytesOut') sysInterfaceStatErrorsIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatErrorsIn') sysInterfaceStatErrorsOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatErrorsOut') sysInterfaceStatDropsIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatDropsIn') sysInterfaceStatDropsOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysInterfaceStatDropsOut') ## INTERFACE - PREENCHIMENTO DO JSON print(snmp_ip + ' : SPLUNK INTERFACE') for index, int_name in enumerate(sysInterfaceStatName): data = json_default_info(default_info) data['sysInterfaceStatName'] = int_name.value data['sysInterfaceStatPktsIn'] = sysInterfaceStatPktsIn[index].value data['sysInterfaceStatPktsOut'] = sysInterfaceStatPktsOut[index].value data['sysInterfaceStatBytesIn'] = sysInterfaceStatBytesIn[index].value data['sysInterfaceStatBytesOut'] = sysInterfaceStatBytesOut[ index].value data['sysInterfaceStatErrorsIn'] = sysInterfaceStatErrorsIn[ index].value data['sysInterfaceStatErrorsOut'] = sysInterfaceStatErrorsOut[ index].value data['sysInterfaceStatDropsIn'] = sysInterfaceStatDropsIn[index].value data['sysInterfaceStatDropsOut'] = sysInterfaceStatDropsOut[ index].value ## INTERFACE - EXPORTACAO DOS DADOS PARA O SPLUNK HEC event_data = '{"host":"' + splunk_host + '","source":"f5_int_stats","event":' + json.dumps( data) + '}' send_to_splunk(spk_session, event_data)
def f5_engine_monit_cpu(snmp_ip, snmp_comm, splunk_host, splunk_key, splunk_url, default_info): print(snmp_ip + ' : INICIO CPU') session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) spk_session = requests.Session() ## CPU - LEITURA DAS OID print(snmp_ip + ' : LER CPU') sysMultiHostCpuUsageRatio5m = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysMultiHostCpuUsageRatio5m') ## CPU - PREENCHIMENTO DO JSON data = json_default_info(default_info) for index, f5_cpu in enumerate(sysMultiHostCpuUsageRatio5m): data['sysMultiHostCpuUsageRatio5m_' + str(index)] = f5_cpu.value ## CPU - EXPORTACAO DOS DADOS PARA O SPLUNK HEC print(snmp_ip + ' : SPLUNK CPU') event_data = '{"host":"' + splunk_host + '","source":"f5_cpu_stats","event":' + json.dumps( data) + '}' send_to_splunk(spk_session, event_data)
def thread_bulk_TotalBytes(oid,results,index): session = Session(hostname=args.ip_address, community=args.community, version=2, use_numeric=True) try: print("Bulk walk Starting...."+oid) results[index] = session.bulkwalk(oid,non_repeaters=0,max_repetitions=snmp_max_repetitions) except: print("Bulk walk Failed, oid: "+oid)
def get_default_info(snmp_ip, snmp_comm): session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) print(snmp_ip + ' : GET DEFAULT INFO') ## LEITURA DAS OID DA PLATAFORMA - JSON DEFAULT default_info = {} default_info['sysSystemNodeName'] = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysSystemNodeName')[0].value.split('.')[0] default_info['sysSystemNodeIp'] = snmp_ip default_info['sysProductVersion'] = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysProductVersion')[0].value default_info['sysProductBuild'] = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysProductBuild')[0].value return default_info
def _walk(self): session = Session(hostname=self.hostname, community=self.community, version=self.version) system_items = session.bulkwalk(self.variable) for item in system_items: print('{oid}.{oid_index} {snmp_type} = {value}').format( oid=item.oid, oid_index=item.oid_index, snmp_type=item.snmp_type, value=item.value)
def active_verify(snmp_ip, snmp_comm): print(snmp_ip + ' : INICIO ACTIVE VERIFY') session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) ## ACTIVE - LEITURA DA OID status = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysCmFailoverStatusStatus')[0].value print(snmp_ip + ' : STATUS ' + status) return status
def getData(host_ip): now = globalnow session = Session(hostname=host_ip, community='public', version=2, retries=1, timeout=1) hostname = session.get('1.3.6.1.4.1.119.2.3.69.5.1.1.1.3.1').value ifnames = session.bulkwalk('1.3.6.1.2.1.31.1.1.1.1') ifdict = {rec.oid_index: rec.value for rec in ifnames} toDBif(ifdict, now, host_ip, hostname) rxoctetsdata = session.bulkwalk('1.3.6.1.4.1.119.2.3.69.501.11.1.2.2.1.3') rxoctets = {rec.oid.split('.')[-1]: rec.value for rec in rxoctetsdata} toDB(rxoctets, 'rxoctets', now, host_ip) txoctetsdata = session.bulkwalk('1.3.6.1.4.1.119.2.3.69.501.11.1.2.2.1.5') txoctets = {rec.oid.split('.')[-1]: rec.value for rec in txoctetsdata} toDB(txoctets, 'txoctets', now, host_ip) discardsdata = session.bulkwalk('1.3.6.1.4.1.119.2.3.69.501.11.1.2.2.1.67') discards = {rec.oid.split('.')[-1]: rec.value for rec in discardsdata} toDB(discards, 'discards', now, host_ip) txpowerdata = session.bulkwalk('1.3.6.1.4.1.119.2.3.69.501.8.1.1.4') txpower = {rec.oid.split('.')[-1]: rec.value for rec in txpowerdata} toDB(txpower, 'txpower', now, host_ip) rxleveldata = session.bulkwalk('1.3.6.1.4.1.119.2.3.69.501.8.1.1.6') rxlevel = {rec.oid.split('.')[-1]: rec.value for rec in rxleveldata} toDB(rxlevel, 'rxlevel', now, host_ip) neighborhostdata = session.bulkwalk('1.0.8802.1.1.2.1.4.1.1.9') neighborhost = { rec.oid.split('.')[-2]: rec.value for rec in neighborhostdata } toDB(neighborhost, 'neighborhost', now, host_ip) neighbormodemdata = session.bulkwalk('1.0.8802.1.1.2.1.4.1.1.8') neighbormodem = { rec.oid.split('.')[-2]: rec.value for rec in neighbormodemdata } toDB(neighbormodem, 'neighbormodem', now, host_ip) print(hostname + ' processed')
def f5_engine_monit_member(snmp_ip, snmp_comm, splunk_host, splunk_key, splunk_url, default_info): print(snmp_ip + ' : INICIO POOL MEMBER') session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) spk_session = requests.Session() ## POOL MEMBER - LEITURA DAS OID print(snmp_ip + ' : LER POOL MEMBER') ltmPoolMemberNodeName = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberNodeName') ltmPoolMemberPort = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberPort') ltmPoolMemberStatPoolName = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatPoolName') ltmPoolMemberMonitorState = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberMonitorState') ltmPoolMemberStatServerPktsIn = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerPktsIn') ltmPoolMemberStatServerPktsOut = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerPktsOut') ltmPoolMemberStatServerBytesIn = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerBytesIn') ltmPoolMemberStatServerBytesOut = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerBytesOut') ltmPoolMemberStatServerMaxConns = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerMaxConns') ltmPoolMemberStatServerTotConns = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerTotConns') ltmPoolMemberStatServerCurConns = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmPoolMemberStatServerCurConns') ## POOL MEMBER - PREENCHIMENTO DO JSON print(snmp_ip + ' : SPLUNK POOL MEMBER') for index, pool_member in enumerate(ltmPoolMemberNodeName): data = json_default_info(default_info) data['ltmPoolMemberNodeName'] = pool_member.value data['ltmPoolMemberPort'] = ltmPoolMemberPort[index].value data['ltmPoolMemberStatPoolName'] = ltmPoolMemberStatPoolName[ index].value data['ltmPoolMemberStatServerPktsIn'] = ltmPoolMemberStatServerPktsIn[ index].value data[ 'ltmPoolMemberStatServerPktsOut'] = ltmPoolMemberStatServerPktsOut[ index].value data[ 'ltmPoolMemberStatServerBytesIn'] = ltmPoolMemberStatServerBytesIn[ index].value data[ 'ltmPoolMemberStatServerBytesOut'] = ltmPoolMemberStatServerBytesOut[ index].value data[ 'ltmPoolMemberStatServerMaxConns'] = ltmPoolMemberStatServerMaxConns[ index].value data[ 'ltmPoolMemberStatServerTotConns'] = ltmPoolMemberStatServerTotConns[ index].value data[ 'ltmPoolMemberStatServerCurConns'] = ltmPoolMemberStatServerCurConns[ index].value if ltmPoolMemberMonitorState[index].value == '4': data['ltmPoolMemberMonitorState'] = 'up' elif ltmPoolMemberMonitorState[index].value == '19': data['ltmPoolMemberMonitorState'] = 'down' elif ltmPoolMemberMonitorState[index].value == '20': data['ltmPoolMemberMonitorState'] = 'forced-offline' else: data['ltmPoolMemberMonitorState'] = 'other' ## POOL MEMBER - EXPORTACAO DOS DADOS PARA O SPLUNK HEC event_data = '{"host":"' + splunk_host + '","source":"f5_member_stats","event":' + json.dumps( data) + '}' send_to_splunk(spk_session, event_data)
def f5_engine_monit_vip(snmp_ip, snmp_comm, splunk_host, splunk_key, splunk_url, default_info): print(snmp_ip + ' : INICIO VIP') session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) spk_session = requests.Session() ## VIP - LEITURA DAS OID print(snmp_ip + ' : LER VIP') ltmVirtualServStatVsUsageRatio5m = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatVsUsageRatio5m') ltmVirtualServName = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServName') ltmVirtualServPort = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServPort') ltmVirtualServDefaultPool = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServDefaultPool') ltmVirtualServStatClientCurConns = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientCurConns') ltmVirtualServStatClientMaxConns = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientMaxConns') ltmVirtualServStatClientTotConns = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientTotConns') ltmVirtualServStatClientPktsIn = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientPktsIn') ltmVirtualServStatClientBytesIn = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientBytesIn') ltmVirtualServStatClientPktsOut = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientPktsOut') ltmVirtualServStatClientBytesOut = session.bulkwalk( 'F5-BIGIP-LOCAL-MIB::ltmVirtualServStatClientBytesOut') ## VIP - PREENCHIMENTO DO JSON print(snmp_ip + ' : SPLUNK VIP') for index, vs_name in enumerate(ltmVirtualServName): data = json_default_info(default_info) data['ltmVirtualServName'] = vs_name.value data[ 'ltmVirtualServStatVsUsageRatio5m'] = ltmVirtualServStatVsUsageRatio5m[ index].value data['ltmVirtualServPort'] = ltmVirtualServPort[index].value data['ltmVirtualServDefaultPool'] = ltmVirtualServDefaultPool[ index].value data[ 'ltmVirtualServStatClientCurConns'] = ltmVirtualServStatClientCurConns[ index].value data[ 'ltmVirtualServStatClientMaxConns'] = ltmVirtualServStatClientMaxConns[ index].value data[ 'ltmVirtualServStatClientTotConns'] = ltmVirtualServStatClientTotConns[ index].value data[ 'ltmVirtualServStatClientPktsIn'] = ltmVirtualServStatClientPktsIn[ index].value data[ 'ltmVirtualServStatClientBytesIn'] = ltmVirtualServStatClientBytesIn[ index].value data[ 'ltmVirtualServStatClientPktsOut'] = ltmVirtualServStatClientPktsOut[ index].value data[ 'ltmVirtualServStatClientBytesOut'] = ltmVirtualServStatClientBytesOut[ index].value ## VIP - EXPORTACAO DOS DADOS PARA O SPLUNK HEC event_data = '{"host":"' + splunk_host + '","source":"f5_vip_stats","event":' + json.dumps( data) + '}' send_to_splunk(spk_session, event_data)
def f5_engine_monit_equip(snmp_ip, snmp_comm, splunk_host, splunk_key, splunk_url, default_info): print(snmp_ip + ' : INICIO MEM-TRAFEGO') session = Session(hostname=snmp_ip, community=snmp_comm, version=2, timeout=5, retries=0) spk_session = requests.Session() ## MEM/TRAFEGO DO EQUIP - LEITURA DAS OID print(snmp_ip + ' : LER MEM-TRAFEGO') sysTmmStatMemoryTotalKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysTmmStatMemoryTotalKb') sysTmmStatMemoryUsedKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysTmmStatMemoryUsedKb') sysStatClientPktsIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientPktsIn') sysStatClientPktsOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientPktsOut') sysStatServerPktsIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerPktsIn') sysStatServerPktsOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerPktsOut') sysStatClientBytesIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientBytesIn') sysStatClientBytesOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientBytesOut') sysStatServerBytesIn = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerBytesIn') sysStatServerBytesOut = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerBytesOut') sysStatClientMaxConns = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientMaxConns') sysStatClientTotConns = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientTotConns') sysStatClientCurConns = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatClientCurConns') sysStatServerMaxConns = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerMaxConns') sysStatServerTotConns = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerTotConns') sysStatServerCurConns = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysStatServerCurConns') sysCmFailoverStatusStatus = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysCmFailoverStatusStatus') sysMultiHostTotalKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysGlobalHostMemTotalKb') sysMultiHostUsedKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysGlobalHostMemUsedKb') sysMultiHostOtherMemoryTotalKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysMultiHostOtherMemoryTotalKb') sysMultiHostOtherMemoryUsedKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysMultiHostOtherMemoryUsedKb') sysMultiHostSwapTotalKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysMultiHostSwapTotalKb') sysMultiHostSwapUsedKb = session.bulkwalk( 'F5-BIGIP-SYSTEM-MIB::sysMultiHostSwapUsedKb') ## MEM/TRAFEGO DO EQUIP - PREENCHIMENTO DO JSON data = json_default_info(default_info) #data['sysTmmStatMemoryTotalKb'] = sysTmmStatMemoryTotalKb[0].value #data['sysTmmStatMemoryUsedKb'] = sysTmmStatMemoryUsedKb[0].value data['sysStatClientPktsIn'] = sysStatClientPktsIn[0].value data['sysStatClientPktsOut'] = sysStatClientPktsOut[0].value data['sysStatServerPktsIn'] = sysStatServerPktsIn[0].value data['sysStatServerPktsOut'] = sysStatServerPktsOut[0].value data['sysStatClientBytesIn'] = sysStatClientBytesIn[0].value data['sysStatClientBytesOut'] = sysStatClientBytesOut[0].value data['sysStatServerBytesIn'] = sysStatServerBytesIn[0].value data['sysStatServerBytesOut'] = sysStatServerBytesOut[0].value data['sysStatClientMaxConns'] = sysStatClientMaxConns[0].value data['sysStatClientTotConns'] = sysStatClientTotConns[0].value data['sysStatClientCurConns'] = sysStatClientCurConns[0].value data['sysStatServerMaxConns'] = sysStatServerMaxConns[0].value data['sysStatServerTotConns'] = sysStatServerTotConns[0].value data['sysStatServerCurConns'] = sysStatServerCurConns[0].value data['sysCmFailoverStatusStatus'] = sysCmFailoverStatusStatus[0].value #data['sysMultiHostTotalKb'] = sysMultiHostTotalKb[0].value #data['sysMultiHostUsedKb'] = sysMultiHostUsedKb[0].value #data['sysMultiHostOtherMemoryTotalKb'] = sysMultiHostOtherMemoryTotalKb[0].value #data['sysMultiHostOtherMemoryUsedKb'] = sysMultiHostOtherMemoryUsedKb[0].value #data['sysMultiHostSwapTotalKb'] = sysMultiHostSwapTotalKb[0].value #data['sysMultiHostSwapUsedKb'] = sysMultiHostSwapUsedKb[0].value ## MEM/TRAFEGO DO EQUIP - EXPORTACAO DOS DADOS PARA O SPLUNK HEC print(snmp_ip + ' : SPLUNK MEM-TRAFEGO') event_data = '{"host":"' + splunk_host + '","source":"f5_equip_stats","event":' + json.dumps( data) + '}' send_to_splunk(spk_session, event_data)
from logging import basicConfig, DEBUG from easysnmp import Session basicConfig(level=DEBUG) s = Session(hostname="192.168.1.173:1161", version=2, use_modules=True) for var in s.bulkwalk(oids="1.3"): print(var)
session = Session(hostname=hostname, community=community, version=2) ####Code Start#### #SNMP List of interfaces "IfDescr" MIB snmp_session_querry = session.get('IF-MIB::ifNumber.0') snmp_session_output = '{oid}.{oid_index} {snmp_type} = {value}'.format( oid=snmp_session_querry.oid, oid_index=snmp_session_querry.oid_index, snmp_type=snmp_session_querry.snmp_type, value=snmp_session_querry.value) interface_counter_int = int(snmp_session_output.split()[3]) del snmp_session_querry, snmp_session_output snmp_session_querry = session.bulkwalk('IF-MIB::ifDescr') x = 0 interface_list = [0] for item in snmp_session_querry: interface_list[x] = '{oid}.{oid_index} = {value}'.format( oid=item.oid, oid_index=item.oid_index, value=item.value) ####print interface_list[x] temp_int_list = interface_list[x].rsplit('.') if len(temp_int_list) == 3: interface_list[x] = interface_list[x].rsplit( '.')[1] + "." + interface_list[x].rsplit('.')[2] if len(temp_int_list) == 2: interface_list[x] = interface_list[x].rsplit('.')[1] interface_list.append(0) ####print interface_list[x] x += 1