#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # License: GNU General Public License v2 # # Author: thl-cmk[at]outlook[dot]com # URL : https://thl-cmk.hopto.org # Date : 2017-12-26 # # Cisco BGP Peer metrics plugin # # 2018-05-25: cleanup # 2020-09-10: fixed typo FMS --> FSM (Thanks martin[dot]pechstein[at]posteo[dot]de) # 2021-03-27: rewrite for CMK 2.0 # from cmk.gui.i18n import _ from cmk.gui.plugins.metrics import ( metric_info, graph_info, perfometer_info ) ##################################################################################################################### # # define metrics for bgp peer perfdata # ##################################################################################################################### metric_info['cisco_bgp_peer_acceptedprefixes'] = { 'title': _('Prefixes accepted'), 'help': _('number of accepted prefixes'), 'unit': 'count', 'color': '11/a', } metric_info['cisco_bgp_peer_deniedprefixes'] = { 'title': _('Prefixes denied'), 'unit': '1/s', 'color': '21/a', } metric_info['cisco_bgp_peer_advertisedprefixes'] = { 'title': _('Prefixes advertised'), 'unit': '1/s', 'color': '31/a', } metric_info['cisco_bgp_peer_withdrawnprefixes'] = { 'title': _('Prefixes withdrawn'), 'unit': '1/s', 'color': '41/a', } metric_info['cisco_bgp_peer_suppressedprefixes'] = { 'title': _('Prefixes suppressed'), 'unit': '1/s', 'color': '12/a', } metric_info['cisco_bgp_peer_inupdates'] = { 'title': _('Updates received'), 'unit': '1/s', 'color': '22/a', } metric_info['cisco_bgp_peer_outupdates'] = { 'title': _('Updates send'), 'unit': '1/s', 'color': '32/a', } metric_info['cisco_bgp_peer_intotalmessages'] = { 'title': _('Total messages received'), 'unit': '1/s', 'color': '42/a', } metric_info['cisco_bgp_peer_outtotalmessages'] = { 'title': _('Total messages send'), 'unit': '1/s', 'color': '13/a', } metric_info['cisco_bgp_peer_fsmestablishedtransitions'] = { 'title': _('FSM transitions'), 'unit': 'count', 'color': '23/a', } metric_info['cisco_bgp_peer_fsmestablishedtime'] = { 'title': _('FSM last change'), 'unit': 's', 'color': '26/a', } metric_info['cisco_bgp_peer_inupdateelapsedtime'] = { 'title': _('Last update received'), 'unit': 's', 'color': '43/a', } ###################################################################################################################### # # how to graph perdata for bgp peer # ###################################################################################################################### graph_info['cisco_bgp_peer.prefixes_accepted']={ 'title': _('Accepted Prefixes'), 'metrics': [ ('cisco_bgp_peer_acceptedprefixes', 'line'), ], 'scalars': [ ('cisco_bgp_peer_acceptedprefixes:crit', _('crit')), ('cisco_bgp_peer_acceptedprefixes:warn', _('warn')), ], } graph_info['cisco_bgp_peer.prefixes_per_second']={ 'title': _('Prefixes/s'), 'metrics': [ ('cisco_bgp_peer_deniedprefixes', 'line'), ('cisco_bgp_peer_advertisedprefixes', 'line'), ('cisco_bgp_peer_withdrawnprefixes', 'line'), ('cisco_bgp_peer_suppressedprefixes', 'line'), ], } graph_info['cisco_bgp_peer.updates_in_out']={ 'title': _('Updates'), 'metrics': [ ('cisco_bgp_peer_inupdates', 'area'), ('cisco_bgp_peer_outupdates', '-area'), ] } graph_info['cisco_bgp_peer.messages_in_out']={ 'title': _('Total messages'), 'metrics': [ ('cisco_bgp_peer_intotalmessages', 'area'), ('cisco_bgp_peer_outtotalmessages', '-area'), ] } graph_info['cisco_bgp_peer.fms_transitions_from_to']={ 'title': _('FSM transitions from/to established'), 'metrics': [ ('cisco_bgp_peer_fsmestablishedtransitions', 'line'), ], } graph_info['cisco_bgp_peer.fms_transitions_last_change']={ 'title': _('FSM established last change'), 'metrics': [ ('cisco_bgp_peer_fsmestablishedtime', 'line'), ] } graph_info['cisco_bgp_peer.time_since_last_update']={ 'title': _('Time since last update received'), 'metrics': [ ('cisco_bgp_peer_inupdateelapsedtime', 'line'), ] } ###################################################################################################################### # # define perf-o-meter for bgp peer uptime + prefixes accepted/advertised # ###################################################################################################################### perfometer_info.append(('stacked', [ { 'type': 'logarithmic', 'metric': 'cisco_bgp_peer_fsmestablishedtime', 'half_value': 2592000.0, # ome month 'exponent': 2, }, { 'type': 'logarithmic', 'metric': 'cisco_bgp_peer_acceptedprefixes', 'half_value': 500000.0, 'exponent': 2, } ]))