telemetry

package
v1.0.0-rc.3 Latest Latest
Warning

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

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

Documentation

Overview

Package telemetry builds and sends telemetry data to the Liqo telemetry server. The telemetry data contains information about the cluster and the Liqo installation. The telemetry server aggregates the collected data and provides it to the Liqo maintainers. All the transmitted data is anonymous and does not contain any sensitive information. In particular the following data is sent:

  • Cluster ID
  • Liqo version
  • Kubernetes version
  • Node info -- Kernel version -- OS image
  • Security mode
  • Provider (e.g. GKE, EKS, AKS, ...)
  • Peering info -- RemoteClusterID -- Modules ---- Networking ------ Enabled ---- Authentication ------ Enabled ---- Offloading ------ Enabled -- Role -- Latency -- NodesNumber -- VirtualNodesNumber
  • Namespaces info -- UID -- MappingStrategy (EnforceSameName/DefaultName) -- OffloadingStrategy (Local/Remote/LocalAndRemote) -- HasClusterSelector (true/false) -- NumOffloadedPods (map of clusterID -> number of offloaded pods)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Send

func Send(ctx context.Context, endpoint string, item *Telemetry, timeout time.Duration) error

Send sends the telemetry item to the Liqo telemetry server.

Types

type Builder

type Builder struct {
	Client            client.Client
	Namespace         string
	LiqoVersion       string
	KubernetesVersion string
	ClusterLabels     map[string]string
}

Builder is the constructor for the Telemetry struct.

func (*Builder) ForgeTelemetryItem

func (c *Builder) ForgeTelemetryItem(ctx context.Context) (*Telemetry, error)

ForgeTelemetryItem returns a Telemetry item with the current status of the cluster.

type ModuleInfo

type ModuleInfo struct {
	Enabled bool `json:"enabled"`
}

ModuleInfo contains information about a module.

type ModulesInfo

type ModulesInfo struct {
	Networking     ModuleInfo `json:"networking"`
	Authentication ModuleInfo `json:"authentication"`
	Offloading     ModuleInfo `json:"offloading"`
}

ModulesInfo contains information about the modules.

type NamespaceInfo

type NamespaceInfo struct {
	UID                string                                         `json:"uid,omitempty"`
	MappingStrategy    offloadingv1beta1.NamespaceMappingStrategyType `json:"mappingStrategy,omitempty"`
	OffloadingStrategy offloadingv1beta1.PodOffloadingStrategyType    `json:"offloadingStrategy,omitempty"`
	HasClusterSelector bool                                           `json:"hasClusterSelector,omitempty"`
	NumOffloadedPods   map[string]int64                               `json:"numOffloadedPods,omitempty"`
}

NamespaceInfo contains information about an offloaded namespace.

type NodeInfo

type NodeInfo struct {
	KernelVersion string `json:"kernelVersion,omitempty"`
	OsImage       string `json:"osImage,omitempty"`
	Architecture  string `json:"architecture,omitempty"`
}

NodeInfo contains information about a node.

type PeeringDetails

type PeeringDetails struct {
	Enabled   bool                `json:"enabled"`
	Resources corev1.ResourceList `json:"resources,omitempty"`
}

PeeringDetails contains information about a peering direction.

type PeeringInfo

type PeeringInfo struct {
	RemoteClusterID     liqov1beta1.ClusterID `json:"remoteClusterID"`
	Modules             ModulesInfo           `json:"modules,omitempty"`
	Role                liqov1beta1.RoleType  `json:"role,omitempty"`
	Latency             time.Duration         `json:"latency,omitempty"`
	NodesNumber         int                   `json:"nodesNumber"`
	VirtualNodesNumber  int                   `json:"virtualNodesNumber"`
	ResourceSliceNumber int                   `json:"resourceSliceNumber"`
}

PeeringInfo contains information about a peering.

type Telemetry

type Telemetry struct {
	ClusterID         string              `json:"clusterID"`
	LiqoVersion       string              `json:"liqoVersion,omitempty"`
	KubernetesVersion string              `json:"kubernetesVersion,omitempty"`
	NodesInfo         map[string]NodeInfo `json:"nodesInfo,omitempty"`
	Provider          string              `json:"provider,omitempty"`
	PeeringInfo       []PeeringInfo       `json:"peeringInfo,omitempty"`
	NamespacesInfo    []NamespaceInfo     `json:"namespacesInfo,omitempty"`
}

Telemetry contains information about the cluster.

Jump to

Keyboard shortcuts

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