telemetry

package
v1.8.1 Latest Latest
Warning

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

Go to latest
Published: Feb 25, 2026 License: MIT Imports: 20 Imported by: 11

Documentation

Overview

Copyright Microsoft. All rights reserved.

Index

Constants

View Source
const (

	// Metric Names
	CNIAddTimeMetricStr    = "CNIAddTimeMs"
	CNIDelTimeMetricStr    = "CNIDelTimeMs"
	CNIUpdateTimeMetricStr = "CNIUpdateTimeMs"
	CNILockTimeoutStr      = "CNILockTimeoutError"

	// Dimension Names
	ContextStr        = "Context"
	SubContextStr     = "SubContext"
	VMUptimeStr       = "VMUptime"
	OperationTypeStr  = "OperationType"
	VersionStr        = "Version"
	StatusStr         = "Status"
	CNIModeStr        = "CNIMode"
	CNINetworkModeStr = "CNINetworkMode"
	OSTypeStr         = "OSType"

	// Values
	SucceededStr     = "Succeeded"
	FailedStr        = "Failed"
	SingleTenancyStr = "SingleTenancy"
	MultiTenancyStr  = "MultiTenancy"
)
View Source
const (
	// CNITelemetryFile Path.
	CNITelemetryFile = platform.CNIRuntimePath + "AzureCNITelemetry.json"
	// ContentType of JSON
	ContentType = "application/json"
)
View Source
const (
	MB = 1048576
	KB = 1024
)
View Source
const (
	FdName         = "azure-vnet-telemetry"
	Delimiter      = '\n'
	MaxPayloadSize = 4096
	MaxNumReports  = 1000
)

FdName - file descriptor name Delimiter - delimiter for socket reads/writes MaxPayloadSize - max buffer size in bytes

View Source
const (
	TelemetryServiceProcessName = "azure-vnet-telemetry"
	CniInstallDir               = "/opt/cni/bin"
)

Variables

View Source
var AIClient = NewClient()

package level variable for application insights telemetry

View Source
var (
	ErrTelemetryDisabled = errors.New("telemetry is disabled")
)

Functions

func CloseAITelemetryHandle

func CloseAITelemetryHandle()

func GetAIMetadata added in v1.8.0

func GetAIMetadata() string

GetAIMetadata returns the current aiMetadata value

func SendAIMetric

func SendAIMetric(aiMetric AIMetric)

func SendAITelemetry

func SendAITelemetry(cnireport CNIReport)

func SendCNIEvent

func SendCNIEvent(tb *TelemetryBuffer, report *CNIReport)

func SendCNIMetric

func SendCNIMetric(cniMetric *AIMetric, tb *TelemetryBuffer) error

This function for sending CNI metrics to telemetry service

func SetAIMetadata added in v1.8.0

func SetAIMetadata(metadata string)

SetAIMetadata sets the aiMetadata value (for runtime configuration)

func SockExists

func SockExists() bool

func WaitForTelemetrySocket

func WaitForTelemetrySocket(maxAttempt int, waitTimeInMillisecs time.Duration)

WaitForTelemetrySocket - Block still pipe/sock created or until max attempts retried

Types

type AIMetric

type AIMetric struct {
	Metric aitelemetry.Metric
}

type BridgeInfo

type BridgeInfo struct {
	NetworkMode  string
	BridgeName   string
	ErrorMessage string
}

CNI Bridge Details structure.

type Buffer

type Buffer struct {
	CNIReports []CNIReport
}

Buffer object holds the different types of reports

type CNIReport

type CNIReport struct {
	IsNewInstance     bool
	CniSucceeded      bool
	Name              string
	Version           string
	ErrorMessage      string
	EventMessage      string
	OperationType     string
	OperationDuration int
	Context           string
	SubContext        string
	VMUptime          string
	Timestamp         string
	ContainerName     string
	InfraVnetID       string
	VnetAddressSpace  []string
	OSDetails         OSInfo
	SystemDetails     SystemInfo
	Metadata          common.Metadata `json:"compute"`
	Logger            *zap.Logger
}

Azure CNI Telemetry Report structure.

func (*CNIReport) GetOSDetails

func (report *CNIReport) GetOSDetails()

This function creates a report with os details(ostype, version).

func (*CNIReport) GetReport

func (report *CNIReport) GetReport(name string, version string, ipamQueryURL string)

GetReport retrieves orchestrator, system, OS and Interface details and create a report structure.

func (*CNIReport) GetSystemDetails

func (report *CNIReport) GetSystemDetails()

This function creates a report with system details(memory, disk, cpu).

type Client added in v1.7.1

type Client struct {
	// contains filtered or unexported fields
}

func NewClient added in v1.7.1

func NewClient() *Client

func (*Client) ConnectTelemetry added in v1.7.1

func (c *Client) ConnectTelemetry(logger *zap.Logger)

func (*Client) DisconnectTelemetry added in v1.7.1

func (c *Client) DisconnectTelemetry()

func (*Client) IsConnected added in v1.7.1

func (c *Client) IsConnected() bool

func (*Client) SendError added in v1.7.1

func (c *Client) SendError(err error)

func (*Client) SendEvent added in v1.7.1

func (c *Client) SendEvent(msg string)

func (*Client) SendMetric added in v1.7.1

func (c *Client) SendMetric(name string, value float64, customDims map[string]string)

