Kubernetes-Überwachungsagenten anpassen
In IBM Cloud Monitoring können Sie die Konfiguration des Überwachungsagenten anpassen, um eine Protokollebene festzulegen, Ports zu blockieren, Metrikdaten ein- und auszuschließen, Ereignisse hinzuzufügen oder zu entfernen und Container zu filtern.
Wenn Sie einen Kubernetes-Überwachungsagenten anpassen möchten, müssen Sie die Datei sysdig-agent-configmap.yaml konfigurieren.
Es gibt zwei Methoden, mit denen Sie eine Konfigurationsdatei ändern können:
- Methode 1: Ändern Sie die Datei direkt in dem Cluster, in dem der Agent ausgeführt wird.
- Methode 2: Ändern Sie die Datei lokal und wenden Sie die Änderungen auf den Cluster an.
Konfiguration des Kubernetes-Überwachungsagenten mit 'kubectl edit' bearbeiten
Führen Sie die folgenden Schritte aus, um die Konfiguration eines Kubernetes-Überwachungsagenten zu bearbeiten:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observeNehmen Sie Änderungen vor. Hinweis: Weitere Informationen, wie Sie Änderungen vornehmen können, erhalten Sie in den
vi-Editor-Anweisungen.Speichern Sie die Änderungen. Die Änderungen werden automatisch angewendet.
Konfiguration des Kubernetes-Überwachungsagenten mit 'kubectl apply' bearbeiten
Verwenden Sie diese Methode, wenn die yaml-Konfigurationsdateien in einem System zur Quellcodeverwaltung gespeichert und verwaltet werden.
Führen Sie die folgenden Schritte aus, um die Konfiguration eines Kubernetes-Überwachungsagenten zu bearbeiten:
-
Rufen Sie die neueste Kopie jeder Datei vom Quellencontroller ab.
Um eine lokale Datei mit der Konfiguration zu erstellen, die in einem Cluster implementiert ist, können Sie auch den folgenden Befehl ausführen:
kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml -
Bearbeiten Sie die Konfiguration.
-
Wenden Sie die Änderungen mit den folgenden Befehlen an:
kubectl apply -f sysdig-agent-configmap.yaml
Aktive Agenten wählen die neue Konfiguration automatisch aus, nachdem Kubernetes die Änderungen mit einer Push-Operation auf alle Knoten im Cluster übertragen hat.
Eine Gruppe von Kubernetes-Ereignissen erfassen
Monitoring unterstützt Eventintegrationen mitKubernetes.Monitoring Agenten erkennen diese Dienste automatisch und erfassen Ereignisdaten von ihnen. Sie können die Agentenkonfigurationsdatei bearbeiten, um ihr Standardverhalten zu ändern und Ereignisdaten ein- oder auszuschließen.
Standardmäßig wird nur eine begrenzte Gruppe von Ereignissen erfasst. Weitere Informationen zu den Ereignissen, die standardmäßig erfasst werden, finden Sie unter Ereignistypen.
Wenn Sie Ereignisse hinzufügen oder entfernen möchten, müssen Sie die Datei sysdig-agent-configmap.yaml anpassen und angeben, welche Ereignisse eingeschlossen und welche herausgefiltert werden sollen. Hinweis: Ein Eintrag im Abschnitt sysdig-agent-configmap.yaml überschreibt den gesamten Abschnitt in der Standardkonfiguration.
Führen Sie die folgenden Schritte aus, um Ereignisse aus Kubernetes-Pods zu filtern:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observe -
Nehmen Sie Änderungen vor. Fügen Sie den Abschnitt events hinzu oder aktualisieren Sie den Abschnitt.
Hinweis: Weitere Informationen, wie Sie Änderungen vornehmen können, erhalten Sie in den
vi-Editor-Anweisungen.Beispiel: Sie möchten Kubernetes-Pod-Ereignisse erfassen und andere Pod-Ereignisse herausfiltern, die standardmäßig erfasst werden. Sie möchten aber Standardereignisse für Kubernetes für Knoten und "replicationControllers" erfassen.
events: kubernetes: pod: - Pulling -
Speichern Sie die Änderungen.
Die Änderungen werden automatisch angewendet.
Ein weiteres Beispiel, mit dem Sie erkennen können, wie eine Untergruppe von Kubernetes-Ereignissen erfasst wird: Sie möchten nur die Ereignissen "Pulling", "Pulled" und "Failed" für Pods überwachen.
-
Option 1: Definieren Sie die Reihenfolge der Einträge in Form von Listenpunkten:
events: kubernetes: pod: - Pulling - Pulled - Failed -
Option 2: Definieren Sie die Reihenfolge der Einträge in einer Zeile in eckigen Klammern:
events: kubernetes: pod: [Pulling, Pulled, Failed]
Weitere Informationen zum Arbeiten mit angepassten Ereignissen finden Sie unter Angepasste Ereignisse.
Sammlung von Ereignissen inaktivieren
Um die Erfassung von Kubernetes-Ereignissen durch einen Überwachungsagenten zu inaktivieren, müssen Sie die Datei sysdig-agent-configmap.yaml ändern. Setzen Sie den Kubernetes-Eintrag im Abschnitt events auf none.
Führen Sie die folgenden Schritte aus:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observe -
Nehmen Sie Änderungen vor. Fügen Sie den Abschnitt events hinzu oder aktualisieren Sie den Abschnitt.
events: kubernetes: none -
Speichern Sie die Änderungen.
Die Änderungen werden automatisch angewendet.
Metriken einschließen und ausschließen
Zum Filtern angepasster Metriken müssen Sie den Abschnitt metrics_filter in der Datei sysdig-agent-configmap.yaml anpassen. Sie können angeben, welche Metriken eingeschlossen und welche herausgefiltert werden sollen, indem Sie die Filterparameter include und exclude konfigurieren.
Die Reihenfolge der Filterregeln wird wie folgt festgelegt: Die erste Regel, die mit einer Metrik übereinstimmt, wird angewendet. Nachfolgende Regeln für diese Metrik werden ignoriert.
Führen Sie die folgenden Schritte aus:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observe -
Nehmen Sie Änderungen vor. Fügen Sie den Abschnitt metrics_filter hinzu oder aktualisieren Sie den Abschnitt.
Angenommen, der Abschnitt metrics_filter für einen Überwachungsagenten sieht wie folgt aus:
metrics_filter: - include: metricA.* - exclude: metricA.* - include: metricB.* - include: haproxy.backend.* - exclude: haproxy.* - exclude: metricC.*-
Sie konfigurieren den Überwachungsagenten zum Erfassen aller Daten für Metriken, die mit metricA, metricB und haproxy.backend beginnen.
-
Sie filtern Metriken heraus, die mit metricC beginnen, und andere Metriken, die mit haproxy beginnen.
-
Der Eintrag
exclude: metricA.*wird ignoriert.
-
-
Speichern Sie die Änderungen.
Die Änderungen werden automatisch angewendet.
Kubernetes-Objekte und -Container filtern, aus denen Daten erfasst werden
Ein Kubernetes-Überwachungsagent erfasst automatisch Metriken von allen Containern, die er in einem Cluster erkennt, einschließlich Prometheus, StatsD, JMX. App Checks und integrierten Metriken.
Sie können den Überwachungsagenten so anpassen, dass Container aus der Metrikerfassung ausgeschlossen werden.
Wenn Sie Container ausschließen, beachten Sie die folgenden Informationen:
- Sie reduzieren die Agent- und Back-End-Auslastung.
- Es werden nur Daten aus Containern erfasst, die Sie überwachen wollen.
- Sie können die Kosten steuern, indem Sie Berichte über wichtige Container erstellen und nicht benötigte oder unkritische Container herausfiltern.
Um die Funktion zu aktivieren, in der ein Überwachungsagent Container filtert, müssen Sie die Datei sysdig-agent-configmap.yaml anpassen. Legen Sie den Eintrag use_container_filter im Abschnitt containers auf true fest. Hinweis: Diese Funktion ist standardmäßig inaktiviert. Definieren Sie anschließend die Regeln, die eine oder mehrere Bedingungen einschließen und die Sie anwenden möchten.
In der folgenden Tabelle sind die Parameter aufgeführt, die Sie definieren können, um die Filterregeln in einem Cluster festzulegen:
| Parameter | Bedingung |
|---|---|
container.image |
Name des Container-Images |
container.name |
Containername |
container.label.* |
Containerbezeichnung |
kubernetes.object.* |
Kubernetes-Objekt. Ein Objekt kann ein Pod, ein Namensbereich usw. sein. |
kubernetes.object.annotation.* |
Hinweis für Kubernetes-Objekt. |
kubernetes.object.label.* |
Bezeichnung für Kubernetes-Objekt. |
all |
Standardregel zur Angabe aller Objekte. |
Beachten Sie die folgenden Informationen zur Vorgehensweise des Überwachungsagenten beim Anwenden der Regeln, die Sie im Abschnitt container_filter definieren:
- Sie definieren Bedingungen, indem Sie sie mit den Filterparametern include und exclude konfigurieren.
- Die erste Abgleichsregel in der Liste bestimmt, ob der Container eingeschlossen oder ausgeschlossen ist.
- Die Bedingungen bestehen aus einem Schlüsselnamen und einem Wert. Wenn der angegebene Schlüssel für einen Container mit dem Wert übereinstimmt, wird die Regel angewendet.
- Wenn eine Regel mehrere Bedingungen enthält, müssen
all the conditionsübereinstimmen, damit die Regel angewendet wird.
Führen Sie die folgenden Schritte aus, um Container herauszufiltern, die ein Überwachungsagent in einem Cluster überwacht:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observe -
Nehmen Sie Änderungen vor. Fügen Sie den Eintrag use_container_filter und den Abschnitt container_filter hinzu oder aktualisieren Sie die vorhandenen Einträge.
Sehen Sie sich z. B. den folgenden Auszug einer Konfigurationszuordnung an:
# Enable the feature use_container_filter: true # # Include or exclude conditions container_filter: - include: container.image: appdomain/my-app-image - include: container.name: my-java-app - exclude: kubernetes.namespace.name: kube-system -
Speichern Sie die Änderungen.
Die Änderungen werden automatisch angewendet.
Ports blockieren
Um den Netzverkehr und die Metriken von Netzports zu blockieren, müssen Sie den Abschnitt blacklisted_ports in der Datei sysdig-agent-configmap.yaml anpassen. Sie müssen die Ports auflisten, aus denen Sie Daten herausfiltern möchten.
Port 53 (DNS) befindet sich immer in der Blockliste und muss nicht in der Datei blacklisted_ports angegeben werden.
Führen Sie die folgenden Schritte aus:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observe -
Nehmen Sie Änderungen vor. Fügen Sie den Abschnitt metrics_filter hinzu oder aktualisieren Sie den Abschnitt.
Das folgende Beispiel zeigt, wie der Abschnitt blacklisted_ports für einen Überwachungsagenten festgelegt wird, um Daten von den Ports 6666 und 6379 auszuschließen:
blacklisted_ports: - 6666 - 6379 -
Speichern Sie die Änderungen.
Die Änderungen werden automatisch angewendet.
Protokollkonfigurationen ändern
Um die Protokollkonfigurationen zu konfigurieren, müssen Sie den Abschnitt log in der Datei sysdig-agent-configmap.yaml anpassen.
Der Überwachungsagent generiert Protokolleinträge in der Datei /opt/draios/logs/draios.log.
- Die Protokolldatei wird gewechselt, wenn sie 10 MB groß ist.
- Die 10 letzten Protokolldateien werden beibehalten. Die Datumszeitmarke, die an den Dateinamen angehängt wird, wird verwendet, um zu bestimmen, welche Dateien beibehalten werden sollen.
In der folgenden Tabelle werden einige allgemeine Szenarios und der Wert aufgeführt, den Sie in den einzelnen Tabellen festlegen müssen:
| Anwendungsfälle | Protokollabschnittseintrag | Standardwert |
|---|---|---|
| Fehlerbehebung beim Agentenverhalten | file_priority: debug |
info |
| Container-Konsolenausgabe reduzieren | console_priority: warning |
info |
| Ereignisse nach Priorität filtern | event_priority: warning |
information |
| Überprüfung, welche Metriken eingeschlossen oder ausgeschlossen sind | metrics_excess_log: true |
false |
Die Protokollebene ändern
- Die Dateipriorität file_priority im Abschnitt log gibt den Typ der Protokolleinträge an, die in die Datei
/opt/draios/logs/draios.loggeschrieben werden. - Die Konsolenpriorität console_priority im Abschnitt log gibt den Typ der Protokolleinträge an, die beim Ausführen des containerisierten Agenten in die Konsolenausgaben von Containern geschrieben werden.
- Die Standardprotokollebene ist Info, wobei zusätzlich zu den Einträgen für Warnungen und Fehler für jede zusammengefasste Metrikübertragung zu den Back-End-Servern einmal pro Sekunde ein Protokolleintrag erstellt wird.
- Gültige Protokollebenen sind: Keine, Fehler, Warnung, Info, Debug, Trace.
Kubernetes-Ereignisse nach Priorität filtern
- Die Ereignispriorität event_priority im Abschnitt log gibt den Typ der vom Agenten gesendeten Ereignisse an.
- Die Standardprotokollebene ist Information. Dies bedeutet, dass nur Informationen und Ereignisse mit höherer Priorität übertragen werden.
- Gültige Werte: Notfall, Alert, Kritisch, Fehler, Warnung, Hinweis, Information, Debug und Keine. Hinweis: Die Werte werden in der Reihenfolge von hoher Priorität bis niedriger Priorität aufgelistet.
- Durch das Festlegen der Ebene auf
nonewird die gesamte Ereigniserfassung blockiert.
Protokollierung in einer Datei, welche Metriken eingeschlossen oder ausgeschlossen sind
-
Durch das Festlegen von metrics_excess_log auf true im Abschnitt log wird die Protokollierung angepasster Metriken aktiviert, die eingeschlossen oder ausgeschlossen werden.
-
Die Metrikprotokollierung ist standardmäßig inaktiviert.
-
Die Protokollierung erfolgt alle 30 Sekunden auf INFO-Ebene und dauert 10 Sekunden.
-
Die Einstellung metricsfile ist erforderlich, um die Position für die Metriken anzugeben, die vom Agenten geschrieben werden sollen. Der Wert für
metricsfile.locationist ein relativer Pfad unter dem Verzeichnis '/opt/draios'. Hinweis: Der Eintragmetricsfilewird auf derselben Ebene wielogangegeben (nicht als untergeordnetes Element in der YAML-Datei). -
Die Protokollierungsdaten werden wie folgt formatiert:
+/-[type] [metric included/excluded]: metric.name (filter: +/-[metric.filter])-
+/- ist ein Symbol, das angibt, ob die Metrik eingeschlossen oder ausgeschlossen ist. Das Pluszeichen (+) gibt an, dass eine Metrik eingeschlossen ist. Das Minuszeichen (-) gibt an, dass eine Metrik ausgeschlossen ist.
-
[type] gibt den Metrik-Typ an, zum Beispiel statsd.
-
[metric included/excluded (Metrik eingeschlossen/ausgeschlossen] ) gibt in einer für den Menschen lesbaren Weise an, ob die Metrik eingeschlossen oder ausgeschlossen ist.
-
metric.name gibt den Metriknamen an.
-
(filter: +/-metric[metric.filter]) liefert Informationen über alle Filter, die im Abschnitt metrics_filter in der Datei sysdig-agent-configmap.yaml definiert sind.
-
Ein Beispielprotokolleintrag kann beispielsweise so aussehen:
-[statsd] metric excluded: mongo.statsd.vsize (filter: -[mongo.statsd.*])
+[statsd] metric included: mongo.statsd.netIn (filter: +[mongo.statsd.net*])
Führen Sie die folgenden Schritte aus, um die Protokolleinstellungen zu konfigurieren:
-
Richten Sie die Clusterumgebung ein. Führen Sie die folgenden Befehle aus:
Führen Sie zunächst den Befehl zur Angabe der Umgebungsvariablen und zum Herunterladen der Kubernetes-Konfigurationsdateien aus.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Bearbeiten Sie die Datei sysdig-agent-configmap.yaml.
Führen Sie den folgenden Befehl aus:
kubectl edit configmap sysdig-agent -n ibm-observe -
Nehmen Sie Änderungen vor. Fügen Sie den Abschnitt log hinzu oder aktualisieren Sie den Abschnitt und fügen Sie die Konfigurationen hinzu, die auf der Basis der vorherigen Beschreibungen geändert werden sollen.
Beispiel:
log: file_priority: warning console_priority: info event_priority: warning metrics_excess_log: true metricsfile: { location : metrics } -
Speichern Sie die Änderungen.
Die Änderungen werden automatisch angewendet.
Beispiel für eine Configmap-YAML-Datei
apiVersion: v1
data:
dragent.yaml: |
### Agent tags
# tags: linux:ubuntu,dept:dev,local:nyc
####
# collector address
# collector: 192.168.1.1
# Collector TCP port
# collector_port: 6666
# Whether collector accepts ssl
# ssl: true
# collector certificate validation
# ssl_verify_certificate: true
#######################################
#
k8s_cluster_name: cluster12
collector: ingest.us-south.monitoring.cloud.ibm.com
collector_port: 6443
ssl: true
ssl_verify_certificate: true
sysdig_capture_enabled: false
new_k8s: true
tags: type:mycluster,region:us-south
blacklisted_ports:
- 6666
- 6379
events:
kubernetes:
node:
- Rebooted
metrics_filter:
- include: metricA.*
- exclude: metricA.*
- include: metricB.*
use_container_filter: true
container_filter:
- exclude:
kubernetes.namespace.name: kube-system
log:
file_priority: warning
console_priority: info
event_priority: warning
metrics_excess_log: true
metricsfile: { location : metrics }
kind: ConfigMap
metadata:
annotations:
...