Code Monkey home page Code Monkey logo

simk209 / chronos Goto Github PK

View Code? Open in Web Editor NEW

This project forked from open-source-labs/chronos

0.0 0.0 0.0 206.72 MB

๐Ÿ“Š ๐Ÿ“Š ๐Ÿ“Š Monitors the health and web traffic of servers, microservices, Kubernetes/Kafka clusters, containers, and AWS services with real-time data monitoring and receive automated notifications over Slack or email.

Home Page: https://www.npmjs.com/package/@chronosmicro/tracker

License: MIT License

JavaScript 21.23% TypeScript 65.24% HTML 0.21% SCSS 13.33%

chronos's Introduction

Chronos

Build Passing PRs Welcome License: MIT Release: 11.0

Chronos

โญ๏ธ Star us on GitHub! โญ๏ธ

Visit our website at chronoslany.com.

Chronos is a comprehensive developer tool that monitors the health and web traffic of servers, microservices, containers, and Amazon Web Services (AWS). Use Chronos to see real-time data monitoring and receive automated notifications over Slack or email.

What's New?

With Chronos 11.0:

  • Added interactive charting to better visualize metrics and increase user engagement with their data
  • Followed best test-driven development practices and increased testing with React Testing and Jest for the front end
  • Overhauled user database security, mitigating database breaches and providing a safer experience
  • Bug fixes and UI tweaks, creating a more pleasant user experience
  • Updated outdated README instructions within the provided Docker, gRPC, Kubernetes, and microservices examples
  • Revised README instructions for the @chronosmicro/tracker NPM package

Previously implemented updates:

  • Streamlined approach to access and dynamically display Grafana dashboards for deployed EKS clusters (utilizing Prometheus data scraping and generated Grafana dashboards) using the Grafana API.
  • 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.
  • An updated AWS Graphs Container to dynamically render plots for EC2 or ECS data fetched with Electron using event listeners connecting to AWS CloudWatch w/ the aws-sdk package, as well as utilizing Prometheus data scraping and Grafana integration to fetch and render EKS data.
  • Step-by-step instructions on setting up a new, functional EC2 instances, ECS clusters, and EKS clusters, ready to be monitored and tested by the app.

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 AWS
  • 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 monitoring via Prometheus server
    • Compatible with GraphQL
    • Monitor an Apache Kafka cluster via the JMX Prometheus Exporter
    • Supports PostgreSQL and MongoDB databases

Installation

This is for the latest Chronos version 11.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

WSL2 Environment

If you wish to launch the Electron Application in an WSL2 envirronment(Ubuntu) you may need the following commands for an Electron window to appear

  • Install VcXsrv

  • Run the following command in the terminal

sudo apt install libgconf-2-4 libatk1.0-0 libatk-bridge2.0-0 libgdk-pixbuf2.0-0 libgtk-3-0 libgbm-dev libnss3-dev libxss-dev
  • After running your VcXsrv instance, run the following command in the terminal
export DISPLAY="`sed -n 's/nameserver //p' /etc/resolv.conf`:0"

Creating User Database

NOTE: You must create your own user database

  1. 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.
  2. Once this is set up, you can create new users, log in, and have your data persist between sessions.

Running the Chronos desktop app in development mode

  1. From the root directory, run npm install
  2. Run npm run build
  3. Open a new terminal and run npm run dev:app to start the Webpack development server
  4. Open a new terminal and run npm run dev:electron to start the Electron UI in development mode

Packing the Chronos desktop app into an executable

  1. From the root directory, run npm run build
  2. Run npm run package
  3. Find the chronos.app executable inside the newly created release-builds folder in the root directory.

Examples

We provide eight example applications for you to test out both the Chronos NPM package and the Chronos desktop application:

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 Docker 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 Docker 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, and Prometheus server.

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 Electron app.

Refer to the microservices README in the microservices folder for more details.

Testing

We've created testing suites for Chronos with React Testing and Jest - 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.

Last Iterating Team

Chronos 11.0

Technologies

  • Electron
  • React
  • JavaScript
  • TypeScript
  • PostgreSQL
  • MongoDB
  • Node
  • Express
  • HTTP
  • gRPC
  • GraphQL
  • Docker
  • AWS
  • Jest
  • Webpack
  • Material-UI
  • Vis.js
  • Plotly.js
  • Apache Kafka

License

MIT

Return to Top

chronos's People

Contributors

ronellecaguioa avatar mesherrera avatar lu0713 avatar wang3101 avatar gregpalace avatar troyprejusa avatar umius-brian avatar mjiang108 avatar jcpoirier20 avatar fredwards avatar curiousyang avatar jenaepen avatar williamowen65 avatar timlee12 avatar gracepark01 avatar rtbuckner avatar hodesza avatar elenaatencio avatar derekquoc avatar gp3-rs avatar kitloong1 avatar brunoportela avatar dialloousman avatar jdonuto avatar ajlee12 avatar justinlkirk avatar hann7 avatar alon25 avatar wiris316 avatar robicano22 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.