telemetry

package
v1.4.51 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2023 License: MIT Imports: 19 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 CreateAITelemetryHandle added in v1.0.32

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

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 StartTelemetryService added in v1.0.18

func StartTelemetryService(path string, args []string) error

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

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"`
}

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() *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) ConnectToTelemetryService

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

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

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) 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