Skip to content

Commit

Permalink
Merge pull request #123 from comemaryvallee/feat/hide_uuid_with_URI_M…
Browse files Browse the repository at this point in the history
…ETRICS_DETAILED_true

Added feature: UUID obfuscation in URI label with URI_METRICS_DETAILED enabled
  • Loading branch information
pb82 authored Nov 8, 2024
2 parents 0331363 + c63ead7 commit cd08e02
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 2 deletions.
19 changes: 19 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,25 @@ keycloak_request_duration_count{code="200",method="GET",resource="admin,admin/se
keycloak_request_duration_sum{code="200",method="GET",resource="admin,admin/serverinfo",uri="",} 19.0
```

To replace `users` or `clients` UUID values by a generic `{id}` with ```URI_METRICS_DETAILED``` enabled,
set ```URI_METRICS_UUID_HIDDEN``` to `true`

```c
# HELP keycloak_request_duration Request duration
# TYPE keycloak_request_duration histogram
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="50.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="100.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="250.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="500.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="1000.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="2000.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="10000.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="30000.0",} 6.0
keycloak_request_duration_bucket{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",le="+Inf",} 6.0
keycloak_request_duration_count{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",} 6.0
keycloak_request_duration_sum{code="200",method="GET",resource="admin,admin/realms",uri="admin/realms/master/users/{id}",} 41.0
```
## External Access
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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class ResourceExtractor {
private static final boolean URI_METRICS_ENABLED = Boolean.parseBoolean(System.getenv("URI_METRICS_ENABLED"));
private static final boolean URI_METRICS_DETAILED = Boolean.parseBoolean(System.getenv("URI_METRICS_DETAILED"));
private static final String URI_METRICS_FILTER = System.getenv("URI_METRICS_FILTER");
private static final boolean URI_METRICS_UUID_HIDDEN = Boolean.parseBoolean(System.getenv("URI_METRICS_UUID_HIDDEN"));

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

if (URI_METRICS_DETAILED) {
sb.append(uri);
if (URI_METRICS_UUID_HIDDEN) {
uri = uri.replaceAll("\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}", "{id}");
sb.append(uri);
} else {
sb.append(uri);
}
} else {
String[] realm = uri.split("/");
if (realm.length != 1) {
if (uri.startsWith("admin/realms/")) {
uri = uri.replace(realm[2], "{realm}");
if (realm.length > 4 && realm[3].equals("clients")) {
if (realm.length > 4 && (realm[3].equals("clients") || realm[3].equals("users"))) {
uri = uri.replace(realm[4], "{id}");
}
}
Expand Down

0 comments on commit cd08e02

Please sign in to comment.