From e1593aa681c87212909ea1cd53315d5a82193486 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Wed, 15 Sep 2021 22:49:58 +0200 Subject: [PATCH] update project --- ospf_neighbor.mkp | Bin 7799 -> 8337 bytes web/plugins/wato/ospf_neighbor.py | 72 ++++++++++++++++++++++++++++-- 2 files changed, 69 insertions(+), 3 deletions(-) diff --git a/ospf_neighbor.mkp b/ospf_neighbor.mkp index bb13a13727b2dbf2cb47615687ef6363353c9f83..a7f78381a895badf1114b271030ea17e8e05a63e 100644 GIT binary patch literal 8337 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 delta 7757 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 TZXgm2SzrDS;ws)30LTCUi6;@$ diff --git a/web/plugins/wato/ospf_neighbor.py b/web/plugins/wato/ospf_neighbor.py index 634ab3a..2beee58 100644 --- a/web/plugins/wato/ospf_neighbor.py +++ b/web/plugins/wato/ospf_neighbor.py @@ -33,51 +33,116 @@ def _parameter_valuespec_ospf_neighbor(): ('state_not_found', MonitoringState( title=_('State to report if neighbor not found'), - help=_('Monitoring state if the neighbor not found in the SNMP data.'), + help=_('Default monitoring state if the neighbor not found in the SNMP data. Default monitoring ' + 'state is "UNKNOWN"'), default_value=3, )), ('neighborstate', Dictionary( title=_('State to report for OSPF neighbor state'), + help=_('Map each OSPF state to a CheckMK monitoring state'), elements=[ ('1', MonitoringState( title=_('1 - down'), + help=_('This is the first OSPF neighbor state. It means that no information (hellos) has ' + 'been received from this neighbor, but hello packets can still be sent to the ' + 'neighbor in this state. During the fully adjacent neighbor state, if a router ' + 'doesn\'t receive hello packet from a neighbor within the RouterDeadInterval time ' + '(RouterDeadInterval = 4*HelloInterval by default) or if the manually configured ' + 'neighbor is being removed from the configuration, then the neighbor state changes ' + 'from Full to Down. Default monitoring state is "CRIT"'), default_value=2, )), ('2', MonitoringState( title=_('2 - attempt'), + help=_('This state is only valid for manually configured neighbors in an NBMA environment. ' + 'In Attempt state, the router sends unicast hello packets every poll interval to the ' + 'neighbor, from which hellos have not been received within the dead interval. ' + 'Default monitoring state is "WARN"'), default_value=1, )), ('3', MonitoringState( title=_('3 - init'), + help=_('This state specifies that the router has received a hello packet from its neighbor, ' + 'but the receiving router\'s ID was not included in the hello packet. When a router ' + 'receives a hello packet from a neighbor, it should list the sender\'s router ID in ' + 'its hello packet as an acknowledgment that it received a valid hello packet. ' + 'Default monitoring state is "WARN"'), default_value=1, )), ('4', MonitoringState( title=_('4 - twoWay'), + help=_('This state designates that bi-directional communication has been established between ' + 'two routers. Bi-directional means that each router has seen the other\'s hello ' + 'packet. This state is attained when the router receiving the hello packet sees its ' + 'own Router ID within the received hello packet\'s neighbor field. At this state, a ' + 'router decides whether to become adjacent with this neighbor. On broadcast media ' + 'and non-broadcast multiaccess networks, a router becomes full only with the ' + 'designated router (DR) and the backup designated router (BDR); it stays in the 2-way ' + 'state with all other neighbors. On Point-to-point and Point-to-multipoint networks, ' + 'a router becomes full with all connected routers. At the end of this stage, the DR ' + 'and BDR for broadcast and non-broadcast multiacess networks are elected. For more ' + 'information on the DR election process, refer to DR Election. Note: Receiving a ' + 'Database Descriptor (DBD) packet from a neighbor in the init state will also a cause ' + 'a transition to 2-way state. Default monitoring state is "OK"'), default_value=0, )), ('5', MonitoringState( title=_('5 - exchangeStart'), + help=_('Once the DR and BDR are elected, the actual process of exchanging link state ' + 'information can start between the routers and their DR and BDR. In this state, ' + 'the routers and their DR and BDR establish a master-slave relationship and choose ' + 'the initial sequence number for adjacency formation. The router with the higher ' + 'router ID becomes the master and starts the exchange, and as such, is the only ' + 'router that can increment the sequence number. Note that one would logically ' + 'conclude that the DR/BDR with the highest router ID will become the master during ' + 'this process of master-slave relation. Remember that the DR/BDR election might be ' + 'purely by virtue of a higher priority configured on the router instead of highest ' + 'router ID. Thus, it is possible that a DR plays the role of slave. And also note ' + 'that master/slave election is on a per-neighbor basis. Default monitoring state ' + 'is "WARN"'), default_value=1, )), ('6', MonitoringState( title=_('6 - exchange'), + help=_('In the exchange state, OSPF routers exchange database descriptor (DBD) packets. ' + 'Database descriptors contain link-state advertisement (LSA) headers only and ' + 'describe the contents of the entire link-state database. Each DBD packet has a ' + 'sequence number which can be incremented only by master which is explicitly ' + 'acknowledged by slave. Routers also send link-state request packets and link-state ' + 'update packets (which contain the entire LSA) in this state. The contents of the ' + 'DBD received are compared to the information contained in the routers link-state ' + 'database to check if new or more current link-state information is available with ' + 'the neighbor. Default monitoring state is "WARN"'), default_value=1, )), ('7', MonitoringState( title=_('7 - loading'), + help=_('In this state, the actual exchange of link state information occurs. Based on the ' + 'information provided by the DBDs, routers send link-state request packets. The ' + 'neighbor then provides the requested link-state information in link-state update ' + 'packets. During the adjacency, if a router receives an outdated or missing LSA, it ' + 'requests that LSA by sending a link-state request packet. All link-state update ' + 'packets are acknowledged. Default monitoring state is "WARN"'), default_value=1, )), ('8', MonitoringState( title=_('8 - full'), + help=_('In this state, routers are fully adjacent with each other. All the router and ' + 'network LSAs are exchanged and the routers databases are fully synchronized. Full ' + 'is the normal state for an OSPF router. If a router is stuck in another state, ' + 'it\'s an indication that there are problems in forming adjacencies. The only ' + 'exception to this is the 2-way state, which is normal in a broadcast network. ' + 'Routers achieve the full state with their DR and BDR only. Neighbors always see ' + 'each other as 2-way. Default monitoring state is "OK"'), default_value=0, )), ]) @@ -98,14 +163,15 @@ def _parameter_valuespec_ospf_neighbor(): title=_('OSPF Neighbor Alias'), help=_('You can configure an individual alias here for the OSPF Neighbor matching ' 'the text configured in the "OSPF Neighbor IP address" field. The alias will ' - 'be shown in the infotext'), + 'be shown in the check info (i.e. [your alias])'), allow_empty=False, ), MonitoringState( default_value=2, title=_('State if not found'), help=_('You can configure an individual state if the OSPF Neighbor matching the text ' - 'configured in the "OSPF Neighbor IP address" field is not found') + 'configured in the "OSPF Neighbor IP address" field is not found. ' + 'Default monitoring state is "CRIT".') )]), add_label=_('Add OSPF Neighbor'), movable=False, -- GitLab