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

New Relic OpenTelemetry集成Micrometer错误率仪表盘查询异常

Micrometer与New Relic OpenTelemetry集成错误率异常问题

我尝试将Micrometer与New Relic OpenTelemetry集成,按照归档说明完成配置(依赖及代码配置见下文)。调用服务后发现,无错误响应时错误率数值却与吞吐量一致。分析错误率查询语句发现,查询判断exception != 'None',但服务发送的正常请求中exception值为'none',疑惑是配置有误还是仪表盘存在bug。

依赖配置

platform("io.opentelemetry:opentelemetry-bom:1.28.0")
implementation("io.opentelemetry:opentelemetry-api")
implementation("io.opentelemetry:opentelemetry-sdk")
implementation("io.opentelemetry:opentelemetry-exporter-otlp")
implementation("io.opentelemetry:opentelemetry-exporter-prometheus:1.28.0-alpha")
implementation("io.opentelemetry:opentelemetry-micrometer1-shim:1.17.0-alpha")
implementation("io.opentelemetry.instrumentation:opentelemetry-micrometer-1.5:1.28.0-alpha")

代码配置

import io.micrometer.core.instrument.MeterRegistry
import io.opentelemetry.api.OpenTelemetry
import io.opentelemetry.exporter.otlp.metrics.OtlpGrpcMetricExporter
import io.opentelemetry.micrometer1shim.OpenTelemetryMeterRegistry
import io.opentelemetry.sdk.OpenTelemetrySdk
import io.opentelemetry.sdk.metrics.SdkMeterProvider
import io.opentelemetry.sdk.metrics.export.AggregationTemporalitySelector
import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader
import io.opentelemetry.sdk.resources.Resource
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import java.time.Duration

@Configuration(proxyBeanMethods = false)
class MetricsConfiguration {

    @Bean
    fun openTelemetry(
        @Value("\${newrelic.name}") serviceName: String,
        @Value("\${newrelic.licence}") licenceKey: String,
    ): OpenTelemetry {
        return OpenTelemetrySdk.builder()
            .setMeterProvider(
                SdkMeterProvider.builder()
                    .setResource(
                        Resource.getDefault().toBuilder()
                            .put(
                                "service.name",
                                serviceName,
                            )
                            .put("instrumentation.provider", "micrometer")
                            .build(),
                    )
                    .registerMetricReader(
                        PeriodicMetricReader.builder(
                            OtlpGrpcMetricExporter.builder()
                                .setEndpoint("https://otlp.nr-data.net:4317")
                                .addHeader("api-key", licenceKey)
                                .setAggregationTemporalitySelector(
                                    AggregationTemporalitySelector.deltaPreferred(),
                                )
                                .build(),
                        )
                            .setInterval(Duration.ofSeconds(MICROMETER_COLLECTION_INTERVAL))
                            .build(),
                    )
                    .build(),
            )
            .build()
    }

    @Bean
    fun meterRegistry(openTelemetry: OpenTelemetry): MeterRegistry {
        return OpenTelemetryMeterRegistry.builder(openTelemetry).build()
    }

    companion object {
        const val MICROMETER_COLLECTION_INTERVAL = 60L
    }
}

错误率查询语句

FROM Metric SELECT count(http.server.requests.active.duration) AS 'Errored requests' WHERE entity.guid = '...' AND exception is not null and exception != 'None' TIMESERIES

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:11:02