Wie man

Senden von Protokollen an Splunk auf Kubernetes mithilfe von Splunk Forwarder

Senden von Protokollen an Splunk auf Kubernetes mithilfe von Splunk Forwarder

Die Protokollierung ist ein nützlicher Mechanismus sowohl für Anwendungsentwickler als auch für Clusteradministratoren. Es hilft bei der Überwachung und Fehlerbehebung von Anwendungsproblemen. Containerisierte Anwendungen schreiben standardmäßig in die Standardausgabe. Diese Protokolle werden im lokalen ephemeren Speicher gespeichert. Sie sind verloren, sobald der Container. Um dieses Problem zu lösen, wird häufig die Protokollierung in einem persistenten Speicher verwendet. Anschließend kann das Routing an ein zentrales Logging-System wie Splunk und Elasticsearch erfolgen.

In diesem Blog untersuchen wir die Verwendung eines universellen Splunk-Forwarders, um Daten an splunk zu senden. Es enthält nur die wesentlichen Werkzeuge, die zum Weiterleiten von Daten benötigt werden. Es ist für den Betrieb mit minimaler CPU und minimalem Speicher ausgelegt. Daher kann er problemlos als Sidecar-Container in einem Kubernetes-Cluster eingesetzt werden. Der universelle Forwarder verfügt über Konfigurationen, die bestimmen, welche und wohin Daten gesendet werden. Sobald die Daten an Splunk-Indexer weitergeleitet wurden, stehen sie für die Suche zur Verfügung.

Die folgende Abbildung zeigt eine allgemeine Architektur der Funktionsweise von Splunk:

Vorteile der Verwendung von Splunk Universal Forwarder

Voraussetzungen:

Folgendes ist erforderlich, bevor wir fortfahren:

  1. Ein funktionierender Kubernetes- oder Openshift-Containerplattform-Cluster
  2. Kubectl oder ok Befehlszeilentool auf Ihrer Workstation installiert. Sie sollten über Administratorrechte verfügen
  3. Ein funktionierender Splunk-Cluster mit zwei oder mehr Indexern

SCHRITT 1: Erstellen Sie ein persistentes Volume

Wir werden zuerst das persistente Volume bereitstellen, wenn es noch nicht vorhanden ist. Die folgende Konfigurationsdatei verwendet eine Speicherklasse cephs. Sie müssen Ihre Konfiguration entsprechend ändern. Die folgenden Anleitungen können verwendet werden, um einen Ceph-Cluster einzurichten und eine Speicherklasse bereitzustellen:

Erstellen Sie den persistenten Volume-Anspruch:

$ vim pvc_claim.yaml-Art: PersistentVolumeClaim apiVersion: v1 Metadaten: Name: cephfs-claim spec: accessModes: - ReadWriteOnce storageClassName: cephfs-Ressourcen: Anfragen: Speicher: 1Gi 

Erstellen Sie den persistenten Volume-Anspruch:

$ kubectl apply -f pvc_claim.jaml

Sehen Sie sich den PersistentVolumeClaim an:

$ kubectl get pvc cephfs-claim NAME STATUS VOLUME KAPAZITÄT ZUGRIFFSMODI SPEICHERKLASSE ALTER cephfs-claim Gebunden pvc-19c8b186-699b-456e-afdc-bcbaba633c98 1Gi RWX cephfs 3s

SCHRITT 2: Stellen Sie eine App bereit und mounten Sie das persistente Volume

Als nächstes werden wir unsere Anwendung bereitstellen. Beachten Sie, dass wir den Pfad „/usr/share/nginx/html“ zum persistenten Volume mounten. Dies sind die Daten, die wir speichern müssen.

$ vim nginx.yaml apiVersion: v1 Art: Pod-Metadaten: Name: Nginx-Spezifikation: Volumes: - Name: Speicher persistentVolumeClaim: ClaimName: cephfs-claim Container: - Name: Nginx-App-Image: Nginx-Ports: - ContainerPort: 80 Name: "http-serverhttp " volumeMounts: - mountPath: "/usr/share/nginx/html" Name: Speicher 

SCHRITT 3: Erstellen Sie eine Konfigurationskarte

Wir werden dann eine configmap bereitstellen, die von unserem Container verwendet wird. Die configmap hat zwei entscheidende Konfigurationen:

Sie müssen die configmap-Konfigurationen an Ihre Bedürfnisse anpassen.

