Skip to content

ClusterWatch provides seamless Kubernetes cluster visualization, monitoring, and alert management.

License

Notifications You must be signed in to change notification settings

oslabs-beta/ClusterWatch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

63a5d7c Β· May 30, 2023
Mar 10, 2023
Mar 10, 2023
Mar 15, 2023
May 30, 2023
Mar 13, 2023
Mar 13, 2023
Mar 16, 2023
Mar 15, 2023
Mar 7, 2023
May 30, 2023
Feb 18, 2023
May 25, 2023
Mar 6, 2023
Mar 10, 2023
Feb 24, 2023
Mar 14, 2023
Mar 10, 2023
Mar 12, 2023
Mar 15, 2023
Mar 1, 2023
Mar 10, 2023
Mar 11, 2023

ClusterWatch

ClusterWatch is an open-source tool which simplifies and provides an all-in-one hub for Kubernetes cluster monitoring. It reduces the need for DevOps engineers to configure their own Kubernetes monitoring stacks, and automates the process so you can get vital cluster information from various different tools, all in one place, in just a few seconds.

ClusterWatch provides a clear visualization of Kubernetes cluster architecture with detailed descriptions and stats for components within your clusters. ClusterWatch also offers real time metrics data, presented via Grafana charts, and built-in support for Prometheus and alert managing.

Features

  • Cluster visualization : The app uses the Vis.js library to create an intuitive cluster visualiation tool, making it easy for users to understand their cluster's topology and access key details about each component without running a single kubectl command.

  • User-friendly interface : An intuitive and user-friendly interface makes it easy for users to digest relevant cluster data.

  • Prometheus: Built-in Prometheus integration allows users to execute queries and easily monitor cluster performance without any need for additional configuration.

  • Grafana integration: Zero-setup Grafana integration provides users access to insightful visualizations of valuable cluster data.

  • Redis: Fast in-memory caching stores API keys and other sensitive data enabling near instantaneous access times and increased security against session hijacking. This approach ensures only authorized users have access to the cluster data.

  • Alert Manager: Users can configure alerts directly from ClusterWatch in order to be notified of key cluster events.

  • One-click setup : You

Getting Started

  1. Clone the repo: git clone https://github.com/oslabs-beta/ClusterWatch.git

  2. Install dependencies: npm install

  3. Ensure that you install redis, if you don't already have it installed on your machine.

  4. Make sure you have your kubernetes cluster up and running. If you'd like to set up a cluster to test the application, install docker and minikube or kind to get started.

  5. Start the application: npm start

  6. Navigate to: http://localhost:3000

  7. Once launched, you'll be redirected to our setup page:

  • If you do not have the prometheus-kube-stack helm chart, (which inlcudes kube-state-metrics, node-exporter, and grafana), utilize the setup button to download, update, and install the repos. Note: this step can take a moment, don't worry.

  • If you have grafana, but have not used our application previously, hit the grafana setup button to apply our custom grafana configurations.

  • If you have used our application before, press the forward ports button and monitor away!

Keep in mind that the application utilizes local ports which must not be occupied on your machine:

  • 3000: server
  • 8080: application page
  • 3001: grafana
  • 9090: prometheus
  • 9093: alert manager
  • 6379: redis

Usage Guidelines

Overview

The first page of the application will provide a visual overview of your kubernetes cluster. The visualization will show the control plane, namespaces, pods, services, deployments and nodes. Hovering over the components will display a modal displaying information relevant to that specific object.

Metrics

The metrics section of the application provides grafana dashboards for various aspects of your kubernetes cluster. This includes:

  • Kubernetes API server: API server request rates/latency, etcd request cache hit rates/latency, and workqueue latencies.
  • Nodes: CPU usage, load average, memory usage, disk I/O, disk usage, network received, network transmitted.
  • Kubelet: Operation and error rates, pod start rates and durations, plus more.
  • USE methods: Utilization, saturation, and errors for the cluster and nodes.
  • CoreDNS: requests, responses, and cache sizes/hits for DNS server.

Prometheus Query

Here you can access the Prometheus console from within the app to run customized queries and create graphs based on the data.

Alert Manager

Here you can view all the active alerts that are set up for your cluster.

Custom Alerts

Configure your own alerts without having to create YAML files.

Open Source

This product is open source, being actively maintained, and open to contributions. Please inform us of any features or bugs you'd like to see addressed.

Testing:

This application utilizes, jest, supertest, react testing library, and cypress for testing.

To run unit and integration tests, execute the following command in your terminal: npm run test

To run end-to-end tests, execute: npm run cypress

Contributing: If you'd like to contribute to this project:

  1. Clone repo and create a new branch: git checkout https://github.com/ -b name_for_new_branch
  2. Make changes and test
  3. Submit a pull request with clear descriptions of changes

Roadmap: βœ… = Ready to use ⏳ = In progress πŸ™πŸ» = Looking for contributors

Feature Status
Add Prometheus integration βœ…
Add Grafana Integration βœ…
Add Cluster visualizer βœ…
Add alerts customization βœ…
Add Jest testing βœ…
Add End-to-End cypress testing βœ…
Transform codebase into typescript βœ…
Convert HTTP fetch requests to GraphQL requests ⏳
Replace Prometheus with VictoriaMetrics πŸ™πŸ»
Add Authorization πŸ™πŸ»
Add persiting metrics logs πŸ™πŸ»

Contributors


Sheng li

Mushrath Choudhury

Kevin Hendrix

Jordy Gonzalez

Publications

Check out our medium article: https://medium.com/@shengli356/clusterwatch-official-launch-8c77885de58b