The API traffic analyzer for Kubernetes providing real-time K8s protocol-level visibility, capturing and monitoring all traffic and payloads going in, out and across containers, pods, nodes and clusters. Inspired by Wireshark, purposely built for Kubernetes
Go to file
M. Mert Yıldıran 52c9251c00
Add ABI0 support to Go crypto/tls eBPF tracer (#1169)
* Determine the Go ABI and get `goid` offset from DWARF

* Add `ABI` enum and morph the function according to the detected ABI

* Pass `goid` offset to an eBPF map to retrieve it in eBPF context

* Add `vmlinux.h` and implement `get_goid_from_thread_local_storage`

* Fix BPF verifier errors

* Update the comments

* Add `go_abi_0.h` and implement `ABI0` specific reads for `arm64`

* Upgrade `github.com/cilium/ebpf` to `v0.9.0`

* Add a comment

* Add macros for x86 specific parts

* Update `x86.o`

* Fix the map key type

* Add `user_pt_regs`

* Update arm64 object file

* Fix the version detection logic

* Add `getGStructOffset` method

* Define `goid_offsets`, `goid_offsets_map` structs and pass the offsets correctly

* Fix the `net.TCPConn` and buffer addresses for `ABI0`

* Remove comment

* Fix the issues for arm64 build

* Update x86.o

* Revert "Fix the issues for arm64 build"

This reverts commit 48b041b1b6.

* Revert `user_pt_regs`

* Add `vmlinux` directory

* Fix the `build.sh` and `Dockerfile`

* Add vmlinux_arm64.h

* Disable `get_goid_from_thread_local_storage` on ARM64 with a macro

* Update x86.o

* Update arm64.o

* x86

* arm64

* Fix the cross-compilation issue from x86 to arm64

* Fix the same thing for x86

* Use `BPF_CORE_READ` macro instead of `bpf_ringbuf_reserve` to support kernel versions older than 5.8

Also;
Add legacy version of thread_struct: thread_struct___v46
Build an additional object file for the kernel versions older than or equal to 4.6 and load them accordingly.
Add github.com/moby/moby

* Make #define directives more definitive

* Select the x86 and arm64 versions of `vmlinux.h` using macros

* Put `goid` offsets into the map before installing `uprobe`(s)

* arm64

* #run_acceptance_tests

* Remove a forgotten `fmt.Printf`

* Log the detected Linux kernel version
2022-07-05 14:35:30 +03:00
.github Add Go crypto/tls eBPF tracer for TLS connections (#1120) 2022-06-12 14:14:41 +03:00
acceptanceTests Fix problems that golang inspection reported (#1158) 2022-06-23 16:49:56 +03:00
agent Add ABI0 support to Go crypto/tls eBPF tracer (#1169) 2022-07-05 14:35:30 +03:00
assets Update the UI screenshots (#476) 2021-11-16 22:44:31 +03:00
cli TRA-4622 Remove rules feature UI (#1178) 2022-07-03 11:32:23 +03:00
devops Fix Go crypto/tls eBPF tracer on ARM64 (#1162) 2022-06-26 14:11:04 +03:00
docs Readme changes: moving all usage documentation to getmizu.io, and have only dev documentation in Github (#879) 2022-03-06 10:44:37 +02:00
logger Make logger a separate module such that don't depend on shared module as a whole for logging (#1047) 2022-04-27 22:26:27 +03:00
performance_analysis Close gopacket connection immediately, basic throttling and assembler mutex removal 2022-06-19 16:47:03 +03:00
shared TRA-4622 Remove rules feature UI (#1178) 2022-07-03 11:32:23 +03:00
tap Add ABI0 support to Go crypto/tls eBPF tracer (#1169) 2022-07-05 14:35:30 +03:00
ui Merge traffic stats endpoints to one and add auto interval logic (#1174) 2022-07-04 10:01:49 +03:00
ui-common with loading HOC (#1181) 2022-07-05 12:23:47 +03:00
.dockerignore Split UI build (#681) 2022-01-24 10:02:35 +02:00
.gitignore Fix acceptance tests failures caused by fetch 50 and a race in the tests (#1074) 2022-05-11 13:14:01 +03:00
codecov.yml codecov yml for tests threshold (#214) 2021-08-15 12:19:00 +03:00
Dockerfile Fix Go crypto/tls eBPF tracer on ARM64 (#1162) 2022-06-26 14:11:04 +03:00
LICENSE Initial commit 2021-04-19 13:29:56 +03:00
Makefile Add profiling tools (#1087) 2022-05-18 15:42:13 +03:00
README.md Readme changes: moving all usage documentation to getmizu.io, and have only dev documentation in Github (#879) 2022-03-06 10:44:37 +02:00

Mizu: The API Traffic Viewer for Kubernetes

GitHub License GitHub Latest Release Docker pulls Image size Slack

The API Traffic Viewer for Kubernetes

A simple-yet-powerful API traffic viewer for Kubernetes enabling you to view all API communication between microservices to help your debug and troubleshoot regressions.

Think TCPDump and Wireshark re-invented for Kubernetes.

Simple UI

Quickstart and documentation

You can run Mizu on any Kubernetes cluster (version of 1.16.0 or higher) in a matter of seconds. See the Mizu Getting Started Guide for how.

For more comprehensive documentation, start with the docs.

Working in this repo

We ❤️ pull requests! See CONTRIBUTING.md for info on contributing changes.
In the wiki you can find an intorduction to mizu components, and development workflows.

Code of Conduct

This project is for everyone. We ask that our users and contributors take a few minutes to review our Code of Conduct.