opentelemetry-java-instrume.../instrumentation/resources/library
Trask Stalnaker 9882f3f901
Fix potential startup failure (#7567)
Can be reproduce (at least on Windows) using

```
java -javaagent:opentelemetry-javaagent.jar anything C:\one
```

producing

```
[otel.javaagent 2023-01-13 11:38:47:978 -0800] [main] INFO io.opentelemetry.javaagent.tooling.VersionLogger - opentelemetry-javaagent - version: 1.22.0
OpenTelemetry Javaagent failed to start
java.nio.file.InvalidPathException: Illegal char <:> at index 10: anything C:\one
        at java.base/sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:182)
        at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153)
        at java.base/sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:77)
        at java.base/sun.nio.fs.WindowsPath.parse(WindowsPath.java:92)
        at java.base/sun.nio.fs.WindowsFileSystem.getPath(WindowsFileSystem.java:229)
        at java.base/java.nio.file.Path.of(Path.java:147)
        at java.base/java.nio.file.Paths.get(Paths.java:69)
        at io.opentelemetry.instrumentation.resources.JarServiceNameDetector.getJarPathFromSunCommandLine(JarServiceNameDetector.java:104)
        at io.opentelemetry.instrumentation.resources.JarServiceNameDetector.createResource(JarServiceNameDetector.java:59)
        at io.opentelemetry.sdk.autoconfigure.ResourceConfiguration.configureResource(ResourceConfiguration.java:59)
        at io.opentelemetry.sdk.autoconfigure.AutoConfiguredOpenTelemetrySdkBuilder.build(AutoConfiguredOpenTelemetrySdkBuilder.java:332)
        at io.opentelemetry.javaagent.tooling.OpenTelemetryInstaller.installOpenTelemetrySdk(OpenTelemetryInstaller.java:29)
        at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:114)
        at io.opentelemetry.javaagent.tooling.AgentInstaller.installBytebuddyAgent(AgentInstaller.java:94)
        at io.opentelemetry.javaagent.tooling.AgentStarterImpl.start(AgentStarterImpl.java:78)
        at io.opentelemetry.javaagent.bootstrap.AgentInitializer.initialize(AgentInitializer.java:35)
        at io.opentelemetry.javaagent.OpenTelemetryAgent.startAgent(OpenTelemetryAgent.java:57)
        at io.opentelemetry.javaagent.OpenTelemetryAgent.premain(OpenTelemetryAgent.java:45)
```
2023-01-13 22:51:23 +00:00
..
src Fix potential startup failure (#7567) 2023-01-13 22:51:23 +00:00
README.md Introduce markdown lint check (#7175) 2022-11-16 20:48:42 -08:00
build.gradle.kts Bump spotless-plugin-gradle from 6.12.0 to 6.12.1 (#7500) 2023-01-03 09:58:06 +00:00

README.md

OpenTelemetry Resource Providers

This package includes some standard ResourceProviders for filling in attributes related to common environments. Currently, the resources provide the following semantic conventions:

Populated attributes

Container

Provider: io.opentelemetry.instrumentation.resources.ContainerResource

Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/container.md

Implemented attributes:

  • container.id

Host

Provider: io.opentelemetry.instrumentation.resources.HostResource

Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/resource/semantic_conventions/host.md

Implemented attributes:

  • host.name
  • host.arch

Operating System

Provider: io.opentelemetry.instrumentation.resources.OsResource

Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/os.md

Implemented attributes:

  • os.type
  • os.description

Process

Implementation: io.opentelemetry.instrumentation.resources.ProcessResource

Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/process.md#process

Implemented attributes:

  • process.pid
  • process.executable.path (note, we assume the java binary is located in the bin subfolder of JAVA_HOME)
  • process.command_line (note this includes all system properties and arguments when running)

Java Runtime

Implementation: io.opentelemetry.instrumentation.resources.ProcessRuntimeResource

Specification: https://github.com/open-telemetry/opentelemetry-specification/blob/master/specification/resource/semantic_conventions/process.md#process-runtimes

Implemented attributes:

  • process.runtime.name
  • process.runtime.version
  • process.runtime.description

Platforms

This package currently does not run on Android. It has been verified on OpenJDK and should work on other server JVM distributions but if you find any issues please let us know.