You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于OpenTelemetry实现Play Framework应用gRPC端点指标无代码埋点

问题描述
  • 技术栈:基于Play Framework构建的Scala应用,暴露gRPC端点
  • 当前配置:
    1. 已通过opentelemetry-javaagent实现自动埋点
    2. OpenTelemetry数据发送至New Relic的OTLP端点
  • 问题:能看到基础JVM指标(如process.runtime.jvm.*),但无gRPC端点的特定遥测数据(请求数、响应时间、错误率等)
  • 需求:无需修改应用代码,通过OpenTelemetry收集并上报gRPC特定指标到New Relic
解决方案

完全可以通过opentelemetry-javaagent的配置实现,无需修改业务代码,具体步骤如下:

1. 确认opentelemetry-javaagent版本

确保使用的agent版本不低于1.10.0(更早版本对gRPC的支持有限),建议使用最新稳定版——gRPC的自动埋点模块是agent内置的,无需额外依赖。

2. 确保gRPC自动埋点模块启用

opentelemetry-javaagent默认启用gRPC的服务端/客户端埋点,若之前有手动排除过相关模块,需通过环境变量恢复:

OTEL_INSTRUMENTATION_GRPC_ENABLED=true

同时检查是否存在OTEL_INSTRUMENTATION_EXCLUDE_LIST配置,确保没有包含grpc相关条目。

3. 完善OTLP导出配置

确保同时导出追踪数据和指标数据到New Relic,启动应用时传入以下环境变量:

# 指定导出器类型为OTLP
OTEL_METRICS_EXPORTER=otlp
OTEL_TRACES_EXPORTER=otlp

# New Relic的OTLP端点(全球通用)
OTEL_EXPORTER_OTLP_ENDPOINT=https://otlp.nr-data.net:4317

# 传入New Relic许可证密钥作为请求头
OTEL_EXPORTER_OTLP_HEADERS="api-key=你的New Relic许可证密钥"

# 可选:设置服务名称,方便在New Relic中识别
OTEL_SERVICE_NAME=你的应用服务名

4. 验证埋点生效

启动应用时添加日志级别配置,查看agent是否加载了gRPC模块:

OTEL_LOG_LEVEL=debug

在启动日志中搜索grpc,若看到类似Loaded instrumentation grpc的条目,说明gRPC埋点模块已成功加载。

5. 在New Relic中查看gRPC数据

  • 指标:在New Relic查询界面搜索grpc.server.*前缀的指标,比如grpc.server.requests.total(请求数)、grpc.server.duration(响应时间分布)、grpc.server.errors.total(错误数)
  • 追踪:在New Relic分布式追踪界面,筛选你的服务,可查看单个gRPC请求的完整调用链

内容的提问来源于stack exchange,提问作者Ivan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:40:06