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 44a45a85 authored by thl-cmk's avatar thl-cmk :flag_na:
Browse files

update project

parent 0f8e769d
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,8 @@
# 2022-04-29: added upper/lower prefix limits from wato
# added info if device is admin prefix limit capable (device_admin_limit)
# 2022-05-09: made item name configurable (don't use address-family/routing-instance/VRF)
# 2022-05-11: changed bgp_get_peer_entry to get proper parameters instead of Nontransparent list
# added remote_as to BgpPeerItem
#
# Example Agent Output:
......@@ -81,7 +83,22 @@ from cmk.base.plugins.agent_based.utils.bgp_peer import (
def parse_bgp_peer(string_table: StringTable) -> Optional[Dict[str, BgpPeer]]:
peer_table = {}
for entry in string_table:
bgp_peer = bgp_get_peer_entry(entry)
remote_addr, peer_state, admin_state, remote_as, in_updates, out_updates, in_messages, out_messages, \
fsm_established_transitions, fsm_established_time, in_update_elapsed_time = entry
bgp_peer = bgp_get_peer_entry(
remote_addr=remote_addr,
peer_state=peer_state,
admin_state=admin_state,
remote_as=remote_as,
in_updates=in_updates,
out_updates=out_updates,
in_messages=in_messages,
out_messages=out_messages,
fsm_established_transitions=fsm_established_transitions,
fsm_established_time=fsm_established_time,
in_update_elapsed_time=in_update_elapsed_time
)
if bgp_peer:
peer_table.update(bgp_peer)
return peer_table
......@@ -90,6 +107,7 @@ def parse_bgp_peer(string_table: StringTable) -> Optional[Dict[str, BgpPeer]]:
def discovery_bgp_peer(params, section: Dict[str, BgpPeer]) -> DiscoveryResult:
_item_parts = [
'remote_address',
'remote_as',
'address_family',
'routing_instance',
]
......@@ -200,6 +218,7 @@ register.snmp_section(
'7', # bgpPeerRemoteAddr
'2', # bgpPeerState
'3', # bgpPeerAdminStatus
'9', # bgpPeerRemoteAs
'10', # bgpPeerInUpdates
'11', # bgpPeerOutUpdates
'12', # bgpPeerInTotalMessages
......@@ -218,9 +237,10 @@ register.check_plugin(
discovery_function=discovery_bgp_peer,
discovery_default_parameters={
'build_item': [
# 'remote_address',
# 'address_family',
# 'routing_instance',
# 'remote_address',
'remote_as',
# 'address_family',
# 'routing_instance',
]
},
discovery_ruleset_name='discovery_bgp_peer',
......
......@@ -13,7 +13,8 @@
# 2022-04-29: added device_admin_limit
# 2022-04-30: code cleanup/streamlining
# 2022-05-09: added item to BgpPeer class, this is used in the discovery function
#
# 2022-05-11: changed bgp_get_peer_entry to get proper parameters instead of Nontransparent list
# added remote_as to BgpPeerItem
import requests
import json
......@@ -25,9 +26,11 @@ from dataclasses import dataclass
class BgpPeerItem(TypedDict):
remote_address: str
remote_as: str
address_family: str
routing_instance: str
@dataclass
class BgpPeer:
peer_state: int
......@@ -210,12 +213,19 @@ def bgp_get_ip_address_from_oid(oid_end):
return ip_address
def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]:
try:
remote_addr, peer_state, admin_state, in_updates, out_updates, in_messages, out_messages, \
fsm_established_transitions, fsm_established_time, in_update_elapsed_time = peer
except ValueError:
return
def bgp_get_peer_entry(
remote_addr: str,
remote_as: str,
peer_state: str,
admin_state: str,
fsm_established_transitions: str,
fsm_established_time: str,
in_updates: Optional[str],
out_updates: Optional[str],
in_messages: Optional[str],
out_messages: Optional[str],
in_update_elapsed_time: Optional[str],
) -> Optional[Dict[str, BgpPeer]]:
bgp_peer = BgpPeer(
peer_state=int(peer_state),
......@@ -227,6 +237,7 @@ def bgp_get_peer_entry(peer: List) -> Optional[Dict[str, BgpPeer]]:
metric_rate=[],
item={
'remote_address': remote_addr,
'remote_as': f'AS{remote_as}',
'address_family': '',
'routing_instance': '',
},
......
No preview for this file type
......@@ -20,7 +20,7 @@
'name': 'bgp_peer',
'num_files': 8,
'title': 'BGP Peer State Check',
'version': '20220509.v1.8',
'version': '20220511.v1.8',
'version.min_required': '2.0.0',
'version.packaged': '2021.09.20',
'version.usable_until': None}
\ No newline at end of file
......@@ -15,7 +15,7 @@
# 2022-04-02: added bgp neighbour states
# 2022-04-29: added upper/lower prefix limit
# 2022-05-09: added discovery rule set
#
# 2022-05-11: added remote_as to build_item
from cmk.gui.i18n import _
from cmk.gui.valuespec import (
......@@ -206,6 +206,7 @@ rulespec_registry.register(
def _valuespec_discovery_bgp_peer():
item_parts = [
# ('remote_address', 'Peer remote address'),
('remote_as', 'Remote AS'),
('address_family', 'Address family'),
('routing_instance', 'Routing instance/VRF'),
......@@ -224,7 +225,7 @@ def _valuespec_discovery_bgp_peer():
'instances/VRFs configured.'
),
choices=item_parts,
default_value=[],
default_value=['remote_as'],
)),
],
)
......
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