Collection of CheckMK checks (see https://checkmk.com/). All checks and plugins are provided as is. Absolutely no warranty. Send any comments to thl-cmk[at]outlook[dot]com

Skip to content
Snippets Groups Projects
Commit 58d1333a authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

Delete ospfv3_area

parent e5d21cb1
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/python
# -*- encoding: utf-8; py-indent-offset: 4 -*-
#
#
# OSPFv3 area status
#
# Author: Th.L.
# Date : 2019-01-01
#
# Monitor status of OSPFv3 areas
#
# sample snmpwalk
# .1.3.6.1.2.1.191.1.2.1.2.0 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.2.3 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.3.0 = Counter32: 44
# .1.3.6.1.2.1.191.1.2.1.3.3 = Counter32: 2
# .1.3.6.1.2.1.191.1.2.1.4.0 = Gauge32: 4
# .1.3.6.1.2.1.191.1.2.1.4.3 = Gauge32: 1
# .1.3.6.1.2.1.191.1.2.1.5.0 = Gauge32: 0
# .1.3.6.1.2.1.191.1.2.1.5.3 = Gauge32: 0
# .1.3.6.1.2.1.191.1.2.1.6.0 = Gauge32: 16
# .1.3.6.1.2.1.191.1.2.1.6.3 = Gauge32: 7
# .1.3.6.1.2.1.191.1.2.1.7.0 = Gauge32: 534138
# .1.3.6.1.2.1.191.1.2.1.7.3 = Gauge32: 352980
# .1.3.6.1.2.1.191.1.2.1.8.0 = INTEGER: 2
# .1.3.6.1.2.1.191.1.2.1.8.3 = INTEGER: 2
# .1.3.6.1.2.1.191.1.2.1.9.0 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.9.3 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.10.0 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.10.3 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.11.0 = INTEGER: 2
# .1.3.6.1.2.1.191.1.2.1.11.3 = INTEGER: 2
# .1.3.6.1.2.1.191.1.2.1.12.0 = INTEGER: 3
# .1.3.6.1.2.1.191.1.2.1.12.3 = INTEGER: 3
# .1.3.6.1.2.1.191.1.2.1.13.0 = Gauge32: 0
# .1.3.6.1.2.1.191.1.2.1.13.3 = Gauge32: 0
# .1.3.6.1.2.1.191.1.2.1.14.0 = Counter32: 0
# .1.3.6.1.2.1.191.1.2.1.14.3 = Counter32: 0
# .1.3.6.1.2.1.191.1.2.1.15.0 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.15.3 = INTEGER: 1
# .1.3.6.1.2.1.191.1.2.1.16.0 = INTEGER: 2
# .1.3.6.1.2.1.191.1.2.1.16.3 = INTEGER: 2
#
# sample info
# [
# [u'0', u'1', u'17', u'4', u'0', u'18', u'646544', u'2', u'1', u'2', u'3', u'0', u'0', u'1', u'2'],
# [u'1', u'1', u'3', u'1', u'0', u'7', u'317410', u'2', u'1', u'2', u'3', u'0', u'0', u'1', u'2']
# ]
#
factory_settings['ospfv3_area_default_levels'] = {
}
###########################################################################
#
# DATA Parser function
#
###########################################################################
def parse_ospfv3_area(info):
def ospf_area_impotasextern(st):
names = {'1': 'import External',
'2': 'import no External',
'3': 'import Nssa',
}
return names.get(st, st)
def ospf_area_summary(st):
names = {'1': 'no Area Summary',
'2': 'send Area Summary'}
return names.get(st, st)
def ospf_area_translatorrole(st):
names = {
'1': 'always',
'2': 'candidate',
}
return names.get(st, st)
def ospf_area_translatorrolestate(st):
names = {
'1': 'enabled',
'2': 'elected',
'3': 'disabled',
}
return names.get(st, st)
def ospf_area_submetrictype(st):
names = {
'1': 'ospfv3 Metric',
'2': 'comparable Cost',
'3': 'non Comparable',
}
return names.get(st, st)
def ospf_area_teeenabled(st):
names = {
'1': 'enabled',
}
return names.get(st, 'disabled')
areas = []
def get_area_type(AreaImportAsExtern, AreaSummary):
areatype = ''
if int(AreaImportAsExtern) == 1 and int(AreaSummary) == 2:
areatype = 'normal'
if int(AreaImportAsExtern) == 2 and int(AreaSummary) == 1:
areatype = 'totaly subby'
if int(AreaImportAsExtern) == 2 and int(AreaSummary) == 2:
areatype = 'stubby'
if int(AreaImportAsExtern) == 3 and int(AreaSummary) == 2:
areatype = 'NSSA'
if int(AreaImportAsExtern) == 3 and int(AreaSummary) == 1:
areatype = 'totaly NSSA'
return areatype
for area in info:
AreaId, AreaImportAsExtern, AreaSpfRuns, AreaBdrRtrCount, AreaAsBdrRtrCount, AreaScopeLsaCount, \
AreaScopeLsaCksumSum, AreaSummary, AreaStubMetric, AreaNssaTranslatorRole, AreaNssaTranslatorState, \
AreaNssaTranslatorStabInterval, AreaNssaTranslatorEvents, AreaStubMetricType, AreaTEEnabled, = area
areas.append({
'AreaId': int(AreaId),
# 'AreaImportAsExtern': ospf_area_impotasextern(AreaImportAsExtern),
'AreaSpfRuns': int(AreaSpfRuns),
'AreaBdrRtrCount': int(AreaBdrRtrCount),
'AreaAsBdrRtrCount':int(AreaAsBdrRtrCount),
'AreaScopeLsaCount': int(AreaScopeLsaCount),
'AreaScopeLsaCksumSum': int(AreaScopeLsaCksumSum),
# 'AreaSummary': ospf_area_summary(AreaSummary),
'AreaStubMetric': int(AreaStubMetric),
'AreaNssaTranslatorRole': ospf_area_translatorrole(AreaNssaTranslatorRole),
'AreaNssaTranslatorState': ospf_area_translatorrolestate(AreaNssaTranslatorState),
'AreaNssaTranslatorStabInterval': int(AreaNssaTranslatorStabInterval),
'AreaNssaTranslatorEvents': int(AreaNssaTranslatorEvents),
'AreaStubMetricType': ospf_area_submetrictype(AreaStubMetricType),
'AreaTEEnabled': ospf_area_teeenabled(AreaTEEnabled),
'AreaType': get_area_type(AreaImportAsExtern, AreaSummary)
})
return areas
###########################################################################
#
# INVENTORY function
#
###########################################################################
def inventory_ospfv3_area(parsed):
inventory = []
for area in parsed:
inventory.append((area.get('AreaId'), {}))
return inventory
###########################################################################
#
# CHECK function
#
###########################################################################
def check_ospfv3_area(item, params, parsed):
for area in parsed:
if area.get('AreaId') == item:
infotext = ''
perfdata = []
longoutput = ''
infotext += 'SPF runs: %s' % area.get('AreaSpfRuns')
infotext += ', LSAs: %s' % area.get('AreaScopeLsaCount')
infotext += ', ABRs: %s' % area.get('AreaBdrRtrCount')
infotext += ', ASBRs: %s' % area.get('AreaAsBdrRtrCount')
infotext += ', Area type: %s' % area.get('AreaType')
infotext += ', area scope LSA checksum: %s' % area.get('AreaScopeLsaCksumSum')
perfdata.append(['ospf_spfruns', area.get('AreaSpfRuns')])
perfdata.append(['ospf_bdrrtcount', area.get('AreaBdrRtrCount')])
perfdata.append(['ospf_asbdrrtrcount', area.get('AreaAsBdrRtrCount')])
perfdata.append(['ospf_scopelsacount', area.get('AreaScopeLsaCount')])
perfdata.append(['ospf_nssatranslatorevents', area.get('AreaNssaTranslatorEvents')])
# longoutput += '\nArea import as extern: %s' % area.get('AreaImportAsExtern')
# longoutput += '\nArea summary: %s' % area.get('AreaSummary')
longoutput += '\nArea stub metric: %s' % area.get('AreaStubMetric')
longoutput += '\nArea NSSA translator role: %s' % area.get('AreaNssaTranslatorRole')
longoutput += '\nArea NSSA translator state: %s' % area.get('AreaNssaTranslatorState')
longoutput += '\nArea NSSA trabslator stub interval: %s' % area.get('AreaNssaTranslatorStabInterval')
longoutput += '\nArea NSSA stub metric type: %s' % area.get('AreaStubMetricType')
longoutput += '\nArea Traffic engineering %s' % area.get('AreaTEEnabled')
yield 0, infotext + longoutput, perfdata
###########################################################################
#
# CHECK info
#
###########################################################################
check_info['ospfv3_area'] = {
'check_function' : check_ospfv3_area,
'inventory_function' : inventory_ospfv3_area,
'service_description' : 'OSPFv3 area %s',
'default_levels_variable': 'ospfv3_area_default_levels',
'parse_function' : parse_ospfv3_area,
'has_perfdata' : True,
'snmp_scan_function' : lambda oid: oid('.1.3.6.1.2.1.191.1.2.1.2.*') != None, # OSPFV3-MIB::ospfv3AreaImportAsExtern
'snmp_info' : ('.1.3.6.1.2.1.191.1.2.1', [ # OSPFV3-MIB::ospfv3AreaEntry
OID_END, # ospfv3AreaId
'2', # ospfv3AreaImportAsExtern
'3', # ospfv3AreaSpfRuns
'4', # ospfv3AreaBdrRtrCount
'5', # ospfv3AreaAsBdrRtrCount
'6', # ospfv3AreaScopeLsaCount
'7', # ospfv3AreaScopeLsaCksumSum
'8', # ospfv3AreaSummary
'10', # ospfv3AreaStubMetric
'11', # ospfv3AreaNssaTranslatorRole
'12', # ospfv3AreaNssaTranslatorState
'13', # ospfv3AreaNssaTranslatorStabInterval
'14', # ospfv3AreaNssaTranslatorEvents
'15', # ospfv3AreaStubMetricType
'16', # ospfv3AreaTEEnabled
# '9', # ospfv3AreaRowStatus
]),
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment