@VisibleForTesting final String normalizeRequestKey(String str) { str = NOW_TIMESTAMP_PATTERN.matcher(str).replaceAll("$1<redacted>"); str = SHARD_AND_REPLICA_PATTERN.matcher(str).replaceAll("$1<redacted>$2<redacted>"); str = normalizeWhitespace(str); return str; }
/** * Coalesce exception messages containing HTTP REST calls to all server shards into a single bucket. * This greatly reduces the amount of metric spam. * Example: https://vb0706.foo.bar.com:8983 --> https://<redacted>.foo.bar.com:8983 * Example: UnknownHostException: vb0706.foo.bar.com -> UnknownHostException: <redacted>.foo.bar.com * Example: insertAndQueryTweets_shard30_replica91 --> insertAndQueryTweets_shard<redacted>_replica<redacted> * Example: collection: collection1 slice: shard130 --> collection: collection1 slice: shard<redacted> * Example: &NOW=1448689151133 -> &NOW=<redacted> */ private String normalizeExceptionKey(String str) { str = URL_SCHEME_AND_AUTHORITY_PATTERN.matcher(str).replaceAll("$1<redacted>$3"); str = SHARD_AND_REPLICA_PATTERN.matcher(str).replaceAll("$1<redacted>$2<redacted>"); str = EXCEPTION_HOST_PATTERN.matcher(str).replaceAll("$1<redacted>$3"); str = COLLECTION_AND_SLICE_PATTERN.matcher(str).replaceAll("$1<redacted>"); str = NOW_TIMESTAMP_PATTERN.matcher(str).replaceAll("$1<redacted>"); str = normalizeWhitespace(str); str = omitPackageName(str, "java.io."); str = omitPackageName(str, "java.net."); str = omitPackageName(str, "org.apache.solr.client.solrj.impl."); //str = omitPackageName(str, "org.apache.http.client."); return str; }