Documentation ¶
Index ¶
- func Collect(stop <-chan struct{}, intf, bpfFilter string, proc Collector, ...) error
- func CountTcpPackets(ifc string, packetCount PacketCountConsumer) pcap.NetworkTrafficObserver
- type BackendCollector
- type Collector
- func New3PTrackerFilterCollector(col Collector) Collector
- func NewBackendCollector(svc akid.ServiceID, lrn akid.LearnSessionID, lc rest.LearnClient, ...) Collector
- func NewHTTPHostFilterCollector(matchers []*regexp.Regexp, col Collector) Collector
- func NewHTTPPathFilterCollector(matchers []*regexp.Regexp, col Collector) Collector
- type HARCollector
- type PacketCountConsumer
- type PacketCountDiscard
- type PacketCountSummary
- func (s *PacketCountSummary) AllPorts() []PacketCounters
- func (s *PacketCountSummary) Total() PacketCounters
- func (s *PacketCountSummary) TotalOnInterface(name string) PacketCounters
- func (s *PacketCountSummary) TotalOnPort(port int) PacketCounters
- func (s *PacketCountSummary) Update(c PacketCounters)
- type PacketCounters
- type SamplingCollector
- type TeeCollector
- type UserTrafficCollector
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 ¶
func (c *BackendCollector) Process(t akinet.ParsedNetworkTraffic) error
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 ¶
Filters out third-party trackers.
func NewBackendCollector ¶
func NewBackendCollector(svc akid.ServiceID, lrn akid.LearnSessionID, lc rest.LearnClient, dir kgxapi.NetworkDirection, plugins []plugin.AkitaPlugin, packetCounts PacketCountConsumer) Collector
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 ¶
func (h *HARCollector) Process(t akinet.ParsedNetworkTraffic) error
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 (s *PacketCountSummary) Total() PacketCounters
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 ¶
Wraps a Collector and peforms sampling.
func (*SamplingCollector) Close ¶
func (sc *SamplingCollector) Close() error
func (*SamplingCollector) Process ¶
func (sc *SamplingCollector) Process(t akinet.ParsedNetworkTraffic) error
type TeeCollector ¶
Not to be confused with coffee collector.
func (TeeCollector) Close ¶
func (tc TeeCollector) Close() error
func (TeeCollector) Process ¶
func (tc TeeCollector) Process(t akinet.ParsedNetworkTraffic) error
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 ¶
func (sc *UserTrafficCollector) Process(t akinet.ParsedNetworkTraffic) error