Header background

Preview of monitoring support for Oracle GraalVM-based applications

Oracle GraalVM is a novel ecosystem that’s used to compile and run applications that are written in numerous languages, including JavaScript, Ruby, R, Python, JVM-based languages (such as Java, Scala, Groovy, and Kotlin), as well as LLVM-based languages, including C, C++, Fortran, and Rust. GraalVM languages can run on the Java VM, be linked with native code, or embedded into data engines, such as MySQL or REDIS. In addition, the GraalVM uses a just-in-time compiler that improves efficiency and speed of applications via unique approaches to code analysis and optimization. These features make GraalVM an attractive platform for native cloud applications.

GraalVM ships with the Graal Polyglot SDK, an abstraction layer for guest programming languages. This SDK features a rich set of language-agnostic instrumentation capabilities and allows building a language-agnostic set of tools like debuggers, profilers, or performance monitoring software that works for all languages out of the box. These instrumentation capabilities are first-class citizens in the GraalVM, which makes the API powerful and guarantees a close-to-zero run-time overhead.

We are the main APM vendor partnering with the Oracle team developing Graal to refine the monitoring capabilities of the Graal VM. This allows us to provide the well-known surplus value of monitoring at very low overhead costs. We have already experimented with the monitoring capabilities of the GraalVM and are looking forward to be able to ship a single Java-based agent that can monitor a variety of languages at once. It also enables us to easily instrument C/C++ languages at run-time. Compared to other monitoring interfaces, instrumenting code running in the GraalVM is a lot easier and much more potent.