Keycloak结合NewRelic Transactions无法显示路由路径求助
我之前帮几个开发者排查过类似的Keycloak + NewRelic路由追踪问题,结合你的场景(Keycloak 20.0.3 + 最新NewRelic代理 + 已尝试newrelic-java-quarkus工具),可以试试下面这些针对性的调整:
启用Keycloak的Quarkus HTTP上下文配置
Keycloak基于Quarkus构建,需要确保Quarkus的HTTP请求上下文被NewRelic正确捕获。在Keycloak的keycloak.conf(或standalone.xml,取决于部署方式)中添加以下配置:quarkus.http.access-log.enabled=true quarkus.http.access-log.pattern="%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-Agent}i\"" newrelic.config.transaction.naming.strategy=uri newrelic.config.quarkus.enabled=true这里强制NewRelic使用URI作为事务命名策略,同时开启Quarkus访问日志帮助代理识别完整路由路径。
自定义NewRelic事务命名规则
如果默认的URI策略不生效,手动针对Keycloak的路由格式添加规则到newrelic.yml:transaction_naming: rules: - pattern: "^/auth/(.*)" name: "Keycloak/$1" - pattern: "^/realms/(.*)/protocol/(.*)" name: "Keycloak/Realm/$1/Protocol/$2" - pattern: "^/admin/(.*)" name: "Keycloak/Admin/$1"这些规则会把Keycloak的核心路由(认证、realm协议、后台管理)解析成清晰的事务名称,让NewRelic展示具体路径。
验证newrelic-java-quarkus扩展的正确加载
确认扩展jar包已经放在Keycloak的providers目录下,并且启动时成功加载。可以在Keycloak启动日志中搜索NewRelic Quarkus相关关键词,比如是否出现NewRelic Quarkus extension initialized的日志。如果加载失败,尝试手动指定启动参数:java -javaagent:/path/to/newrelic.jar -Dquarkus.extensions=com.newrelic.agent.java:newrelic-java-quarkus -jar keycloak-20.0.3.jar start-dev检查NewRelic的路径排除规则
打开newrelic.yml,查看ignored_paths和excluded_transactions配置,确保Keycloak的核心路由(比如/auth/*、/realms/*)没有被意外排除。示例正确的忽略配置应该只包含健康检查、metrics这类非业务路由:ignored_paths: - "^/health$" - "^/metrics$" - "^/ready$"尝试适配Quarkus版本的NewRelic代理
Keycloak 20.0.3基于Quarkus 2.13.x,虽然你用了最新NewRelic代理,但部分新版代理可能对旧Quarkus版本的兼容性有细微问题。可以尝试降级到NewRelic代理7.12.0版本(这个版本对Quarkus 2.x的支持经过大量验证),再测试路由捕获效果。
如果以上调整后仍未解决,建议开启NewRelic代理的debug日志(在newrelic.yml中设置log_level: debug),日志中会详细记录事务命名的匹配过程和路由捕获细节,能帮你快速定位问题根源。
内容的提问来源于stack exchange,提问作者Nothig

