kelemetry

command module
v0.0.0-...-070373f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 19, 2024 License: Apache-2.0 Imports: 2 Imported by: 0

README

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)
  • Navigate trace with Jaeger UI and API
  • Scalable for multiple large clusters
  • Construct tailormade metrics based on audit logs
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] --> plugin

Getting started

Contribution/Development

Code of Conduct

See Code of Conduct.

Community

License

Kelemetry is licensed under Apache License 2.0.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
pkg
Default packages in the default build of kelemetry
Default packages in the default build of kelemetry
k8s
k8s/config
Provide connection details to a Kubernetes cluster.
Provide connection details to a Kubernetes cluster.
k8s/multileader
Cooperative leader election, where a fixed number of controllers can act as the leaders simultaneously.
Cooperative leader election, where a fixed number of controllers can act as the leaders simultaneously.
util/marshal
Utilities for unmarshalling in config files
Utilities for unmarshalling in config files
util/semaphore
Provides a short-lived task pool that runs fallible tasks and publishes results on the same goroutine.
Provides a short-lived task pool that runs fallible tasks and publishes results on the same goroutine.
util/zconstants
zconstants are special span/event tags that provide context for span transformation in the frontend storage plugin.
zconstants are special span/event tags that provide context for span transformation in the frontend storage plugin.
Dummy package for dependencies only used as `go run` to prevent go.mod formatting tools from automatically removing them.
Dummy package for dependencies only used as `go run` to prevent go.mod formatting tools from automatically removing them.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL