2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Filebeat+ELK-Konstruktions- und Interpretationsreferenz
Verknüpfung:k8s-Lernen – detaillierter Prozess der ELK-Protokollerfassung basierend auf k8s
In diesem Kapitel wird die Beschreibung nicht wiederholt
virtuelle Maschine
IP-Adresse | CPU-Name | CPU | Erinnerung | Festplatte |
---|---|---|---|---|
192.168.10.11 | master01 | 2 CPU-Dual-Core | 4G | 100 G |
192.168.10.12 | Arbeiter01 | 2 CPU-Dual-Core | 4G | 100 G |
192.168.10.13 | Arbeiter02 | 2 CPU-Dual-Core | 4G | 100 G |
192.168.10.17 | ELCH | 1 CPU-Dual-Core | 4G | 100 G |
Version Centos7.9
K8s-1.27 bereitgestellt
Der ELK-Server hat Filebeat+ELK bereitgestellt
Die Implementierung erfolgt durch Ausführen von Filebeat (Sidecar) im Anwendungs-Pod. Dieses Mal wird Tomcat als Beispiel zur Veranschaulichung verwendet.
Standardmäßig gibt es im Tomcat-Container keine Website-Homepage-Datei. Wenn diese nicht hinzugefügt wird, kann der Container im Pod nicht normal ausgeführt werden.
work01-Hostvorgang
mkdir /opt/tomcatwebroot
echo "tomcat is running" > /opt/tomcatwebroot/index.html
Master-Host-Betrieb
vim tomcat-logs.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-demo
namespace: default
spec:
replicas: 2
selector:
matchLabels:
project: www
app: tomcat-demo
template:
metadata:
labels:
project: www
app: tomcat-demo
spec:
nodeName: worker01
containers:
- name: tomcat
image: tomcat:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
requests:
cpu: 0.5
memory: 500Mi
limits:
cpu: 1
memory: 1Gi
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
volumeMounts:
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
- name: tomcatwebroot
mountPath: /usr/local/tomcat/webapps/ROOT
- name: filebeat
image: docker.io/elastic/filebeat:7.17.2
imagePullPolicy: IfNotPresent
args: [
"-c", "/etc/filebeat.yml",
"-e",
]
resources:
limits:
memory: 500Mi
requests:
cpu: 100m
memory: 100Mi
securityContext:
runAsUser: 0
volumeMounts:
- name: filebeat-config
mountPath: /etc/filebeat.yml
subPath: filebeat.yml
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
volumes:
- name: tomcat-logs
emptyDir: {}
- name: tomcatwebroot
hostPath:
path: /opt/tomcatwebroot
type: Directory
- name: filebeat-config
configMap:
name: filebeat-config
---
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
namespace: default
data:
filebeat.yml: |-
filebeat.inputs:
- type: log
paths:
- /usr/local/tomcat/logs/catalina.*
fields:
app: www
type: tomcat-catalina
fields_under_root: true
multiline:
pattern: '^['
negate: true
match: after
setup.ilm.enabled: false
setup.template.name: "tomcat-catalina"
setup.template.pattern: "tomcat-catalina-*"
output.logstash:
hosts: ['192.168.10.17:5056']
Dieses Yaml definiert eine Tomcat- und Filebeat-Bereitstellung sowie Filebeat-Konfigurationsdateien. Lassen Sie uns diese der Reihe nach erklären.
Abschnitt „Bereitstellung“.
apiVersion: apps/v1
kind: Deployment
metadata:
name: tomcat-demo
namespace: default
spec:
replicas: 2
selector:
matchLabels:
project: www
app: tomcat-demo
template:
metadata:
labels:
project: www
app: tomcat-demo
spec:
nodeName: worker01
containers:
- name: tomcat
image: tomcat:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: web
protocol: TCP
resources:
requests:
cpu: 0.5
memory: 500Mi
limits:
cpu: 1
memory: 1Gi
livenessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
readinessProbe:
httpGet:
path: /
port: 8080
initialDelaySeconds: 60
timeoutSeconds: 20
volumeMounts:
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
- name: tomcatwebroot
mountPath: /usr/local/tomcat/webapps/ROOT
- name: filebeat
image: docker.io/elastic/filebeat:7.17.2
imagePullPolicy: IfNotPresent
args: [
"-c", "/etc/filebeat.yml",
"-e",
]
resources:
limits:
memory: 500Mi
requests:
cpu: 100m
memory: 100Mi
securityContext:
runAsUser: 0
volumeMounts:
- name: filebeat-config
mountPath: /etc/filebeat.yml
subPath: filebeat.yml
- name: tomcat-logs
mountPath: /usr/local/tomcat/logs
volumes:
- name: tomcat-logs
emptyDir: {}
- name: tomcatwebroot
hostPath:
path: /opt/tomcatwebroot
type: Directory
- name: filebeat-config
configMap:
name: filebeat-config
Metadaten: Definiert den Namen und Namespace der Bereitstellung.
spec: Enthält die detaillierte Spezifikation des Deployments.
Replikate: Gibt die Anzahl der Replikate an, d. h. die Anzahl der ausgeführten zwei Tomcat-Instanzen.
Selektor: Definiert einen Selektor für passende Pod-Labels.
Vorlage: Beschreibt die Pod-Vorlage, einschließlich Metadaten und Spezifikationen.
nodeName: Gibt den Knotennamen (worker01) an, auf dem der Pod ausgeführt wird.
Container: Es sind zwei Container definiert: Tomcat und Filebeat.
Tomcat-Container:
Bild: Verwenden Sie tomcat:latest Bild.
ports: Geben Sie Port 8080 frei.
Ressourcen: Definiert Ressourcenanforderungen und -limits.
LivenessProbe und ReadinessProbe: werden für Gesundheitschecks verwendet.
volumeMounts: Zwei Volumes werden gemountet.
Filebeat-Container:
Bild: Verwenden Sie das Bild filebeat:7.17.2.
args: Gibt Startparameter an.
Ressourcen: Definiert Ressourcenanforderungen und -limits.
securityContext: Als Root-Benutzer ausführen.
volumeMounts: Zwei Volumes werden gemountet.
Bände:
tomcat-logs: Verwenden Sie emptyDir-Volumes.
tomcatwebroot: HostPath-Volume verwenden.
filebeat-config: ConfigMap-Volumes verwenden.
Abschnitt „Konfigurationsdatei“ (ConfigMap).
apiVersion: v1
kind: ConfigMap
metadata:
name: filebeat-config
erklären
Metadaten: Definiert den Namen von ConfigMap.
Daten: sollten den Konfigurationsinhalt von Filebeat enthalten (hier weggelassen).
Elk-Hostkonfiguration
Schreiben Sie Logstash-Konfigurationsdateien, ohne vorherige Konfigurationsdateien zu beeinträchtigen
vim /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf
input {
beats {
host => "0.0.0.0"
port => "5056"
}
}
filter {
}
output {
elasticsearch {
hosts => "192.168.10.17:9200"
index => "tomcat-catalina-%{+yyyy.MM.dd}"
}
}
laufen
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/tomcat-logstash-to-elastic.conf --path.data /usr/share/logstash/data3 &
Stellen Sie sicher, dass der Port aktiv ist
ss -anput | grep ":5056"
Master-Host-Betrieb
kubectl apply -f tomcat-logs.yaml
Warten Sie eine Weile, da Sie das Bild herunterladen müssen
Dann überprüfen Sie den Pod
Hinweis: VPN erforderlich
kubectl get deployment.apps
kubectl get pods
Von Tomcat generierte Protokolle anzeigen (-c: Container)
Filebeat-Sammlungsprotokolle anzeigen
kubectl logs tomcat-demo-664584f857-k8whd -c filebeat
Host-Browser-Zugriff
192.168.10.17:5601
Sie können sehen, dass Sie das Protokoll gesehen haben
Beenden
Wenn es Ihnen hilft, klicken Sie bitte und folgen Sie ihm