4 minutes read

POSTED Nov, 2019 dot IN Observability

Introducing Observability for Containers and VMs

Salih Kardan

Written by Salih Kardan

Ex-Software Engineer @Thundra

container-blog X

As everyone knows now, Thundra evolved as a result of the pain that Opsgenie engineers had with monitoring AWS Lambda written in Java runtime. After it became a separate company and product, we started to focus on the pain of the whole serverless community. These are the people adopting serverless at their pace in their organizations. There are some folks who adopted AWS Lambda in greenfield projects while others were migrating their existing applications to serverless.  While we are talking with our customers and getting feedback from them, we realized that many of them use both containers and serverless applications together and there is a gap between these applications. Even if it’s a greenfield project, it still talks with legacy architectures with asynchronous and sometimes synchronous events. 

Specifically, think of an application flow that a Spring application handles an HTTP request and then send a message to SQS. An AWS Lambda function is triggered by this SQS message and process your business logic and write the result to S3. Until now, Thundra was able to show trace map starting from Lambda function and there was a gap between container applications and Lambda functions which makes difficult to debug and troubleshoot these mixed applications. Until now..! Today, we are extremely proud to announce that we are expanding our observability and security offering to the containers and VMs. In this way, you will be able to monitor your container-based applications which are talking with Lambda functions or other containers through managed or unmanaged resources. We were already providing a full picture of serverless applications, now we are expanding it to serverless-centric apps. 

Paradigm change: From infrastructure-centric to app-centric

A decade ago, development and deployment of applications were much harder and more complicated than it is today. There were separate teams responsible for provisioning the servers and making them ready for applications.  With the rise of provisioning on the cloud, the cloud providers ease development and deployment processes with almost fully managed services. Now, developers can provision and run applications with containers and FAAS platforms in minutes. The most popular and common services are AWS Lambda and AWS Fargate services.

Back in that time, the focus was on infrastructure level-metrics such as throughputs, heartbeats, etc. Operations people who were sitting in a separate room were keeping their eye on some dashboards to notice the issues after they deploy an update on the system such as scaling the servers. With the rise of serverless functions and containers, the focus of software delivery teams is shifted to the applications itself since teams got rid of managing the stack. The tools to track the health of architecture is changed as well. Instead of charts that we are watching before, we are now using profilers, debuggers, tracing solutions to better understand our applications. All of this has created a transformation from DevOps to LessOps and from infrastructure-centric to application-centric approach.  We, as Thundra team, aim to the pioneer of this transformation and to be the vendor that help you go fast with serverless. 

What’s in this update?

Born into serverless, Thundra engineers developed lightweight libraries that can work in AWS Lambda container with minimal overhead. Instead of old-fashioned agents that need to be installed and run in a separate process, Thundra libraries attach themselves to the application in the runtime and gather three pillars of observability(traces, metrics, and logs) before the invocation ends. Using this data, Thundra helps software teams to troubleshoot their AWS Lambda functions with features like advanced distributed & local tracing, advanced searching, alerting, tagging functions & invocations, etc. Recently, we also added security capabilities to our libraries to whitelist/blacklist some resources. 

We were working really hard to come up with this, and we are delighted to come up with a real working example that you can play with by the time we make the announcement. Thundra is the only vendor that can do full tracing for lambda functions and containers.

How does this work? 

We improved our Java agent to make it compatible with applications running in containers. It is very easy to monitor your container application with Thundra and the following two steps are enough to see metrics, logs, and traces on Thunda console. 

  • Download Thundra java agent and point agent jar file with  -javaagent parameter while starting your application.
  • Put thundra-config.yml in your artifact which is picked up from classpath automatically.


It’s that simple! From now on, you will see general metrics about containers and see the distributed traces propagated from or to container applications. 

Let’s see it in action!

We implemented a sample application that utilizes both containers and AWS Lambda functions.  In the following trace map, you can see 4 AWS Lambda functions and 3 Spring applications. Thundra can display traces of distributed applications composed of Lambda functions and container applications in a single trace map. We believe that this will help you monitor and troubleshoot your applications when you are using your serverless functions in conjunction with the apps in Fargate, ECS, EKS or even EC2 instances. You can play with this mixed application on our demo environment. Don’t forget to click on the edges and nodes to see the messages being exchanged. 


What should you do to have this?

We will be providing this feature under beta for a while. This means that we are dying to hear your feedback. In order to gain access to this addition, just reach our us from support@thundra.io and we’ll guide you for the installation. It will be as easy as it’s explained in our doc. After we launch your experience, you’ll be able to experience and provide some more input for that. We’ll be developing a completely new user interface for the container metrics and logs. Just tell us what do you want to see! 


Containers and serverless are two competing technologies for the last decade and they both have advantages and drawbacks. Developers utilize both of these technologies in their architectures since container and serverless applications can compensate for each other. As of today, we are happy to fill the tracing gap between non-serverless(containers, VMs) and serverless applications. We also work on the other libraries to make them compatible with container applications. 

You can sign up to Thundra or see live demo to see Thundra in action. If you have questions about this update or anything else, join our Slack and shoot your question.  We’ll be at re:Invent 2019 in booth #627. Swing by our booth or schedule a 1:1 meeting to see a live demo to find out how you can run fast with serverless with Thundra’s observability and security insights for serverless-centric applications.