telemetry

package
v1.0.27 Latest Latest
Warning

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

Go to latest
Published: Aug 30, 2019 License: MIT Imports: 24 Imported by: 6

Documentation

Index

Constants

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"
)
View Source
const (
	// CNSTelemetryFile - telemetry file path.
	CNSTelemetryFile = platform.CNSRuntimePath + "AzureCNSTelemetry.json"
)

Variables

This section is empty.

Functions

func SendCnsTelemetry added in v1.0.16

func SendCnsTelemetry(reports chan interface{}, service *restserver.HTTPRestService, telemetryStopProcessing chan bool)

SendCnsTelemetry - handles cns telemetry reports

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 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            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        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      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 Metadata added in v1.0.12

type Metadata struct {
	Location             string `json:"location"`
	VMName               string `json:"name"`
	Offer                string `json:"offer"`
	OsType               string `json:"osType"`
	PlacementGroupID     string `json:"placementGroupId"`
	PlatformFaultDomain  string `json:"platformFaultDomain"`
	PlatformUpdateDomain string `json:"platformUpdateDomain"`
	Publisher            string `json:"publisher"`
	ResourceGroupName    string `json:"resourceGroupName"`
	Sku                  string `json:"sku"`
	SubscriptionID       string `json:"subscriptionId"`
	Tags                 string `json:"tags"`
	OSVersion            string `json:"version"`
	VMID                 string `json:"vmId"`
	VMSize               string `json:"vmSize"`
	KernelVersion        string
}

Metadata retrieved from wireserver

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

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