Documentation ¶
Index ¶
- Constants
- func LoadNet() (*ebpf.CollectionSpec, error)
- func LoadNetObjects(obj interface{}, opts *ebpf.CollectionOptions) error
- func LoadNetSk() (*ebpf.CollectionSpec, error)
- func LoadNetSkObjects(obj interface{}, opts *ebpf.CollectionOptions) error
- func RecordGetters(name attr.Name) (attributes.Getter[*Record, attribute.KeyValue], bool)
- func RecordStringGetters(name attr.Name) (attributes.Getter[*Record, string], bool)
- type FlowFetcher
- type IPAddr
- type NetConnInitiatorKey
- type NetFlowId
- type NetFlowIdT
- type NetFlowMetrics
- type NetFlowMetricsT
- type NetFlowRecordT
- type NetMapSpecs
- type NetMaps
- type NetObjects
- type NetProgramSpecs
- type NetPrograms
- type NetSkConnInitiatorKey
- type NetSkFlowId
- type NetSkFlowIdT
- type NetSkFlowMetrics
- type NetSkFlowMetricsT
- type NetSkFlowRecordT
- type NetSkMapSpecs
- type NetSkMaps
- type NetSkObjects
- type NetSkProgramSpecs
- type NetSkPrograms
- type NetSkSpecs
- type NetSpecs
- type Record
- type RecordAttrs
- type SockFlowFetcher
Constants ¶
const ( DirectionRequest = "request" DirectionResponse = "response" )
const ( // DirectionUnset is a convenience value to specify an unset/removed direction field DirectionUnset = 0xFF // DirectionIngress and DirectionEgress values according to field 61 in https://www.iana.org/assignments/ipfix/ipfix.xhtml DirectionIngress = 0 DirectionEgress = 1 // InitiatorSrc and InitiatorDst values set accordingly to flows_common.h definition InitiatorSrc = 1 InitiatorDst = 2 InterfaceUnset = 0xFFFFFFFF )
Variables ¶
This section is empty.
Functions ¶
func LoadNet ¶
func LoadNet() (*ebpf.CollectionSpec, error)
LoadNet returns the embedded CollectionSpec for Net.
func LoadNetObjects ¶
func LoadNetObjects(obj interface{}, opts *ebpf.CollectionOptions) error
LoadNetObjects loads Net and converts it into a struct.
The following types are suitable as obj argument:
*NetObjects *NetPrograms *NetMaps
See ebpf.CollectionSpec.LoadAndAssign documentation for details.
func LoadNetSk ¶ added in v1.5.0
func LoadNetSk() (*ebpf.CollectionSpec, error)
LoadNetSk returns the embedded CollectionSpec for NetSk.
func LoadNetSkObjects ¶ added in v1.5.0
func LoadNetSkObjects(obj interface{}, opts *ebpf.CollectionOptions) error
LoadNetSkObjects loads NetSk and converts it into a struct.
The following types are suitable as obj argument:
*NetSkObjects *NetSkPrograms *NetSkMaps
See ebpf.CollectionSpec.LoadAndAssign documentation for details.
func RecordGetters ¶ added in v1.6.0
RecordGetters returns the attributes.Getter function that returns the string value of a given attribute name. nolint:cyclop
func RecordStringGetters ¶ added in v1.7.0
Types ¶
type FlowFetcher ¶
type FlowFetcher struct { }
func NewFlowFetcher ¶
func NewFlowFetcher(_, _ int, _, _ bool) (*FlowFetcher, error)
func (*FlowFetcher) Close ¶
func (m *FlowFetcher) Close() error
func (*FlowFetcher) LookupAndDeleteMap ¶
func (m *FlowFetcher) LookupAndDeleteMap() map[NetFlowId][]NetFlowMetrics
func (*FlowFetcher) ReadRingBuf ¶
func (m *FlowFetcher) ReadRingBuf() (ringbuf.Record, error)
type IPAddr ¶
IPAddr encodes v4 and v6 IPs with a fixed length. IPv4 addresses are encoded as IPv6 addresses with prefix ::ffff/96 as described in https://datatracker.ietf.org/doc/html/rfc4038#section-4.2 (same behavior as Go's net.IP type)
func (*IPAddr) IntEncodeV4 ¶
IntEncodeV4 encodes an IPv4 address as an integer (in network encoding, big endian). It assumes that the passed IP is already IPv4. Otherwise it would just encode the last 4 bytes of an IPv6 address
func (*IPAddr) MarshalJSON ¶
type NetConnInitiatorKey ¶ added in v1.7.0
type NetFlowId ¶
type NetFlowId NetFlowIdT
type NetFlowIdT ¶
type NetFlowMetrics ¶
type NetFlowMetrics NetFlowMetricsT
func (*NetFlowMetrics) Accumulate ¶
func (fm *NetFlowMetrics) Accumulate(src *NetFlowMetrics)
type NetFlowMetricsT ¶
type NetFlowRecordT ¶
type NetFlowRecordT struct { Id NetFlowId Metrics NetFlowMetrics }
type NetMapSpecs ¶
type NetMapSpecs struct { AggregatedFlows *ebpf.MapSpec `ebpf:"aggregated_flows"` ConnInitiators *ebpf.MapSpec `ebpf:"conn_initiators"` DirectFlows *ebpf.MapSpec `ebpf:"direct_flows"` FlowDirections *ebpf.MapSpec `ebpf:"flow_directions"` }
NetMapSpecs contains maps before they are loaded into the kernel.
It can be passed ebpf.CollectionSpec.Assign.
type NetMaps ¶
type NetMaps struct { AggregatedFlows *ebpf.Map `ebpf:"aggregated_flows"` ConnInitiators *ebpf.Map `ebpf:"conn_initiators"` DirectFlows *ebpf.Map `ebpf:"direct_flows"` FlowDirections *ebpf.Map `ebpf:"flow_directions"` }
NetMaps contains all maps after they have been loaded into the kernel.
It can be passed to LoadNetObjects or ebpf.CollectionSpec.LoadAndAssign.
type NetObjects ¶
type NetObjects struct { NetPrograms NetMaps }
NetObjects contains all objects after they have been loaded into the kernel.
It can be passed to LoadNetObjects or ebpf.CollectionSpec.LoadAndAssign.
func (*NetObjects) Close ¶
func (o *NetObjects) Close() error
type NetProgramSpecs ¶
type NetProgramSpecs struct { EgressFlowParse *ebpf.ProgramSpec `ebpf:"egress_flow_parse"` IngressFlowParse *ebpf.ProgramSpec `ebpf:"ingress_flow_parse"` }
NetSpecs contains programs before they are loaded into the kernel.
It can be passed ebpf.CollectionSpec.Assign.
type NetPrograms ¶
type NetPrograms struct { EgressFlowParse *ebpf.Program `ebpf:"egress_flow_parse"` IngressFlowParse *ebpf.Program `ebpf:"ingress_flow_parse"` }
NetPrograms contains all programs after they have been loaded into the kernel.
It can be passed to LoadNetObjects or ebpf.CollectionSpec.LoadAndAssign.
func (*NetPrograms) Close ¶
func (p *NetPrograms) Close() error
type NetSkConnInitiatorKey ¶ added in v1.7.0
type NetSkFlowId ¶ added in v1.5.0
type NetSkFlowId NetSkFlowIdT
type NetSkFlowIdT ¶ added in v1.5.0
type NetSkFlowMetrics ¶ added in v1.5.0
type NetSkFlowMetrics NetSkFlowMetricsT
type NetSkFlowMetricsT ¶ added in v1.5.0
type NetSkFlowRecordT ¶ added in v1.5.0
type NetSkFlowRecordT struct { Id NetSkFlowId Metrics NetSkFlowMetrics }
type NetSkMapSpecs ¶ added in v1.5.0
type NetSkMapSpecs struct { AggregatedFlows *ebpf.MapSpec `ebpf:"aggregated_flows"` ConnInitiators *ebpf.MapSpec `ebpf:"conn_initiators"` DirectFlows *ebpf.MapSpec `ebpf:"direct_flows"` FlowDirections *ebpf.MapSpec `ebpf:"flow_directions"` }
NetSkMapSpecs contains maps before they are loaded into the kernel.
It can be passed ebpf.CollectionSpec.Assign.
type NetSkMaps ¶ added in v1.5.0
type NetSkMaps struct { AggregatedFlows *ebpf.Map `ebpf:"aggregated_flows"` ConnInitiators *ebpf.Map `ebpf:"conn_initiators"` DirectFlows *ebpf.Map `ebpf:"direct_flows"` FlowDirections *ebpf.Map `ebpf:"flow_directions"` }
NetSkMaps contains all maps after they have been loaded into the kernel.
It can be passed to LoadNetSkObjects or ebpf.CollectionSpec.LoadAndAssign.
type NetSkObjects ¶ added in v1.5.0
type NetSkObjects struct { NetSkPrograms NetSkMaps }
NetSkObjects contains all objects after they have been loaded into the kernel.
It can be passed to LoadNetSkObjects or ebpf.CollectionSpec.LoadAndAssign.
func (*NetSkObjects) Close ¶ added in v1.5.0
func (o *NetSkObjects) Close() error
type NetSkProgramSpecs ¶ added in v1.5.0
type NetSkProgramSpecs struct {
SocketHttpFilter *ebpf.ProgramSpec `ebpf:"socket__http_filter"`
}
NetSkSpecs contains programs before they are loaded into the kernel.
It can be passed ebpf.CollectionSpec.Assign.
type NetSkPrograms ¶ added in v1.5.0
NetSkPrograms contains all programs after they have been loaded into the kernel.
It can be passed to LoadNetSkObjects or ebpf.CollectionSpec.LoadAndAssign.
func (*NetSkPrograms) Close ¶ added in v1.5.0
func (p *NetSkPrograms) Close() error
type NetSkSpecs ¶ added in v1.5.0
type NetSkSpecs struct { NetSkProgramSpecs NetSkMapSpecs }
NetSkSpecs contains maps and programs before they are loaded into the kernel.
It can be passed ebpf.CollectionSpec.Assign.
type NetSpecs ¶
type NetSpecs struct { NetProgramSpecs NetMapSpecs }
NetSpecs contains maps and programs before they are loaded into the kernel.
It can be passed ebpf.CollectionSpec.Assign.
type Record ¶
type Record struct { NetFlowRecordT // Attrs of the flow record: source/destination, Interface, Beyla IP, etc... Attrs RecordAttrs }
Record contains accumulated metrics from a flow, with extra metadata that is added from the user space REMINDER: any attribute here must be also added to the functions RecordGetters and getDefinitions in pkg/internal/export/metric/definitions.go
func NewRecord ¶
func NewRecord( key NetFlowId, metrics NetFlowMetrics, ) *Record
type RecordAttrs ¶ added in v1.4.0
type RecordAttrs struct { // SrcName and DstName might be set from several sources along the processing/decoration pipeline: // - K8s entity // - Host name // - IP SrcName string DstName string Interface string // BeylaIP provides information about the source of the flow (the Agent that traced it) BeylaIP string Metadata map[attr.Name]string }
type SockFlowFetcher ¶ added in v1.5.0
type SockFlowFetcher struct{}
func NewSockFlowFetcher ¶ added in v1.5.0
func NewSockFlowFetcher(_, _ int) (*SockFlowFetcher, error)
func (*SockFlowFetcher) Close ¶ added in v1.5.0
func (s *SockFlowFetcher) Close() error
func (*SockFlowFetcher) LookupAndDeleteMap ¶ added in v1.5.0
func (s *SockFlowFetcher) LookupAndDeleteMap() map[NetFlowId][]NetFlowMetrics
func (*SockFlowFetcher) ReadRingBuf ¶ added in v1.5.0
func (s *SockFlowFetcher) ReadRingBuf() (ringbuf.Record, error)