You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/common/de/monitoring_kubernetes.asciidoc
+4-15Lines changed: 4 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -85,10 +85,7 @@ Auch ist die Verwendung der xref:dashboards[Kubernetes-Dashboards] in den kommer
85
85
86
86
87
87
=== Unterschiede zum übrigen Monitoring in {CMK}
88
-
//SK: Hier ist sicherlich eine genauere Erklärung erforderlich.
89
-
// TK: Ja, ist etwas kurz. Ist mir auch nicht ganz klar: Was ist der Unterschied, ob ich einen Snapshot der Zustände jede Minute oder alle 10 Minuten bekomme? Das Ergebnis ist doch dann genauso "zweifelhaft", bleibt aber für 10 Minuten statt für 1 Minute stehen.
90
-
// TK: Folgefrage: kann man die 10min verändern? Sollte man das tun? Und wenn nicht, warum?
91
-
// SK: Diese 10 Minuten beziehen sich tatsächlich nur auf kube_pod_status und kube_replicas. Das muss ich noch mal genauer rausarbeiten. Jetzt füge ich erstmal diese beiden Begriffe hinzu.
88
+
92
89
Beim Monitoring von Pods und Replicas in Ihren Kubernetes-Clustern kommt es mitunter wesentlich häufiger zu Statusänderungen bzw. zu Verzögerungen.
93
90
Um dem Rechnung zu tragen, ändern die Checks bei bestimmten Zuständen dieser Objekte erst nach 10 Minuten ihren Status in {CMK}.
94
91
@@ -121,8 +118,6 @@ Sie können aber selbstverständlich auch jeden anderen Namen nutzen:
121
118
Wir aktualisieren unsere Helm-Charts immer dann, wenn neue Gegebenheiten in Kubernetes dies erfordern.
122
119
Deshalb lohnt sich von Zeit zu Zeit eine Prüfung, ob im Repository neue Versionen verfügbar sind.
123
120
Wenn Sie Ihre lokale Kopie unseres Repositorys, wie in dem vorherigen Befehl, mit `checkmk-chart` bezeichnet haben, können Sie sich mit dem folgenden Befehl alle im Repository vorliegenden Versionen der Charts anzeigen lassen:
124
-
// TK: Ichnuwieder: Wie finde ich denn raus, welche Version ich installiert habe? Ja, ist nicht so wichtig...
125
-
// SK: Der Hinweis, wie man herausfinden kann, welcher Helm-Chart aktuell im eigenen Cluster läuft käme hier verfrührt, weil ja eben noch nix läuft. Es wäre eventuell sinnvoller hier nur einen Verweis auf ein späteres Kapitel einzufügen.
126
121
127
122
[{shell}]
128
123
----
@@ -188,8 +183,6 @@ Die so erzeugte Datei können Sie nun nach Ihren Bedürfnissen anpassen und bei
188
183
==== Kommunikation per Ingress bereitstellen
189
184
190
185
Falls Sie link:https://kubernetes.io/docs/concepts/services-networking/ingress/[Ingress^] verwenden, um die Zugriffe zu Ihren Diensten zu steuern, passen Sie entsprechend die bereits vorbereiteten Teile in der `values.yaml` an.
191
-
// TK: Den Link würde ich weiter oben setzen, wo Du Ingress das 1. Mal erwähnst. Zu NodePort gibt es wohl keine Erklärung? Vielleicht: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
192
-
// SK: Bei der ersten Erwähnung von Ingress in der Einleitung wäre mir das eine zu große Ablenkung. Da will ich keinen Link haben. An der zweiten Stelle ist Ingress zu nebensächlich. Da könnte der Link untergehen.
193
186
Zur besseren Übersicht ist in dem folgenden Beispiel nur der relevante Ausschnitt gezeigt.
194
187
Den Parameter `enabled` setzen Sie auf `true`.
195
188
Die restlichen Parameter passen Sie entsprechend Ihrer Umgebung an:
@@ -729,9 +722,6 @@ Konsultieren Sie an dieser Stelle erneut die ausführliche Inline-Hilfe.
729
722
*Hinweis:* Die Option [.guihint]#Import all valid annotations# bieten wir an dieser Stelle nur der Vollständigkeit halber an.
730
723
Wir raten davon ab, einfach blind alle _Annotations_ zu importieren, weil hierdurch mitunter ein sehr großer Berg nutzloser Labels in {CMK} erzeugt wird.
731
724
732
-
// TK: Auskommentiert, weil passt nicht mehr
733
-
// Nachdem Sie nun alles eingerichtet haben, könnte Ihre Regel wie folgt aussehen:
734
-
735
725
*Wichtig:* Unter [.guihint]#Conditions > Explicit hosts# *müssen* Sie nun den xref:source-host[zuvor angelegten Host] eintragen:
736
726
737
727
image::monitoring_kubernetes_explicit_hosts.png[alt="Regeln für Spezialagenten müssen, wie hier zu sehen, immer auf explizite Hosts festgelegt werden."]
@@ -744,8 +734,7 @@ image::monitoring_kubernetes_service_discovery.png[alt="Exemplarische Ansicht de
744
734
Aktivieren Sie im Anschluss alle vorgenommenen Änderungen und überlassen Sie ab jetzt der dynamischen Host-Verwaltung die Arbeit.
745
735
Diese wird schon nach kurzer Zeit alle Hosts für Ihre Kubernetes-Objekte erzeugen.
746
736
747
-
// ML: review notes KNW-1200: "die Helm Chart" nach "das Helm-Chart" geändert (gemäß Dictionary); ebenso updaten -> aktualisieren; und ein paar Typos.
748
-
// ML: Wir: Ärzte-Wir und Checkmk-Wir wechseln sich in diesem Kapitel ab, erstere müssen weg - aber wie genau, überlasse ich lieber Dir.
737
+
749
738
[#update]
750
739
== Cluster-Überwachung aktualisieren
751
740
@@ -806,7 +795,7 @@ Der Service [.guihint]#Cluster collector# zeigt Ihnen die verwendete Version an:
806
795
807
796
image::monitoring_kubernetes_verify_collector_update.png[alt="Exemplarische Ansicht des Service Cluster collector."]
808
797
809
-
// SK: Ich denke noch über eine bessere Überschrift nach.
798
+
810
799
[#incompatible_changes]
811
800
=== Inkompatible Änderungen
812
801
@@ -836,7 +825,7 @@ Alle Labels zu Kubernetes-Objekten, die {CMK} automatisch erzeugt, beginnen mit
836
825
Ein Pod erhält beispielsweise immer ein Label der Node (`cmk/kubernetes/node:mynode`), ein Label, welches eben zeigt, dass es sich bei diesem Objekt um einen Pod handelt (`cmk/kubernetes/object:pod`) und ein Label für den Namespace (`cmk/kubernetes/namespace:mynamespace`).
837
826
So lassen sich in der Folge sehr einfach Filter und Regeln für alle Objekte gleichen Typs bzw. im gleichen Namespace erstellen.
838
827
839
-
// SK: In das folgende Kapitel werde ich bei nächster Gelegenheit alle Punkt aus 'Konfiguration auf Ihre Umgebung anpassen' verschieben, die da oben nicht zwingend für die Einrichtung des Monitorings benötigt werden.
@@ -173,7 +173,15 @@ An activation of _Ingress_ could look like this:
173
173
174
174
==== Extracting values.yaml from Helm charts
175
175
176
+
// This block replaces the following text
177
+
// start translation
178
+
////
179
+
Die vollständige von uns link:https://raw.githubusercontent.com/Checkmk/checkmk_kube_agent/refs/heads/main/deploy/charts/checkmk/values.yaml[mitgelieferte `values.yaml`^] lässt sich mit dem folgenden Befehl aus dem Helm-Chart extrahieren:
180
+
////
181
+
// end translation
182
+
// delete from here
176
183
The complete `values.yaml` supplied by us can be easily extracted with the following command:
184
+
// delete to here
177
185
178
186
[{shell}]
179
187
----
@@ -284,6 +292,54 @@ serviceAccount:
284
292
285
293
If you operate your GKE (Google Kubernetes Engine) cluster in Autopilot mode, monitoring it with {CMK} is also possible, as {CMK} is a so-called link:https://cloud.google.com/kubernetes-engine/docs/resources/autopilot-partners#allowlisted-partner-workloads[Autopilot partner].
286
294
295
+
// This block replaces the following text
296
+
// start translation
297
+
////
298
+
Zwei Dinge müssen Sie noch erledigen, bevor ein Autopilot-Cluster mit {CMK} überwacht werden kann.
299
+
300
+
In der `values.yaml` finden Sie einen Abschnitt `gkeAutopilot`.
301
+
Stellen Sie hier `enabled` auf `true`:
302
+
303
+
.values.yaml
304
+
[{yaml}]
305
+
----
306
+
gkeAutopilot:
307
+
## Enable GKE Autopilot specific configurations
308
+
enabled: true
309
+
----
310
+
311
+
Darunter finden Sie noch die Einstellung `matchingAllowlist`.
312
+
In der `values.yaml` müssen Sie an diesem Eintrag nichts ändern.
313
+
In Ihrem Autopilot-Cluster muss aber eben diese Allowlist noch eingerichtet werden.
314
+
Das funktioniert am einfachsten mit einem sogenannten AllowlistSynchronizer, den Sie mit dem folgenden Befehl in Ihrem Cluster einrichten können.
Details zu diesen Allowlists für privilegierte Arbeitslasten (englisch: _privileged workloads_) und was es damit genau auf sich hat, finden Sie in dem Artikel link:https://docs.cloud.google.com/kubernetes-engine/docs/how-to/run-autopilot-partner-workloads?hl=de#create-allowlistsynchronizer[Zulassung privilegierter Arbeitslasten im Autopilot-Modus steuern] der GKE-Dokumentation.
322
+
323
+
324
+
[#rancher]
325
+
==== Kubernetes in Rancher-Installationen
326
+
327
+
Wenn Sie Cluster überwachen wollen, die Sie mit Rancher managen, können Sie die benötigten Arbeitslasten ebenfalls mit unserer Helm-Chart direkt in Ihr Cluster installieren.
328
+
In der `values.yaml` müssen Sie gegebenenfalls den CRI-Socket von `containerd` explizit angeben.
329
+
Bei k3s und RKE2 ist dieser häufig in `/run/k3s/containerd/containerd.sock` zu finden.
330
+
331
+
Kommentieren Sie die Zeile, die mit `containerdOverride` ein und passen Sie die Stelle an Ihre Umgebung an.
332
+
333
+
.values.yaml
334
+
[{yaml}]
335
+
----
336
+
## k3s and Rancher RKE2 host containerd in a different location.
337
+
## If you are using one of them, or containerd is located in an alternate location, please uncomment / adapt the override.
You only need to set `var_run` to `readOnly` in your `values.yaml`:
288
344
289
345
.values.yaml
@@ -293,6 +349,7 @@ volumeMountPermissions:
293
349
var_run:
294
350
readOnly: true
295
351
----
352
+
// delete to here
296
353
297
354
298
355
[#pod_security_standards]
@@ -711,6 +768,92 @@ image::monitoring_kubernetes_service_discovery.png[alt="An example of a view fro
711
768
Now activate all of the changes you have made and let the dynamic host management do the work for you.
712
769
This will create all hosts for your Kubernetes objects within a short space of time.
713
770
771
+
// start translation
772
+
////
773
+
[#update]
774
+
== Cluster-Überwachung aktualisieren
775
+
776
+
Wie wir im Abschnitt xref:#setup_helm_repo[Helm-Repository einrichten] bereits angedeutet haben, nehmen wir anlassbezogen Updates am {CMK} Cluster Collector und am {CMK} Node Collector vor.
777
+
Es könnte beispielsweise notwendig sein, den enthaltenen {CMK}-Agenten zu aktualisieren.
778
+
Damit diese Änderungen auch in Ihrem Cluster ankommen, müssen Sie zuerst das Helm-Repository aktualisieren.
779
+
Führen Sie dazu den folgenden Befehl aus:
780
+
781
+
[{shell}]
782
+
----
783
+
{c-user} helm repo update
784
+
Hang tight while we grab the latest from your chart repositories...
785
+
...Successfully got an update from the "checkmk-chart" chart repository
786
+
Update Complete. Happy Helming!
787
+
----
788
+
789
+
[.admonition-tip]
790
+
****
791
+
An dieser Stelle sollten Sie prüfen, ob unser neues Helm-Chart Werte enthält, das Ihre angepasste `values.yaml` ggf. wieder überschreiben würden.
792
+
Im Speziellen sollten Sie prüfen, ob in Ihrer `values.yaml` der Schlüssel `.image.tag` gesetzt wird.
793
+
Diesen müssen Sie dann entweder auf die Version des neusten Helm-Chart setzen oder aus Ihrer `values.yaml` löschen, damit in Zukunft immer das `.image.tag` direkt aus dem Helm-Chart verwendet wird.
794
+
****
795
+
796
+
Wenn Sie mit den Inhalten Ihrer `values.yaml` zufrieden sind, können Sie im Anschluss das neue Helm-Chart mit Ihren angepassten Werten an Ihr Cluster übergeben:
Release "myrelease" has been upgraded. Happy Helming!
802
+
NAME: myrelease
803
+
LAST DEPLOYED: Wed Mar 25 12:10:26 2026
804
+
NAMESPACE: checkmk-monitoring
805
+
STATUS: deployed
806
+
REVISION: 17
807
+
TEST SUITE: None
808
+
NOTES:
809
+
You can access the checkmk cluster-collector via:
810
+
NodePort:
811
+
export NODE_PORT=$(kubectl get --namespace checkmk-monitoring -o jsonpath="{.spec.ports[0].nodePort}" services myrelease-checkmk-cluster-collector);
812
+
export NODE_IP=$(kubectl get nodes --namespace checkmk-monitoring -o jsonpath="{.items[0].status.addresses[0].address}");
813
+
echo \http://$NODE_IP:$NODE_PORT
814
+
pass:[#] Cluster-internal DNS of cluster-collector: myrelease-checkmk-cluster-collector.checkmk-monitoring
815
+
With the token of the service account named `myrelease-checkmk-checkmk` in the namespace `checkmk-monitoring` you can now issue queries against the `cluster-collector`.
816
+
Run the following to fetch its token and the ca-certificate of the cluster:
In diesem Beispiel nehmen wir weiterhin an, dass Ihr Release `myrelease` und der verwendete Namespace `checmk-monitoring` heißt.
852
+
Passen Sie den im Befehl verwendeten Namespace gegebenenfalls an Ihre Umgebung an.
853
+
////
854
+
// end translation
855
+
856
+
714
857
[#labels]
715
858
== Labels for Kubernetes objects
716
859
@@ -719,6 +862,69 @@ All of the labels for Kubernetes objects that {CMK} automatically generates star
719
862
For example, a pod always receives a label for the node (`cmk/kubernetes/node:mynode`), a label that shows that this object is a pod (`cmk/kubernetes/object:pod`) and a label for the namespace (`cmk/kubernetes/namespace:mynamespace`).
720
863
This makes it very easy to create filters and rules for all objects of the same type or in the same namespace.
721
864
865
+
866
+
// start translation
867
+
////
868
+
[#advanced_configuration]
869
+
== Erweiterte Konfiguration
870
+
871
+
=== Änderungen an der Konfiguration vornehmen
872
+
873
+
Wie oben bereits beschrieben, empfehlen wir für die Konfiguration der Überwachung Ihrer Kubernetes-Cluster, die von uns zur Verfügung gestellte Helm-Chart zu verwenden.
874
+
Wenn Sie dann im Anschluss an die Ersteinrichtung Änderungen an dieser Konfiguration vornehmen wollen, müssen Sie nur die von Ihnen erzeugte `values.yaml` modifizieren und diese anschließend an den Befehl `helm upgrade` übergeben.
=== Netzwerkschnittstellen der Worker Nodes überwachen
884
+
885
+
Wenn Sie die Netzwerkschnittstellen Ihrer Worker Nodes überwachen möchten, müssen Sie das dem {CMK} Node Collector entsprechend mitteilen.
886
+
Setzen Sie dafür den Schlüssel `.nodeCollector.machineSectionsCollector.networkInterfaceMonitoring.enabled` auf `true`.
887
+
In der von {CMK} bereitgestellten `values.yaml` finden Sie dazu bereits einen entsprechenden Abschnitt:
888
+
889
+
.values.yaml
890
+
[{yaml},highlight=4..5]
891
+
----
892
+
# the machine sections collector can collect monitoring information for network interfaces of the underlying node.
893
+
# this means that the '/sys' directory of the node will be mounted into the container.
894
+
# the pod security policy is adjusted accordingly.
895
+
networkInterfaceMonitoring:
896
+
enabled: false
897
+
----
898
+
899
+
Im Auslieferungszustand steht der Schlüssel `enabled` noch auf `false`.
900
+
901
+
Wenn Sie dann zusätzlich noch beeinflussen möchten, welche Netzwerkschnittstellen auf welche Art erkannt werden sollen, können Sie eine Regel im Regelsatz [.guihunt]#Network interface and switch port discovery# einrichten und dieser als Bedingung beispielsweise das Host-Label `cmk/kubernetes/object:node` mitgeben.
902
+
903
+
904
+
=== Dateisysteme auf Worker Nodes überwachen
905
+
906
+
In einigen Kubernetes-Umgebungen (bspw. Tanzu) *kann* es sinnvoll sein, Dateisysteme des Hosts in den {CMK} Node Collector zu mounten, um diese überwachen zu können.
907
+
In unserer mitgelieferten `values.yaml` haben wir für diesen Fall das Dictionary `.nodeCollector.machineSectionsCollector.extraHostPathMounts` eingebaut, das Sie leicht auskommentieren und anpassen können, um bestimmte Dateisysteme in das Blickfeld des Node Collectors zu rücken.
908
+
909
+
// ML: Vielleicht ein paar Erklärungen zu den einzelnen Einträgen? Gerade sowas wie "root-host" lässt immer vermuten, dass es sich um einen speziellen Ausdruck handelt - vielleicht "my-extra-host-path-mount" oder so?
910
+
In Ihrer `values.yaml` könnte dieser Abschnitt beispielsweise so aussehen:
911
+
912
+
.values.yaml
913
+
[{yaml},highlight=4..5]
914
+
----
915
+
extraHostPathMounts:
916
+
- name: host-root
917
+
mountPath: "/host"
918
+
hostPath:
919
+
path: /
920
+
type: Directory
921
+
----
922
+
923
+
Wenn Sie dann zusätzlich noch beeinflussen möchten, welche Dateisysteme erkannt werden sollen, können Sie eine Regel im Regelsatz [.guihunt]#Filesystem discovery# einrichten und dieser als Bedingung beispielsweise das Host-Label `cmk/kubernetes/object:node` mitgeben.
924
+
////
925
+
// end translation
926
+
927
+
722
928
[#dashboards_views]
723
929
== Dashboards and views
724
930
@@ -799,62 +1005,6 @@ Here the three boxes [.guihint]#Primary datasource#, [.guihint]#Cluster collecto
With Rancher, setting up a monitoring in {CMK} is very similar to the variant described above.
809
-
Here, too, you need the service account so that {CMK} can access the cluster.
810
-
You create the account directly in the Rancher web interface, where you can also find its token and certificate, which you import into {CMK}.
811
-
812
-
In Rancher, first navigate to [.guihint]#Global > Security > Roles > Clusters# to create a new role, `checkmk`:
813
-
814
-
[{image-border}]
815
-
image::rancher_roles.png[]
816
-
817
-
For simplicity, first clone the [.guihint]#Cluster Owner# role:
818
-
819
-
[{image-border}]
820
-
image::rancher_roles_clone.png[]
821
-
822
-
Remove the [.guihint]#Create,# [.guihint]#Delete,# [.guihint]#Patch# and [.guihint]#Update# rights from the cloned role under [.guihint]#Grant Resources#:
823
-
824
-
[{image-border}]
825
-
image::rancher_roles_clone_rights.png[]
826
-
827
-
Now create the new `checkmk` Rancher user under [.guihint]#Global > Users > Add User#.
828
-
At [.guihint]#Global Permissions# select the option [.guihint]#User-Base# to grant the user only the most necessary read permissions:
829
-
830
-
[{image-border}]
831
-
image::rancher_adduser.png[]
832
-
833
-
834
-
=== Assigning a cluster role
835
-
836
-
Now switch to your cluster and click on [.guihint]#Edit# at the top right of the cluster menu.
837
-
Here you can add the just created user [.guihint]#checkmk# with the corresponding role [.guihint]#checkmk# to the cluster via [.guihint]#Add Member#:
838
-
839
-
[{image-border}]
840
-
image::rancher_addmember.png[]
841
-
842
-
843
-
=== Further actions
844
-
845
-
Log in to Rancher with this new user, call up the cluster and click on [.guihint]#Kubeconfig File#.
846
-
Here you will find the three specifications you need for monitoring in {CMK}:
847
-
848
-
* `clusters` > `cluster` > `server`: URL/path specification for the xref:rule[{CMK} rule].
849
-
* `clusters` > `cluster` > `certificate-authority-data`: the base64-encoded certificate
850
-
* `users` > `user` > `token`: Access password in the form of a bearer token
851
-
852
-
image::rancher_kubeconfig.png[]
853
-
854
-
You will still need to decode the certificate, on the command line for example with `base64 --decode` or with one of the many online services.
855
-
856
-
From here on, the setup in {CMK} corresponds to the procedure for pure Kubernetes use from the xref:setupincheckmk[Setting up the monitoring in {CMK}] section.
0 commit comments