Skip to content

Tutorial 3: Running ChronoLog with Docker(single node)

Eneko Gonzalez edited this page Feb 27, 2025 · 3 revisions

Welcome!

If you’re looking for the easiest way to run ChronoLog, this is it. ChronoLog’s Docker image provides a ready-to-use installation, so you can skip the manual setup and jump straight into using it.

Let’s get started! 🚀

Before we start: What is Docker?

Docker is a tool that allows you to run applications inside lightweight, isolated environments called containers. This means you don’t have to worry about dependencies or system configurations—everything is pre-packaged and ready to go.

For a deeper dive, check out:

Before continuing, let’s verify that Docker is properly installed on your system

docker --version

If you see a version number, you’re good to go!

Setting Up ChronoLog Docker Image

Step 1: Pull the ChronoLog Docker Image

First, pull the pre-built ChronoLog image from Docker Hub:

docker pull gnosisrc/chronolog:latest

This downloads the latest ChronoLog image to your local machine, ensuring you have the most up-to-date version.


Step 2: Run the ChronoLog Container

Next, launch the ChronoLog container:

docker run -it --rm --name chronolog-instance gnosisrc/chronolog:latest

This command:

  • Starts a new ChronoLog container.
  • Runs it in interactive mode (-it), opening a terminal session inside the container.
  • Removes the container (--rm) when it stops, so it doesn’t persist unnecessarily.
  • Assigns a name (--name chronolog-instance) for easier reference.

Once executed, you should see a welcome message. At this point, you are inside the ChronoLog container.


Step 3: Verify That ChronoLog Is Running

Open a new terminal window (outside the Docker container) and run:

docker ps

You should see a container named chronolog-instance. For example:

CONTAINER ID   IMAGE                        COMMAND       CREATED          STATUS          PORTS     NAMES
bfbc93af1d50   gnosisrc/chronolog:latest    "/bin/bash"   X seconds ago    Up X seconds             chronolog-instance

This indicates your ChronoLog container is up and running successfully! 🚀

Deploy ChronoLog Components

With the ChronoLog environment set up, it’s time to deploy the system. We’ll use the ChronoLog single-node deployment script to start all necessary components.

Step 1: Navigate to the Deployment Scripts Folder

Inside the container, navigate to the deployment scripts directory:

cd /home/grc-iit/chronolog_repo/deploy

Step 2: Run the Deployment Script

Execute the deployment script to start the ChronoLog system:

./local_single_user_deploy.sh -d -w /home/grc-iit/chronolog_install/Release

This command will deploy a basic ChronoLog architecture, including:

  • One ChronoVisor (log controller)
  • One ChronoKeeper (log store manager)
  • One ChronoGrapher (query and indexing service)
  • One ChronoPlayer (stream processor)

Step 3: Verify That ChronoLog Components Are Running

To ensure all components are properly deployed, run the following command:

pgrep -la chrono

You should see an active process for each ChronoLog component:

/home/grc-iit/chronolog_install/Release/bin/chronovisor_server --config /home/grc-iit/chronolog_install/Release/conf/visor_conf.json
/home/grc-iit/chronolog_install/Release/bin/chrono_grapher --config /home/grc-iit/chronolog_install/Release/conf/grapher_conf_1.json
/home/grc-iit/chronolog_install/Release/bin/chrono_player --config /home/grc-iit/chronolog_install/Release/conf/player_conf_1.json
/home/grc-iit/chronolog_install/Release/bin/chrono_keeper --config /home/grc-iit/chronolog_install/Release/conf/keeper_conf_1.json

If all four processes appear, your ChronoLog deployment is successfully running! 🚀

Running a ChronoLog Client + Performance Test

With the ChronoLog environment set up and all components deployed, it’s time to test the system by running a client and analyzing its performance.

Step 1: Execute the ChronoLog Client

Run the following command to start the client admin with multiple MPI processes:

LD_LIBRARY_PATH=~/chronolog_install/Release/lib \
/home/grc-iit/chronolog_repo/.spack-env/view/bin/mpiexec -n 4 \
~/chronolog_install/Release/bin/client_admin \
--config ~/chronolog_install/Release/conf/default_conf.json \
-h 2 -t 2 -a 100 -s 100 -b 100 -n 100 -p

This command:

  • Launches the ChronoLog client.
  • Uses 4 MPI processes for parallel execution (-n 4).
  • Runs a performance test with specific parameters (-h 2 -t 2 -a 100 -s 100 -b 100 -n 100 -p).

Once executed, the client will create Chronicles, Stories, and Events, simulating real workloads to evaluate system performance.

Stopping the ChronoLog Container

Once you’re done using ChronoLog, exit the container:

exit

Then stop the running instance (if it wasn’t started with --rm):

docker stop chronolog-instance

And if you want to remove it completely:

docker rm chronolog-instance

What’s Next?

Now that you have ChronoLog running in Docker, you’re ready to:

✅ Explore different ChronoLog deployment options by checking the Deployment Guide.

✅ Discover the potential of ChronoLog Clients: Basic Client, Interactive Client, Scripted Client & Python Client.

✅ Start building your own applications on top of ChronoLog.

In our next tutorial, we’ll show you how to run ChronoLog in a multi-node setup, so stay tuned! 🚀