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