From 76f22887639896db193a5643e5f79ddad81920e8 Mon Sep 17 00:00:00 2001 From: Jesse White Date: Tue, 1 Aug 2023 09:16:48 -0400 Subject: [PATCH] NMS-15853: Improve logging for node lookups in BMP message processing. --- .../bmp/adapter/BmpPeerStatusAdapter.java | 14 +++++++++----- .../protocols/bmp/adapter/BmpTelemetryAdapter.java | 13 +++++++------ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpPeerStatusAdapter.java b/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpPeerStatusAdapter.java index d37568f6b128..5bb5f113508e 100644 --- a/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpPeerStatusAdapter.java +++ b/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpPeerStatusAdapter.java @@ -106,23 +106,27 @@ public void handleMessage(final TelemetryMessageLogEntry messageLogEntry, Optional exporterNodeId = this.interfaceToNodeCache.getFirstNodeId(messageLog.getLocation(), exporterAddress); if (!exporterNodeId.isPresent()) { - LOG.info("Unable to find node for exporter address: {}", exporterAddress); - if (message.hasBgpId()) { final String bgpId = InetAddressUtils.toIpAddrString(address(message.getBgpId())); + LOG.info("Unable to find node for exporter address: {} at location: {}. Trying to lookup by bgpId: {}", + exporterAddress, messageLog.getLocation(), bgpId); final List nodes = nodeDao.findNodeWithMetaData(contextKey.getContext(), contextKey.getKey(), bgpId); if (nodes.size() > 0) { + Integer effectiveId = nodes.get(0).getId(); + if (nodes.size() > 1) { - LOG.warn("More that one node match bgpId: {}", bgpId); + LOG.warn("More that one node match bgpId: {}. Using the first: {}", bgpId, effectiveId); } - exporterNodeId = Optional.of(nodes.get(0).getId()); + exporterNodeId = Optional.of(effectiveId); } else { - LOG.warn("Unable to find node for bgpId: {}", bgpId); + LOG.warn("Unable to find node for bgpId: {}. Message will be ignored.", bgpId); return; } } else { + LOG.info("Unable to find node for exporter address: {} at location: {}. Message has no bgpId. Message will be ignored.", + exporterAddress, messageLog.getLocation()); return; } } diff --git a/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpTelemetryAdapter.java b/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpTelemetryAdapter.java index c00e002111c1..a1c6b0727424 100644 --- a/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpTelemetryAdapter.java +++ b/features/telemetry/protocols/bmp/adapter/src/main/java/org/opennms/netmgt/telemetry/protocols/bmp/adapter/BmpTelemetryAdapter.java @@ -122,10 +122,10 @@ public Stream handleCollectionMessage(final TelemetryMes Optional exporterNodeId = this.interfaceToNodeCache.getFirstNodeId(messageLog.getLocation(), exporterAddress); if (!exporterNodeId.isPresent()) { - LOG.warn("Unable to find node for exporter address: {}", exporterAddress); - if (message.hasBgpId()) { final InetAddress bgpId = address(message.getBgpId()); + LOG.info("Unable to find node for exporter address: {} at location: {}. Trying to lookup by bgpId: {}", + exporterAddress, messageLog.getLocation(), bgpId); final ExporterInfo exporterInfo = transactionTemplate.execute(new TransactionCallback() { @Override @@ -133,19 +133,18 @@ public ExporterInfo doInTransaction(final TransactionStatus transactionStatus) { final List nodes = nodeDao.findNodeWithMetaData(contextKey.getContext(), contextKey.getKey(), InetAddressUtils.toIpAddrString(bgpId)); if (!nodes.isEmpty()) { + final OnmsNode firstNode = nodes.get(0); if (nodes.size() > 1) { - LOG.warn("More that one node match bgpId: {}", bgpId); + LOG.warn("More that one node match bgpId: {}. Using the first: {}", bgpId, firstNode.getId()); } - final OnmsNode firstNode = nodes.get(0); if (firstNode.containsInterface(bgpId)) { return new ExporterInfo(firstNode.getId(), bgpId); } else { return new ExporterInfo(firstNode.getId(), firstNode.getPrimaryInterface().getIpAddress()); } - } else { - LOG.warn("Unable to find node for bgpId: {}", bgpId); + LOG.warn("Unable to find node for bgpId: {}. Message will be ignored.", bgpId); return null; } } @@ -159,6 +158,8 @@ public ExporterInfo doInTransaction(final TransactionStatus transactionStatus) { exporterAddress = exporterInfo.nodeAddress; } else { + LOG.info("Unable to find node for exporter address: {} at location: {}. Message has no bgpId. Message will be ignored.", + exporterAddress, messageLog.getLocation()); return Stream.empty(); } }