func (*Client) SetSettings added in v1.7.1

func (c *Client) SetSettings(settings *CNIReport)

SetSettings REPLACES the pointer to the cni report struct and should only be used on startup

func (*Client) Settings added in v1.7.1

func (c *Client) Settings() *CNIReport

Settings gets a pointer to the cni report struct, used to modify individual fields

func (*Client) StartAndConnectTelemetry added in v1.7.1

func (c *Client) StartAndConnectTelemetry(logger *zap.Logger)

type DiskInfo

type DiskInfo struct {
	DiskTotal uint64
	DiskFree  uint64
}

Disk Info structure.

type InterfaceInfo

type InterfaceInfo struct {
	InterfaceType         string
	Subnet                string
	PrimaryCA             string
	MAC                   string
	Name                  string
	SecondaryCATotalCount int
	SecondaryCAUsedCount  int
	ErrorMessage          string
}

Interface Details structure.

type MemInfo

type MemInfo struct {
	MemTotal uint64
	MemFree  uint64
}

Memory Info structure.

type OSInfo

type OSInfo struct {
	OSType         string
	OSVersion      string
	KernelVersion  string
	OSDistribution string
	ErrorMessage   string
}

OS Details structure.

type ReportManager

type ReportManager struct {
	Report interface{}
}

ReportManager structure.

func (*ReportManager) ReportToBytes

func (reportMgr *ReportManager) ReportToBytes() ([]byte, error)

ReportToBytes - returns the report bytes

func (*ReportManager) SendReport

func (reportMgr *ReportManager) SendReport(tb *TelemetryBuffer) error

SendReport will send telemetry report to HostNetAgent.

type SystemInfo

type SystemInfo struct {
	MemVMTotal       uint64
	MemVMFree        uint64
	MemUsedByProcess uint64
	DiskVMTotal      uint64
	DiskVMFree       uint64
	CPUCount         int
	ErrorMessage     string
}

System Details structure.

type TelemetryBuffer

type TelemetryBuffer struct {
	FdExists  bool
	Connected bool
	// contains filtered or unexported fields
}

TelemetryBuffer object

func NewTelemetryBuffer

func NewTelemetryBuffer(logger *zap.Logger) *TelemetryBuffer

NewTelemetryBuffer - create a new TelemetryBuffer

func (*TelemetryBuffer) Cancel

func (tb *TelemetryBuffer) Cancel()

Cancel - signal to tear down telemetry buffer

func (*TelemetryBuffer) Cleanup

func (tb *TelemetryBuffer) Cleanup(name string) error

cleanup - manually remove socket

func (*TelemetryBuffer) Close

func (tb *TelemetryBuffer) Close()

Close - close all connections

func (*TelemetryBuffer) Connect

func (tb *TelemetryBuffer) Connect() error

func (*TelemetryBuffer) ConnectToTelemetry added in v1.5.17

func (tb *TelemetryBuffer) ConnectToTelemetry()

ConnectToTelemetry - attempt to connect to telemetry service

func (*TelemetryBuffer) ConnectToTelemetryService

func (tb *TelemetryBuffer) ConnectToTelemetryService(telemetryNumRetries, telemetryWaitTimeInMilliseconds int)

ConnectToTelemetryService - Attempt to spawn telemetry process if it's not already running.

func (*TelemetryBuffer) CreateAITelemetryHandle

func (tb *TelemetryBuffer) CreateAITelemetryHandle(aiConfig aitelemetry.AIConfig, disableAll, disableMetric, disableTrace bool) error

func (*TelemetryBuffer) Dial

func (tb *TelemetryBuffer) Dial(name string) (err error)

Dial - try to connect to/create a socket with 'name'

func (*TelemetryBuffer) Listen

func (tb *TelemetryBuffer) Listen(name string) (err error)

Listen - try to create and listen on socket with 'name'

func (*TelemetryBuffer) PushData

func (tb *TelemetryBuffer) PushData(ctx context.Context)

PushData - PushData running an instance if it isn't already being run elsewhere

func (*TelemetryBuffer) StartServer

func (tb *TelemetryBuffer) StartServer() error

Starts Telemetry server listening on unix domain socket

func (*TelemetryBuffer) StartTelemetryService

func (tb *TelemetryBuffer) StartTelemetryService(path string, args []string) error

StartTelemetryService - Kills if any telemetry service runs and start new telemetry service

func (*TelemetryBuffer) Write

func (tb *TelemetryBuffer) Write(b []byte) (c int, err error)

Write - write to the file descriptor.

type TelemetryConfig

type TelemetryConfig struct {
	ReportToHostIntervalInSeconds time.Duration `json:"reportToHostIntervalInSeconds"`
	DisableAll                    bool
	DisableTrace                  bool
	DisableMetric                 bool
	DisableMetadataThread         bool
	DebugMode                     bool
	DisableTelemetryToNetAgent    bool
	RefreshTimeoutInSecs          int
	BatchIntervalInSecs           int
	BatchSizeInBytes              int
	GetEnvRetryCount              int
	GetEnvRetryWaitTimeInSecs     int
}

TelemetryConfig - telemetry config read by telemetry service

func ReadConfigFile

func ReadConfigFile(filePath string) (TelemetryConfig, error)

ReadConfigFile - Read telemetry config file and populate to structure

Jump to

Keyboard shortcuts

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