Change default value for replaceIds

This commit is contained in:
Stephan Schnabel 2023-04-24 14:45:20 +02:00
parent 5fbeb49a61
commit b7563632d0
Signed by: stephan.schnabel
GPG key ID: E07AF5BA239FE543
7 changed files with 21 additions and 22 deletions

View file

@ -57,7 +57,7 @@ keycloak_event_admin_total{error="",operation="CREATE",realm="9039a0b5-e8c9-437a
### `KC_METRICS_EVENT_REPLACE_IDS`
If set to `true` than replace model ids with names:
Per set to `true` (the default value) than replace model ids with names:
* [RealmModel#getId()](https://github.com/keycloak/keycloak/blob/main/server-spi/src/main/java/org/keycloak/models/RealmModel.java#L82) with [RealmModel#getName()](https://github.com/keycloak/keycloak/blob/main/server-spi/src/main/java/org/keycloak/models/RealmModel.java#L84)

View file

@ -4,7 +4,7 @@
<groupId>io.kokuwa.keycloak</groupId>
<artifactId>keycloak-event-metrics</artifactId>
<version>0.2.2-SNAPSHOT</version>
<version>1.0.0-SNAPSHOT</version>
<name>Keycloak Metrics</name>
<description>Provides metrics for Keycloak user/admin events</description>

View file

@ -17,23 +17,23 @@ import io.micrometer.core.instrument.MeterRegistry;
*
* @author Stephan Schnabel
*/
public class MicrometerEventListener implements EventListenerProvider, AutoCloseable {
public class MetricsEventListener implements EventListenerProvider, AutoCloseable {
private static final Logger log = Logger.getLogger(MicrometerEventListener.class);
private static final Logger log = Logger.getLogger(MetricsEventListener.class);
private final MeterRegistry registry;
private final boolean replaceIds;
private final KeycloakSession session;
private final boolean replace;
MicrometerEventListener(MeterRegistry registry, KeycloakSession session, boolean replaceId) {
MetricsEventListener(MeterRegistry registry, boolean replaceIds, KeycloakSession session) {
this.registry = registry;
this.replaceIds = replaceIds;
this.session = session;
this.replace = replaceId;
}
@Override
public void onEvent(Event event) {
registry.counter("keycloak_event_user",
"realm", toBlank(replace ? getRealmName(event.getRealmId()) : event.getRealmId()),
"realm", toBlank(replaceIds ? getRealmName(event.getRealmId()) : event.getRealmId()),
"type", toBlank(event.getType()),
"client", toBlank(event.getClientId()),
"error", toBlank(event.getError()))
@ -43,7 +43,7 @@ public class MicrometerEventListener implements EventListenerProvider, AutoClose
@Override
public void onEvent(AdminEvent event, boolean includeRepresentation) {
registry.counter("keycloak_event_admin",
"realm", toBlank(replace ? getRealmName(event.getRealmId()) : event.getRealmId()),
"realm", toBlank(replaceIds ? getRealmName(event.getRealmId()) : event.getRealmId()),
"resource", toBlank(event.getResourceType()),
"operation", toBlank(event.getOperationType()),
"error", toBlank(event.getError()))

View file

@ -12,15 +12,15 @@ import org.keycloak.models.KeycloakSessionFactory;
import io.micrometer.core.instrument.MeterRegistry;
/**
* Factory for {@link MicrometerEventListener}, uses {@link MeterRegistry} from CDI.
* Factory for {@link MetricsEventListener}, uses {@link MeterRegistry} from CDI.
*
* @author Stephan Schnabel
*/
public class MicrometerEventListenerFactory implements EventListenerProviderFactory {
public class MetricsEventListenerFactory implements EventListenerProviderFactory {
private static final Logger log = Logger.getLogger(MicrometerEventListener.class);
private static final Logger log = Logger.getLogger(MetricsEventListenerFactory.class);
private MeterRegistry registry;
private boolean replace;
private boolean replaceIds;
@Override
public String getId() {
@ -29,8 +29,8 @@ public class MicrometerEventListenerFactory implements EventListenerProviderFact
@Override
public void init(Scope config) {
replace = "true".equals(System.getenv("KC_METRICS_EVENT_REPLACE_IDS"));
log.info(replace ? "Configured with model names." : "Configured with model ids.");
replaceIds = "true".equals(System.getenv().getOrDefault("KC_METRICS_EVENT_REPLACE_IDS", "true"));
log.info(replaceIds ? "Configured with model names." : "Configured with model ids.");
}
@Override
@ -40,7 +40,7 @@ public class MicrometerEventListenerFactory implements EventListenerProviderFact
@Override
public EventListenerProvider create(KeycloakSession session) {
return new MicrometerEventListener(registry, session, replace);
return new MetricsEventListener(registry, replaceIds, session);
}
@Override

View file

@ -1 +1 @@
io.kokuwa.keycloak.metrics.MicrometerEventListenerFactory
io.kokuwa.keycloak.metrics.MetricsEventListenerFactory

View file

@ -35,12 +35,12 @@ import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
/**
* Test for {@link MicrometerEventListener} with Mockito.
* Test for {@link MetricsEventListener} with Mockito.
*
* @author Stephan Schnabel
*/
@ExtendWith(MockitoExtension.class)
public class MicrometerEventListenerTest {
public class MetricsEventListenerTest {
@Mock
KeycloakSession session;
@ -378,8 +378,8 @@ public class MicrometerEventListenerTest {
}
}
private MicrometerEventListener listener(boolean replace) {
return new MicrometerEventListener(registry, session, replace);
private MetricsEventListener listener(boolean replaceIds) {
return new MetricsEventListener(registry, replaceIds, session);
}
private void assertCounter(String metric, Map<String, String> tags) {

View file

@ -60,7 +60,6 @@ public class KeycloakExtension implements BeforeAllCallback, ParameterResolver {
.withEnv("KC_LOG_CONSOLE_COLOR", "true")
.withEnv("KC_HEALTH_ENABLED", "true")
.withEnv("KC_METRICS_ENABLED", "true")
.withEnv("KC_METRICS_EVENT_REPLACE_IDS", "true")
.withCopyFileToContainer(MountableFile.forHostPath(jar), "/opt/keycloak/providers/metrics.jar")
.withLogConsumer(out -> System.out.print(out.getUtf8String()))
.withExposedPorts(8080)