trace

package
v0.15.0 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2021 License: Apache-2.0 Imports: 36 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Collect

func Collect(stop <-chan struct{}, intf, bpfFilter string, proc Collector, packetCount PacketCountConsumer) error

func CountTcpPackets added in v0.13.0

func CountTcpPackets(ifc string, packetCount PacketCountConsumer) pcap.NetworkTrafficObserver

Observe every captured TCP segment here

Types

type BackendCollector

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

Sends witnesses up to akita cloud.

func (*BackendCollector) Close

func (c *BackendCollector) Close() error

func (*BackendCollector) Process

type Collector

type Collector interface {
	// Hands new data from network to the collector. The implementation may choose
	// to process them asynchronously (e.g. to wait for the response to a
	// corresponding request).
	// Implementations should only return error if the error is unrecoverable and
	// the whole process should stop immediately.
	Process(akinet.ParsedNetworkTraffic) error

	// Implementations must complete processing all requests/responses before
	// returning.
	Close() error
}

func New3PTrackerFilterCollector

func New3PTrackerFilterCollector(col Collector) Collector

Filters out third-party trackers.

func NewHTTPHostFilterCollector

func NewHTTPHostFilterCollector(matchers []*regexp.Regexp, col Collector) Collector

func NewHTTPPathFilterCollector

func NewHTTPPathFilterCollector(matchers []*regexp.Regexp, col Collector) Collector

Filters out HTTP paths.

type HARCollector

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

func NewHARCollector

func NewHARCollector(interfaceName, outDir string, isOutbound bool, tags map[string]string) *HARCollector

func (*HARCollector) Close

func (h *HARCollector) Close() error

TODO: output HAR files periodically instead of buffering everything in memory.

func (*HARCollector) Process

type PacketCountConsumer added in v0.13.0

type PacketCountConsumer interface {
	// Add an additional measurement to the current count
	Update(delta PacketCounters)
}

A consumer accepts incremental updates in the form of PacketCounters.

type PacketCountDiscard added in v0.13.0

type PacketCountDiscard struct {
}

Discard the count

func (*PacketCountDiscard) Update added in v0.13.0

func (d *PacketCountDiscard) Update(_ PacketCounters)

type PacketCountSummary added in v0.13.0

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

A consumer that sums the count by (interface, port) pairs. In the future, this could put counters on a pipe and do the increments in a separate goroutine, but we would *still* need a mutex to read the totals out. TODO: limit maximum size

func NewPacketCountSummary added in v0.13.0

func NewPacketCountSummary() *PacketCountSummary

func (*PacketCountSummary) AllPorts added in v0.13.0

func (s *PacketCountSummary) AllPorts() []PacketCounters

All available port numbers

func (*PacketCountSummary) Total added in v0.13.0

func (*PacketCountSummary) TotalOnInterface added in v0.13.0

func (s *PacketCountSummary) TotalOnInterface(name string) PacketCounters

Packet counters summed over interface

func (*PacketCountSummary) TotalOnPort added in v0.13.0

func (s *PacketCountSummary) TotalOnPort(port int) PacketCounters

Packet counters summed over port

func (*PacketCountSummary) Update added in v0.13.0

func (s *PacketCountSummary) Update(c PacketCounters)

type PacketCounters added in v0.13.0

type PacketCounters struct {
	// Flow
	Interface string
	SrcPort   int
	DstPort   int

	// Number of events
	TCPPackets    int
	HTTPRequests  int
	HTTPResponses int
	Unparsed      int
}

We produce a set of packet counters indexed by interface and port number (*either* source or destination.)

func (*PacketCounters) Add added in v0.13.0

func (c *PacketCounters) Add(d PacketCounters)

type SamplingCollector

type SamplingCollector struct {
	SampleRate float64
	Collector  Collector
}

Wraps a Collector and peforms sampling.

func (*SamplingCollector) Close

func (sc *SamplingCollector) Close() error

func (*SamplingCollector) Process

type TeeCollector

type TeeCollector struct {
	Dst1 Collector
	Dst2 Collector
}

Not to be confused with coffee collector.

func (TeeCollector) Close

func (tc TeeCollector) Close() error

func (TeeCollector) Process

type UserTrafficCollector

type UserTrafficCollector struct {
	Collector Collector
}

Filters out CLI's own traffic to Akita APIs.

func (*UserTrafficCollector) Close

func (sc *UserTrafficCollector) Close() error

func (*UserTrafficCollector) Process

Jump to

Keyboard shortcuts

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