diff --git a/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/extension/IProtocolExtension.java b/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/extension/IProtocolExtension.java
index 180bc8649..b9fc81214 100644
--- a/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/extension/IProtocolExtension.java
+++ b/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/extension/IProtocolExtension.java
@@ -89,8 +89,9 @@ public interface IProtocolExtension {
* telemetry manager.
*
* @param telemetryManager The telemetry manager to use for monitoring.
+ * @return Optional.of(true) if the protocol check succeeds, Optional.of(false) otherwise.
*/
- void checkProtocol(TelemetryManager telemetryManager);
+ Optional checkProtocol(TelemetryManager telemetryManager);
/**
* Executes a source operation based on the given source and configuration within the telemetry manager.
@@ -141,4 +142,11 @@ public interface IProtocolExtension {
*/
IConfiguration buildConfiguration(String configurationType, JsonNode jsonNode, UnaryOperator decrypt)
throws InvalidConfigurationException;
+
+ /**
+ * Returns the identifier for protocol extension.
+ *
+ * @return The protocol identifier as a string.
+ */
+ String getIdentifier();
}
diff --git a/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategy.java b/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategy.java
index de980b896..c13afd0f7 100644
--- a/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategy.java
+++ b/metricshub-engine/src/main/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategy.java
@@ -24,11 +24,11 @@
import java.util.List;
import lombok.Builder;
import lombok.NonNull;
-import lombok.extern.slf4j.Slf4j;
import org.sentrysoftware.metricshub.engine.client.ClientsExecutor;
import org.sentrysoftware.metricshub.engine.extension.ExtensionManager;
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.AbstractStrategy;
+import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
/**
@@ -42,7 +42,6 @@
* responding or not.
*
*/
-@Slf4j
public class ProtocolHealthCheckStrategy extends AbstractStrategy {
/**
@@ -78,14 +77,23 @@ public ProtocolHealthCheckStrategy(
@Override
public void run() {
- // Retrieve the hostname
- final String hostname = telemetryManager.getHostConfiguration().getHostname();
-
- log.info("Hostname {} - Performing protocol health check.", hostname);
-
// Call the extensions to check the protocol health
final List protocolExtensions = extensionManager.findProtocolCheckExtensions(telemetryManager);
- protocolExtensions.forEach(protocolExtension -> protocolExtension.checkProtocol(telemetryManager));
+ // CHECKSTYLE:OFF
+ protocolExtensions.forEach(protocolExtension ->
+ protocolExtension
+ .checkProtocol(telemetryManager)
+ .ifPresent(isUp ->
+ new MetricFactory()
+ .collectNumberMetric(
+ telemetryManager.getEndpointHostMonitor(),
+ "metricshub.host.up{protocol=\"" + protocolExtension.getIdentifier() + "\"}",
+ isUp ? UP : DOWN,
+ telemetryManager.getStrategyTime()
+ )
+ )
+ );
+ // CHECKSTYLE:ON
}
@Override
diff --git a/metricshub-engine/src/test/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategyTest.java b/metricshub-engine/src/test/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategyTest.java
index 0d3793134..a57db6c28 100644
--- a/metricshub-engine/src/test/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategyTest.java
+++ b/metricshub-engine/src/test/java/org/sentrysoftware/metricshub/engine/strategy/collect/ProtocolHealthCheckStrategyTest.java
@@ -1,8 +1,6 @@
package org.sentrysoftware.metricshub.engine.strategy.collect;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
import static org.sentrysoftware.metricshub.engine.constants.Constants.HOSTNAME;
@@ -82,8 +80,6 @@ void testCheckHealth() throws Exception {
.when(protocolExtensionMock)
.isValidConfiguration(telemetryManager.getHostConfiguration().getConfigurations().get(TestConfiguration.class));
- doNothing().when(protocolExtensionMock).checkProtocol(any(TelemetryManager.class));
-
// Create a new protocol health check strategy
final ProtocolHealthCheckStrategy healthCheckStrategy = new ProtocolHealthCheckStrategy(
telemetryManager,
diff --git a/metricshub-http-extension/src/main/java/org/sentrysoftware/metricshub/extension/http/HttpExtension.java b/metricshub-http-extension/src/main/java/org/sentrysoftware/metricshub/extension/http/HttpExtension.java
index 02303e40d..576d393bd 100644
--- a/metricshub-http-extension/src/main/java/org/sentrysoftware/metricshub/extension/http/HttpExtension.java
+++ b/metricshub-http-extension/src/main/java/org/sentrysoftware/metricshub/extension/http/HttpExtension.java
@@ -28,6 +28,7 @@
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.UnaryOperator;
import lombok.extern.slf4j.Slf4j;
@@ -41,8 +42,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
import org.sentrysoftware.metricshub.extension.http.utils.HttpRequest;
@@ -53,6 +52,11 @@
@Slf4j
public class HttpExtension implements IProtocolExtension {
+ /**
+ * The identifier for the Http protocol.
+ */
+ private static final String IDENTIFIER = "http";
+
private HttpRequestExecutor httpRequestExecutor;
/**
@@ -62,21 +66,6 @@ public HttpExtension() {
httpRequestExecutor = new HttpRequestExecutor();
}
- /**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * Up metric name format that will be saved by the metric factory
- */
- public static final String HTTP_UP_METRIC = "metricshub.host.up{protocol=\"http\"}";
-
@Override
public boolean isValidConfiguration(IConfiguration configuration) {
return configuration instanceof HttpConfiguration;
@@ -98,13 +87,10 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
final String hostname = telemetryManager.getHostConfiguration().getHostname();
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Create and set the HTTP result to null
String httpResult = null;
@@ -116,9 +102,10 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the HTTP health check if there is not an HTTP configuration
if (httpConfiguration == null) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info("Hostname {} - Checking HTTP protocol status. Sending GET request to '/'.", hostname);
// Execute HTTP test request
@@ -142,16 +129,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
);
}
- // Generate a metric from the Http result
- // CHECKSTYLE:OFF
- new MetricFactory()
- .collectNumberMetric(
- hostMonitor,
- HTTP_UP_METRIC,
- httpResult != null ? UP : DOWN,
- telemetryManager.getStrategyTime()
- );
- // CHECKSTYLE:ON
+ return Optional.of(httpResult != null);
}
@Override
@@ -188,7 +166,7 @@ public CriterionTestResult processCriterion(
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "http".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -233,4 +211,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-http-extension/src/test/java/org/sentrysoftware/metricshub/extension/http/HttpExtensionTest.java b/metricshub-http-extension/src/test/java/org/sentrysoftware/metricshub/extension/http/HttpExtensionTest.java
index 54c786b85..070d13470 100644
--- a/metricshub-http-extension/src/test/java/org/sentrysoftware/metricshub/extension/http/HttpExtensionTest.java
+++ b/metricshub-http-extension/src/test/java/org/sentrysoftware/metricshub/extension/http/HttpExtensionTest.java
@@ -11,7 +11,6 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
-import static org.sentrysoftware.metricshub.extension.http.HttpExtension.HTTP_UP_METRIC;
import com.fasterxml.jackson.databind.node.BooleanNode;
import com.fasterxml.jackson.databind.node.IntNode;
@@ -21,6 +20,7 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -108,9 +108,10 @@ void testCheckHttpDownHealth() {
.when(httpRequestExecutorMock)
.executeHttp(any(HttpRequest.class), anyBoolean(), any(TelemetryManager.class));
- httpExtension.checkProtocol(telemetryManager);
+ Optional result = httpExtension.checkProtocol(telemetryManager);
- assertEquals(HttpExtension.DOWN, telemetryManager.getEndpointHostMonitor().getMetric(HTTP_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
@Test
@@ -122,9 +123,10 @@ void testCheckHttpUpHealth() {
.when(httpRequestExecutorMock)
.executeHttp(any(HttpRequest.class), anyBoolean(), any(TelemetryManager.class));
- httpExtension.checkProtocol(telemetryManager);
+ Optional result = httpExtension.checkProtocol(telemetryManager);
- assertEquals(HttpExtension.UP, telemetryManager.getEndpointHostMonitor().getMetric(HTTP_UP_METRIC).getValue());
+ // Assert the result
+ assertTrue(result.get());
}
@Test
diff --git a/metricshub-ipmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/ipmi/IpmiExtension.java b/metricshub-ipmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/ipmi/IpmiExtension.java
index ef4306f23..c0ce802b2 100644
--- a/metricshub-ipmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/ipmi/IpmiExtension.java
+++ b/metricshub-ipmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/ipmi/IpmiExtension.java
@@ -28,6 +28,7 @@
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.UnaryOperator;
import lombok.extern.slf4j.Slf4j;
@@ -44,29 +45,17 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
@Slf4j
public class IpmiExtension implements IProtocolExtension {
- private IpmiRequestExecutor ipmiRequestExecutor = new IpmiRequestExecutor();
-
/**
- * Protocol up status value '1.0'
+ * The identifier for the Ipmi protocol.
*/
- public static final Double UP = 1.0;
+ private static final String IDENTIFIER = "ipmi";
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * IPMI Up metric
- */
- public static final String IPMI_UP_METRIC = "metricshub.host.up{protocol=\"ipmi\"}";
+ private IpmiRequestExecutor ipmiRequestExecutor = new IpmiRequestExecutor();
@Override
public boolean isValidConfiguration(IConfiguration configuration) {
@@ -89,13 +78,10 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
String hostname = telemetryManager.getHostConfiguration().getHostname();
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Create and set the IPMI result to null
String ipmiResult = null;
@@ -107,9 +93,10 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the IPMI health check if there is not an IPMI configuration
if (ipmiConfiguration == null) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info(
"Hostname {} - Checking IPMI protocol status. Sending a IPMI 'Get Chassis Status As String Result' request.",
hostname
@@ -135,17 +122,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
e
);
}
-
- // Generate a metric from the IPMI result
- // CHECKSTYLE:OFF
- new MetricFactory()
- .collectNumberMetric(
- hostMonitor,
- IPMI_UP_METRIC,
- ipmiResult != null ? UP : DOWN,
- telemetryManager.getStrategyTime()
- );
- // CHECKSTYLE:ON
+ return Optional.of(ipmiResult != null);
}
@Override
@@ -226,7 +203,7 @@ public CriterionTestResult processCriterion(
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "ipmi".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -271,4 +248,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-ipmi-extension/src/test/java/org/sentrysoftware/IpmiExtensionTest.java b/metricshub-ipmi-extension/src/test/java/org/sentrysoftware/IpmiExtensionTest.java
index cf6714a3a..0977a9512 100644
--- a/metricshub-ipmi-extension/src/test/java/org/sentrysoftware/IpmiExtensionTest.java
+++ b/metricshub-ipmi-extension/src/test/java/org/sentrysoftware/IpmiExtensionTest.java
@@ -8,9 +8,6 @@
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
-import static org.sentrysoftware.metricshub.engine.strategy.collect.ProtocolHealthCheckStrategy.DOWN;
-import static org.sentrysoftware.metricshub.engine.strategy.collect.ProtocolHealthCheckStrategy.UP;
-import static org.sentrysoftware.metricshub.extension.ipmi.IpmiExtension.IPMI_UP_METRIC;
import com.fasterxml.jackson.databind.node.BooleanNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
@@ -18,6 +15,7 @@
import com.fasterxml.jackson.databind.node.TextNode;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
@@ -106,9 +104,9 @@ void testCheckIpmiUpHealth() {
.thenReturn(SUCCESS_RESPONSE);
// Start the IPMI Health Check strategy
- ipmiExtension.checkProtocol(telemetryManager);
+ Optional result = ipmiExtension.checkProtocol(telemetryManager);
- assertEquals(UP, telemetryManager.getEndpointHostMonitor().getMetric(IPMI_UP_METRIC).getValue());
+ assertTrue(result.get());
}
}
@@ -123,9 +121,9 @@ void testCheckIpmiDownHealth() {
.thenReturn(null);
// Start the IPMI Health Check strategy
- ipmiExtension.checkProtocol(telemetryManager);
+ Optional result = ipmiExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(IPMI_UP_METRIC).getValue());
+ assertFalse(result.get());
}
}
diff --git a/metricshub-oscommand-extension/src/main/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtension.java b/metricshub-oscommand-extension/src/main/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtension.java
index 0a369445d..296cc3760 100644
--- a/metricshub-oscommand-extension/src/main/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtension.java
+++ b/metricshub-oscommand-extension/src/main/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtension.java
@@ -28,6 +28,7 @@
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.UnaryOperator;
import lombok.extern.slf4j.Slf4j;
@@ -43,7 +44,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
import org.sentrysoftware.metricshub.extension.oscommand.ipmi.UnixIpmiCriterionProcessor;
import org.sentrysoftware.metricshub.extension.oscommand.ipmi.UnixIpmiSourceProcessor;
@@ -70,11 +70,6 @@ public class OsCommandExtension implements IProtocolExtension {
*/
public static final Double DOWN = 0.0;
- /**
- * Up metric name format that will be saved by the metric factory
- */
- public static final String SSH_UP_METRIC = "metricshub.host.up{protocol=\"ssh\"}";
-
/**
* SSH test command to execute
*/
@@ -104,7 +99,7 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Create and set the SSH result to null
Double sshResult = UP;
@@ -119,9 +114,10 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the SSH health check if there is not any SSH configuration
if (sshConfiguration == null || !telemetryManager.getHostProperties().isMustCheckSshStatus()) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info("Hostname {} - Checking SSH protocol status. Sending an SSH 'echo test' command.", hostname);
// Execute Local test
@@ -133,16 +129,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
sshResult = remoteSshTest(hostname, sshResult, sshConfiguration);
}
- // Generate a metric from the SSH result
- // CHECKSTYLE:OFF
- new MetricFactory()
- .collectNumberMetric(
- telemetryManager.getEndpointHostMonitor(),
- SSH_UP_METRIC,
- sshResult,
- telemetryManager.getStrategyTime()
- );
- // CHECKSTYLE:ON
+ return Optional.of(sshResult == UP);
}
@Override
@@ -318,4 +305,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return "ssh";
+ }
}
diff --git a/metricshub-oscommand-extension/src/test/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtensionTest.java b/metricshub-oscommand-extension/src/test/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtensionTest.java
index b486536c2..b026698d5 100644
--- a/metricshub-oscommand-extension/src/test/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtensionTest.java
+++ b/metricshub-oscommand-extension/src/test/java/org/sentrysoftware/metricshub/extension/oscommand/OsCommandExtensionTest.java
@@ -12,9 +12,6 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mockStatic;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
-import static org.sentrysoftware.metricshub.engine.strategy.collect.ProtocolHealthCheckStrategy.DOWN;
-import static org.sentrysoftware.metricshub.engine.strategy.collect.ProtocolHealthCheckStrategy.UP;
-import static org.sentrysoftware.metricshub.extension.oscommand.OsCommandExtension.SSH_UP_METRIC;
import com.fasterxml.jackson.databind.node.BooleanNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
@@ -26,6 +23,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
@@ -325,9 +323,10 @@ void testCheckSshHealthLocally() {
.thenReturn(SUCCESS_RESPONSE);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(UP, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertTrue(result.get());
}
try (MockedStatic staticOsCommandHelper = Mockito.mockStatic(OsCommandService.class)) {
@@ -336,9 +335,10 @@ void testCheckSshHealthLocally() {
.thenReturn(null);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
}
@@ -360,9 +360,10 @@ void testCheckSshUpHealthRemotely() {
.thenReturn(SUCCESS_RESPONSE);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(UP, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertTrue(result.get());
}
try (MockedStatic staticOsCommandHelper = Mockito.mockStatic(OsCommandService.class)) {
@@ -373,9 +374,10 @@ void testCheckSshUpHealthRemotely() {
.thenReturn(null);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
}
@@ -402,9 +404,10 @@ void testCheckSshUpHealthBothLocallyAndRemotely() {
.thenReturn(SUCCESS_RESPONSE);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(UP, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertTrue(result.get());
}
// Local commands not working
@@ -420,9 +423,10 @@ void testCheckSshUpHealthBothLocallyAndRemotely() {
.thenReturn(null);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
// remote command not working
try (MockedStatic staticOsCommandHelper = Mockito.mockStatic(OsCommandService.class)) {
@@ -437,9 +441,10 @@ void testCheckSshUpHealthBothLocallyAndRemotely() {
.thenReturn(SUCCESS_RESPONSE);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
// Both local and remote commands not working, but not throwing exceptions
@@ -454,10 +459,10 @@ void testCheckSshUpHealthBothLocallyAndRemotely() {
.when(() -> OsCommandService.runLocalCommand(anyString(), anyLong(), any()))
.thenReturn(null);
- // Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
}
@@ -472,9 +477,10 @@ void testCheckSshNoHealthWhenMustCheckFalse() {
telemetryManager.getHostProperties().setOsCommandExecutesRemotely(true);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- assertNull(telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC));
+ // Assert the result
+ assertEquals(Optional.empty(), result);
}
@Test
@@ -488,10 +494,10 @@ void testCheckSshNoHealthWhenNoConfiguration() {
telemetryManager.getHostProperties().setOsCommandExecutesRemotely(true);
// Start the SSH Health Check strategy
- osCommandExtension.checkProtocol(telemetryManager);
+ Optional result = osCommandExtension.checkProtocol(telemetryManager);
- // make sure that SSH health check is not performed if an SSH config is not present
- assertNull(telemetryManager.getEndpointHostMonitor().getMetric(SSH_UP_METRIC));
+ // Assert the result
+ assertEquals(Optional.empty(), result);
}
@Test
diff --git a/metricshub-ping-extension/src/main/java/org/sentrysoftware/metricshub/extension/ping/PingExtension.java b/metricshub-ping-extension/src/main/java/org/sentrysoftware/metricshub/extension/ping/PingExtension.java
index 720462451..65606bd3f 100644
--- a/metricshub-ping-extension/src/main/java/org/sentrysoftware/metricshub/extension/ping/PingExtension.java
+++ b/metricshub-ping-extension/src/main/java/org/sentrysoftware/metricshub/extension/ping/PingExtension.java
@@ -28,6 +28,7 @@
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.UnaryOperator;
import lombok.extern.slf4j.Slf4j;
@@ -38,8 +39,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
/**
@@ -49,27 +48,17 @@
@Slf4j
public class PingExtension implements IProtocolExtension {
+ /**
+ * The identifier for ping.
+ */
+ private static final String IDENTIFIER = "ping";
+
private PingRequestExecutor pingRequestExecutor;
public PingExtension() {
pingRequestExecutor = new PingRequestExecutor();
}
- /**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * ICMP Ping Up metric name format that will be saved by the metric factory
- */
- public static final String PING_UP_METRIC = "metricshub.host.up{protocol=\"ping\"}";
-
@Override
public boolean isValidConfiguration(IConfiguration configuration) {
return configuration instanceof PingConfiguration;
@@ -91,13 +80,10 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
final String hostname = telemetryManager.getHostConfiguration().getHostname();
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Create and set the Ping result to null
boolean pingResult = false;
@@ -109,8 +95,10 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the Ping check if there is not a Ping configuration
if (pingConfiguration == null) {
- return;
+ return Optional.empty();
}
+
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info("Hostname {} - Checking Ping protocol status. Sending a ping to '/'.", hostname);
// Execute a Ping request
@@ -119,12 +107,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
} catch (Exception e) {
log.debug("Hostname {} - Checking Ping protocol status. Exception when performing a Ping request: ", hostname, e);
}
-
- // Generate a metric from the Ping result
- // CHECKSTYLE:OFF
- new MetricFactory()
- .collectNumberMetric(hostMonitor, PING_UP_METRIC, pingResult ? UP : DOWN, telemetryManager.getStrategyTime());
- // CHECKSTYLE:ON
+ return Optional.of(pingResult);
}
@Override
@@ -143,7 +126,7 @@ public CriterionTestResult processCriterion(
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "ping".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -178,4 +161,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-ping-extension/src/test/java/org/sentrysoftware/metricshub/extension/ping/PingExtensionTest.java b/metricshub-ping-extension/src/test/java/org/sentrysoftware/metricshub/extension/ping/PingExtensionTest.java
index 733b38787..6845afd8c 100644
--- a/metricshub-ping-extension/src/test/java/org/sentrysoftware/metricshub/extension/ping/PingExtensionTest.java
+++ b/metricshub-ping-extension/src/test/java/org/sentrysoftware/metricshub/extension/ping/PingExtensionTest.java
@@ -7,7 +7,6 @@
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
-import static org.sentrysoftware.metricshub.extension.ping.PingExtension.PING_UP_METRIC;
import com.fasterxml.jackson.databind.node.IntNode;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
@@ -16,6 +15,7 @@
import java.net.UnknownHostException;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -92,9 +92,10 @@ void testCheckPingDown() throws UnknownHostException {
// Mock false protocol health check response
doReturn(false).when(pingRequestExecutorMock).ping(anyString(), anyInt());
- pingExtension.checkProtocol(telemetryManager);
+ Optional result = pingExtension.checkProtocol(telemetryManager);
- assertEquals(PingExtension.DOWN, telemetryManager.getEndpointHostMonitor().getMetric(PING_UP_METRIC).getValue());
+ // Assert the result
+ assertFalse(result.get());
}
@Test
@@ -104,9 +105,10 @@ void testCheckPingUp() throws UnknownHostException {
// Mock ICMP Ping protocol health check response
doReturn(true).when(pingRequestExecutorMock).ping(anyString(), anyInt());
- pingExtension.checkProtocol(telemetryManager);
+ Optional result = pingExtension.checkProtocol(telemetryManager);
- assertEquals(PingExtension.UP, telemetryManager.getEndpointHostMonitor().getMetric(PING_UP_METRIC).getValue());
+ // Assert the result
+ assertTrue(result.get());
}
@Test
diff --git a/metricshub-snmp-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtension.java b/metricshub-snmp-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtension.java
index 8b2826561..76e0a608f 100644
--- a/metricshub-snmp-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtension.java
+++ b/metricshub-snmp-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtension.java
@@ -28,6 +28,7 @@
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.function.UnaryOperator;
@@ -45,8 +46,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
import org.sentrysoftware.metricshub.extension.snmp.detection.SnmpGetCriterionProcessor;
import org.sentrysoftware.metricshub.extension.snmp.detection.SnmpGetNextCriterionProcessor;
@@ -72,24 +71,14 @@ public SnmpExtension() {
}
/**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * Up metric name format that will be saved by the metric factory
+ * The SNMP OID value to use in the health check test
*/
- static final String SNMP_UP_METRIC = "metricshub.host.up{protocol=\"snmp\"}";
+ public static final String SNMP_OID = "1.3.6.1";
/**
- * The SNMP OID value to use in the health check test
+ * The identifier for the Snmp protocol.
*/
- public static final String SNMP_OID = "1.3.6.1";
+ private static final String IDENTIFIER = "snmp";
@Override
public boolean isValidConfiguration(IConfiguration configuration) {
@@ -107,13 +96,10 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
final String hostname = telemetryManager.getHostConfiguration().getHostname();
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Create and set the SNMP result to null
String snmpResult = null;
@@ -125,9 +111,10 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the SNMP health check if there is not an SNMP configuration
if (snmpConfiguration == null) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info("Hostname {} - Checking SNMP protocol status. Sending Get Next request on {}.", hostname, SNMP_OID);
// Execute SNMP test command
@@ -141,17 +128,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
e
);
}
-
- // Generate a metric from the SNMP result
- // CHECKSTYLE:OFF
- new MetricFactory()
- .collectNumberMetric(
- hostMonitor,
- SNMP_UP_METRIC,
- snmpResult != null ? UP : DOWN,
- telemetryManager.getStrategyTime()
- );
- // CHECKSTYLE:ON
+ return Optional.of(snmpResult != null);
}
@Override
@@ -207,7 +184,7 @@ public Map, Set>> getCon
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "snmp".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -255,4 +232,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-snmp-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtensionTest.java b/metricshub-snmp-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtensionTest.java
index c62fb8993..79a08911f 100644
--- a/metricshub-snmp-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtensionTest.java
+++ b/metricshub-snmp-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmp/SnmpExtensionTest.java
@@ -18,6 +18,7 @@
import com.fasterxml.jackson.databind.node.TextNode;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
@@ -482,12 +483,9 @@ void testCheckSnmpUpHealth() throws InterruptedException, ExecutionException, Ti
.executeSNMPGetNext(eq(SnmpExtension.SNMP_OID), any(SnmpConfiguration.class), anyString(), anyBoolean());
// Start the SNMP protocol check
- snmpExtension.checkProtocol(telemetryManager);
+ Optional result = snmpExtension.checkProtocol(telemetryManager);
- assertEquals(
- SnmpExtension.UP,
- telemetryManager.getEndpointHostMonitor().getMetric(SnmpExtension.SNMP_UP_METRIC).getValue()
- );
+ assertTrue(result.get());
}
@Test
@@ -501,12 +499,9 @@ void testCheckSnmpDownHealth() throws InterruptedException, ExecutionException,
.executeSNMPGetNext(eq(SnmpExtension.SNMP_OID), any(SnmpConfiguration.class), anyString(), anyBoolean());
// Start the SNMP protocol check
- snmpExtension.checkProtocol(telemetryManager);
+ Optional result = snmpExtension.checkProtocol(telemetryManager);
- assertEquals(
- SnmpExtension.DOWN,
- telemetryManager.getEndpointHostMonitor().getMetric(SnmpExtension.SNMP_UP_METRIC).getValue()
- );
+ assertFalse(result.get());
}
@Test
diff --git a/metricshub-snmpv3-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3Extension.java b/metricshub-snmpv3-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3Extension.java
index 965758cf1..b557002f2 100644
--- a/metricshub-snmpv3-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3Extension.java
+++ b/metricshub-snmpv3-extension/src/main/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3Extension.java
@@ -28,6 +28,7 @@
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.function.UnaryOperator;
@@ -44,8 +45,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
import org.sentrysoftware.metricshub.extension.snmp.ISnmpConfiguration;
import org.sentrysoftware.metricshub.extension.snmp.detection.SnmpGetCriterionProcessor;
@@ -61,24 +60,14 @@
public class SnmpV3Extension implements IProtocolExtension {
/**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * Up metric name format that will be saved by the metric factory
+ * The SNMP V3 OID value to use in the health check test
*/
- public static final String SNMPV3_UP_METRIC = "metricshub.host.up{protocol=\"snmpv3\"}";
+ public static final String SNMPV3_OID = "1.3.6.1";
/**
- * The SNMP V3 OID value to use in the health check test
+ * The identifier for the Snmp version 3 protocol.
*/
- public static final String SNMPV3_OID = "1.3.6.1";
+ private static final String IDENTIFIER = "snmpv3";
private SnmpV3RequestExecutor snmpV3RequestExecutor;
@@ -105,15 +94,12 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
final String hostname = telemetryManager.getHostConfiguration().getHostname();
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Create and set the SNMP V3 result to null
- String snmpResult = null;
+ String snmpV3Result = null;
// Retrieve SNMP V3 Configuration from the telemetry manager host configuration
final SnmpV3Configuration snmpV3Configuration = (SnmpV3Configuration) telemetryManager
@@ -123,14 +109,15 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the SNMP V3 health check if there is not an SNMP V3 configuration
if (snmpV3Configuration == null) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info("Hostname {} - Checking SNMP V3 protocol status. Sending Get Next request on {}.", hostname, SNMPV3_OID);
// Execute SNMP test command
try {
- snmpResult = snmpV3RequestExecutor.executeSNMPGetNext(SNMPV3_OID, snmpV3Configuration, hostname, true);
+ snmpV3Result = snmpV3RequestExecutor.executeSNMPGetNext(SNMPV3_OID, snmpV3Configuration, hostname, true);
} catch (Exception e) {
log.debug(
"Hostname {} - Checking SNMP V3 protocol status. SNMP V3 exception when performing a SNMP Get Next query on {}: ",
@@ -139,17 +126,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
e
);
}
-
- // Generate a metric from the SNMP result
- // CHECKSTYLE:OFF
- new MetricFactory()
- .collectNumberMetric(
- hostMonitor,
- SNMPV3_UP_METRIC,
- snmpResult != null ? UP : DOWN,
- telemetryManager.getStrategyTime()
- );
- // CHECKSTYLE:ON
+ return Optional.of(snmpV3Result != null);
}
@Override
@@ -205,7 +182,7 @@ public Map, Set>> getCon
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "snmpv3".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -264,4 +241,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-snmpv3-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3ExtensionTest.java b/metricshub-snmpv3-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3ExtensionTest.java
index eb6bbbea1..7d0363a03 100644
--- a/metricshub-snmpv3-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3ExtensionTest.java
+++ b/metricshub-snmpv3-extension/src/test/java/org/sentrysoftware/metricshub/extension/snmpv3/SnmpV3ExtensionTest.java
@@ -3,7 +3,6 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -11,7 +10,6 @@
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
import com.fasterxml.jackson.databind.node.IntNode;
@@ -20,6 +18,7 @@
import com.fasterxml.jackson.databind.node.TextNode;
import java.util.HashMap;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
@@ -34,13 +33,9 @@
import org.sentrysoftware.metricshub.engine.connector.model.common.DeviceKind;
import org.sentrysoftware.metricshub.engine.connector.model.identity.criterion.SnmpGetCriterion;
import org.sentrysoftware.metricshub.engine.connector.model.identity.criterion.SnmpGetNextCriterion;
-import org.sentrysoftware.metricshub.engine.connector.model.monitor.task.source.SnmpTableSource;
-import org.sentrysoftware.metricshub.engine.connector.model.monitor.task.source.Source;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
-import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
-import org.sentrysoftware.metricshub.extension.snmp.source.SnmpTableSourceProcessor;
import org.sentrysoftware.metricshub.extension.snmpv3.SnmpV3Configuration.AuthType;
import org.sentrysoftware.metricshub.extension.snmpv3.SnmpV3Configuration.Privacy;
@@ -494,12 +489,9 @@ void testCheckSnmpUpHealth() throws InterruptedException, ExecutionException, Ti
.executeSNMPGetNext(eq(SnmpV3Extension.SNMPV3_OID), any(SnmpV3Configuration.class), anyString(), anyBoolean());
// Start the SNMP protocol check
- snmpV3Extension.checkProtocol(telemetryManager);
+ Optional result = snmpV3Extension.checkProtocol(telemetryManager);
- assertEquals(
- SnmpV3Extension.UP,
- telemetryManager.getEndpointHostMonitor().getMetric(SnmpV3Extension.SNMPV3_UP_METRIC).getValue()
- );
+ assertTrue(result.get());
}
@Test
@@ -513,12 +505,9 @@ void testCheckSnmpDownHealth() throws InterruptedException, ExecutionException,
.executeSNMPGetNext(eq(SnmpV3Extension.SNMPV3_OID), any(SnmpV3Configuration.class), anyString(), anyBoolean());
// Start the SNMP protocol check
- snmpV3Extension.checkProtocol(telemetryManager);
+ Optional result = snmpV3Extension.checkProtocol(telemetryManager);
- assertEquals(
- SnmpV3Extension.DOWN,
- telemetryManager.getEndpointHostMonitor().getMetric(SnmpV3Extension.SNMPV3_UP_METRIC).getValue()
- );
+ assertFalse(result.get());
}
@Test
diff --git a/metricshub-wbem-extension/src/main/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtension.java b/metricshub-wbem-extension/src/main/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtension.java
index 293bee852..a3005430e 100644
--- a/metricshub-wbem-extension/src/main/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtension.java
+++ b/metricshub-wbem-extension/src/main/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtension.java
@@ -29,6 +29,7 @@
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.UnaryOperator;
import lombok.extern.slf4j.Slf4j;
@@ -41,8 +42,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
@Slf4j
@@ -53,21 +52,6 @@ public class WbemExtension implements IProtocolExtension {
*/
private static final String INTEROP_LOWER_CASE = "interop";
- /**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * WBEM Up metric
- */
- public static final String WBEM_UP_METRIC = "metricshub.host.up{protocol=\"wbem\"}";
-
/**
* List of WBEM protocol health check test Namespaces
*/
@@ -83,6 +67,11 @@ public class WbemExtension implements IProtocolExtension {
*/
public static final String WBEM_TEST_QUERY = "SELECT Name FROM CIM_NameSpace";
+ /**
+ * The identifier for the Wbem protocol.
+ */
+ private static final String IDENTIFIER = "wbem";
+
private WbemRequestExecutor wbemRequestExecutor;
/**
@@ -113,15 +102,12 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
final String hostname = telemetryManager.getHostConfiguration().getHostname();
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Create and set the WBEM result to null
- String wbemResult = null;
+ List> wbemResult = null;
// Retrieve WBEM configuration from the telemetry manager
final WbemConfiguration wbemConfiguration = (WbemConfiguration) telemetryManager
@@ -131,17 +117,15 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the WBEM health check if there is not an WBEM configuration
if (wbemConfiguration == null) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info(
"Hostname {} - Checking WBEM protocol status. Sending a WQL SELECT request on different namespaces.",
hostname
);
- final Long strategyTime = telemetryManager.getStrategyTime();
- final MetricFactory metricFactory = new MetricFactory();
-
for (final String wbemNamespace : WBEM_UP_TEST_NAMESPACES) {
try {
log.info(
@@ -149,29 +133,18 @@ public void checkProtocol(TelemetryManager telemetryManager) {
hostname,
wbemNamespace
);
-
// The query on the WBEM namespace returned a result
- //CHECKSTYLE:OFF
- if (
+ wbemResult =
wbemRequestExecutor.executeWbem(
hostname,
wbemConfiguration,
WBEM_TEST_QUERY,
wbemNamespace,
telemetryManager
- ) !=
- null
- //CHECKSTYLE:OFF
- ) {
- // Collect the metric with a '1.0' value and stop the test
- metricFactory.collectNumberMetric(hostMonitor, WBEM_UP_METRIC, UP, strategyTime);
- return;
- }
+ );
} catch (Exception e) {
if (wbemRequestExecutor.isAcceptableException(e)) {
- // Collect the WBEM metric with a '1.0' value and stop the test as the thrown exception is acceptable
- metricFactory.collectNumberMetric(hostMonitor, WBEM_UP_METRIC, UP, strategyTime);
- return;
+ return Optional.of(true);
}
log.debug(
"Hostname {} - Checking WBEM protocol status. WBEM exception when performing a WQL SELECT query on '{}' namespace: ",
@@ -181,11 +154,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
);
}
}
-
- // Generate a metric from the WBEM result
- // CHECKSTYLE:OFF
- metricFactory.collectNumberMetric(hostMonitor, WBEM_UP_METRIC, wbemResult != null ? UP : DOWN, strategyTime);
- // CHECKSTYLE:ON
+ return Optional.of(wbemResult != null);
}
@Override
@@ -222,7 +191,7 @@ public SourceTable processSource(Source source, String connectorId, TelemetryMan
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "wbem".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -265,4 +234,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-wbem-extension/src/test/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtensionTest.java b/metricshub-wbem-extension/src/test/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtensionTest.java
index cff7598f0..3bce1edef 100644
--- a/metricshub-wbem-extension/src/test/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtensionTest.java
+++ b/metricshub-wbem-extension/src/test/java/org/sentrysoftware/metricshub/extension/wbem/WbemExtensionTest.java
@@ -14,7 +14,6 @@
import static org.mockito.Mockito.mockStatic;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
import static org.sentrysoftware.metricshub.engine.common.helpers.MetricsHubConstants.AUTOMATIC_NAMESPACE;
-import static org.sentrysoftware.metricshub.engine.strategy.collect.ProtocolHealthCheckStrategy.DOWN;
import static org.sentrysoftware.metricshub.extension.wbem.WbemExtension.WBEM_TEST_QUERY;
import com.fasterxml.jackson.databind.node.BooleanNode;
@@ -27,6 +26,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -113,12 +113,9 @@ void testCheckProtocolUp() throws ClientException {
.doWbemQuery(anyString(), any(WbemConfiguration.class), anyString(), anyString());
// Start the WBEM Health Check strategy
- wbemExtension.checkProtocol(telemetryManager);
+ Optional result = wbemExtension.checkProtocol(telemetryManager);
- assertEquals(
- WbemExtension.UP,
- telemetryManager.getEndpointHostMonitor().getMetric(WbemExtension.WBEM_UP_METRIC).getValue()
- );
+ assertTrue(result.get());
}
{
@@ -130,13 +127,10 @@ void testCheckProtocolUp() throws ClientException {
doCallRealMethod().when(wbemRequestExecutorSpy).isAcceptableException(any());
- // Start the WBEM Health Check
- wbemExtension.checkProtocol(telemetryManager);
+ // Start the WBEM Health Check strategy
+ Optional result = wbemExtension.checkProtocol(telemetryManager);
- assertEquals(
- WbemExtension.UP,
- telemetryManager.getEndpointHostMonitor().getMetric(WbemExtension.WBEM_UP_METRIC).getValue()
- );
+ assertTrue(result.get());
}
}
@@ -150,9 +144,9 @@ void testCheckWbemDownHealth() throws ClientException {
.doWbemQuery(anyString(), any(WbemConfiguration.class), anyString(), anyString());
// Start the WBEM Health Check strategy
- wbemExtension.checkProtocol(telemetryManager);
+ Optional result = wbemExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(WbemExtension.WBEM_UP_METRIC).getValue());
+ assertFalse(result.get());
}
@Test
diff --git a/metricshub-winrm-extension/src/main/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtension.java b/metricshub-winrm-extension/src/main/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtension.java
index 5a311768b..0c6879a89 100644
--- a/metricshub-winrm-extension/src/main/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtension.java
+++ b/metricshub-winrm-extension/src/main/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtension.java
@@ -29,6 +29,7 @@
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.function.UnaryOperator;
@@ -48,8 +49,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
import org.sentrysoftware.metricshub.extension.win.IWinConfiguration;
import org.sentrysoftware.metricshub.extension.win.WinCommandService;
@@ -69,21 +68,6 @@
@Slf4j
public class WinRmExtension implements IProtocolExtension {
- /**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * WinRm Up metric name format that will be saved by the metric factory
- */
- public static final String WINRM_UP_METRIC = "metricshub.host.up{protocol=\"winrm\"}";
-
/**
* WinRm Test Query
*/
@@ -94,6 +78,11 @@ public class WinRmExtension implements IProtocolExtension {
*/
public static final String WINRM_TEST_NAMESPACE = "root\\cimv2";
+ /**
+ * The identifier for the WinRm protocol.
+ */
+ private static final String IDENTIFIER = "winrm";
+
private WinRmRequestExecutor winRmRequestExecutor;
private WmiDetectionService wmiDetectionService;
private WinCommandService winCommandService;
@@ -128,7 +117,7 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Retrieve WinRM Configuration from the telemetry manager host configuration
final WinRmConfiguration winRmConfiguration = (WinRmConfiguration) telemetryManager
.getHostConfiguration()
@@ -137,7 +126,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Stop the health check if there is not an WinRM configuration
if (winRmConfiguration == null) {
- return;
+ return Optional.empty();
}
// Create and set the WinRM result to null
@@ -146,29 +135,19 @@ public void checkProtocol(TelemetryManager telemetryManager) {
// Retrieve the hostname
final String hostname = telemetryManager.getHostname();
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info(
"Hostname {} - Checking WinRM protocol status. Sending a WQL SELECT request on {} namespace.",
hostname,
WINRM_TEST_NAMESPACE
);
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
- // Create the MetricFactory in order to collect the up metric
- final MetricFactory metricFactory = new MetricFactory();
-
- // Get the strategy time which represents the collect time of the up metric
- final Long strategyTime = telemetryManager.getStrategyTime();
-
try {
winRmResult =
winRmRequestExecutor.executeWmi(hostname, winRmConfiguration, WINRM_TEST_QUERY, WINRM_TEST_NAMESPACE);
} catch (Exception e) {
if (winRmRequestExecutor.isAcceptableException(e)) {
- // Generate a metric from the WinRM result
- metricFactory.collectNumberMetric(hostMonitor, WINRM_UP_METRIC, UP, strategyTime);
- return;
+ return Optional.of(true);
}
log.debug(
"Hostname {} - Checking WinRM protocol status. WinRM exception when performing a WQL SELECT request on {} namespace: ",
@@ -178,8 +157,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
);
}
- // Generate a metric from the WinRm result
- metricFactory.collectNumberMetric(hostMonitor, WINRM_UP_METRIC, winRmResult != null ? UP : DOWN, strategyTime);
+ return Optional.of(winRmResult != null);
}
@Override
@@ -241,7 +219,7 @@ public SourceTable processSource(Source source, String connectorId, TelemetryMan
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "winrm".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -289,4 +267,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-winrm-extension/src/test/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtensionTest.java b/metricshub-winrm-extension/src/test/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtensionTest.java
index d8a3bd9ef..46af0d6e6 100644
--- a/metricshub-winrm-extension/src/test/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtensionTest.java
+++ b/metricshub-winrm-extension/src/test/java/org/sentrysoftware/metricshub/extension/winrm/WinRmExtensionTest.java
@@ -13,11 +13,8 @@
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mockStatic;
import static org.sentrysoftware.metricshub.engine.common.helpers.KnownMonitorType.HOST;
-import static org.sentrysoftware.metricshub.extension.winrm.WinRmExtension.DOWN;
-import static org.sentrysoftware.metricshub.extension.winrm.WinRmExtension.UP;
import static org.sentrysoftware.metricshub.extension.winrm.WinRmExtension.WINRM_TEST_NAMESPACE;
import static org.sentrysoftware.metricshub.extension.winrm.WinRmExtension.WINRM_TEST_QUERY;
-import static org.sentrysoftware.metricshub.extension.winrm.WinRmExtension.WINRM_UP_METRIC;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.IntNode;
@@ -28,6 +25,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import org.junit.jupiter.api.Test;
@@ -150,10 +148,10 @@ void testCheckProtocolUp() throws ClientException {
.when(winRmRequestExecutorMock)
.executeWmi(anyString(), any(WinRmConfiguration.class), eq(WINRM_TEST_QUERY), eq(WINRM_TEST_NAMESPACE));
- // Start the WinRm Health Check strategy
- WinRmExtension.checkProtocol(telemetryManager);
+ // Start the WinRm Health Check
+ Optional result = WinRmExtension.checkProtocol(telemetryManager);
- assertEquals(UP, telemetryManager.getEndpointHostMonitor().getMetric(WINRM_UP_METRIC).getValue());
+ assertTrue(result.get());
}
{
@@ -165,9 +163,9 @@ void testCheckProtocolUp() throws ClientException {
doCallRealMethod().when(winRmRequestExecutorMock).isAcceptableException(any());
// Start the WinRm Health Check
- WinRmExtension.checkProtocol(telemetryManager);
+ Optional result = WinRmExtension.checkProtocol(telemetryManager);
- assertEquals(UP, telemetryManager.getEndpointHostMonitor().getMetric(WINRM_UP_METRIC).getValue());
+ assertTrue(result.get());
}
}
@@ -182,9 +180,9 @@ void testCheckProtocolDown() throws ClientException {
.executeWmi(anyString(), any(WinRmConfiguration.class), eq(WINRM_TEST_QUERY), eq(WINRM_TEST_NAMESPACE));
// Start the WinRm Health Check
- WinRmExtension.checkProtocol(telemetryManager);
+ Optional result = WinRmExtension.checkProtocol(telemetryManager);
- assertEquals(DOWN, telemetryManager.getEndpointHostMonitor().getMetric(WINRM_UP_METRIC).getValue());
+ assertFalse(result.get());
}
@Test
diff --git a/metricshub-wmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtension.java b/metricshub-wmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtension.java
index 38c5c36ad..9ee96e5dc 100644
--- a/metricshub-wmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtension.java
+++ b/metricshub-wmi-extension/src/main/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtension.java
@@ -29,6 +29,7 @@
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.function.UnaryOperator;
@@ -49,8 +50,6 @@
import org.sentrysoftware.metricshub.engine.extension.IProtocolExtension;
import org.sentrysoftware.metricshub.engine.strategy.detection.CriterionTestResult;
import org.sentrysoftware.metricshub.engine.strategy.source.SourceTable;
-import org.sentrysoftware.metricshub.engine.telemetry.MetricFactory;
-import org.sentrysoftware.metricshub.engine.telemetry.Monitor;
import org.sentrysoftware.metricshub.engine.telemetry.TelemetryManager;
import org.sentrysoftware.metricshub.extension.win.IWinConfiguration;
import org.sentrysoftware.metricshub.extension.win.WinCommandService;
@@ -71,21 +70,6 @@
@Slf4j
public class WmiExtension implements IProtocolExtension {
- /**
- * Protocol up status value '1.0'
- */
- public static final Double UP = 1.0;
-
- /**
- * Protocol down status value '0.0'
- */
- public static final Double DOWN = 0.0;
-
- /**
- * Up metric name format that will be saved by the metric factory
- */
- public static final String WMI_UP_METRIC = "metricshub.host.up{protocol=\"wmi\"}";
-
/**
* WMI namespace
*/
@@ -96,6 +80,11 @@ public class WmiExtension implements IProtocolExtension {
*/
public static final String WMI_TEST_QUERY = "SELECT Name FROM Win32_ComputerSystem";
+ /**
+ * The identifier for the Wmi protocol.
+ */
+ private static final String IDENTIFIER = "wmi";
+
private WmiRequestExecutor wmiRequestExecutor;
private WmiDetectionService wmiDetectionService;
private WinCommandService winCommandService;
@@ -130,7 +119,7 @@ public Set> getSupportedCriteria() {
}
@Override
- public void checkProtocol(TelemetryManager telemetryManager) {
+ public Optional checkProtocol(TelemetryManager telemetryManager) {
// Create and set the WMI result to null
List> wmiResult = null;
@@ -143,33 +132,23 @@ public void checkProtocol(TelemetryManager telemetryManager) {
.getConfigurations()
.get(WmiConfiguration.class);
- // Retrieve the host endpoint monitor
- final Monitor hostMonitor = telemetryManager.getEndpointHostMonitor();
-
// Stop the health check if there is not an WMI configuration
if (wmiConfiguration == null) {
- return;
+ return Optional.empty();
}
+ log.info("Hostname {} - Performing {} protocol health check.", hostname, getIdentifier());
log.info(
"Hostname {} - Checking WMI protocol status. Sending a WQL SELECT request on {} namespace.",
hostname,
WMI_TEST_NAMESPACE
);
- // Create the MetricFactory in order to collect the up metric
- final MetricFactory metricFactory = new MetricFactory();
-
- // Get the strategy time which represents the collect time of the up metric
- final Long strategyTime = telemetryManager.getStrategyTime();
-
try {
wmiResult = wmiRequestExecutor.executeWmi(hostname, wmiConfiguration, WMI_TEST_QUERY, WMI_TEST_NAMESPACE);
} catch (Exception e) {
if (wmiRequestExecutor.isAcceptableException(e)) {
- // Generate a metric from the WMI result
- metricFactory.collectNumberMetric(hostMonitor, WMI_UP_METRIC, UP, strategyTime);
- return;
+ return Optional.of(true);
}
log.debug(
"Hostname {} - Checking WMI protocol status. WMI exception when performing a WQL SELECT request on {} namespace: ",
@@ -178,9 +157,7 @@ public void checkProtocol(TelemetryManager telemetryManager) {
e
);
}
-
- // Generate a metric from the WMI result
- metricFactory.collectNumberMetric(hostMonitor, WMI_UP_METRIC, wmiResult != null ? UP : DOWN, strategyTime);
+ return Optional.of(wmiResult != null);
}
@Override
@@ -245,7 +222,7 @@ public SourceTable processSource(Source source, String connectorId, TelemetryMan
@Override
public boolean isSupportedConfigurationType(String configurationType) {
- return "wmi".equalsIgnoreCase(configurationType);
+ return IDENTIFIER.equalsIgnoreCase(configurationType);
}
@Override
@@ -293,4 +270,9 @@ public static JsonMapper newObjectMapper() {
.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE, false)
.build();
}
+
+ @Override
+ public String getIdentifier() {
+ return IDENTIFIER;
+ }
}
diff --git a/metricshub-wmi-extension/src/test/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtensionTest.java b/metricshub-wmi-extension/src/test/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtensionTest.java
index 0b695119d..52bd2d6cd 100644
--- a/metricshub-wmi-extension/src/test/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtensionTest.java
+++ b/metricshub-wmi-extension/src/test/java/org/sentrysoftware/metricshub/extension/wmi/WmiExtensionTest.java
@@ -21,6 +21,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import org.junit.jupiter.api.Test;
@@ -145,12 +146,9 @@ void testCheckProtocolUp() throws ClientException {
);
// Start the WMI Health Check strategy
- wmiExtension.checkProtocol(telemetryManager);
+ Optional result = wmiExtension.checkProtocol(telemetryManager);
- assertEquals(
- WmiExtension.UP,
- telemetryManager.getEndpointHostMonitor().getMetric(WmiExtension.WMI_UP_METRIC).getValue()
- );
+ assertTrue(result.get());
}
{
@@ -167,12 +165,9 @@ void testCheckProtocolUp() throws ClientException {
doCallRealMethod().when(wmiRequestExecutorMock).isAcceptableException(any());
// Start the WMI Health Check
- wmiExtension.checkProtocol(telemetryManager);
+ Optional result = wmiExtension.checkProtocol(telemetryManager);
- assertEquals(
- WmiExtension.UP,
- telemetryManager.getEndpointHostMonitor().getMetric(WmiExtension.WMI_UP_METRIC).getValue()
- );
+ assertTrue(result.get());
}
}
@@ -192,12 +187,9 @@ void testCheckProtocolDown() throws ClientException {
);
// Start the WMI Health Check
- wmiExtension.checkProtocol(telemetryManager);
+ Optional result = wmiExtension.checkProtocol(telemetryManager);
- assertEquals(
- WmiExtension.DOWN,
- telemetryManager.getEndpointHostMonitor().getMetric(WmiExtension.WMI_UP_METRIC).getValue()
- );
+ assertFalse(result.get());
}
@Test
@@ -487,4 +479,11 @@ void testBuildConfiguration() throws InvalidConfigurationException {
);
assertNull(wmiConfiguration.getNamespace());
}
+
+ @Test
+ void testGetIdentifier() {
+ String identifier = wmiExtension.getIdentifier();
+
+ assertEquals("wmi", identifier);
+ }
}