telemetry

package
v1.2.1 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2020 License: MIT Imports: 23 Imported by: 6

Documentation

Overview

Copyright Microsoft. All rights reserved.

Index

Constants

View Source
const (

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

	// 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 (
	// NPMTelemetryFile Path.
	NPMTelemetryFile = platform.NPMRuntimePath + "AzureNPMTelemetry.json"
	// 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 azureHostReportURL - host net agent url of type buffer DefaultInterval - default interval for sending buffer to host logName - telemetry log name MaxPayloadSize - max buffer size in bytes

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

Variables

This section is empty.

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 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 {
	DNCReports []DNCReport
	CNIReports []CNIReport
	NPMReports []NPMReport
	CNSReports []CNSReport
}

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
	OrchestratorDetails OrchestratorInfo
	OSDetails           OSInfo
	SystemDetails       SystemInfo
	InterfaceDetails    InterfaceInfo
	BridgeDetails       BridgeInfo
	Metadata            common.Metadata `json:"compute"`
}

Azure CNI Telemetry Report structure.

func (*CNIReport) GetInterfaceDetails added in v1.0.9

func (report *CNIReport) GetInterfaceDetails(queryUrl string)

GetInterfaceDetails creates a report with interface details(ip, mac, name, secondaryca count).

func (*CNIReport) GetOSDetails

func (report *CNIReport) GetOSDetails()

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

func (*CNIReport) GetOrchestratorDetails added in v1.0.9

func (report *CNIReport) GetOrchestratorDetails()

GetOrchestratorDetails creates a report with orchestrator details(name, 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 CNSReport added in v1.0.16

type CNSReport struct {
	IsNewInstance   bool
	CPUUsage        string
	MemoryUsage     string
	Processes       string
	EventMessage    string
	DncPartitionKey string
	Timestamp       string
	UUID            string
	Errorcode       string
	Metadata        common.Metadata `json:"compute"`
}

Azure CNS Telemetry Report structure.

type ClusterState added in v1.0.9

type ClusterState struct {
	PodCount      int
	NsCount       int
	NwPolicyCount int
}

ClusterState contains the current kubernetes cluster state.

type DNCReport added in v1.0.15

type DNCReport struct {
	IsNewInstance bool
	CPUUsage      string
	MemoryUsage   string
	Processes     string
	EventMessage  string
	PartitionKey  string
	Allocations   string
	Timestamp     string
	NumberOfNodes int
	NumberOfNCs   int
	Orchestrator  string
	ContainerType string
	Errorcode     string
	Metadata      common.Metadata `json:"compute"`
}

DNCReport structure.

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 NPMReport added in v1.0.9

type NPMReport struct {
	IsNewInstance     bool
	ClusterID         string
	NodeName          string
	InstanceName      string
	NpmVersion        string
	KubernetesVersion string
	ErrorMessage      string
	EventMessage      string
	UpTime            string
	Timestamp         string
	ClusterState      ClusterState
	Metadata          common.Metadata `json:"compute"`
}

NPMReport structure.

func (*NPMReport) GetReport added in v1.0.12

func (report *NPMReport) GetReport(clusterID, nodeName, npmVersion, kubernetesVersion string, clusterState ClusterState)

GetReport retrives npm and kubernetes cluster related info and create a report structure.

type OSInfo

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

OS Details structure.

type OrchestratorInfo added in v1.0.1

type OrchestratorInfo struct {
	OrchestratorName    string
	OrchestratorVersion string
	ErrorMessage        string
}

Orchestrator Details structure.

type ReportManager

type ReportManager struct {
	HostNetAgentURL string
	ContentType     string
	Report          interface{}
}

ReportManager structure.

func (*ReportManager) GetKernelVersion added in v1.0.12

func (reportMgr *ReportManager) GetKernelVersion()

Get kernel version

func (*ReportManager) GetReportState added in v1.0.12

func (reportMgr *ReportManager) GetReportState(telemetryFile string) bool

GetReportState will check if report is sent at least once by checking telemetry file.

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.

func (*ReportManager) SetReportState added in v1.0.12

func (reportMgr *ReportManager) SetReportState(telemetryFile string) error

SetReportState will save the state in file if telemetry report sent successfully.

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(hostReportURL string) *TelemetryBuffer

NewTelemetryBuffer - create a new TelemetryBuffer

func (*TelemetryBuffer) BufferAndPushData added in v1.0.18

func (tb *TelemetryBuffer) BufferAndPushData(intervalms time.Duration)

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

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

func (tb *TelemetryBuffer) StartServer(disableNetAgentChannel bool) error

Starts Telemetry server listening on unix domain socket

func (*TelemetryBuffer) TryToConnectToTelemetryService added in v1.0.23

func (tb *TelemetryBuffer) TryToConnectToTelemetryService()

TryToConnectToTelemetryService - Attempt to connect telemetry process without spawning it if it's not already running.

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