Chronos
âď¸ Star us on GitHub! âď¸
Visit our website at chronoslany.com.
Chronos is a comprehensive developer tool that monitors the health and web traffic for containerized (Docker & Kubernetes) and non-containerized microservices communicated via REST APIs or gRPC, whether hosted locally or on Amazon Web Services (AWS). Use Chronos to see real-time data monitoring and receive automated notifications over Slack or email.
Whatâs New?
Chronos 14.0
Updates:
Implemented a new visualization button (example) to expedite data rendering processes.
Refactored microservices example, switched over to community version of MongoDB for easier URI implementation.
Modularized cluttered components into modular units to improve code readability and reusability.
Optimized startup scripts to reduce application load time and streamline environment configuration.
Upgraded Material-UI from version 4 to version 5, adapting to new API changes and improving UI responsiveness.
Refactored portions of the electron app
Refactored data parsing logic to reduce unnecessary rerenders and improve app performance
Fixed data bottle necks in the local npm packages, data is now able to flow to microservices for data visualization
Version 14.0 Medium Article
Iteration Log
Chronos 13.0
Updates:
- Created new and improved microservices application with updated syntax to better demonstrate Chronos' capabilities
- Dockerized microservices application to demonstrate Chronos within a containerized environment
- Added visulization of Chronos' codebase to illustrate overall structure
- Simplified installation and startup instructions in the root directory README file
- Improved documentation in chronos_npm_package README file for easier on-boarding
Version 13.0 Medium Article
Chronos 12.0
Updates:
- Grafana charting and visualizer
- Increase in Prometheus and cAdvisor integration span
- Increased testing coverage to include unit testing and Selenium-based, end-to-end testing
- Integrated CI/CD which automates GitHub Action to run testing suites in order and create a publishing action to NPM Registry
Version 12.0 Medium Article
Chronos 11.0
Updates:
- Interactive charting which can display and compare metrics in rendered graphs
- Increased user database security with user authorization to connect multiple
- services and databases and have instances persist without having to reconnect
- Improved documentation by adding ReadMes about how to initialize the app, how to use the given examples, and how to update config files
- Updated NPM Package to âincrease reliability and ease of navigation
- Fixed bugs and improved test coverage
Version 11.0 Medium Article
Chronos 10.0
Updates:
- Full user authentication integrating with a functional database which enables users to securely save their profile and data
- Updated microservices, gRPC, and Dockerized app examples
Version 10.0 Medium Article
Chronos 9.0
Updates:
- Added AWS - Users of Chronos are now able to monitor and visualize containers running in Amazonâs Elastic Kubernetes Service (EKS)~Medium
- Ability to monitor cost metrics through Opencast integration
Version 9.0 Medium Article
Chronos 8.0
Updates:
- Rewrite microservice in a language with a higher level of support such as GO or Java
- Use packages such as OpenTelementry to record data and export said data to an additional application like Zipkin or Prometheus
- Purchase a license to one of the few monitoring tools that support gRPC and Node.js.
Version 8.0 Medium Article
Chronos 7.0
Updates:
- Ability to filter out specific metrics using a query tool
- Increased the number of metrics available from 12 to 100+
- Options to filter metrics by category
- Apache Kafka monitoring capabilities
- Bug fixes and UI improvements
Version 7.0 Medium Article
With Chronos 14.0
Overview of the CodeBase
- If you want to visualize the way the files in the app are connected, we suggest using this data visualizer. Below, itâs showing the same repository, but instead of a directory structure, each file and folder as a circle: the circleâs color is the type of file, and the circleâs size represents the size of the file. See live demo
here.
Features
- Cloud-Based Instances:
- Option to choose between cloud hosted services and local services, giving Chronos the ability to monitor instances and clusters on AWS EC2, ECS, and EKS platforms
- Local instances utilitizing
@chronosmicro/tracker
NPM package:
- Enables distributed tracing enabled across microservices applications
- Displays real-time temperature, speed, latency, and memory statistics for local services
- Displays and compares multiple microservice metrics in a single graph
- Allow Kubernetes and Docker monitoring via Prometheus server and Grafana visualization.
- Compatible with
- Monitor an cluster via the JMX Prometheus Exporter
- Supports and databases
Installation
This is for the latest Chronos version 13.0 release.
NPM Package
In order to use Chronos within your own application, you must have the @chronosmicro/tracker
dependency installed.
The @chronosmicro/tracker
package tracks your applicationâs calls and scrapes metrics from your system.
- NOTE: The Chronos tracker code is included in the chronos_npm_package folder for ease of development, but the published NPM package can be downloaded by running
npm install @chronosmicro/tracker
.
For more details on the NPM package and instructions for how to use it, please view the Chronos NPM Package README.
Chronos Desktop Application
Running the Chronos desktop app in development mode (WSL Incompatible)
- From the root directory, run
npm install
- Run
npm run start:electron
to start the electron app.
- Run
npm audit fix
or npm audit fix --force
if prompted
- Refer to
Examples
sections below to spin up example applications.
(Recommended):
If you have mongo community edition running locally just run npm run start:microservices
to start populating database with server data(more detail in Microservices Example section).
Packing the Chronos desktop app into an executable
- From the root directory, run
npm run build
- Run
npm run package
- Find the
chronos.app
executable inside the newly created release-builds
folder in the root directory.
Creating User Database
NOTE: You must create your own user database for extended features
- Create a MongoDB database in which to store user information and insert it on line 2 within the UserModel.ts (electron/models/UserModel.ts) file.
- This database will privately store user information.
- Once this is set up, you can create new users, log in, and have your data persist between sessions.
Examples
We provide eight example applications for you to test out both the Chronos NPM package and the Chronos desktop application:
- AWS
- Docker
- gRPC
- Kubernetes
- Microservices
Additional documentation on how Chronos is used in each example can be found in the Chronos NPM Package README.
AWS
The AWS
folder includes 3 example applications with instructions on how to deploy them in AWS platforms. Note that using AWS services may cause charges.
- The ECS folder includes an web application ready to be containerized using Docker. The instruction shows how to deploy application to ECS using Docker CLI command, and it will be managed by Fargate services.
- The EC2 folder includes a React/Redux/SQL web application ready to be containerized using Docker. The instruction shows how to deploy application using AWS Beanstalk and connect application to RDS database. Beanstalk service will generate EC2 instance.
- The EKS folder includes a containerized note taking app that uses a Mongo database as its persistent volume. The instructions show how to deploy this application on EKS, how to monitor with Prometheus & Opencost, and how to use Grafana to grab visualizations.
Refer to the EC2 README, ECS README, and EKS README example in the AWS folder for more details.
Docker
In the folder within the master
branch, we provide a sample dockerized microservices application to test out Chronos and to apply distributed tracing across different containers for your testing convenience.
The docker
folder includes individual files in their respective directories. A docker-compose.yml is in the root directory in case youâd like to deploy all services together.
Refer to the Docker README in the docker
folder for more details.
gRPC
The gRPC
folder includes an HTML frontend and an Express server backend, as well as proto files necessary to build package definitions and make gRPC calls. The reverse_proxy folder contains the server that requires in the clients, which contain methods and services defined by proto files.
Refer to the gRPC README in the gRPC
folder for more details.
Kubernetes
The kubernetes
folder includes a React frontend and an Express server backend, and the Dockerfiles needed to containerize them for Kubernetes deployment. The launch folder includes the YAML files needed to configure the deployments, services, and configurations of the frontend, backend, Prometheus server, and Grafana.
Refer to the Kubernetes README in the kubernetes
folder for more details.
Microservices
In the microservices
folder, we provide a sample microservice application that successfully utilizes Chronos to apply all the powerful, built-in features of our monitoring tool. You can then visualize the data with the app.
Refer to the microservices README in the microservices
folder for more details.
Testing
Weâve created testing suites for Chronos with React Testing, Jest, and Selenium for unit, integration, and end-to-end tests - instructions on running them can be found in the testing README.
Contributing
Development of Chronos is open source on GitHub through the tech accelerator OS Labs, and we are grateful to the community for contributing bug fixes and improvements.
Read our contributing README to learn how you can take part in improving Chronos.
Technologies
License
MIT
Return to Top