Monitor resource utilization
Learn how to monitor the memory and CPU utilization of your Retool instance.
When self-hosting Retool, you can allocate a specific amount of memory or CPU to the hosts where Retool’s containers are deployed. As more users access Retool apps, Retool’s containers use more of these resources.
Retool logs events that you can use to understand the resource utilization of your Retool deployment. Monitoring these logs helps you ensure that resource utilization stays within the limits of your hosting environment, and proactively scale resources as utilization increases.
Access logs
How you access logs depends on your hosting platform. Retool uses several containers to deliver the application and resource utilization logs are output by the api
container.
For deployments using a single EC2 host, you can access resource utilization logs using this process:
- Use SSH to connect to the EC2 host.
- Navigate to the directory where Retool is deployed.
- Run
docker ps
to see a list of running containers. Find the name of the container running theretool-onpremise_api
image. - Run
docker logs <API_CONTAINER_NAME>
to view logs for the container
You can use docker logging drivers to export these logs to various log management services like AWS CloudWatch, Google Cloud Logging, DataDog, Splunk, etc.
Logs overview
The Retool api
container runs several processes that support the Retool application. Each process has a random pid
value assigned to it. Retool emits a resource utilization event per process every 20 seconds. See below for an example event:
{
"namespace": "memoryUsage",
"pid": NN,
"message": {
"pid": NN,
"Memory Stats for process": {
"rss": "254.099456 MB",
"heapTotal": "159.8464 MB",
"heapUsed": "144.332648 MB",
"percentageHeapUsed": "90.29%"
},
"CPU Usage % for process": "0.02%",
"Memory Stats for container": {
"freeSystemMemory": "359.3216 MB",
"totalSystemMemory": "4054.708224 MB",
"percentageFreeMemory": "8.86%"
}
},
"level": "info",
"timestamp": "2022-03-29T12:52:13.280Z"
}
Each event contains information for a given process and for the container as a whole. You can use the Memory Stats for container
object to track memory utilization over time.
You can also approximate CPU utilization for the container by summing the most recent values of the CPU Usage % for process
key across all running processes.
Use cases for logs
You can accomplish several common use cases by exporting resource utilization events to your log management service, including:
- Visualize resource utilization trends over time.
- Alert when resource utilization exceeds a predetermined threshold.
Updated 8 days ago