$ vim configmap.yaml-Art: ConfigMap apiVersion: v1 Metadaten: Name: Konfigurationsdaten: Ausgaben.conf: |- [indexAndForward] index = false [tcpout] defaultGroup = splunk-uat forwardedindex.Filter.disable = true indexAndForward = false [tcpout:splunk-uat] Server = 172.29.127.2:9997 # Splunk-Indexer-IP und Port useACK = true autoLB = true input.conf: |- [monitor:///var/log/*.log] # Wo Daten gelesen werden disabled = false sourcetype = log index = sfc_microservices_uat # Dieser Index sollte bereits in der Splunk-Umgebung erstellt werden

Stellen Sie die Konfigurationskarte bereit:

$ kubectl apply -f configmap.jaml

SCHRITT 4: Bereitstellen des splunk Universal Forwarder.

Schließlich werden wir ein drin Container neben dem Splunk Universal-Speditionscontainer. Dies hilft beim Kopieren des Inhalts der configmap-Konfiguration in den Splunk-Universal-Forwarder-Container.

$ vim splunk_forwarder.yaml apiVersion: apps/v1 Art: Bereitstellungsmetadaten: Name: splunkforwarder-Labels: App: splunkforwarder-Spezifikation: Replikate: 2 Selektor: matchLabels: App: splunkforwarder-Vorlage: Metadaten: Labels: App: splunkforwarder-Spezifikation: initContainers: - Name: Volume-Berechtigungen image: busybox imagePullPolicy: IfNotPresent-Befehl: ['sh', '-c', 'cp /configs/* /opt/splunkforwarder/etc/system/local/'] volumeMounts: - mountPath: /configs name: configs - name: confs mountPath: /opt/splunkforwarder/etc/system/local container: - Name: splunk-uf Image: splunk/universalforwarder:latest imagePullPolicy: IfNotPresent env: - Name: SPLUNK_START_ARGS Wert: --accept-license - Name: SPLUNK_PASSWORD Wert: ***** - Name: SPLUNK_USER Wert: splunk - Name: SPLUNK_CMD Wert: Monitor hinzufügen /var/log/ volumeMounts: - Name: Container-Logs mountPath: /var/log - Name: confs mountPath: /opt/splunkforwarder/etc/system/local volume: - name: container-logs persistentVolumeClaim: ClaimName: cephfs-claim - name: confs emptyDir:  - name: configs configMap: name: configs defaultMode: 0777

Stellen Sie den Container bereit:

$ kubectl apply -f splunk_forwarder.jaml

Stellen Sie sicher, dass die universellen Splunk-Forwarder-Pods ausgeführt werden:

$ kubectl Pods abrufen | grep splunkforwarder splunkforwarder-6877ffd464-l5bvh 1/1 Läuft 0 30s splunkforwarder-6877ffd464-ltbdr 1/1 Läuft 0 31s

SCHRITT 5: Überprüfen Sie, ob Protokolle in splunk geschrieben werden

Melden Sie sich bei Splunk an und führen Sie eine Suche durch, um zu überprüfen, ob Protokolle gestreamt werden.

Sie sollten Ihre Protokolle sehen können.

OpenShift-Kurse:

Praktisches OpenShift für Entwickler - Neuer Kurs 2021

Ultimate Openshift (2021) Bootcamp von School of Devops

Verwandte Anleitungen:

Sicherer Zugriff auf Linux-Systeme und Kubernetes mit Teleport

So senden Sie OpenShift-Protokolle und -Ereignisse an Splunk

So streamen Sie Protokolle in AWS von CloudWatch zu ElasticSearch

So senden Sie Kubernetes-Protokolle an externe Elasticsearch

146 Schwachstellen in vorinstallierten Android-Apps gefunden
An diesem Punkt scheinen wir fast immun gegen das Wissen geworden zu sein, dass es bösartige Apps im Google Play Store gibt. Aber was ist mit den Apps...
Nur wenige Tage nach dem Start wurden Tausende von Disney Plus-Konten gehackt
Es gab viel Aufregung über den Start des Disney+ Streaming-Dienstes. Disney hat so viele seiner klassischen Filme und Fernsehsendungen verfügbar gemac...
Die neue Zwei-Faktor-Authentifizierung von Twitter benötigt keine Telefonnummern mehr
Twitter-Nutzer fügten, vielleicht leichtgläubig, ihre Telefonnummern und E-Mail-Adressen zu ihren Twitter-Konten hinzu, weil sie glaubten, dies würde ...