jenkinsci/opentelemetry-plugin

[BUG] Missing properties causing java.lang.NullPointerException

fl-max opened this issue · 1 comments

Jenkins and plugins versions report

Environment
Jenkins: 2.440.3.8
OS: Linux - 5.10.219-208.866.amzn2.x86_64
Java: 11.0.23 - Amazon.com Inc. (OpenJDK 64-Bit Server VM)
---
opentelemetry:3.1215.vc9db_a_0b_34c2a_

What Operating System are you using (both controller, and any agents involved in the problem)?

AL2

Reproduction steps

  1. Using CaSC, deploy Controller with the following
unclassified:
  openTelemetry:
    authentication:
      otlpHeaderAuthentication:
        headerName: "api-key"
        headerValueId: "${otel_credential_id}"
    configurationProperties: |-
      otel.metrics.exporter=otlp
      otel.traces.exporter=otlp
    disabledResourceProviders: "io.opentelemetry.instrumentation.resources.ProcessResourceProvider"
    endpoint: "${otel_endpoint}"
    exportOtelConfigurationAsEnvironmentVariables: true
    exporterIntervalMillis: 60000
    exporterTimeoutMillis: 30000
    ignoredSteps: "dir,echo,isUnix,pwd,properties"
    serviceName: "${CONTROLLER_ENDPOINT}"
    serviceNamespace: "jenkins"
    trustedCertificatesPem: ""
    observabilityBackends:
    - customObservabilityBackend:
        name: "NewRelic"
        metricsVisualizationUrlTemplate: "https://one.newrelic.com/distributed-tracing?account=${newrelic_acct_id}&state=^${traceId}"
        traceVisualisationUrlTemplate: "https://one.newrelic.com/distributed-tracing?account=${newrelic_acct_id}&state=^${traceId}"

Expected Results

Expectation is no errors in logs and Noteworthy active configuration properties & Active resource attributes sections populated with properties.

Actual Results

We see a number of errors in the logs relating to OpenTelemetry, however the predominate one is:

WARNING org.eclipse.jetty.server.handler.ContextHandler$Context log
Error while serving https://<controller_endpoint>/i18n/resourceBundle
java.lang.NullPointerException
	at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:903)
	at io.jenkins.plugins.opentelemetry.OpenTelemetrySdkProvider.getResource(OpenTelemetrySdkProvider.java:82)
	at io.jenkins.plugins.opentelemetry.OpenTelemetryRootAction.lambda$getUrlName$3(OpenTelemetryRootAction.java:50)
	at java.base/java.util.Optional.map(Optional.java:265)
	at io.jenkins.plugins.opentelemetry.OpenTelemetryRootAction.getUrlName(OpenTelemetryRootAction.java:50)
	at jenkins.model.Jenkins.getDynamic(Jenkins.java:4050)
	at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:710)
	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:397)
Caused: java.lang.reflect.InvocationTargetException
	at org.kohsuke.stapler.Function$MethodFunction.invoke(Function.java:401)
	at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:409)

Additionally, I've observed the following WARNING upon startup:

WARNING	i.j.p.o.b.ObservabilityBackend#getMetricsVisualizationUrl: Failure to generate MetricsVisualizationUrl, missing binding for property 'traceId' in template https://one.newrelic.com/distributed-tracing?account=<acct_id>&state=${traceId}

We believe this is due to Otel Configuration not being exported as Env vars. We can see option checked in the UI however the sections Noteworthy active configuration properties & Active resource attributes are empty. Interestingly, when clicking save from the UI, these sections populate, errors go away and the system is stable again.

Anything else?

Much of the "Manage Jenkins" UI is unreachable when when in this errored state.

Are you interested in contributing a fix?

No response

public Resource getResource() {
return Preconditions.checkNotNull(resource);
}