telemetry

package
v0.0.0-...-8aeb8a1 Latest Latest
Warning

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

Go to latest
Published: Jun 29, 2023 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CLIStart

func CLIStart(command string, dateFilters, state bool, chunkSize int64)

CLIStart puts cli start event into the queue

func Close

func Close()

Close stops underline goroutines

func Coordination

func Coordination(serviceType string)

Coordination puts usage event with coordination service type

func Destination

func Destination(destinationID, destinationType, mode, mappingsStyle string, usersRecognition, primaryKeysPresent bool)

Destination puts usage event with hashed destination id and type

func EnrichMetaStorage

func EnrichMetaStorage(storage meta.Storage)

func EnrichSystemInfo

func EnrichSystemInfo(clusterID string, systemInfo *runtime.Info)

EnrichSystemInfo enriches request factory (every request) with system information (CPU/RAM)

func Error

func Error(sourceID, destinationID, src, sourceType string, quantity int)

Error increments errors collector counter

func Event

func Event(sourceID, destinationID, src, sourceType string, quantity int)

Event increments events collector counter

func Flush

func Flush()

Flush sends all requests that are in a queue

func Init

func Init(serviceName, commit, tag, builtAt, dockerHubID string)

Init creates telemetry instance and starts goroutine

func InitFromViper

func InitFromViper(telemetrySourceURL, serviceName, commit, tag, builtAt, dockerHubID string)

InitFromViper creates telemetry instance, starts goroutine if configuration is provided as a url - starts another goroutine (see resources.Watch)

func InitTest

func InitTest()

InitTest for tests only

func PushedErrorsPerSrc

func PushedErrorsPerSrc(sourceID, destinationID string, quantityPerSrc map[string]int)

PushedErrorsPerSrc increments errors collector counter per Src

func PushedEventsPerSrc

func PushedEventsPerSrc(sourceID, destinationID string, quantityPerSrc map[string]int)

PushedEventsPerSrc increments events collector counter per Src

func ServerStart

func ServerStart()

ServerStart puts server start event into the queue

func ServerStop

func ServerStop()

ServerStop puts server stop event into the queue

func Source

func Source(sourceID, sourceType, sourceConnectorOrigin, sourceConnectorVersion, sourceSchedule string, streams int)

Source puts usage event with hashed source id and type

func SourceTaskStatus

func SourceTaskStatus(taskID, sourceID, sourceType, collection, status, error, createdAt, startedAt, finishedAt string)

SourceTaskStatus puts task status usage event with hashed source id, task id and type

func User

func User(user *UserData)

User puts user request into the queue it is used in manager

Types

type Collector

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

Collector is a thread-safe collector for events accounting per source - destination pair, src,

func (*Collector) Cut

func (c *Collector) Cut() (map[CriteriaKey]uint64, map[CriteriaKey]uint64)

Cut returns current counters values (events and errors)

func (*Collector) Error

func (c *Collector) Error(sourceID, destinationID, src, sourceType string, quantity uint64)

Error increments errors counter

func (*Collector) Event

func (c *Collector) Event(sourceID, destinationID, src, sourceType string, quantity uint64)

Event increments events counter

type Configuration

type Configuration struct {
	Disabled map[string]bool `json:"disabled,omitempty"`
}

Configuration dto for telemetry enable/disable configuration

type Counter

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

Counter atomic counter

func (*Counter) Add

func (c *Counter) Add(key CriteriaKey)

Add increments value under the key

func (*Counter) AddValue

func (c *Counter) AddValue(key CriteriaKey, value uint64)

AddValue adds value to the value under the key

func (*Counter) Cut

func (c *Counter) Cut() map[CriteriaKey]uint64

Cut returns current value and set it to 0

type CriteriaKey

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

CriteriaKey is a key struct for map[CriteriaKey]value keeps hashed source and destination ids

type Errors

type Errors struct {
	ID       int64 `json:"id,omitempty"`
	Quantity int64 `json:"quantity,omitempty"`
}

Errors is a error accounting dto

type InstanceInfo

