PageSourceSearch

https://chronolog.dev/docs/assets/js/af0b4aac.8cf9565d.js

js chronolog.dev collected 2026-10-04 18:02:53 UTC 10,939 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkdocs=globalThis.webpackChunkdocs||[]).push([[2385],{72963(e,n,o){o.r(n),o.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>d,frontMatter:()=>t,metadata:()=>r,toc:()=>h});const r=JSON.parse('{"id":"tutorials/docker-single-node/running-chronolog","title":"Running ChronoLog","description":"Welcome!","source":"@site/versioned_docs/version-3.1.1/tutorials/docker-single-node/running-chronolog.md","sourceDirName":"tutorials/docker-single-node","slug":"/tutorials/docker-single-node/running-chronolog","permalink":"/docs/3.1.1/tutorials/docker-single-node/running-chronolog","draft":false,"unlisted":false,"editUrl":"https://github.com/grc-iit/ChronoLog/tree/main/docs/versioned_docs/version-3.1.1/tutorials/docker-single-node/running-chronolog.md","tags":[],"version":"3.1.1","sidebarPosition":1,"frontMatter":{"sidebar_position":1,"title":"Running ChronoLog"},"sidebar":"tutorialsSidebar","previous":{"title":"How to Run a Performance Test","permalink":"/docs/3.1.1/tutorials/native-linux/performance-test"},"next":{"title":"Client + Performance test","permalink":"/docs/3.1.1/tutorials/docker-single-node/client-performance-test"}}');var s=o(74848),i=o(28453);const t={sidebar_position:1,title:"Running ChronoLog"},l="Running ChronoLog with Docker (Single Node)",c={},h=[{value:"Welcome!",id:"welcome",level:2},{value:"Before we start: What is Docker?",id:"before-we-start-what-is-docker",level:2},{value:"Setting Up ChronoLog Docker Image",id:"setting-up-chronolog-docker-image",level:2},{value:"Step 1: Pull the ChronoLog Docker Image",id:"step-1-pull-the-chronolog-docker-image",level:3},{value:"Step 2: Run the ChronoLog Container",id:"step-2-run-the-chronolog-container",level:3},{value:"Step 3: Verify That ChronoLog Is Running",id:"step-3-verify-that-chronolog-is-running",level:3},{value:"Deploy ChronoLog Components",id:"deploy-chronolog-components",level:2},{value:"Step 1: Run the Deployment Script",id:"step-1-run-the-deployment-script",level:3},{value:"Step 2: Verify That ChronoLog Components Are Running",id:"step-2-verify-that-chronolog-components-are-running",level:3},{value:"Stop ChronoLog",id:"stop-chronolog",level:2},{value:"Next: Client + Performance test",id:"next-client--performance-test",level:2}];function a(e){const n={a:"a",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.header,{children:(0,s.jsx)(n.h1,{id:"running-chronolog-with-docker-single-node",children:"Running ChronoLog with Docker (Single Node)"})}),"\n",(0,s.jsx)(n.h2,{id:"welcome",children:"Welcome!"}),"\n",(0,s.jsxs)(n.p,{children:["If you're looking for the ",(0,s.jsx)(n.strong,{children:"easiest way to run ChronoLog"}),", this is it. ",(0,s.jsx)(n.strong,{children:"ChronoLog's Docker image"})," provides a ready-to-use installation, so you can skip the manual setup and jump straight into using it."]}),"\n",(0,s.jsx)(n.p,{children:"Let's get started!"}),"\n",(0,s.jsx)(n.h2,{id:"before-we-start-what-is-docker",children:"Before we start: What is Docker?"}),"\n",(0,s.jsxs)(n.p,{children:["Docker is a tool that allows you to run applications inside ",(0,s.jsx)(n.strong,{children:"lightweight, isolated environments"})," called ",(0,s.jsx)(n.strong,{children:"containers"}),". This means you don't have to worry about dependencies or system configurations\u2014everything is pre-packaged and ready to go."]}),"\n",(0,s.jsx)(n.p,{children:"For a deeper dive, check out:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.docker.com/get-started/overview/",children:"Docker Overview"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"https://docs.docker.com/get-docker/",children:"Install Docker"})}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"Before continuing, let's verify that Docker is properly installed on your system:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker --version\n"})}
1),"\n",(0,s.jsx)(n.p,{children:"If you see a version number, you're good to go!"}),"\n",(0,s.jsx)(n.h2,{id:"setting-up-chronolog-docker-image",children:"Setting Up ChronoLog Docker Image"}),"\n",(0,s.jsx)(n.h3,{id:"step-1-pull-the-chronolog-docker-image",children:"Step 1: Pull the ChronoLog Docker Image"}),"\n",(0,s.jsx)(n.p,{children:"First, pull the pre-built ChronoLog image from GitHub Container Registry:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker pull ghcr.io/grc-iit/chronolog:v3.0.0\n"})}),"\n",(0,s.jsx)(n.p,{children:"This downloads the ChronoLog v3.0.0 image to your local machine, with a pre-installed release build ready to use."}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"step-2-run-the-chronolog-container",children:"Step 2: Run the ChronoLog Container"}),"\n",(0,s.jsx)(n.p,{children:"Next, launch the ChronoLog container:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker run -it --rm --name chronolog-instance ghcr.io/grc-iit/chronolog:v3.0.0\n"})}),"\n",(0,s.jsx)(n.p,{children:"This command:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Starts"})," a new ChronoLog container."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Runs it in interactive mode"})," (",(0,s.jsx)(n.code,{children:"-it"}),"), opening a terminal session inside the container."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Removes"})," the container (",(0,s.jsx)(n.code,{children:"--rm"}),") when it stops, so it doesn't persist unnecessarily."]}),"\n",(0,s.jsxs)(n.li,{children:[(0,s.jsx)(n.strong,{children:"Assigns a name"})," (",(0,s.jsx)(n.code,{children:"--name chronolog-instance"}),") for easier reference."]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["Once executed, you should see a welcome message. At this point, you are ",(0,s.jsx)(n.strong,{children:"inside"})," the ChronoLog container. The working directory is automatically set to the ChronoLog installation (",(0,s.jsx)(n.code,{children:"$CHRONOLOG_HOME"}),")."]}),"\n",(0,s.jsx)(n.hr,{}),"\n",(0,s.jsx)(n.h3,{id:"step-3-verify-that-chronolog-is-running",children:"Step 3: Verify That ChronoLog Is Running"}),"\n",(0,s.jsxs)(n.p,{children:["Open a ",(0,s.jsx)(n.strong,{children:"new terminal window"})," (outside the Docker container) and run:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"docker ps\n"})}),"\n",(0,s.jsxs)(n.p,{children:["You should see a container named ",(0,s.jsx)(n.code,{children:"chronolog-instance"}),". For example:"]}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:'CONTAINER ID   IMAGE                                    COMMAND       CREATED          STATUS          PORTS     NAMES\nbfbc93af1d50   ghcr.io/grc-iit/chronolog:v3.0.0        "/bin/bash"   X seconds ago    Up X seconds             chronolog-instance\n'})}),"\n",(0,s.jsx)(n.p,{children:"This indicates your ChronoLog container is up and running successfully!"}),"\n",(0,s.jsx)(n.h2,{id:"deploy-chronolog-components",children:"Deploy ChronoLog Components"}),"\n",(0,s.jsx)(n.p,{children:"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."}),"\n",(0,s.jsx)(n.h3,{id:"step-1-run-the-deployment-script",children:"Step 1: Run the Deployment Script"}),"\n",(0,s.jsx)(n.p,{children:"Inside the container, execute the deployment script to start the ChronoLog system:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"tools/deploy/deploy_local.sh --start\n"})}),"\n",(0,s.jsxs)(n.p,{children:["No ",(0,s.jsx)(n.code,{children:"cd"})," is needed \u2014 the container's working directory is already set to the ChronoLog installation."]}),"\n",(0,s.jsxs)(n.p,{children:["This command will deploy a ",(0,s.jsx)(n.strong,{children:"basic ChronoLog architecture"}),", including:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["One ",(0,s.jsx)(n.strong,{children:"ChronoVisor"})," (log controller)"]}),"\n",(0,s.jsxs)(n.li,{children:["One ",(0,s.jsx)(n.strong,{children:"ChronoKeeper"})," (log store manager)"]}),"\n",(0,s.jsxs)(n.li,{children:["One ",(0,s.jsx)(n.strong,{children:"ChronoGrapher"})," (query and indexing service)"]}),"\n",(0,s.jsxs)(n.li,{children:["One ",(0,s.jsx)(n.strong,{children:"ChronoPlayer"})," (stream processor)"]}),"\n"]}),"\n",(0,s.jsx)(n.h3,{id:"step-2-verify-that-chronolog-components-are-running",children:"Step 2: Verify That ChronoLog Components Are Running"}
1),"\n",(0,s.jsx)(n.p,{children:"To ensure all components are properly deployed, run the following command:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"pgrep -fla 'chrono-visor|chrono-keeper|chrono-grapher|chrono-player'\n"})}),"\n",(0,s.jsx)(n.p,{children:"You should see an active process for each ChronoLog component:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"/home/grc-iit/chronolog-release-install/chronolog/bin/chrono-visor ...\n/home/grc-iit/chronolog-release-install/chronolog/bin/chrono-keeper ...\n/home/grc-iit/chronolog-release-install/chronolog/bin/chrono-grapher ...\n/home/grc-iit/chronolog-release-install/chronolog/bin/chrono-player ...\n"})}),"\n",(0,s.jsx)(n.p,{children:"If all four processes appear, your ChronoLog deployment is successfully running!"}),"\n",(0,s.jsx)(n.h2,{id:"stop-chronolog",children:"Stop ChronoLog"}),"\n",(0,s.jsx)(n.p,{children:"To stop all ChronoLog services:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"tools/deploy/deploy_local.sh --stop\n"})}),"\n",(0,s.jsx)(n.p,{children:"To also remove generated logs, configuration artifacts and stored data:"}),"\n",(0,s.jsx)(n.pre,{children:(0,s.jsx)(n.code,{className:"language-bash",children:"tools/deploy/deploy_local.sh --clean\n"})}),"\n",(0,s.jsx)(n.h2,{id:"next-client--performance-test",children:"Next: Client + Performance test"}),"\n",(0,s.jsxs)(n.p,{children:["Once ChronoLog is up and running, continue with the ",(0,s.jsx)(n.a,{href:"./client-performance-test",children:"Client + Performance test"})," to generate load and evaluate performance."]})]})}function d(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(a,{...e})}):a(e)}},28453(e,n,o){o.d(n,{R:()=>t,x:()=>l});var r=o(96540);const s={},i=r.createContext(s);function t(e){const n=r.useContext(i);return r.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:t(e.components),r.createElement(i.Provider,{value:n},e.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.