Kelemetry: Global control plane tracing for Kubernetes
Overview
Kelemetry aggregates various data sources including
Kubernetes events, audit log, informers
into the form of traditional tracing,
enabling visualization through Jaeger UI and automatic analysis.
Motivation
As a distributed asynchronous declarative API,
Kubernetes suffers from lower explainability compared to traditional RPC-based services
as there is no clear causal relationship between events;
a change in one object indirectly effects changes in other objects,
posing challenges to understanding and troubleshooting the system.
Past attempts of tracing in Kubernetes were either limited to single components
or excessively intrusive to individual components.
Kelemetry addresses the problem by associating events of related objects into the same trace.
By recognizing object relations such as OwnerReferences,
related events can be visualized together without prior domain-specific knowledge.
The behavior of various components are recorded on the same timeline
to reconstruct the causal hierarchy of the actual events.
Features
Collect audit logs
Collect controller events (i.e. the “Events” section in kubectl describe)
Record object diff associated with audit logs
Connect objects based on owner references
Collect data from custom sources (Plugin API)
Connect objects with custom rules with multi-cluster support (Plugin API)
Kelemetry: Global control plane tracing for Kubernetes
Overview
Kelemetry aggregates various data sources including Kubernetes events, audit log, informers into the form of traditional tracing, enabling visualization through Jaeger UI and automatic analysis.
Motivation
As a distributed asynchronous declarative API, Kubernetes suffers from lower explainability compared to traditional RPC-based services as there is no clear causal relationship between events; a change in one object indirectly effects changes in other objects, posing challenges to understanding and troubleshooting the system. Past attempts of tracing in Kubernetes were either limited to single components or excessively intrusive to individual components.
Kelemetry addresses the problem by associating events of related objects into the same trace. By recognizing object relations such as OwnerReferences, related events can be visualized together without prior domain-specific knowledge. The behavior of various components are recorded on the same timeline to reconstruct the causal hierarchy of the actual events.
Features
kubectl describe)graph TB kelemetry[Kelemetry] audit-log[Audit log] --> kelemetry event[Event] --> kelemetry watch[Object watch] --> kelemetry kelemetry ---> |OpenTelemetry protocol| storage[Jaeger storage] plugin[Kelemetry storage plugin] --> storage user[User] --> ui[Jaeger UI] --> pluginGetting started
Contribution/Development
Code of Conduct
See Code of Conduct.
Community
License
Kelemetry is licensed under Apache License 2.0.