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.
-
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
-
Clone the repo:
git clone https://github.com/oslabs-beta/ClusterWatch.git
-
Install dependencies:
npm install
-
Ensure that you install redis, if you don't already have it installed on your machine.
-
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.
-
Start the application:
npm start
-
Navigate to:
http://localhost:3000
-
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
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.
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.
Here you can access the Prometheus console from within the app to run customized queries and create graphs based on the data.
Here you can view all the active alerts that are set up for your cluster.
Configure your own alerts without having to create YAML files.
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.
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:
- Clone repo and create a new branch:
git checkout https://github.com/ -b name_for_new_branch
- Make changes and test
- 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 | 🙏🏻 |
Sheng li |
Mushrath Choudhury |
Kevin Hendrix |
Jordy Gonzalez |
Check out our medium article: https://medium.com/@shengli356/clusterwatch-official-launch-8c77885de58b