Mizu is available to download as an executable binary or as source code directly from its GitHub repository.
Once downloaded, Just run:
mizu tap
And view all of your Kubernetes' API traffic in a local webapp.
A New Open Source Project by UP9
We are thrilled to announce the release of Mizu - a simple-yet-powerful API debug and troubleshooting tool for Kubernetes.
Through our efforts to observe API traffic between microservices, we were able to isolate a chunk of our technology and package it as an open source project. We also gave it a name - Mizu.
Viewing API traffic between microservices is essential if you want to understand the root cause of problems found in complex distributed systems.
With webapps, we often use Google Chrome Dev Tool. However, with Kubernetes, you’d need to use network analyzers like tcpdump, Wireshark, or Fiddler to debug and troubleshoot your microservices. Anyone who has used these tools can tell you this process is difficult and time-consuming.
With Mizu, viewing traffic is easy and quick. You can view all of the API calls that are part of the communication between microservices in Kubernetes the same way you would have used Google Chrome Dev Tool to view the traffic of your webapps.
No Installation Necessary: No Code instrumentation and not a proxy
Mizu works by injecting a container that performs a tcpdump-like operation at the node level of a Kubernetes cluster. This operation can be performed on-demand via a CLI that injects the container when run. Alternatively, when ^C is used, it removes the container.
Otherwise, Mizu passively observes traffic at the network level and is not a proxy.
Mizu doesn’t require code instrumentation. It can be used in true on-demand fashion without prior preparation.
Simple-yet-powerful CLI
Mizu uses Kubectl
The CLI is built in Golang, and can be downloaded and run without installation. Mizu uses kubectl, and can therefore run on any node through which kubectl is configured.
Use Regular Expression to Qualify Pods to Observe
While you can simply observe all traffic, you can also qualify specific pods to observe through a regular expression. This allows you to capture traffic from multiple pods as well as pods that don't exist yet. As long as Mizu is operational, pods with names that match the regular expression will be observed, and their traffic logged. This is especially good when pod deployment is dynamic and ever-changing (when pods go up, pods go down).
Additional Features
Mizu introduces many more features that you can read about in the following resources:
- https://github.com/up9inc/mizu/
- https://getmizu.io/
- https://up9.com/docs/open-source-tools/mizu/what-is-mizu
Getting Started
Download Mizu by using the latest release from GitHub or compile from the source code located here: https://github.com/up9inc/mizu.
mizu -h
Examples
Let us presume I have a running Kubernetes cluster and this is my list of running pods:
View Both Ingress and Egress traffic of a Specific Pod: Say I want to view both the ingress and egress traffic of a specific pod named:
catalogue-b87b45784-sxc8q
Here, I’ll use the following command:
mizu tap catalogue-b87b45784-sxc8q
View Traffic of Several Pods:
When I want to observe several pods and view their traffic, I’ll use the following command:
mizu tap "(catalo*|front-end*) -A"
The above command will observe the following pods, since their names match the regular expression:
- catalogue-6676dc489b-6tx9h
- catalogue-db-69bd898747-7p8rq
- front-end-946fd755f-8t6gp
View Traffic of all Pods in a Specific Namespace
mizu tap ".*" -n sock-shop
View all API traffic
To view all API traffic, enter the following command:
mizu tap ".*" -A
What’s next
As we use Mizu to improve our comprehensive microservice offerings at UP9, we have a full roadmap by which we may accommodate our engineering requirements.
Let us know what else you’d like to see in Mizu, and we’ll make sure to upgrade its roadmap per your valued feedback.