Skip to content

Commit baf1da2

Browse files
gwynnemonahankalexand-rh
authored andcommitted
OSDOCS-16250 [NETOBSERV] API spec updates 1.10
1 parent 8994922 commit baf1da2

File tree

3 files changed

+177
-39
lines changed

3 files changed

+177
-39
lines changed

modules/network-observability-flowcollector-api-specifications.adoc

Lines changed: 164 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Kafka can provide better scalability, resiliency, and high availability (for mor
118118
119119
| `networkPolicy`
120120
| `object`
121-
| `networkPolicy` defines ingress network policy settings for Network Observability components isolation.
121+
| `networkPolicy` defines network policy settings for Network Observability components isolation.
122122
123123
| `processor`
124124
| `object`
@@ -180,7 +180,7 @@ Type::
180180
| `object`
181181
| `advanced` allows setting some aspects of the internal configuration of the eBPF agent.
182182
This section is aimed mostly for debugging and fine-grained performance optimizations,
183-
such as `GOGC` and `GOMAXPROCS` environment vars. Set these values at your own risk. You can also
183+
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk. You can also
184184
override the default Linux capabilities from there.
185185

186186
| `cacheActiveTimeout`
@@ -258,10 +258,8 @@ Otherwise it is matched as a case-sensitive string.
258258
259259
| `privileged`
260260
| `boolean`
261-
| Privileged mode for the eBPF Agent container. When ignored or set to `false`, the operator sets
262-
granular capabilities (BPF, PERFMON, NET_ADMIN) to the container.
263-
If for some reason these capabilities cannot be set, such as if an old kernel version not knowing CAP_BPF
264-
is in use, then you can turn on this mode for more global privileges.
261+
| Privileged mode for the eBPF Agent container. When set to `true`, the agent is able to capture more traffic, including from secondary interfaces.
262+
When ignored or set to `false`, the operator sets granular capabilities (BPF, PERFMON, NET_ADMIN) to the container.
265263
Some agent features require the privileged mode, such as packet drops tracking (see `features`) and SR-IOV support.
266264
267265
| `resources`
@@ -271,7 +269,7 @@ For more information, see https://kubernetes.io/docs/concepts/configuration/mana
271269
272270
| `sampling`
273271
| `integer`
274-
| Sampling ratio of the eBPF probe. 100 means one packet on 100 is sent. 0 or 1 means all packets are sampled.
272+
| Sampling interval of the eBPF probe. 100 means one packet on 100 is sent. 0 or 1 means all packets are sampled.
275273
276274
|===
277275
== .spec.agent.ebpf.advanced
@@ -280,7 +278,7 @@ Description::
280278
--
281279
`advanced` allows setting some aspects of the internal configuration of the eBPF agent.
282280
This section is aimed mostly for debugging and fine-grained performance optimizations,
283-
such as `GOGC` and `GOMAXPROCS` environment vars. Set these values at your own risk. You can also
281+
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk. You can also
284282
override the default Linux capabilities from there.
285283
--
286284
@@ -456,7 +454,7 @@ To change the default, you can define a rule that accepts everything: `{ action:
456454
457455
| `sampling`
458456
| `integer`
459-
| `sampling` is the sampling ratio for the matched packets, overriding the global sampling defined at `spec.agent.ebpf.sampling`.
457+
| `sampling` is the sampling interval for the matched packets, overriding the global sampling defined at `spec.agent.ebpf.sampling`.
460458
461459
| `sourcePorts`
462460
| `integer-or-string`
@@ -558,7 +556,7 @@ To filter two ports, use a "port1,port2" in string format. For example, `ports:
558556
559557
| `sampling`
560558
| `integer`
561-
| `sampling` is the sampling ratio for the matched packets, overriding the global sampling defined at `spec.agent.ebpf.sampling`.
559+
| `sampling` is the sampling interval for the matched packets, overriding the global sampling defined at `spec.agent.ebpf.sampling`.
562560
563561
| `sourcePorts`
564562
| `integer-or-string`
@@ -800,7 +798,7 @@ Type::
800798
| `object`
801799
| `advanced` allows setting some aspects of the internal configuration of the console plugin.
802800
This section is aimed mostly for debugging and fine-grained performance optimizations,
803-
such as `GOGC` and `GOMAXPROCS` environment vars. Set these values at your own risk.
801+
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
804802

805803
| `autoscaler`
806804
| `object`
@@ -842,7 +840,7 @@ Description::
842840
--
843841
`advanced` allows setting some aspects of the internal configuration of the console plugin.
844842
This section is aimed mostly for debugging and fine-grained performance optimizations,
845-
such as `GOGC` and `GOMAXPROCS` environment vars. Set these values at your own risk.
843+
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
846844
--
847845

848846
Type::
@@ -2014,6 +2012,10 @@ Type::
20142012
|===
20152013
| Property | Type | Description
20162014

2015+
| `excludeLabels`
2016+
| `array (string)`
2017+
| `excludeLabels` is a list of fields to be excluded from the list of Loki labels. [Unsupported (*)].
2018+
20172019
| `staticLabels`
20182020
| `object (string)`
20192021
| `staticLabels` is a map of common labels to set on each flow in Loki storage.
@@ -2649,7 +2651,7 @@ If the namespace is different, the config map or the secret is copied so that it
26492651
Description::
26502652
+
26512653
--
2652-
`networkPolicy` defines ingress network policy settings for Network Observability components isolation.
2654+
`networkPolicy` defines network policy settings for Network Observability components isolation.
26532655
--
26542656

26552657
Type::
@@ -2672,7 +2674,7 @@ configuration, you can disable it and install your own instead.
26722674
| `boolean`
26732675
| Set `enable` to `true` to deploy network policies on the namespaces used by Network Observability (main and privileged). It is disabled by default.
26742676
These network policies better isolate the Network Observability components to prevent undesired connections to them.
2675-
To increase the security of connections, enable this option or create your own network policy.
2677+
This option is enabled by default, disable it to manually manage network policies
26762678

26772679
|===
26782680
== .spec.processor
@@ -2702,7 +2704,7 @@ This feature requires the "topology.kubernetes.io/zone" label to be set on nodes
27022704
| `object`
27032705
| `advanced` allows setting some aspects of the internal configuration of the flow processor.
27042706
This section is aimed mostly for debugging and fine-grained performance optimizations,
2705-
such as `GOGC` and `GOMAXPROCS` environment vars. Set these values at your own risk.
2707+
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
27062708

27072709
| `clusterName`
27082710
| `string`
@@ -2782,7 +2784,7 @@ Description::
27822784
--
27832785
`advanced` allows setting some aspects of the internal configuration of the flow processor.
27842786
This section is aimed mostly for debugging and fine-grained performance optimizations,
2785-
such as `GOGC` and `GOMAXPROCS` environment vars. Set these values at your own risk.
2787+
such as `GOGC` and `GOMAXPROCS` environment variables. Set these values at your own risk.
27862788
--
27872789

27882790
Type::
@@ -2988,7 +2990,7 @@ Type::
29882990

29892991
| `sampling`
29902992
| `integer`
2991-
| `sampling` is the sampling ratio when deduper `mode` is `Sample`. For example, a value of `50` means that 1 flow in 50 is sampled.
2993+
| `sampling` is the sampling interval when deduper `mode` is `Sample`. For example, a value of `50` means that 1 flow in 50 is sampled.
29922994

29932995
|===
29942996
== .spec.processor.filters
@@ -3033,7 +3035,7 @@ Type::
30333035

30343036
| `sampling`
30353037
| `integer`
3036-
| `sampling` is an optional sampling ratio to apply to this filter. For example, a value of `50` means that 1 matching flow in 50 is sampled.
3038+
| `sampling` is an optional sampling interval to apply to this filter. For example, a value of `50` means that 1 matching flow in 50 is sampled.
30373039

30383040
|===
30393041
== .spec.processor.kafkaConsumerAutoscaler
@@ -3067,15 +3069,18 @@ Type::
30673069
|===
30683070
| Property | Type | Description
30693071

3072+
| `alerts`
3073+
| `array`
3074+
| `alerts` is a list of alerts to be created for Prometheus AlertManager, organized by templates and variants [Unsupported (*)].
3075+
This is currently an experimental feature behind a feature gate. To enable, edit `spec.processor.advanced.env` by adding `EXPERIMENTAL_ALERTS_HEALTH` set to `true`.
3076+
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
3077+
30703078
| `disableAlerts`
30713079
| `array (string)`
3072-
| `disableAlerts` is a list of alerts that should be disabled.
3073-
Possible values are: +
3074-
3075-
`NetObservNoFlows`, which is triggered when no flows are being observed for a certain period. +
3076-
3077-
`NetObservLokiError`, which is triggered when flows are being dropped due to Loki errors. +
3078-
3080+
| `disableAlerts` is a list of alert groups that should be disabled from the default set of alerts.
3081+
Possible values are: `NetObservNoFlows`, `NetObservLokiError`, `PacketDropsByKernel`, `PacketDropsByDevice`, `IPsecErrors`, `NetpolDenied`,
3082+
`LatencyHighTrend`, `DNSErrors`, `ExternalEgressHighTrend`, `ExternalIngressHighTrend`, `CrossAZ`.
3083+
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
30793084

30803085
| `includeList`
30813086
| `array (string)`
@@ -3094,6 +3099,140 @@ More information, with full list of available metrics: https://github.com/netobs
30943099
| `object`
30953100
| Metrics server endpoint configuration for Prometheus scraper
30963101

3102+
|===
3103+
== .spec.processor.metrics.alerts
3104+
Description::
3105+
+
3106+
--
3107+
`alerts` is a list of alerts to be created for Prometheus AlertManager, organized by templates and variants [Unsupported (*)].
3108+
This is currently an experimental feature behind a feature gate. To enable, edit `spec.processor.advanced.env` by adding `EXPERIMENTAL_ALERTS_HEALTH` set to `true`.
3109+
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
3110+
--
3111+
3112+
Type::
3113+
`array`
3114+
3115+
3116+
3117+
3118+
== .spec.processor.metrics.alerts[]
3119+
Description::
3120+
+
3121+
--
3122+
3123+
--
3124+
3125+
Type::
3126+
`object`
3127+
3128+
Required::
3129+
- `template`
3130+
- `variants`
3131+
3132+
3133+
3134+
[cols="1,1,1",options="header"]
3135+
|===
3136+
| Property | Type | Description
3137+
3138+
| `template`
3139+
| `string`
3140+
| Alert template name.
3141+
Possible values are: `PacketDropsByKernel`, `PacketDropsByDevice`, `IPsecErrors`, `NetpolDenied`,
3142+
`LatencyHighTrend`, `DNSErrors`, `ExternalEgressHighTrend`, `ExternalIngressHighTrend`, `CrossAZ`.
3143+
More information on alerts: https://github.com/netobserv/network-observability-operator/blob/main/docs/Alerts.md
3144+
3145+
| `variants`
3146+
| `array`
3147+
| A list of variants for this template
3148+
3149+
|===
3150+
== .spec.processor.metrics.alerts[].variants
3151+
Description::
3152+
+
3153+
--
3154+
A list of variants for this template
3155+
--
3156+
3157+
Type::
3158+
`array`
3159+
3160+
3161+
3162+
3163+
== .spec.processor.metrics.alerts[].variants[]
3164+
Description::
3165+
+
3166+
--
3167+
3168+
--
3169+
3170+
Type::
3171+
`object`
3172+
3173+
Required::
3174+
- `thresholds`
3175+
3176+
3177+
3178+
[cols="1,1,1",options="header"]
3179+
|===
3180+
| Property | Type | Description
3181+
3182+
| `groupBy`
3183+
| `string`
3184+
| Optional grouping criteria, possible values are: `Node`, `Namespace`, `Workload`.
3185+
3186+
| `lowVolumeThreshold`
3187+
| `string`
3188+
| The low volume threshold allows to ignore metrics with a too low volume of traffic, in order to improve signal-to-noise.
3189+
It is provided as an absolute rate (bytes per second or packets per second, depending on the context).
3190+
When provided, it must be parsable as a float.
3191+
3192+
| `thresholds`
3193+
| `object`
3194+
| Thresholds of the alert per severity.
3195+
They are expressed as a percentage of errors above which the alert is triggered. They must be parsable as floats.
3196+
3197+
| `trendDuration`
3198+
| `string`
3199+
| For trending alerts, the duration interval for baseline comparison. For example, "2h" means comparing against a 2-hours average. Defaults to 2h.
3200+
3201+
| `trendOffset`
3202+
| `string`
3203+
| For trending alerts, the time offset for baseline comparison. For example, "1d" means comparing against yesterday. Defaults to 1d.
3204+
3205+
|===
3206+
== .spec.processor.metrics.alerts[].variants[].thresholds
3207+
Description::
3208+
+
3209+
--
3210+
Thresholds of the alert per severity.
3211+
They are expressed as a percentage of errors above which the alert is triggered. They must be parsable as floats.
3212+
--
3213+
3214+
Type::
3215+
`object`
3216+
3217+
3218+
3219+
3220+
[cols="1,1,1",options="header"]
3221+
|===
3222+
| Property | Type | Description
3223+
3224+
| `critical`
3225+
| `string`
3226+
| Threshold for severity `critical`. Leave empty to not generate a Critical alert.
3227+
3228+
| `info`
3229+
| `string`
3230+
| Threshold for severity `info`. Leave empty to not generate an Info alert.
3231+
3232+
| `warning`
3233+
| `string`
3234+
| Threshold for severity `warning`. Leave empty to not generate a Warning alert.
3235+
30973236
|===
30983237
== .spec.processor.metrics.server
30993238
Description::

modules/network-observability-flowmetric-api-specifications.adoc

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ Type::
7474
`object`
7575

7676
Required::
77-
- `metricName`
7877
- `type`
7978

8079

@@ -104,7 +103,7 @@ When set to `Egress`, it is equivalent to adding the regular expression filter o
104103
| `filters`
105104
| `array`
106105
| `filters` is a list of fields and values used to restrict which flows are taken into account.
107-
Refer to the documentation for the list of available fields: https://docs.openshift.com/container-platform/latest/observability/network_observability/json-flows-format-reference.html.
106+
Refer to the documentation for the list of available fields: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/network_observability/json-flows-format-reference.
108107

109108
| `flatten`
110109
| `array (string)`
@@ -113,16 +112,16 @@ For instance, when flattening `Interfaces` on a bytes counter, a flow having Int
113112

114113
| `labels`
115114
| `array (string)`
116-
| `labels` is a list of fields that should be used as Prometheus labels, also known as dimensions.
115+
| `labels` is a list of fields that should be used as Prometheus labels, also known as dimensions (for example: `SrcK8S_Namespace`).
117116
From choosing labels results the level of granularity of this metric, and the available aggregations at query time.
118117
It must be done carefully as it impacts the metric cardinality (cf https://rhobs-handbook.netlify.app/products/openshiftmonitoring/telemetry.md/#what-is-the-cardinality-of-a-metric).
119118
In general, avoid setting very high cardinality labels such as IP or MAC addresses.
120119
"SrcK8S_OwnerName" or "DstK8S_OwnerName" should be preferred over "SrcK8S_Name" or "DstK8S_Name" as much as possible.
121-
Refer to the documentation for the list of available fields: https://docs.openshift.com/container-platform/latest/observability/network_observability/json-flows-format-reference.html.
120+
Refer to the documentation for the list of available fields: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/network_observability/json-flows-format-reference.
122121

123122
| `metricName`
124123
| `string`
125-
| Name of the metric. In Prometheus, it is automatically prefixed with "netobserv_".
124+
| Name of the metric. In Prometheus, it is automatically prefixed with "netobserv_". Leave empty to generate the name based on the `FlowMetric` resource name.
126125

127126
| `remap`
128127
| `object (string)`
@@ -137,9 +136,9 @@ Use "Gauge" for other values that don't necessitate accuracy over time (gauges a
137136

138137
| `valueField`
139138
| `string`
140-
| `valueField` is the flow field that must be used as a value for this metric. This field must hold numeric values.
139+
| `valueField` is the flow field that must be used as a value for this metric (for example: `Bytes`). This field must hold numeric values.
141140
Leave empty to count flows rather than a specific value per flow.
142-
Refer to the documentation for the list of available fields: https://docs.openshift.com/container-platform/latest/observability/network_observability/json-flows-format-reference.html.
141+
Refer to the documentation for the list of available fields: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/network_observability/json-flows-format-reference.
143142

144143
|===
145144
== .spec.charts
@@ -262,7 +261,7 @@ Description::
262261
+
263262
--
264263
`filters` is a list of fields and values used to restrict which flows are taken into account.
265-
Refer to the documentation for the list of available fields: https://docs.openshift.com/container-platform/latest/observability/network_observability/json-flows-format-reference.html.
264+
Refer to the documentation for the list of available fields: https://docs.redhat.com/en/documentation/openshift_container_platform/latest/html/network_observability/json-flows-format-reference.
266265
--
267266

268267
Type::
@@ -293,7 +292,7 @@ Required::
293292

294293
| `field`
295294
| `string`
296-
| Name of the field to filter on
295+
| Name of the field to filter on (for example: `SrcK8S_Namespace`).
297296

298297
| `matchType`
299298
| `string`
@@ -303,4 +302,4 @@ Required::
303302
| `string`
304303
| Value to filter on. When `matchType` is `Equal` or `NotEqual`, you can use field injection with `$(SomeField)` to refer to any other field of the flow.
305304

306-
|===
305+
|===

0 commit comments

Comments
 (0)