type InstanceInfo struct {
	ID string `json:"id,omitempty"`

	Commit      string `json:"commit,omitempty"`
	Tag         string `json:"tag,omitempty"`
	BuiltAt     string `json:"built_at,omitempty"`
	ServiceName string `json:"service,omitempty"`
	RunID       string `json:"run_id,omitempty"`
	ClusterID   string `json:"cluster_id,omitempty"`
	Arch        string `json:"arch,omitempty"`

	MetaStorage string `json:"meta_storage,omitempty"`

	CPUInfoInstances int    `json:"cpu_info_instances,omitempty"`
	CPUCores         int    `json:"cpu_cores,omitempty"`
	CPUModelName     string `json:"cpu_model_name,omitempty"`
	CPUModel         string `json:"cpu_model,omitempty"`
	CPUFamily        string `json:"cpu_family,omitempty"`
	CPUVendor        string `json:"cpu_vendor,omitempty"`

	RAMTotalGB float64 `json:"ram_total_gb,omitempty"`
	RAMFreeGB  float64 `json:"ram_free_gb,omitempty"`
	RAMUsage   string  `json:"ram_usage,omitempty"`
}

InstanceInfo is a deployed server data dto

func GetSystemInfo

func GetSystemInfo() *InstanceInfo

type Request

type Request struct {
	Timestamp    string        `json:"timestamp,omitempty"`
	InstanceInfo *InstanceInfo `json:"instance_info,omitempty"`
	MetricType   string        `json:"metric_type,omitempty"`
	Usage        *Usage        `json:"usage,omitempty"`
	Errors       *Errors       `json:"errors,omitempty"`
	User         *UserData     `json:"user,omitempty"`
}

Request is a telemetry request dto

type RequestFactory

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

RequestFactory is a factory for telemetry requests

type Service

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

Service is used for sending telemetry

type Usage

type Usage struct {
	DockerHubID string `json:"docker_hub_id,omitempty"`
	ServerStart int    `json:"server_start,omitempty"`
	ServerStop  int    `json:"server_stop,omitempty"`

	Events    uint64 `json:"events,omitempty"`
	Errors    uint64 `json:"errors,omitempty"`
	EventsSrc string `json:"events_src,omitempty"`

	Source                 string `json:"hashed_source_id,omitempty"`
	SourceType             string `json:"source_type,omitempty"`
	SourceConnectorOrigin  string `json:"source_connector_origin,omitempty"`
	SourceConnectorVersion string `json:"source_connector_version,omitempty"`
	SourceSchedule         string `json:"source_schedule,omitempty"`
	SourceStreams          int    `json:"source_streams,omitempty"`

	Task           string `json:"hashed_task_id,omitempty"`
	TaskCollection string `json:"task_collection,omitempty"`
	TaskCreatedAt  string `json:"task_created_at,omitempty"`
	TaskStartedAt  string `json:"task_started_at,omitempty"`
	TaskFinishedAt string `json:"task_finished_at,omitempty"`
	TaskStatus     string `json:"task_status,omitempty"`
	TaskError      string `json:"task_error,omitempty"`

	Destination        string `json:"hashed_destination_id,omitempty"`
	DestinationType    string `json:"destination_type,omitempty"`
	DestinationMode    string `json:"destination_mode,omitempty"`
	DestinationMapping string `json:"destination_mappings,omitempty"`
	DestinationPkKeys  bool   `json:"destination_primary_keys,omitempty"`
	UsersRecognition   bool   `json:"users_recognition,omitempty"`

	Coordination string `json:"coordination,omitempty"`

	CLICommand     string `json:"cli_command,omitempty"`
	CLIStart       int    `json:"cli_start,omitempty"`
	CLIDateFilters bool   `json:"cli_date_filters,omitempty"`
	CLIState       bool   `json:"cli_state,omitempty"`
	CLIChunkSize   int64  `json:"cli_chunk_size,omitempty"`
}

Usage is a usage accounting dto

type UserData

type UserData struct {
	Email       string `json:"email,omitempty"`
	Name        string `json:"name,omitempty"`
	Company     string `json:"company,omitempty"`
	EmailOptout bool   `json:"email_optout"`
	UsageOptout bool   `json:"telemetry_usage_optout"`
}

UserData is a registered user data dto

Jump to

Keyboard shortcuts

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