Skip to content

Commit cd08e02

Browse files
authored
Merge pull request #123 from comemaryvallee/feat/hide_uuid_with_URI_METRICS_DETAILED_true
Added feature: UUID obfuscation in URI label with URI_METRICS_DETAILED enabled
2 parents 0331363 + c63ead7 commit cd08e02

2 files changed

Lines changed: 27 additions & 2 deletions

File tree

README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,25 @@ keycloak_request_duration_count{code="200",method="GET",resource="admin,admin/se
412412
keycloak_request_duration_sum{code="200",method="GET",resource="admin,admin/serverinfo",uri="",} 19.0
413413
```
414414

415+
To replace `users` or `clients` UUID values by a generic `{id}` with ```URI_METRICS_DETAILED``` enabled,
416+
set ```URI_METRICS_UUID_HIDDEN``` to `true`
417+
418+
```c
419+
# HELP keycloak_request_duration Request duration
420+
# TYPE keycloak_request_duration histogram
421+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="50.0",} 6.0
422+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="100.0",} 6.0
423+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="250.0",} 6.0
424+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="500.0",} 6.0
425+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="1000.0",} 6.0
426+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="2000.0",} 6.0
427+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="10000.0",} 6.0
428+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="30000.0",} 6.0
429+
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="+Inf",} 6.0
430+
keycloak_request_duration_count{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",} 6.0
431+
keycloak_request_duration_sum{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",} 41.0
432+
```
433+
415434
## External Access
416435
417436
To disable metrics being externally accessible to a cluster. Set the environment variable 'DISABLE_EXTERNAL_ACCESS'. Once set enable the header 'X-Forwarded-Host' on your proxy. This is enabled by default on HA Proxy on Openshift.

src/main/java/org/jboss/aerogear/keycloak/metrics/ResourceExtractor.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ResourceExtractor {
1313
private static final boolean URI_METRICS_ENABLED = Boolean.parseBoolean(System.getenv("URI_METRICS_ENABLED"));
1414
private static final boolean URI_METRICS_DETAILED = Boolean.parseBoolean(System.getenv("URI_METRICS_DETAILED"));
1515
private static final String URI_METRICS_FILTER = System.getenv("URI_METRICS_FILTER");
16+
private static final boolean URI_METRICS_UUID_HIDDEN = Boolean.parseBoolean(System.getenv("URI_METRICS_UUID_HIDDEN"));
1617

1718
private ResourceExtractor() {
1819
}
@@ -91,13 +92,18 @@ private static StringBuilder getURIDetailed(StringBuilder sb, List<String> match
9192
String uri = matchedURIs.get(0);
9293

9394
if (URI_METRICS_DETAILED) {
94-
sb.append(uri);
95+
if (URI_METRICS_UUID_HIDDEN) {
96+
uri = uri.replaceAll("\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}", "{id}");
97+
sb.append(uri);
98+
} else {
99+
sb.append(uri);
100+
}
95101
} else {
96102
String[] realm = uri.split("/");
97103
if (realm.length != 1) {
98104
if (uri.startsWith("admin/realms/")) {
99105
uri = uri.replace(realm[2], "{realm}");
100-
if (realm.length > 4 && realm[3].equals("clients")) {
106+
if (realm.length > 4 && (realm[3].equals("clients") || realm[3].equals("users"))) {
101107
uri = uri.replace(realm[4], "{id}");
102108
}
103109
}

0 commit comments

Comments
 (0)