Kubernetes-based Microservices Analyzing and Monitoring system using Istio and Zipkin - KMamiz (KK /ˈke mæmɪz/)
The core concept of KMamiz is to provide endpoint-level system analyzing and monitoring features, making the work for the DevOps team much more effortless.
Systems aimed to be monitored by KMamiz need to fulfill the following requirements:
- Running on Kubernetes
- Running an Istio deployment with Zipkin enabled
- Capable of forwarding request headers
The operation concept is as follows, KMamiz will be deployed in the same Kubernetes cluster as the System Under Monitoring. Traffic generated by the end-users or end-to-end testing tools will be recorded by Envoy (Istio's sidecar) and reported to Zipkin. KMamiz will then retrieve traces from Zipkin and logs from KMamiz's extended EnvoyFilter. Finally, KMamiz visualizes all the parsed metrics to the system admin. For more architectural details, see ARCHITECTURE.
KMamiz is a monitoring service utilizing traces from Zipkin and extended logs from Envoy proxy to provide the following functionality.
- Endpoint-level dependency topology for the System Under Monitoring (SUM).
- Provides metrics including total requests, error amount, and latency.
- Request/response body extraction.
- Estimated service risk value based on multiple factors.
- Endpoint-level request dependency chain.
- Automatic OpenAPI documentation generation, visualized with Swagger UI.
- Endpoint path guessing and path variable extraction based on request/response body and string pattern matching.
- Provides service cohesion and coupling metrics based on multiple research papers.
- Provides service instability metrics based on the Stable Dependencies Principle (SDP) from Clean Architecture.
- Provides service risk exposure by doing risk analysis.
KMamiz is implemented in such a way that the SUM only needs minimal intrusive changes to be monitorable. Services in the SUM need to forward the following X-B3
headers while making requests to other services.
x-request-id
x-b3-traceid
x-b3-spanid
x-b3-parentspanid
x-b3-sampled
x-b3-flags
b3
x-ot-span-context
See the b3-propagation for more information and the Envoy HTTP header manipulation for details on these headers.
We currently have two online demo systems:
We do check the health of these sites periodically. Nevertheless, we do not have high availability guarantee on these sites. Feel free to open an issue if any of them are down.
- Bookinfo (Istio)
- Personal Data Authorization System (PDAS)
Follow the deployment instructions here.
See BUILD.md.