Polyglot Application Observability

Amitpal Singh Dhillon
2 min readAug 20, 2021

Pinpoint (developed by Naver, South Korea’s largest web search engine company) is an APM (Application Performance Management) solution used by many organizations around the globe and actively used internally by Naver, where Pinpoint monitors over 10 billion transactions per day. This allows tracing transactions and data flows between multiple software components and identifies problematic areas along with potential bottlenecks.

Integration

The Pinpoint team developed a GraalVM agent using the Truffle API. GraalVM provides a faster runtime for applications, and access to Truffle APIs to get access to the platform and enhance interoperability.

The integration between GraalVM and Pinpoint below shows the Auto-instrumentation of a polyglot application written in Java, Node.js with a MySQL database backend.

To start using the PinPoint and GraalVM for your applications, get the following project from GitHub:git clone https://github.com/RoySRose/pingraalPrerequisite GraalVM preinstalled.

1. create instrument jar
mvn clean install -DskipTests=true
2. run server.js
node server.js
3. run 1st node.js which is going to be instrumented
./simpletool node helloworld.js
After running these commands, you should be able to access the PinPoint dashboard

Results

The results are shown in three parts below.

a) The integration allows you to collect and visualize performance metrics of your application, such as heap/non-heap memory usage, CPU usage, active threads, response time, and others.

Figure 1: Auto-instrumented polyglot application

b) From the Callstack view you can dig deep into distributed call stacks of a particular transaction from multiple servers in one view:

Figure 2: Callstack view of a particular transaction

c) The inspector collects the following information:
- Heap/Non-Heap Usage
- GraalVM/System CPU usage
- Transactions per second
- Active Threads
- Response Time
- Open File Descriptors
- Direct/Mapped Buffer
- Data source

Figure 3: Information Inspector

Summary

This collaboration was done thanks to the efforts of the GraalVM Labs Engineering team (led by Thomas Wuerthinger) and also Roy Kim from Naver Labs and his Pinpoint team. The integration between GraalVM and Pinpoint helps us to see and understand the need for Polyglot Application Observability.

--

--

Amitpal Singh Dhillon

vCISO, previously, from Oracle Inc, Sourcefire, Cisco Systems, and Applied Materials.