Documentation ¶
Index ¶
- Constants
- Variables
- func CheckProbeCapabilities(probeType string, capability ProbeCapability) bool
- func DelField(obj map[string]interface{}, k string) bool
- func GetMapField(obj map[string]interface{}, k string) (interface{}, error)
- func GetMapFieldKeys(obj map[string]interface{}) []string
- func IPStrToUint32(ipAddr string) (uint32, error)
- func IPV4CIDRToRegex(cidr string) (string, error)
- func IsCaptureAllowed(nodeType string) bool
- func IsIPv6(addr string) bool
- func JSONDecode(r io.Reader, i interface{}) error
- func LookupPath(obj interface{}, path string, kind reflect.Kind) (reflect.Value, bool)
- func MaxInt64(a, b int64) int64
- func MinInt64(a, b int64) int64
- func NormalizeAddrForURL(addr string) string
- func NormalizeIP(ip, ipFamily string) string
- func NormalizeIPForURL(ip net.IP) string
- func NormalizeValue(obj interface{}) interface{}
- func ParseAddr(address string) (protocol string, target string, err error)
- func ProbeTypeForNode(nodeType string, captureType string) (string, error)
- func Profile()
- func RandString(n int) string
- func RangeToRegex(min, max int) string
- func Retry(fnc func() error, try int, delay time.Duration) error
- func RetryExponential(fnc func() error, try int, baseDelay time.Duration) error
- func SetMapField(obj map[string]interface{}, k string, v interface{}) bool
- func SetupTLSClientConfig(certPEM string, keyPEM string) (*tls.Config, error)
- func SetupTLSLoadCA(certPEM string) (*x509.CertPool, error)
- func SetupTLSServerConfig(certPEM string, keyPEM string) (*tls.Config, error)
- func StructFieldKeys(i interface{}) []string
- func ToInt64(i interface{}) (int64, error)
- func UnixMillis(t time.Time) int64
- type BoolPredicate
- type CaptureType
- type Debouncer
- type Getter
- type Int64Predicate
- type Iterator
- type MasterElection
- type MasterElectionListener
- type MasterElectionService
- type Metric
- type NetNSContext
- type PortAllocator
- type ProbeCapability
- type ProcessInfo
- type ProcessState
- type RWMutex
- type RawSocket
- type Service
- type ServiceAddress
- type ServiceState
- type ServiceType
- type SortOrder
- type StringPredicate
- type TimeSlice
Constants ¶
const ( // BPFCapability the probe is able to handle bpf filters BPFCapability ProbeCapability = 1 << 0 // RawPacketsCapability the probe can capture raw packets RawPacketsCapability = 1 << 1 // ExtraTCPMetricCapability the probe can report TCP metrics ExtraTCPMetricCapability = 1 << 2 // MultipleOnSameNodeCapability is defined on probes that support multiple captures of the same type on one node MultipleOnSameNodeCapability = 1 << 3 )
const ( AllPackets = syscall.ETH_P_ALL OnlyIPPackets = syscall.ETH_P_IP )
Protocols to receive
Variables ¶
var ( // ProbeTypes returns a list of all the capture probes ProbeTypes = []string{"ovssflow", "pcapsocket", "ovsmirror", "dpdk", "afpacket", "pcap", "ebpf", "sflow", "ovsnetflow"} // CaptureTypes contains all registered capture type and associated probes CaptureTypes = map[string]CaptureType{} // ProbeCapabilities defines capability per probes ProbeCapabilities = map[string]ProbeCapability{} )
var ( // ErrInvalidPortRange invalid port range ErrInvalidPortRange = errors.New("Invalid port range") // ErrNoPortLeft no port left in the range ErrNoPortLeft = errors.New("No free port left") )
var ( // ErrCantCompareInterface error can't compare interface ErrCantCompareInterface = errors.New("Can't compare interface") // ErrFieldNotFound error field not found ErrFieldNotFound = errors.New("Field not found") // ErrFieldWrongType error field has wrong type ErrFieldWrongType = errors.New("Field has wrong type") // ErrNotFound error no result was found ErrNotFound = errors.New("No result found") // ErrTimeout network timeout ErrTimeout = errors.New("Timeout") // ErrNotImplemented unimplemented feature ErrNotImplemented = errors.New("Not implemented") )
Functions ¶
func CheckProbeCapabilities ¶
func CheckProbeCapabilities(probeType string, capability ProbeCapability) bool
CheckProbeCapabilities checks that a probe supports given capabilities
func GetMapField ¶
GetMapField retrieves a value from a tree from the dot key like "a.b.c.d"
func GetMapFieldKeys ¶
GetMapFieldKeys returns all the keys using dot notation
func IPStrToUint32 ¶
IPStrToUint32 converts IP string to 32bits
func IPV4CIDRToRegex ¶
IPV4CIDRToRegex returns a regex matching IPs belonging to a given cidr
func IsCaptureAllowed ¶
IsCaptureAllowed returns true if the node capture type exist
func JSONDecode ¶
JSONDecode wrapper to UseNumber during JSON decoding
func LookupPath ¶
LookupPath lookup through the given obj according to the given path return the value found if the kind matches
func NormalizeAddrForURL ¶
NormalizeAddrForURL format the given address to be used in URL. For IPV6 addresses the brackets will be added.
func NormalizeIPForURL ¶
NormalizeIPForURL returns a string normalized that can be used in URL. Brackets will be used for IPV6 addresses.
func NormalizeValue ¶
func NormalizeValue(obj interface{}) interface{}
NormalizeValue returns a version of the passed value that can be safely marshalled to JSON
func ParseAddr ¶
ParseAddr parses an address of the form protocol://target such as unix:////var/run/service/program.sock or tcp://my.domain:2134. It also handles addresses of the form address:port and assumes it uses TCP.
func ProbeTypeForNode ¶
ProbeTypeForNode returns the appropriate probe type for the given node type and capture type.
func RangeToRegex ¶
RangeToRegex returns a regular expression matching number in the given range Golang version of https://github.com/dimka665/range-regex
func Retry ¶
Retry tries to execute the given function until a success applying a delay between each try
func RetryExponential ¶
RetryExponential tries to execute the given function until a success applying a delay between each try. The delay is doubled after each try. Its initial value is baseDelay.
func SetMapField ¶
SetMapField set a value in a tree based on dot key ("a.b.c.d" = "ok")
func SetupTLSClientConfig ¶
SetupTLSClientConfig creates a client X509 certificate from public and private key
func SetupTLSLoadCA ¶
SetupTLSLoadCA creates an X509 certificate from file
func SetupTLSServerConfig ¶
SetupTLSServerConfig creates a server X509 certificate from public and private key
func StructFieldKeys ¶
func StructFieldKeys(i interface{}) []string
StructFieldKeys returns field names of a structure
func UnixMillis ¶
UnixMillis returns the current time in miliseconds
Types ¶
type BoolPredicate ¶
BoolPredicate is a function that applies a test against a boolean
type CaptureType ¶
CaptureType describes a list of allowed and default captures probes
type Debouncer ¶
type Debouncer struct {
// contains filtered or unexported fields
}
Debouncer defines a debouncer object
func NewDebouncer ¶
NewDebouncer returns a Debouncer calling the given callback after a certain amount of time.
type Getter ¶
type Getter interface { GetField(field string) (interface{}, error) GetFieldKeys() []string GetFieldBool(field string) (bool, error) GetFieldInt64(field string) (int64, error) GetFieldString(field string) (string, error) MatchBool(field string, predicate BoolPredicate) bool MatchInt64(field string, predicate Int64Predicate) bool MatchString(field string, predicate StringPredicate) bool }
Getter describes filter getter fields
type Int64Predicate ¶
Int64Predicate is a function that applies a test against an integer
type Iterator ¶
type Iterator struct {
// contains filtered or unexported fields
}
Iterator describes a int64 iterator
func NewIterator ¶
NewIterator creates a new iterator based on (at, from, to) parameters
type MasterElection ¶
type MasterElection interface { Start() StartAndWait() Stop() IsMaster() bool AddEventListener(listener MasterElectionListener) TTL() time.Duration }
MasterElection describes the master election mechanism
type MasterElectionListener ¶
type MasterElectionListener interface { OnStartAsMaster() OnStartAsSlave() OnSwitchToMaster() OnSwitchToSlave() }
MasterElectionListener describes the multi election mechanism
type MasterElectionService ¶
type MasterElectionService interface {
NewElection(key string) MasterElection
}
MasterElectionService describes the election service mechanism
type Metric ¶
type Metric interface { // part of the Getter interface GetFieldInt64(field string) (int64, error) GetFieldKeys() []string Add(m Metric) Metric Sub(m Metric) Metric Split(cut int64) (Metric, Metric) GetStart() int64 SetStart(start int64) GetLast() int64 SetLast(last int64) IsZero() bool }
Metric defines a common metric interface
type NetNSContext ¶
type NetNSContext struct {
// contains filtered or unexported fields
}
NetNSContext describes a NameSpace Context switch API
func NewNetNsContext ¶
func NewNetNsContext(path string) (*NetNSContext, error)
NewNetNsContext creates a new NameSpace context base on path
func (*NetNSContext) Quit ¶
func (n *NetNSContext) Quit() error
Quit the NameSpace and go back to the original one
type PortAllocator ¶
PortAllocator describes a threads safe port list that can be allocated
func NewPortAllocator ¶
func NewPortAllocator(min, max int) (*PortAllocator, error)
NewPortAllocator creates a new port allocator range
type ProcessInfo ¶
type ProcessInfo struct { Process string Pid int64 Name string PPid int64 PGrp int64 Session int64 Utime int64 Stime int64 CUtime int64 CStime int64 Priority int64 Nice int64 Threads int64 Start int64 Vsize int64 RSS int64 State ProcessState }
ProcessInfo describes the information of a running process
func GetProcessInfo ¶
func GetProcessInfo(pid int) (*ProcessInfo, error)
GetProcessInfo retrieve process info from /proc
type ProcessState ¶
type ProcessState rune
ProcessState describes the state of a process
const ( // Running state Running ProcessState = 'R' // Sleeping state Sleeping ProcessState = 'S' // Waiting state Waiting ProcessState = 'D' // Zombie state Zombie ProcessState = 'Z' // Stopped state Stopped ProcessState = 'T' // TracingStop state TracingStop ProcessState = 't' // Dead state Dead ProcessState = 'X' )
type RawSocket ¶
type RawSocket struct {
// contains filtered or unexported fields
}
RawSocket describes a raw socket C implemenation
func NewRawSocket ¶
NewRawSocket creates a raw socket for the network interface ifName
func NewRawSocketInNs ¶
NewRawSocketInNs create/open a socket in the namespace nsPath for the network interface ifName
type Service ¶
type Service struct { Type ServiceType ID string }
Service describes a service identified by its type and identifier
type ServiceAddress ¶
ServiceAddress describes the service listening address and port
func ServiceAddressFromString ¶
func ServiceAddressFromString(addressPort string) (ServiceAddress, error)
ServiceAddressFromString returns a service address from a string, could be IPv4 or IPv6
func (ServiceAddress) String ¶
func (sa ServiceAddress) String() string
type ServiceState ¶
type ServiceState int64
ServiceState describes the state of a service.
const ( // StoppedState service stopped StoppedState ServiceState = iota + 1 // StartingState service starting StartingState // RunningState service running RunningState // StoppingState service stopping StoppingState )
func (*ServiceState) CompareAndSwap ¶
func (s *ServiceState) CompareAndSwap(old, new ServiceState) bool
CompareAndSwap executes the compare-and-swap operation for a state
func (*ServiceState) Load ¶
func (s *ServiceState) Load() ServiceState
Load atomatically loads and returns the state
func (*ServiceState) MarshalJSON ¶
func (s *ServiceState) MarshalJSON() ([]byte, error)
MarshalJSON marshal the connection state to JSON
func (*ServiceState) Store ¶
func (s *ServiceState) Store(state ServiceState)
Store atomatically stores the state
type ServiceType ¶
type ServiceType string
ServiceType describes the service type (analyzer or agent)
const ( // UnknownService for unknown client types UnknownService ServiceType = "unknown" // AnalyzerService analyzer AnalyzerService ServiceType = "analyzer" // AgentService agent AgentService ServiceType = "agent" )
func (ServiceType) String ¶
func (st ServiceType) String() string
type StringPredicate ¶
StringPredicate is a function that applies a test against a string