diff --git a/config/sample-config.yaml b/config/sample-config.yaml index adef085f8..32af68974 100644 --- a/config/sample-config.yaml +++ b/config/sample-config.yaml @@ -40,18 +40,19 @@ prometheus: frontend: recordTypes: - flowLog - # - newConnection - # - heartbeat - # - endConnection + # - newConnection + # - heartbeat + # - endConnection features: # eBPF agent features - # - pktDrop - # - dnsTracking - # - flowRTT - # - networkEvents + # - pktDrop + # - dnsTracking + # - flowRTT + # - networkEvents + # - packetTranslation # processor features - # - multiCluster - # - zones + # - multiCluster + # - zones portNaming: enable: true portNames: @@ -81,92 +82,92 @@ frontend: deduper: mark: true merge: false - # The following configuration is taken from Network Observability Operator - # see https://github.com/netobserv/network-observability-operator/blob/main/controllers/consoleplugin/config/static-frontend-config.yaml - panels: - # Protocol - - Proto_Bytes - - sum_Proto_Bytes - - avg_Proto_Bytes - - Proto_Packets - - sum_Proto_Packets - - avg_Proto_Packets - - Proto_Flows - # DSCP - - Dscp_Bytes - - Dscp_Packets - - min_Dscp_TimeFlowRttNs - - max_Dscp_TimeFlowRttNs - - avg_Dscp_TimeFlowRttNs - - p90_Dscp_TimeFlowRttNs - - p99_Dscp_TimeFlowRttNs - - min_Dscp_DnsLatencyMs - - max_Dscp_DnsLatencyMs - - avg_Dscp_DnsLatencyMs - - p90_Dscp_DnsLatencyMs - - p99_Dscp_DnsLatencyMs - - Dscp_Flows - # Port numbers - - SrcPort_Bytes - - sum_SrcPort_Bytes - - SrcPort_Packets - - sum_SrcPort_Packets - - SrcPort_TimeFlowRttNs - - min_SrcPort_TimeFlowRttNs - - max_SrcPort_TimeFlowRttNs - - avg_SrcPort_TimeFlowRttNs - - p90_SrcPort_TimeFlowRttNs - - p99_SrcPort_TimeFlowRttNs - - DstPort_Bytes - - sum_DstPort_Bytes - - DstPort_Packets - - sum_DstPort_Packets - - min_DstPort_TimeFlowRttNs - - max_DstPort_TimeFlowRttNs - - avg_DstPort_TimeFlowRttNs - - p90_DstPort_TimeFlowRttNs - - p99_DstPort_TimeFlowRttNs - # Node Directions - - FlowDirection_Bytes - - FlowDirection_Packets - - FlowDirection_Flows - # TODO: implement a way to manage plurals for interfaces - # Interfaces Directions - #- IfDirections_Bytes - #- IfDirections_Packets - #- IfDirections_Flows - # Interfaces names - #- Interfaces_Bytes - #- sum_Interfaces_Bytes - #- avg_Interfaces_Bytes - #- Interfaces_Packets - #- sum_Interfaces_Packets - #- avg_Interfaces_Packets - #- Interfaces_Flows - # DNS capture errors - - DnsErrno_Flows - # Connection tracking flow count - - numFlowLogs_Flows - # Bytes / Packets rates on current scope - - Bytes - - Packets - # flow on current scope - - Flows - - DnsFlows - # UDN - - UdnId_Bytes - - UdnId_Packets - - min_UdnId_TimeFlowRttNs - - max_UdnId_TimeFlowRttNs - - avg_UdnId_TimeFlowRttNs - - p90_UdnId_TimeFlowRttNs - - p99_UdnId_TimeFlowRttNs - - min_UdnId_DnsLatencyMs - - max_UdnId_DnsLatencyMs - - avg_UdnId_DnsLatencyMs - - p90_UdnId_DnsLatencyMs - - p99_UdnId_DnsLatencyMs - - UdnId_Flows + # The following configuration is taken from Network Observability Operator + # see https://github.com/netobserv/network-observability-operator/blob/main/controllers/consoleplugin/config/static-frontend-config.yaml + panels: + # Protocol + - Proto_Bytes + - sum_Proto_Bytes + - avg_Proto_Bytes + - Proto_Packets + - sum_Proto_Packets + - avg_Proto_Packets + - Proto_Flows + # DSCP + - Dscp_Bytes + - Dscp_Packets + - min_Dscp_TimeFlowRttNs + - max_Dscp_TimeFlowRttNs + - avg_Dscp_TimeFlowRttNs + - p90_Dscp_TimeFlowRttNs + - p99_Dscp_TimeFlowRttNs + - min_Dscp_DnsLatencyMs + - max_Dscp_DnsLatencyMs + - avg_Dscp_DnsLatencyMs + - p90_Dscp_DnsLatencyMs + - p99_Dscp_DnsLatencyMs + - Dscp_Flows + # Port numbers + - SrcPort_Bytes + - sum_SrcPort_Bytes + - SrcPort_Packets + - sum_SrcPort_Packets + - SrcPort_TimeFlowRttNs + - min_SrcPort_TimeFlowRttNs + - max_SrcPort_TimeFlowRttNs + - avg_SrcPort_TimeFlowRttNs + - p90_SrcPort_TimeFlowRttNs + - p99_SrcPort_TimeFlowRttNs + - DstPort_Bytes + - sum_DstPort_Bytes + - DstPort_Packets + - sum_DstPort_Packets + - min_DstPort_TimeFlowRttNs + - max_DstPort_TimeFlowRttNs + - avg_DstPort_TimeFlowRttNs + - p90_DstPort_TimeFlowRttNs + - p99_DstPort_TimeFlowRttNs + # Node Directions + - FlowDirection_Bytes + - FlowDirection_Packets + - FlowDirection_Flows + # DNS capture errors + - DnsErrno_Flows + # Connection tracking flow count + - numFlowLogs_Flows + # Bytes / Packets rates on current scope + - Bytes + - Packets + # flow on current scope + - Flows + - DnsFlows + # TODO: implement a way to manage plurals for interfaces and UDNs + # Interfaces Directions + #- IfDirections_Bytes + #- IfDirections_Packets + #- IfDirections_Flows + # Interfaces names + #- Interfaces_Bytes + #- sum_Interfaces_Bytes + #- avg_Interfaces_Bytes + #- Interfaces_Packets + #- sum_Interfaces_Packets + #- avg_Interfaces_Packets + #- Interfaces_Flows + # Udns + #- Udns_Bytes + #- Udns_Packets + #- min_Udns_TimeFlowRttNs + #- max_Udns_TimeFlowRttNs + #- avg_Udns_TimeFlowRttNs + #- p90_Udns_TimeFlowRttNs + #- p99_Udns_TimeFlowRttNs + #- min_Udns_DnsLatencyMs + #- max_Udns_DnsLatencyMs + #- avg_Udns_DnsLatencyMs + #- p90_Udns_DnsLatencyMs + #- p99_Udns_DnsLatencyMs + #- Udns_Flows columns: - id: StartTime name: Start Time @@ -332,6 +333,14 @@ frontend: default: false width: 10 feature: subnetLabels + - id: SrcNetworkName + group: Source + name: Network Name + tooltip: Network name, such as Secondary network or UDN. + field: SrcK8S_NetworkName + filter: src_network + default: false + width: 15 - id: DstK8S_Name group: Destination name: Name @@ -464,6 +473,14 @@ frontend: default: false width: 10 feature: subnetLabels + - id: DstNetworkName + group: Destination + name: Network Name + tooltip: Network name, such as Secondary network or UDN. + field: DstK8S_NetworkName + filter: dst_network + default: false + width: 15 - id: K8S_Name name: Names calculated: '[SrcK8S_Name,DstK8S_Name]' @@ -509,6 +526,11 @@ frontend: calculated: '[SrcK8S_HostIP,DstK8S_HostIP]' default: false width: 10 + - id: Sampling + name: Sampling + field: Sampling + default: false + width: 10 - id: K8S_HostName name: Node Name calculated: '[SrcK8S_HostName,DstK8S_HostName]' @@ -595,19 +617,20 @@ frontend: filter: ifdirections default: false width: 10 + - id: Udns + name: UDN labels + tooltip: The list of User Defined Networks. + field: Udns + filter: udns + default: true + width: 15 + feature: udnMapping - id: FlowDirInts name: Interfaces and Directions tooltip: Pairs of network interface and direction of the Flow observed at the network interface observation point. field: Interfaces default: false width: 15 - - id: UDN - name: User Defined Network - tooltip: The user defined network identifier. - field: UdnId - filter: udn - default: false - width: 15 - id: Bytes name: Bytes tooltip: The total aggregated number of bytes. @@ -733,6 +756,71 @@ frontend: default: true width: 15 feature: networkEvents + - id: XlatZoneId + group: Xlat + name: Xlat zone id + field: ZoneId + filter: xlat_zone_id + default: true + width: 5 + feature: packetTranslation + - id: XlatSrcAddr + group: Xlat + name: Xlat source IP + tooltip: The packet translation source IP address. Can be either in IPv4 or IPv6 format. + field: XlatSrcAddr + filter: xlat_src_address + default: false + width: 10 + feature: packetTranslation + - id: XlatSrcPort + group: Xlat + name: Xlat source port + tooltip: The packet translation source port number. + field: XlatSrcPort + filter: xlat_src_port + default: false + width: 10 + feature: packetTranslation + - id: XlatSrcK8S_Object + group: Xlat + name: Xlat Src Kubernetes Object + calculated: kubeObject(XlatSrcK8S_Type,XlatSrcK8S_Namespace,XlatSrcK8S_Name,1) or concat(XlatSrcAddr,':',XlatSrcPort) + default: true + width: 15 + feature: packetTranslation + - id: XlatDstAddr + group: Xlat + name: Xlat destination IP + tooltip: The packet translation destination IP address. Can be either in IPv4 or IPv6 format. + field: XlatDstAddr + filter: xlat_dst_address + default: false + width: 10 + feature: packetTranslation + - id: XlatDstPort + group: Xlat + name: Xlat destination port + tooltip: The packet translation destination port number. + field: XlatDstPort + filter: xlat_dst_port + default: false + width: 10 + feature: packetTranslation + - id: XlatDstK8S_Object + group: Xlat + name: Xlat Dst Kubernetes Object + calculated: kubeObject(XlatDstK8S_Type,XlatDstK8S_Namespace,XlatDstK8S_Name,1) or concat(XlatDstAddr,':',XlatDstPort) + default: true + width: 15 + feature: packetTranslation + - id: XlatK8S_Object + group: Xlat + name: Xlat Kubernetes Objects + calculated: '[column.XlatSrcK8S_Object,column.XlatDstK8S_Object]' + default: false + width: 15 + feature: packetTranslation filters: - id: cluster_name name: Cluster @@ -992,6 +1080,14 @@ frontend: - Starting text like cluster, "cluster-*" - Ending text like "*-registry" - Pattern like "cluster-*-registry", "c*-*-r*y", -i*e- + - id: src_network + name: Network Name + component: text + category: source + - id: dst_network + name: Network Name + component: text + category: destination - id: protocol name: Protocol component: autocomplete @@ -1044,7 +1140,7 @@ frontend: component: autocomplete placeholder: 'E.g: Ingress, Egress' hint: Specify the direction of the Flow observed at the network interface observation point. - - id: udn + - id: udns name: User Defined Network component: autocomplete hint: Specify a user defined network name. @@ -1102,6 +1198,29 @@ frontend: name: Network Events component: text hint: Specify a single network event. + - id: xlat_zone_id + name: Xlat Zone Id + component: number + - id: xlat_src_address + name: Xlat src address + component: text + category: source + hint: Specify a single IP or range. + - id: xlat_dst_address + name: Xlat dst address + component: text + category: destination + hint: Specify a single IP or range. + - id: xlat_src_port + name: Xlat src port + component: autocomplete + category: source + hint: Specify a single port number or name. + - id: xlat_dst_port + name: Xlat dst port + component: autocomplete + category: destination + hint: Specify a single port number or name. scopes: - id: cluster name: Cluster @@ -1112,14 +1231,18 @@ frontend: feature: multiCluster filter: cluster_name stepInto: zone - - id: udn - name: UDN - shortName: UDN - description: User Defined Network + - id: network + name: Network + shortName: Net + description: Network name, such as User Defined Network labels: - - UdnId - filter: udn - stepInto: host + - SrcK8S_NetworkName + - DstK8S_NetworkName + feature: udnMapping + filters: + - src_network + - dst_network + stepInto: namespace - id: zone name: Zone shortName: AZ @@ -1133,7 +1256,7 @@ frontend: filters: - src_zone - dst_zone - stepInto: namespace + stepInto: host - id: host name: Node shortName: Node @@ -1142,12 +1265,12 @@ frontend: - SrcK8S_HostName - DstK8S_HostName groups: - - udns + - networks - zones - clusters - clusters+zones - - clusters+udns - - udns+zones + - clusters+networks + - networks+zones filters: - src_host_name - dst_host_name @@ -1166,9 +1289,9 @@ frontend: - zones - zones+hosts - hosts - - udns - - udns+zones - - udns+hosts + - networks + - networks+zones + - networks+hosts filters: - src_namespace - dst_namespace @@ -1195,10 +1318,10 @@ frontend: - hosts - hosts+namespaces - namespaces - - udns - - udns+zones - - udns+hosts - - udns+namespaces + - networks + - networks+zones + - networks+hosts + - networks+namespaces filters: - src_owner_name - dst_owner_name @@ -1238,11 +1361,11 @@ frontend: - namespaces - namespaces+owners - owners - - udns - - udns+zones - - udns+hosts - - udns+namespaces - - udns+owners + - networks + - networks+zones + - networks+hosts + - networks+namespaces + - networks+owners filters: - src_resource - dst_resource @@ -1294,6 +1417,9 @@ frontend: - name: SrcSubnetLabel type: string description: Source subnet label + - name: SrcK8S_NetworkName + type: string + description: Source network name - name: DstK8S_Name type: string description: Name of the destination Kubernetes object, such as Pod name, Service name or Node name. @@ -1332,6 +1458,9 @@ frontend: - name: DstSubnetLabel type: string description: Destination subnet label + - name: DstK8S_NetworkName + type: string + description: Destination network name - name: K8S_FlowLayer type: string description: "Flow layer: 'app' or 'infra'" @@ -1341,6 +1470,9 @@ frontend: - name: Dscp type: number description: Differentiated Services Code Point (DSCP) value + - name: Sampling + type: number + description: Sampling rate used for this flow - name: IcmpType type: number description: ICMP type @@ -1366,13 +1498,16 @@ frontend: - name: Interfaces type: string[] description: Network interfaces + - name: Udns + type: string[] + description: List of User Defined Networks - name: Flags type: string[] description: | - Logical OR combination of unique TCP flags comprised in the flow, as per RFC-9293, with additional custom flags to represent the following per-packet combinations: + - - SYN+ACK (0x100) + - - FIN+ACK (0x200) + - - RST+ACK (0x400) + List of TCP flags comprised in the flow, as per RFC-9293, with additional custom flags to represent the following per-packet combinations: + + - SYN_ACK + + - FIN_ACK + + - RST_ACK - name: Bytes type: number description: Number of bytes @@ -1416,14 +1551,33 @@ frontend: description: TCP Smoothed Round Trip Time (SRTT), in nanoseconds - name: NetworkEvents type: string[] - description: Network events flow monitoring + docType: object[] + description: | + Network events, such as network policy actions, composed of nested fields: + + - Feature (such as "acl" for network policies) + + - Type (such as an "AdminNetworkPolicy") + + - Namespace (namespace where the event applies, if any) + + - Name (name of the resource that triggered the event) + + - Action (such as "allow" or "drop") + + - Direction (Ingress or Egress) + - name: ZoneId + type: number + description: packet translation zone id + - name: XlatSrcPort + type: number + description: packet translation src port + - name: XlatDstPort + type: number + description: packet translation dst port + - name: XlatSrcAddr + type: string + description: packet translation src address + - name: XlatDstAddr + type: string + description: packet translation dst address - name: K8S_ClusterName type: string description: Cluster name or identifier - - name: UdnId - type: string - description: User Defined Network - lokiLabel: true - name: _RecordType type: string description: "Type of record: 'flowLog' for regular flow logs, or 'newConnection', 'heartbeat', 'endConnection' for conversation tracking" diff --git a/web/cypress/support/const.ts b/web/cypress/support/const.ts index c8de7ece0..ad4444acf 100644 --- a/web/cypress/support/const.ts +++ b/web/cypress/support/const.ts @@ -6,11 +6,11 @@ export const pod = 'flowlogs-pipeline'; export const waitTime = 3000; // overview specific config -export const availablePanelsCount = 4; +export const availablePanelsCount = 52; export const defaultPanelsCount = 2; // table specific config -export const availableColumnGroupCount = 30; -export const availableColumnCount = 56; +export const availableColumnGroupCount = 31; +export const availableColumnCount = 59; export const defaultColumnGroupCount = 6; export const defaultColumnCount = 11; \ No newline at end of file