telemetry

package
v1.5.20 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2024 License: MIT Imports: 20 Imported by: 6

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 (
	ErrTelemetryDisabled = errors.New("telemetry is disabled")
)

Functions

func CloseAITelemetryHandle

func CloseAITelemetryHandle()

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 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
	InterfaceDetails  InterfaceInfo
	BridgeDetails     BridgeInfo
	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 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 {
	HostNetAgentURL string
	ContentType     string
	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