Skip to content

Commit 3c3b3d6

Browse files
committed
WIP: Actually working, just needs a cleanup
Signed-off-by: Pete Wall <[email protected]>
1 parent 08082a4 commit 3c3b3d6

File tree

96 files changed

+1267
-617
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+1267
-617
lines changed

.shellcheckrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ external-sources=true
33

44
# some files are sourced which can make some areas appear unreachable unless set
55
source-path=./scripts/includes
6+
source-path=./scripts/includes/cluster

charts/k8s-monitoring/charts/feature-pod-logs/README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,14 +64,14 @@ Be sure perform actual integration testing in a live environment in the main [k8
6464

6565
| Key | Type | Default | Description |
6666
|-----|------|---------|-------------|
67-
| kubernetesApiGathering.excludeNamespaces | list | `[]` | Do not capture logs from any pods in these namespaces. |
68-
| kubernetesApiGathering.extraDiscoveryRules | string | `""` | Rules to filter pods for log gathering. |
69-
| kubernetesApiGathering.fieldSelectors | list | `[]` | Discover Pods based on field selectors. |
70-
| kubernetesApiGathering.labelSelectors | object | `{}` | Discover Pods based on label selectors. |
71-
| kubernetesApiGathering.namespaces | list | `[]` | Only capture logs from pods in these namespaces (`[]` means all namespaces). |
72-
| kubernetesApiGathering.nodeFieldSelectors | list | `[]` | Discover Pods based on Node field selectors. |
73-
| kubernetesApiGathering.nodeLabelSelectors | object | `{}` | Discover Pods based on Node label selectors. |
74-
| kubernetesApiGathering.nodes | list | `[]` | Do not capture logs from any pods in these namespaces. |
67+
| kubernetesApiStreaming.excludeNamespaces | list | `[]` | Do not capture logs from any pods in these namespaces. |
68+
| kubernetesApiStreaming.extraDiscoveryRules | string | `""` | Rules to filter pods for log gathering. |
69+
| kubernetesApiStreaming.fieldSelectors | list | `[]` | Discover Pods based on field selectors. |
70+
| kubernetesApiStreaming.labelSelectors | object | `{}` | Discover Pods based on label selectors. |
71+
| kubernetesApiStreaming.namespaces | list | `[]` | Only capture logs from pods in these namespaces (`[]` means all namespaces). |
72+
| kubernetesApiStreaming.nodeFieldSelectors | list | `[]` | Discover Pods based on Node field selectors. |
73+
| kubernetesApiStreaming.nodeLabelSelectors | object | `{}` | Discover Pods based on Node label selectors. |
74+
| kubernetesApiStreaming.nodes | list | `[]` | Do not capture logs from any pods in these namespaces. |
7575
| volumeGathering.nodeFieldSelectors | list | `[]` | Discover Pods based on Node field selectors. |
7676
| volumeGathering.nodeLabelSelectors | object | `{}` | Discover Pods based on Node label selectors. |
7777

@@ -102,7 +102,7 @@ Be sure perform actual integration testing in a live environment in the main [k8
102102

103103
| Key | Type | Default | Description |
104104
|-----|------|---------|-------------|
105-
| kubernetesApiGathering.enabled | bool | `false` | Only capture logs from pods in these namespaces (`[]` means all namespaces). |
105+
| kubernetesApiStreaming.enabled | bool | `false` | Only capture logs from pods in these namespaces (`[]` means all namespaces). |
106106
| lokiReceiver.enabled | bool | `false` | Enable receiving logs using the Loki protocol. |
107107
| lokiReceiver.openShiftClusterLogForwarder.enabled | bool | `false` | |
108108
| lokiReceiver.openShiftClusterLogForwarder.namespaces | list | `[]` | |

charts/k8s-monitoring/charts/feature-pod-logs/templates/_api.alloy.tpl

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
{{- define "feature.podLogs.kubernetesApi.alloy" }}
22
{{- $labelSelectors := list }}
3-
{{- range $k, $v := .Values.kubernetesApiGathering.labelSelectors }}
3+
{{- range $k, $v := .Values.kubernetesApiStreaming.labelSelectors }}
44
{{- if kindIs "slice" $v }}
55
{{- $labelSelectors = append $labelSelectors (printf "%s in (%s)" $k (join "," $v)) }}
66
{{- else }}
77
{{- $labelSelectors = append $labelSelectors (printf "%s=%s" $k $v) }}
88
{{- end }}
99
{{- end }}
1010
{{- $nodeLabelSelectors := list }}
11-
{{- range $k, $v := .Values.kubernetesApiGathering.nodeLabelSelectors }}
11+
{{- range $k, $v := .Values.kubernetesApiStreaming.nodeLabelSelectors }}
1212
{{- if kindIs "slice" $v }}
1313
{{- $nodeLabelSelectors = append $nodeLabelSelectors (printf "%s in (%s)" $k (join "," $v)) }}
1414
{{- else }}
@@ -17,23 +17,23 @@
1717
{{- end }}
1818
discovery.kubernetes "kubernetes_api_pods" {
1919
role = "pod"
20-
{{- if .Values.kubernetesApiGathering.namespaces }}
20+
{{- if .Values.kubernetesApiStreaming.namespaces }}
2121
namespaces {
2222
names = {{ .Values.namespaces | toJson }}
2323
}
2424
{{- end }}
25-
{{- if or $labelSelectors .Values.kubernetesApiGathering.fieldSelectors }}
25+
{{- if or $labelSelectors .Values.kubernetesApiStreaming.fieldSelectors }}
2626
selectors {
2727
role = "pod"
2828
{{- if $labelSelectors }}
2929
label = {{ $labelSelectors | join "," | quote }}
3030
{{- end }}
31-
{{- if .Values.kubernetesApiGathering.fieldSelectors }}
32-
field = {{ .Values.kubernetesApiGathering.fieldSelectors | join "," | quote }}
31+
{{- if .Values.kubernetesApiStreaming.fieldSelectors }}
32+
field = {{ .Values.kubernetesApiStreaming.fieldSelectors | join "," | quote }}
3333
{{- end }}
3434
}
3535
{{- end }}
36-
{{- if or $nodeLabelSelectors .Values.kubernetesApiGathering.nodeFieldSelectors }}
36+
{{- if or $nodeLabelSelectors .Values.kubernetesApiStreaming.nodeFieldSelectors }}
3737
attach_metadata {
3838
node = true
3939
}
@@ -42,8 +42,8 @@ discovery.kubernetes "kubernetes_api_pods" {
4242
{{- if $nodeLabelSelectors }}
4343
label = {{ $nodeLabelSelectors | join "," | quote }}
4444
{{- end }}
45-
{{- if .Values.kubernetesApiGathering.nodeFieldSelectors }}
46-
field = {{ .Values.kubernetesApiGathering.nodeFieldSelectors | join "," | quote }}
45+
{{- if .Values.kubernetesApiStreaming.nodeFieldSelectors }}
46+
field = {{ .Values.kubernetesApiStreaming.nodeFieldSelectors | join "," | quote }}
4747
{{- end }}
4848
}
4949
{{- end }}
@@ -56,10 +56,10 @@ discovery.relabel "kubernetes_api_pods" {
5656
action = "replace"
5757
target_label = "namespace"
5858
}
59-
{{- if .Values.kubernetesApiGathering.excludeNamespaces }}
59+
{{- if .Values.kubernetesApiStreaming.excludeNamespaces }}
6060
rule {
6161
source_labels = ["namespace"]
62-
regex = "{{ .Values.kubernetesApiGathering.excludeNamespaces | join "|" }}"
62+
regex = "{{ .Values.kubernetesApiStreaming.excludeNamespaces | join "|" }}"
6363
action = "drop"
6464
}
6565
{{- end }}
@@ -154,8 +154,8 @@ discovery.relabel "kubernetes_api_pods" {
154154
target_label = "deployment_environment"
155155
}
156156

157-
{{- if .Values.kubernetesApiGathering.extraDiscoveryRules }}
158-
{{ .Values.kubernetesApiGathering.extraDiscoveryRules | indent 2 }}
157+
{{- if .Values.kubernetesApiStreaming.extraDiscoveryRules }}
158+
{{ .Values.kubernetesApiStreaming.extraDiscoveryRules | indent 2 }}
159159
{{- end }}
160160
}
161161

charts/k8s-monitoring/charts/feature-pod-logs/templates/_log_receiver.alloy.tpl

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,46 @@ loki.source.api "loki_receiver" {
55
listen_port = {{ .Values.lokiReceiver.port }}
66
}
77

8+
{{- if .Values.openShiftClusterLogForwarder.enabled }}
9+
forward_to = [loki.process.openshift_logs.receiver]
10+
}
11+
12+
loki.process "openshift_logs" {
13+
14+
stage.json {}
15+
16+
stage.match {
17+
selector = "{log_type=\"application\"}"
18+
stage.labels {
19+
pod = "kubernetes_pod_name"
20+
namespace = "kubernetes_namespace"
21+
container = "kubernetes_container_name"
22+
node = "hostname"
23+
}
24+
stage.template {
25+
source = "job"
26+
template = "{{ "{{" }} .namespace {{ "}}" }}/{{ "{{" }} .container {{ "}}" }}"
27+
}
28+
}
29+
30+
stage.match {
31+
selector = "{log_type=\"infrastructure\"}"
32+
stage.labels {
33+
pod = "kubernetes_pod_name"
34+
namespace = "kubernetes_namespace"
35+
container = "kubernetes_container_name"
36+
node = "hostname"
37+
}
38+
stage.static_labels {
39+
job = "integrations/node_logs"
40+
}
41+
stage.template {
42+
source = "job"
43+
template = "{{ "{{" }} .namespace {{ "}}" }}/{{ "{{" }} .container {{ "}}" }}"
44+
}
45+
}
46+
47+
{{- end }}
848
forward_to = [loki.process.pod_log_processor.receiver]
949
}
1050
{{- end }}

charts/k8s-monitoring/charts/feature-pod-logs/templates/_module.alloy.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ declare "pod_logs" {
88
{{- include "feature.podLogs.volumeGathering.alloy" . | nindent 2 }}
99
{{- end }}
1010

11-
{{- if .Values.kubernetesApiGathering.enabled }}
11+
{{- if .Values.kubernetesApiStreaming.enabled }}
1212
{{- include "feature.podLogs.kubernetesApi.alloy" . | nindent 2 }}
1313
{{- end }}
1414

charts/k8s-monitoring/charts/feature-pod-logs/templates/_notes.tpl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Gather logs from Kubernetes Pods
1212
Please enable the desired Pod log gathering methods individually:
1313
volumeGathering:
1414
enabled: true
15-
kubernetesApiGathering:
15+
kubernetesApiStreaming:
1616
enabled: true
1717
lokiReceiver:
1818
enabled: true
@@ -22,9 +22,9 @@ Gather logs from Kubernetes Pods
2222
{{- define "feature.podLogs.summary" -}}
2323
{{- $methods := list }}
2424
{{- if .Values.volumeGathering.enabled }}{{- $methods = append $methods "volumes" }}{{ end }}
25-
{{- if .Values.kubernetesApiGathering.enabled }}{{- $methods = append $methods "kubernetesApi" }}{{ end }}
25+
{{- if .Values.kubernetesApiStreaming.enabled }}{{- $methods = append $methods "kubernetesApi" }}{{ end }}
2626
{{- if .Values.lokiReceiver.enabled }}{{- $methods = append $methods "lokiReceiver" }}{{ end }}
27-
{{- if .Values.lokiReceiver.openShiftClusterLogForwarder.enabled }}{{- $methods = append $methods "OSClusterLogForwarder" }}{{ end }}
27+
{{- if .Values.openShiftClusterLogForwarder.enabled }}{{- $methods = append $methods "OSClusterLogForwarder" }}{{ end }}
2828
version: {{ .Chart.Version }}
2929
methods: {{ $methods | join "," }}
3030
{{- end }}

charts/k8s-monitoring/charts/feature-pod-logs/templates/_collector_validation.tpl renamed to charts/k8s-monitoring/charts/feature-pod-logs/templates/_validation.tpl

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
{{- end -}}
1111
{{- end -}}
1212

13-
{{- if or (and .Values.kubernetesApiGathering.enabled (not .Values.gatherMethod)) (eq .Values.gatherMethod "kubernetesApi") }}
13+
{{- if or (and .Values.kubernetesApiStreaming.enabled (not .Values.gatherMethod)) (eq .Values.gatherMethod "kubernetesApi") }}
1414
{{- if not .Collector.alloy.clustering.enabled }}
1515
{{- if eq .Collector.controller.type "daemonset" }}
1616
{{- fail (printf "Pod Logs feature requires Alloy DaemonSet to be in clustering mode when using the \"kubernetesApi\" gather method.\nPlease set:\n%s:\n alloy:\n clustering:\n enabled: true" .CollectorName) }}
@@ -23,12 +23,12 @@
2323

2424
{{- define "feature.podLogs.validate" -}}
2525
{{/*Validate that if both volume gathering and k8s api gathering, there are some selectors set*/}}
26-
{{- if and .Values.volumeGathering.enabled .Values.kubernetesApiGathering.enabled }}
27-
{{- if not (or .Values.kubernetesApiGathering.labelSelectors .Values.kubernetesApiGathering.fieldSelectors .Values.kubernetesApiGathering.nodeLabelSelectors .Values.kubernetesApiGathering.nodeFieldSelectors)}}
26+
{{- if and .Values.volumeGathering.enabled .Values.kubernetesApiStreaming.enabled }}
27+
{{- if not (or .Values.kubernetesApiStreaming.labelSelectors .Values.kubernetesApiStreaming.fieldSelectors .Values.kubernetesApiStreaming.nodeLabelSelectors .Values.kubernetesApiStreaming.nodeFieldSelectors)}}
2828
{{- $msg := list "" "When gathering Pod logs by Volumes and the Kubernetes API, you must set selectors to targets pods not covered by the Collector DaemonSet." }}
2929
{{- $msg = append $msg "Please set at least one of:" }}
3030
{{- $msg = append $msg "podLogs:" }}
31-
{{- $msg = append $msg " kubernetesApiGathering:" }}
31+
{{- $msg = append $msg " kubernetesApiStreaming:" }}
3232
{{- $msg = append $msg " fieldSelectors: [<field selector>]" }}
3333
{{- $msg = append $msg " labelSelectors:" }}
3434
{{- $msg = append $msg " <Kubernetes Pod Label>: <value> OR [<value1>, <value2>]" }}
@@ -38,4 +38,25 @@
3838
{{- $errorMessage := join "\n" $msg }}
3939
{{- end -}}
4040
{{- end -}}
41+
42+
{{- if .Values.openShiftClusterLogForwarder.enabled }}
43+
{{- if not (eq .Values.global.platform "openshift") }}
44+
{{- $msg := list "" "The OpenShift ClusterLogForwarder is only supported on OpenShift clusters." }}
45+
{{- $msg = append $msg "Please set:" }}
46+
{{- $msg = append $msg "global:" }}
47+
{{- $msg = append $msg " platform: openshift" }}
48+
{{- fail (join "\n" $msg) }}
49+
{{- end }}
50+
51+
{{- if not .Values.lokiReceiver.enabled }}
52+
{{- $msg := list "" "The OpenShift ClusterLogForwarder requires the Loki Receiver to be enabled." }}
53+
{{- $msg = append $msg "Please set:" }}
54+
{{- $msg = append $msg "podLogs:" }}
55+
{{- $msg = append $msg " lokiReceiver:" }}
56+
{{- $msg = append $msg " enabled: true" }}
57+
{{- fail (join "\n" $msg) }}
58+
{{- end }}
59+
60+
{{- end }}
61+
4162
{{- end -}}

charts/k8s-monitoring/charts/feature-pod-logs/values.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
}
2828
}
2929
},
30-
"kubernetesApiGathering": {
30+
"kubernetesApiStreaming": {
3131
"type": "object",
3232
"properties": {
3333
"enabled": {

charts/k8s-monitoring/charts/feature-pod-logs/values.yaml

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -16,75 +16,75 @@ volumeGathering:
1616
enabled: true
1717

1818
# -- Only capture logs from pods in these namespaces (`[]` means all namespaces).
19-
# @section -- Volume Gathering: Discovery
19+
# @section -- Volume Gathering
2020
namespaces: []
2121

2222
# -- Do not capture logs from any pods in these namespaces.
23-
# @section -- Volume Gathering: Discovery
23+
# @section -- Volume Gathering
2424
excludeNamespaces: []
2525

2626
# -- Discover Pods based on field selectors.
27-
# @section -- Volume Gathering: Discovery
27+
# @section -- Volume Gathering
2828
fieldSelectors: []
2929

3030
# -- Discover Pods based on label selectors.
31-
# @section -- Volume Gathering: Discovery
31+
# @section -- Volume Gathering
3232
labelSelectors: {}
3333

3434
# -- Discover Pods based on Node field selectors.
35-
# @section -- Kubernetes API Gathering: Discovery
35+
# @section -- Volume Gathering
3636
nodeFieldSelectors: []
3737

3838
# -- Discover Pods based on Node label selectors.
39-
# @section -- Kubernetes API Gathering: Discovery
39+
# @section -- Volume Gathering
4040
nodeLabelSelectors: {}
4141

4242
# -- Rules to filter pods for log gathering.
43-
# @section -- Volume Gathering: Discovery
43+
# @section -- Volume Gathering
4444
extraDiscoveryRules: ""
4545

4646
# -- Path on the Kubernetes nodes where the Pod logs are stored.
47-
# @section -- Volume Gathering: Discovery
47+
# @section -- Volume Gathering
4848
podLogsPath: /var/log/pods
4949

5050
# -- Only gather new log lines since this was deployed. Do not gather historical log lines.
51-
# @section -- Volume Gathering: Gathering
51+
# @section -- Volume GatheringGathering: Gathering
5252
onlyGatherNewLogLines: false
5353

54-
kubernetesApiGathering:
54+
kubernetesApiStreaming:
5555
# -- Only capture logs from pods in these namespaces (`[]` means all namespaces).
5656
enabled: false
5757

5858
# -- Only capture logs from pods in these namespaces (`[]` means all namespaces).
59-
# @section -- Kubernetes API Gathering: Discovery
59+
# @section -- Kubernetes API Streaming
6060
namespaces: []
6161

6262
# -- Do not capture logs from any pods in these namespaces.
63-
# @section -- Kubernetes API Gathering: Discovery
63+
# @section -- Kubernetes API Streaming
6464
excludeNamespaces: []
6565

6666
# -- Discover Pods based on field selectors.
67-
# @section -- Kubernetes API Gathering: Discovery
67+
# @section -- Kubernetes API Streaming
6868
fieldSelectors: []
6969

7070
# -- Discover Pods based on label selectors.
71-
# @section -- Kubernetes API Gathering: Discovery
71+
# @section -- Kubernetes API Streaming
7272
labelSelectors: {}
7373

7474
# -- Discover Pods based on Node field selectors.
75-
# @section -- Kubernetes API Gathering: Discovery
75+
# @section -- Kubernetes API Streaming
7676
nodeFieldSelectors: []
7777

7878
# -- Discover Pods based on Node label selectors.
79-
# @section -- Kubernetes API Gathering: Discovery
79+
# @section -- Kubernetes API Streaming
8080
nodeLabelSelectors: {}
8181

8282
# -- Do not capture logs from any pods in these namespaces.
83-
# @section -- Kubernetes API Gathering: Discovery
83+
# @section -- Kubernetes API Streaming
8484
nodes: []
8585

8686
# -- Rules to filter pods for log gathering.
87-
# @section -- Kubernetes API Gathering: Discovery
87+
# @section -- Kubernetes API Streaming
8888
extraDiscoveryRules: ""
8989

9090
lokiReceiver:
@@ -104,15 +104,15 @@ openShiftClusterLogForwarder:
104104

105105
application:
106106
# -- Enable receiving application logs.
107-
# @section -- OpenShift ClusterLogForwarder: Application Logs
107+
# @section -- OpenShift ClusterLogForwarder
108108
enabled: true
109109
# -- The namespaces to receive application logs from.
110-
# @section -- OpenShift ClusterLogForwarder: Application Logs
110+
# @section -- OpenShift ClusterLogForwarder
111111
namespaces: []
112112

113113
infrastructure:
114114
# -- Enable receiving infrastructure logs.
115-
# @section -- OpenShift ClusterLogForwarder: Infrastructure Logs
115+
# @section -- OpenShift ClusterLogForwarder
116116
enabled: false
117117

118118
# -- Log labels to set with values copied from the Kubernetes Pod labels.

charts/k8s-monitoring/docs/examples/auth/bearer-token/output.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

charts/k8s-monitoring/docs/examples/auth/embedded-secrets/output.yaml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)