Skip to content

Commit 7133b86

Browse files
authored
Merge pull request #258 from SolaceProducts/moodiRealist/DATAGO-100834-proxymetric
DATAGO-100834: webProxyEnabled tag for EMA metrics
2 parents 34668b5 + 12c411f commit 7133b86

File tree

3 files changed

+40
-3
lines changed

3 files changed

+40
-3
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package com.solace.maas.ep.event.management.agent.config;
2+
3+
import com.solace.maas.ep.event.management.agent.plugin.jacoco.ExcludeFromJacocoGeneratedReport;
4+
import io.micrometer.core.instrument.MeterRegistry;
5+
import lombok.extern.slf4j.Slf4j;
6+
import org.springframework.beans.factory.annotation.Autowired;
7+
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
8+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
9+
import org.springframework.context.annotation.Bean;
10+
import org.springframework.context.annotation.Configuration;
11+
import org.springframework.context.annotation.Profile;
12+
13+
@Slf4j
14+
@ExcludeFromJacocoGeneratedReport
15+
@Configuration
16+
@Profile("!TEST")
17+
@ConditionalOnProperty(name = "event-portal.gateway.messaging.standalone", havingValue = "false")
18+
public class MetricsConfig {
19+
20+
private final SolaceConfiguration solaceConfiguration;
21+
22+
@Autowired
23+
public MetricsConfig(SolaceConfiguration solaceConfiguration) {
24+
this.solaceConfiguration = solaceConfiguration;
25+
}
26+
27+
@Bean
28+
public MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
29+
return registry -> registry.config().commonTags("ema_web_proxy_enabled", String.valueOf(solaceConfiguration.isProxyEnabled()));
30+
}
31+
}

service/application/src/main/java/com/solace/maas/ep/event/management/agent/config/SolaceConfiguration.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public MessagingService messagingService() {
7373
String clientName = vmrConfiguration.getProperty(SolaceProperties.ClientProperties.NAME);
7474
String message = isProxyEnabled() ?
7575
"Connecting to event portal using EMA client {} via web proxy." :
76-
"Connecting to event portal using EMA client {} without proxy.";
76+
"Connecting to event portal using EMA client {} without web proxy.";
7777
log.info(message, clientName);
7878
return MessagingService.builder(ConfigurationProfile.V1)
7979
.fromProperties(vmrConfiguration)
@@ -123,13 +123,12 @@ public SolacePublisher solacePublisher() {
123123
directMessagePublisher());
124124
}
125125

126-
private boolean isProxyEnabled() {
126+
public boolean isProxyEnabled() {
127127
MessagingServiceConnectionProperties gatewayConnection = eventPortalProperties.getGateway().getMessaging().getConnections().stream()
128128
.filter(c -> "eventPortalGateway".equals(c.getName()))
129129
.findFirst()
130130
.orElseThrow(() -> new NoSuchElementException("Event Portal gateway connection properties not found."));
131131

132132
return (Boolean.TRUE.equals(gatewayConnection.getProxyEnabled()));
133133
}
134-
135134
}

service/application/src/main/java/com/solace/maas/ep/event/management/agent/publisher/HeartbeatGenerator.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.solace.maas.ep.event.management.agent.plugin.publisher.SolacePublisher;
88
import io.micrometer.core.instrument.MeterRegistry;
99
import io.micrometer.core.instrument.Tag;
10+
import org.apache.commons.lang3.StringUtils;
1011
import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression;
1112
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
1213
import org.springframework.boot.info.BuildProperties;
@@ -17,6 +18,7 @@
1718
import java.util.ArrayList;
1819
import java.util.List;
1920
import java.util.Objects;
21+
import java.util.Optional;
2022

2123
import static com.solace.maas.ep.common.metrics.ObservabilityConstants.MAAS_EMA_HEARTBEAT_EVENT_SENT;
2224
import static com.solace.maas.ep.common.metrics.ObservabilityConstants.ORG_ID_TAG;
@@ -59,6 +61,11 @@ private void logHealthMetric(HeartbeatMessage message, boolean isHealthy) {
5961
List<Tag> tags = new ArrayList<>();
6062
if (Objects.nonNull(message.getOrgId())) {
6163
tags.add(Tag.of(ORG_ID_TAG, message.getOrgId()));
64+
tags.add(Tag.of("datacenter_id", Optional.ofNullable(meterRegistry.find("jvm.threads.live").meter())
65+
.map(meter -> meter.getId().getTag("maas_datacenter_id"))
66+
.orElse("Unknown")));
67+
tags.add(Tag.of("public_cema", StringUtils.equals(eventPortalProperties.getOrganizationId(), "*") ? "true" : "false"));
68+
tags.add(Tag.of("cema_id", eventPortalProperties.getRuntimeAgentId()));
6269
}
6370
meterRegistry.gauge(MAAS_EMA_HEARTBEAT_EVENT_SENT, tags, isHealthy ? 1 : 0);
6471
}

0 commit comments

Comments
 (0)